| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032 |
- const VALID_ID_PREFIX = "/@id/", NULL_BYTE_PLACEHOLDER = "__x00__";
- let SOURCEMAPPING_URL = "sourceMa";
- SOURCEMAPPING_URL += "ppingURL";
- const isWindows = typeof process < "u" && process.platform === "win32";
- function wrapId(id) {
- return id.startsWith(VALID_ID_PREFIX) ? id : VALID_ID_PREFIX + id.replace("\0", NULL_BYTE_PLACEHOLDER);
- }
- function unwrapId(id) {
- return id.startsWith(VALID_ID_PREFIX) ? id.slice(VALID_ID_PREFIX.length).replace(NULL_BYTE_PLACEHOLDER, "\0") : id;
- }
- const windowsSlashRE = /\\/g;
- function slash(p) {
- return p.replace(windowsSlashRE, "/");
- }
- const postfixRE = /[?#].*$/;
- function cleanUrl(url) {
- return url.replace(postfixRE, "");
- }
- function isPrimitive(value) {
- return !value || typeof value != "object" && typeof value != "function";
- }
- function withTrailingSlash(path) {
- return path[path.length - 1] !== "/" ? `${path}/` : path;
- }
- const AsyncFunction = async function() {
- }.constructor, _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
- function normalizeWindowsPath(input = "") {
- return input && input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
- }
- const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/, _DRIVE_LETTER_RE = /^[A-Za-z]:$/;
- function cwd() {
- return typeof process < "u" && typeof process.cwd == "function" ? process.cwd().replace(/\\/g, "/") : "/";
- }
- const resolve = function(...arguments_) {
- arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
- let resolvedPath = "", resolvedAbsolute = !1;
- for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
- const path = index >= 0 ? arguments_[index] : cwd();
- !path || path.length === 0 || (resolvedPath = `${path}/${resolvedPath}`, resolvedAbsolute = isAbsolute(path));
- }
- return resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute), resolvedAbsolute && !isAbsolute(resolvedPath) ? `/${resolvedPath}` : resolvedPath.length > 0 ? resolvedPath : ".";
- };
- function normalizeString(path, allowAboveRoot) {
- let res = "", lastSegmentLength = 0, lastSlash = -1, dots = 0, char = null;
- for (let index = 0; index <= path.length; ++index) {
- if (index < path.length)
- char = path[index];
- else {
- if (char === "/")
- break;
- char = "/";
- }
- if (char === "/") {
- if (!(lastSlash === index - 1 || dots === 1))
- if (dots === 2) {
- if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
- if (res.length > 2) {
- const lastSlashIndex = res.lastIndexOf("/");
- lastSlashIndex === -1 ? (res = "", lastSegmentLength = 0) : (res = res.slice(0, lastSlashIndex), lastSegmentLength = res.length - 1 - res.lastIndexOf("/")), lastSlash = index, dots = 0;
- continue;
- } else if (res.length > 0) {
- res = "", lastSegmentLength = 0, lastSlash = index, dots = 0;
- continue;
- }
- }
- allowAboveRoot && (res += res.length > 0 ? "/.." : "..", lastSegmentLength = 2);
- } else
- res.length > 0 ? res += `/${path.slice(lastSlash + 1, index)}` : res = path.slice(lastSlash + 1, index), lastSegmentLength = index - lastSlash - 1;
- lastSlash = index, dots = 0;
- } else
- char === "." && dots !== -1 ? ++dots : dots = -1;
- }
- return res;
- }
- const isAbsolute = function(p) {
- return _IS_ABSOLUTE_RE.test(p);
- }, dirname = function(p) {
- const segments = normalizeWindowsPath(p).replace(/\/$/, "").split("/").slice(0, -1);
- return segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0]) && (segments[0] += "/"), segments.join("/") || (isAbsolute(p) ? "/" : ".");
- }, decodeBase64 = typeof atob < "u" ? atob : (str) => Buffer.from(str, "base64").toString("utf-8"), CHAR_FORWARD_SLASH = 47, CHAR_BACKWARD_SLASH = 92, percentRegEx = /%/g, backslashRegEx = /\\/g, newlineRegEx = /\n/g, carriageReturnRegEx = /\r/g, tabRegEx = /\t/g, questionRegex = /\?/g, hashRegex = /#/g;
- function encodePathChars(filepath) {
- return filepath.indexOf("%") !== -1 && (filepath = filepath.replace(percentRegEx, "%25")), !isWindows && filepath.indexOf("\\") !== -1 && (filepath = filepath.replace(backslashRegEx, "%5C")), filepath.indexOf(`
- `) !== -1 && (filepath = filepath.replace(newlineRegEx, "%0A")), filepath.indexOf("\r") !== -1 && (filepath = filepath.replace(carriageReturnRegEx, "%0D")), filepath.indexOf(" ") !== -1 && (filepath = filepath.replace(tabRegEx, "%09")), filepath;
- }
- const posixDirname = dirname, posixResolve = resolve;
- function posixPathToFileHref(posixPath) {
- let resolved = posixResolve(posixPath);
- const filePathLast = posixPath.charCodeAt(posixPath.length - 1);
- return (filePathLast === CHAR_FORWARD_SLASH || isWindows && filePathLast === CHAR_BACKWARD_SLASH) && resolved[resolved.length - 1] !== "/" && (resolved += "/"), resolved = encodePathChars(resolved), resolved.indexOf("?") !== -1 && (resolved = resolved.replace(questionRegex, "%3F")), resolved.indexOf("#") !== -1 && (resolved = resolved.replace(hashRegex, "%23")), new URL(`file://${resolved}`).href;
- }
- function toWindowsPath(path) {
- return path.replace(/\//g, "\\");
- }
- const comma = 44, chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", intToChar = new Uint8Array(64), charToInt = new Uint8Array(128);
- for (let i = 0; i < chars.length; i++) {
- const c = chars.charCodeAt(i);
- intToChar[i] = c, charToInt[c] = i;
- }
- function decode(mappings) {
- const state = new Int32Array(5), decoded = [];
- let index = 0;
- do {
- const semi = indexOf(mappings, index), line = [];
- let sorted = !0, lastCol = 0;
- state[0] = 0;
- for (let i = index; i < semi; i++) {
- let seg;
- i = decodeInteger(mappings, i, state, 0);
- const col = state[0];
- col < lastCol && (sorted = !1), lastCol = col, hasMoreVlq(mappings, i, semi) ? (i = decodeInteger(mappings, i, state, 1), i = decodeInteger(mappings, i, state, 2), i = decodeInteger(mappings, i, state, 3), hasMoreVlq(mappings, i, semi) ? (i = decodeInteger(mappings, i, state, 4), seg = [col, state[1], state[2], state[3], state[4]]) : seg = [col, state[1], state[2], state[3]]) : seg = [col], line.push(seg);
- }
- sorted || sort(line), decoded.push(line), index = semi + 1;
- } while (index <= mappings.length);
- return decoded;
- }
- function indexOf(mappings, index) {
- const idx = mappings.indexOf(";", index);
- return idx === -1 ? mappings.length : idx;
- }
- function decodeInteger(mappings, pos, state, j) {
- let value = 0, shift = 0, integer = 0;
- do {
- const c = mappings.charCodeAt(pos++);
- integer = charToInt[c], value |= (integer & 31) << shift, shift += 5;
- } while (integer & 32);
- const shouldNegate = value & 1;
- return value >>>= 1, shouldNegate && (value = -2147483648 | -value), state[j] += value, pos;
- }
- function hasMoreVlq(mappings, i, length) {
- return i >= length ? !1 : mappings.charCodeAt(i) !== comma;
- }
- function sort(line) {
- line.sort(sortComparator);
- }
- function sortComparator(a, b) {
- return a[0] - b[0];
- }
- const COLUMN = 0, SOURCES_INDEX = 1, SOURCE_LINE = 2, SOURCE_COLUMN = 3, NAMES_INDEX = 4;
- let found = !1;
- function binarySearch(haystack, needle, low, high) {
- for (; low <= high; ) {
- const mid = low + (high - low >> 1), cmp = haystack[mid][COLUMN] - needle;
- if (cmp === 0)
- return found = !0, mid;
- cmp < 0 ? low = mid + 1 : high = mid - 1;
- }
- return found = !1, low - 1;
- }
- function upperBound(haystack, needle, index) {
- for (let i = index + 1; i < haystack.length && haystack[i][COLUMN] === needle; index = i++)
- ;
- return index;
- }
- function lowerBound(haystack, needle, index) {
- for (let i = index - 1; i >= 0 && haystack[i][COLUMN] === needle; index = i--)
- ;
- return index;
- }
- function memoizedBinarySearch(haystack, needle, state, key) {
- const { lastKey, lastNeedle, lastIndex } = state;
- let low = 0, high = haystack.length - 1;
- if (key === lastKey) {
- if (needle === lastNeedle)
- return found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle, lastIndex;
- needle >= lastNeedle ? low = lastIndex === -1 ? 0 : lastIndex : high = lastIndex;
- }
- return state.lastKey = key, state.lastNeedle = needle, state.lastIndex = binarySearch(haystack, needle, low, high);
- }
- const LINE_GTR_ZERO = "`line` must be greater than 0 (lines start at line 1)", COL_GTR_EQ_ZERO = "`column` must be greater than or equal to 0 (columns start at column 0)", LEAST_UPPER_BOUND = -1, GREATEST_LOWER_BOUND = 1;
- function cast(map) {
- return map;
- }
- function decodedMappings(map) {
- var _a;
- return (_a = map)._decoded || (_a._decoded = decode(map._encoded));
- }
- function originalPositionFor(map, needle) {
- let { line, column, bias } = needle;
- if (line--, line < 0)
- throw new Error(LINE_GTR_ZERO);
- if (column < 0)
- throw new Error(COL_GTR_EQ_ZERO);
- const decoded = decodedMappings(map);
- if (line >= decoded.length)
- return OMapping(null, null, null, null);
- const segments = decoded[line], index = traceSegmentInternal(segments, map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
- if (index === -1)
- return OMapping(null, null, null, null);
- const segment = segments[index];
- if (segment.length === 1)
- return OMapping(null, null, null, null);
- const { names, resolvedSources } = map;
- return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);
- }
- function OMapping(source, line, column, name) {
- return { source, line, column, name };
- }
- function traceSegmentInternal(segments, memo, line, column, bias) {
- let index = memoizedBinarySearch(segments, column, memo, line);
- return found ? index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index) : bias === LEAST_UPPER_BOUND && index++, index === -1 || index === segments.length ? -1 : index;
- }
- class DecodedMap {
- map;
- _encoded;
- _decoded;
- _decodedMemo;
- url;
- version;
- names = [];
- resolvedSources;
- constructor(map, from) {
- this.map = map;
- const { mappings, names, sources } = map;
- this.version = map.version, this.names = names || [], this._encoded = mappings || "", this._decodedMemo = memoizedState(), this.url = from, this.resolvedSources = (sources || []).map((s) => posixResolve(s || "", from));
- }
- }
- function memoizedState() {
- return {
- lastKey: -1,
- lastNeedle: -1,
- lastIndex: -1
- };
- }
- function getOriginalPosition(map, needle) {
- const result = originalPositionFor(map, needle);
- return result.column == null ? null : result;
- }
- const VITE_RUNTIME_SOURCEMAPPING_REGEXP = new RegExp(`//# ${SOURCEMAPPING_URL}=data:application/json;base64,(.+)`);
- class ModuleCacheMap extends Map {
- root;
- constructor(root, entries) {
- super(entries), this.root = withTrailingSlash(root);
- }
- normalize(fsPath) {
- return normalizeModuleId(fsPath, this.root);
- }
- /**
- * Assign partial data to the map
- */
- update(fsPath, mod) {
- return fsPath = this.normalize(fsPath), super.has(fsPath) ? Object.assign(super.get(fsPath), mod) : this.setByModuleId(fsPath, mod), this;
- }
- setByModuleId(modulePath, mod) {
- return super.set(modulePath, mod);
- }
- set(fsPath, mod) {
- return this.setByModuleId(this.normalize(fsPath), mod);
- }
- getByModuleId(modulePath) {
- super.has(modulePath) || this.setByModuleId(modulePath, {});
- const mod = super.get(modulePath);
- return mod.imports || Object.assign(mod, {
- imports: /* @__PURE__ */ new Set(),
- importers: /* @__PURE__ */ new Set()
- }), mod;
- }
- get(fsPath) {
- return this.getByModuleId(this.normalize(fsPath));
- }
- deleteByModuleId(modulePath) {
- return super.delete(modulePath);
- }
- delete(fsPath) {
- return this.deleteByModuleId(this.normalize(fsPath));
- }
- invalidate(id) {
- const module = this.get(id);
- module.evaluated = !1, module.meta = void 0, module.map = void 0, module.promise = void 0, module.exports = void 0, module.imports?.clear();
- }
- isImported({ importedId, importedBy }, seen = /* @__PURE__ */ new Set()) {
- if (importedId = this.normalize(importedId), importedBy = this.normalize(importedBy), importedBy === importedId)
- return !0;
- if (seen.has(importedId))
- return !1;
- seen.add(importedId);
- const importers = this.getByModuleId(importedId)?.importers;
- if (!importers)
- return !1;
- if (importers.has(importedBy))
- return !0;
- for (const importer of importers)
- if (this.isImported({
- importedBy,
- importedId: importer
- }))
- return !0;
- return !1;
- }
- /**
- * Invalidate modules that dependent on the given modules, up to the main entry
- */
- invalidateDepTree(ids, invalidated = /* @__PURE__ */ new Set()) {
- for (const _id of ids) {
- const id = this.normalize(_id);
- if (invalidated.has(id))
- continue;
- invalidated.add(id);
- const mod = super.get(id);
- mod?.importers && this.invalidateDepTree(mod.importers, invalidated), super.delete(id);
- }
- return invalidated;
- }
- /**
- * Invalidate dependency modules of the given modules, down to the bottom-level dependencies
- */
- invalidateSubDepTree(ids, invalidated = /* @__PURE__ */ new Set()) {
- for (const _id of ids) {
- const id = this.normalize(_id);
- if (invalidated.has(id))
- continue;
- invalidated.add(id);
- const subIds = Array.from(super.entries()).filter(([, mod]) => mod.importers?.has(id)).map(([key]) => key);
- subIds.length && this.invalidateSubDepTree(subIds, invalidated), super.delete(id);
- }
- return invalidated;
- }
- getSourceMap(moduleId) {
- const mod = this.get(moduleId);
- if (mod.map)
- return mod.map;
- if (!mod.meta || !("code" in mod.meta))
- return null;
- const mapString = mod.meta.code.match(VITE_RUNTIME_SOURCEMAPPING_REGEXP)?.[1];
- if (!mapString)
- return null;
- const baseFile = mod.meta.file || moduleId.split("?")[0];
- return mod.map = new DecodedMap(JSON.parse(decodeBase64(mapString)), baseFile), mod.map;
- }
- }
- const prefixedBuiltins = /* @__PURE__ */ new Set(["node:test"]);
- function normalizeModuleId(file, root) {
- if (prefixedBuiltins.has(file))
- return file;
- let unixFile = slash(file).replace(/^\/@fs\//, isWindows ? "" : "/").replace(/^node:/, "").replace(/^\/+/, "/");
- return unixFile.startsWith(root) && (unixFile = unixFile.slice(root.length - 1)), unixFile.replace(/^file:\//, "/");
- }
- class HMRContext {
- hmrClient;
- ownerPath;
- newListeners;
- constructor(hmrClient, ownerPath) {
- this.hmrClient = hmrClient, this.ownerPath = ownerPath, hmrClient.dataMap.has(ownerPath) || hmrClient.dataMap.set(ownerPath, {});
- const mod = hmrClient.hotModulesMap.get(ownerPath);
- mod && (mod.callbacks = []);
- const staleListeners = hmrClient.ctxToListenersMap.get(ownerPath);
- if (staleListeners)
- for (const [event, staleFns] of staleListeners) {
- const listeners = hmrClient.customListenersMap.get(event);
- listeners && hmrClient.customListenersMap.set(event, listeners.filter((l) => !staleFns.includes(l)));
- }
- this.newListeners = /* @__PURE__ */ new Map(), hmrClient.ctxToListenersMap.set(ownerPath, this.newListeners);
- }
- get data() {
- return this.hmrClient.dataMap.get(this.ownerPath);
- }
- accept(deps, callback) {
- if (typeof deps == "function" || !deps)
- this.acceptDeps([this.ownerPath], ([mod]) => deps?.(mod));
- else if (typeof deps == "string")
- this.acceptDeps([deps], ([mod]) => callback?.(mod));
- else if (Array.isArray(deps))
- this.acceptDeps(deps, callback);
- else
- throw new Error("invalid hot.accept() usage.");
- }
- // export names (first arg) are irrelevant on the client side, they're
- // extracted in the server for propagation
- acceptExports(_, callback) {
- this.acceptDeps([this.ownerPath], ([mod]) => callback?.(mod));
- }
- dispose(cb) {
- this.hmrClient.disposeMap.set(this.ownerPath, cb);
- }
- prune(cb) {
- this.hmrClient.pruneMap.set(this.ownerPath, cb);
- }
- // Kept for backward compatibility (#11036)
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- decline() {
- }
- invalidate(message) {
- this.hmrClient.notifyListeners("vite:invalidate", {
- path: this.ownerPath,
- message
- }), this.send("vite:invalidate", { path: this.ownerPath, message }), this.hmrClient.logger.debug(`[vite] invalidate ${this.ownerPath}${message ? `: ${message}` : ""}`);
- }
- on(event, cb) {
- const addToMap = (map) => {
- const existing = map.get(event) || [];
- existing.push(cb), map.set(event, existing);
- };
- addToMap(this.hmrClient.customListenersMap), addToMap(this.newListeners);
- }
- off(event, cb) {
- const removeFromMap = (map) => {
- const existing = map.get(event);
- if (existing === void 0)
- return;
- const pruned = existing.filter((l) => l !== cb);
- if (pruned.length === 0) {
- map.delete(event);
- return;
- }
- map.set(event, pruned);
- };
- removeFromMap(this.hmrClient.customListenersMap), removeFromMap(this.newListeners);
- }
- send(event, data) {
- this.hmrClient.messenger.send(JSON.stringify({ type: "custom", event, data }));
- }
- acceptDeps(deps, callback = () => {
- }) {
- const mod = this.hmrClient.hotModulesMap.get(this.ownerPath) || {
- id: this.ownerPath,
- callbacks: []
- };
- mod.callbacks.push({
- deps,
- fn: callback
- }), this.hmrClient.hotModulesMap.set(this.ownerPath, mod);
- }
- }
- class HMRMessenger {
- connection;
- constructor(connection) {
- this.connection = connection;
- }
- queue = [];
- send(message) {
- this.queue.push(message), this.flush();
- }
- flush() {
- this.connection.isReady() && (this.queue.forEach((msg) => this.connection.send(msg)), this.queue = []);
- }
- }
- class HMRClient {
- logger;
- importUpdatedModule;
- hotModulesMap = /* @__PURE__ */ new Map();
- disposeMap = /* @__PURE__ */ new Map();
- pruneMap = /* @__PURE__ */ new Map();
- dataMap = /* @__PURE__ */ new Map();
- customListenersMap = /* @__PURE__ */ new Map();
- ctxToListenersMap = /* @__PURE__ */ new Map();
- messenger;
- constructor(logger, connection, importUpdatedModule) {
- this.logger = logger, this.importUpdatedModule = importUpdatedModule, this.messenger = new HMRMessenger(connection);
- }
- async notifyListeners(event, data) {
- const cbs = this.customListenersMap.get(event);
- cbs && await Promise.allSettled(cbs.map((cb) => cb(data)));
- }
- clear() {
- this.hotModulesMap.clear(), this.disposeMap.clear(), this.pruneMap.clear(), this.dataMap.clear(), this.customListenersMap.clear(), this.ctxToListenersMap.clear();
- }
- // After an HMR update, some modules are no longer imported on the page
- // but they may have left behind side effects that need to be cleaned up
- // (.e.g style injections)
- async prunePaths(paths) {
- await Promise.all(paths.map((path) => {
- const disposer = this.disposeMap.get(path);
- if (disposer)
- return disposer(this.dataMap.get(path));
- })), paths.forEach((path) => {
- const fn = this.pruneMap.get(path);
- fn && fn(this.dataMap.get(path));
- });
- }
- warnFailedUpdate(err, path) {
- err.message.includes("fetch") || this.logger.error(err), this.logger.error(`[hmr] Failed to reload ${path}. This could be due to syntax errors or importing non-existent modules. (see errors above)`);
- }
- updateQueue = [];
- pendingUpdateQueue = !1;
- /**
- * buffer multiple hot updates triggered by the same src change
- * so that they are invoked in the same order they were sent.
- * (otherwise the order may be inconsistent because of the http request round trip)
- */
- async queueUpdate(payload) {
- if (this.updateQueue.push(this.fetchUpdate(payload)), !this.pendingUpdateQueue) {
- this.pendingUpdateQueue = !0, await Promise.resolve(), this.pendingUpdateQueue = !1;
- const loading = [...this.updateQueue];
- this.updateQueue = [], (await Promise.all(loading)).forEach((fn) => fn && fn());
- }
- }
- async fetchUpdate(update) {
- const { path, acceptedPath } = update, mod = this.hotModulesMap.get(path);
- if (!mod)
- return;
- let fetchedModule;
- const isSelfUpdate = path === acceptedPath, qualifiedCallbacks = mod.callbacks.filter(({ deps }) => deps.includes(acceptedPath));
- if (isSelfUpdate || qualifiedCallbacks.length > 0) {
- const disposer = this.disposeMap.get(acceptedPath);
- disposer && await disposer(this.dataMap.get(acceptedPath));
- try {
- fetchedModule = await this.importUpdatedModule(update);
- } catch (e) {
- this.warnFailedUpdate(e, acceptedPath);
- }
- }
- return () => {
- for (const { deps, fn } of qualifiedCallbacks)
- fn(deps.map((dep) => dep === acceptedPath ? fetchedModule : void 0));
- const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`;
- this.logger.debug(`[vite] hot updated: ${loggedPath}`);
- };
- }
- }
- function analyzeImportedModDifference(mod, rawId, moduleType, metadata) {
- if (!metadata?.isDynamicImport && moduleType !== "module" && metadata?.importedNames?.length) {
- const missingBindings = metadata.importedNames.filter((s) => !(s in mod));
- if (missingBindings.length) {
- const lastBinding = missingBindings[missingBindings.length - 1];
- throw new SyntaxError(`[vite] Named export '${lastBinding}' not found. The requested module '${rawId}' is a CommonJS module, which may not support all module.exports as named exports.
- CommonJS modules can always be imported via the default export, for example using:
- import pkg from '${rawId}';
- const {${missingBindings.join(", ")}} = pkg;
- `);
- }
- }
- }
- function proxyGuardOnlyEsm(mod, rawId, metadata) {
- return metadata?.importedNames?.length ? new Proxy(mod, {
- get(mod2, prop) {
- if (prop !== "then" && !(prop in mod2))
- throw new SyntaxError(`[vite] The requested module '${rawId}' does not provide an export named '${prop.toString()}'`);
- return mod2[prop];
- }
- }) : mod;
- }
- const ssrModuleExportsKey = "__vite_ssr_exports__", ssrImportKey = "__vite_ssr_import__", ssrDynamicImportKey = "__vite_ssr_dynamic_import__", ssrExportAllKey = "__vite_ssr_exportAll__", ssrImportMetaKey = "__vite_ssr_import_meta__", noop = () => {
- }, silentConsole = {
- debug: noop,
- error: noop
- };
- function createHMRHandler(runtime) {
- const queue = new Queue();
- return (payload) => queue.enqueue(() => handleHMRPayload(runtime, payload));
- }
- async function handleHMRPayload(runtime, payload) {
- const hmrClient = runtime.hmrClient;
- if (!(!hmrClient || runtime.isDestroyed()))
- switch (payload.type) {
- case "connected":
- hmrClient.logger.debug("[vite] connected."), hmrClient.messenger.flush();
- break;
- case "update":
- await hmrClient.notifyListeners("vite:beforeUpdate", payload), await Promise.all(payload.updates.map(async (update) => {
- if (update.type === "js-update")
- return update.acceptedPath = unwrapId(update.acceptedPath), update.path = unwrapId(update.path), hmrClient.queueUpdate(update);
- hmrClient.logger.error("[vite] css hmr is not supported in runtime mode.");
- })), await hmrClient.notifyListeners("vite:afterUpdate", payload);
- break;
- case "custom": {
- await hmrClient.notifyListeners(payload.event, payload.data);
- break;
- }
- case "full-reload": {
- const { triggeredBy } = payload, clearEntrypoints = triggeredBy ? [...runtime.entrypoints].filter((entrypoint) => runtime.moduleCache.isImported({
- importedId: triggeredBy,
- importedBy: entrypoint
- })) : [...runtime.entrypoints];
- if (!clearEntrypoints.length)
- break;
- hmrClient.logger.debug("[vite] program reload"), await hmrClient.notifyListeners("vite:beforeFullReload", payload), runtime.moduleCache.clear();
- for (const id of clearEntrypoints)
- await runtime.executeUrl(id);
- break;
- }
- case "prune":
- await hmrClient.notifyListeners("vite:beforePrune", payload), await hmrClient.prunePaths(payload.paths);
- break;
- case "error": {
- await hmrClient.notifyListeners("vite:error", payload);
- const err = payload.err;
- hmrClient.logger.error(`[vite] Internal Server Error
- ${err.message}
- ${err.stack}`);
- break;
- }
- default:
- return payload;
- }
- }
- class Queue {
- queue = [];
- pending = !1;
- enqueue(promise) {
- return new Promise((resolve2, reject) => {
- this.queue.push({
- promise,
- resolve: resolve2,
- reject
- }), this.dequeue();
- });
- }
- dequeue() {
- if (this.pending)
- return !1;
- const item = this.queue.shift();
- return item ? (this.pending = !0, item.promise().then(item.resolve).catch(item.reject).finally(() => {
- this.pending = !1, this.dequeue();
- }), !0) : !1;
- }
- }
- const sourceMapCache = {}, fileContentsCache = {}, moduleGraphs = /* @__PURE__ */ new Set(), retrieveFileHandlers = /* @__PURE__ */ new Set(), retrieveSourceMapHandlers = /* @__PURE__ */ new Set(), createExecHandlers = (handlers) => (...args) => {
- for (const handler of handlers) {
- const result = handler(...args);
- if (result)
- return result;
- }
- return null;
- }, retrieveFileFromHandlers = createExecHandlers(retrieveFileHandlers), retrieveSourceMapFromHandlers = createExecHandlers(retrieveSourceMapHandlers);
- let overridden = !1;
- const originalPrepare = Error.prepareStackTrace;
- function resetInterceptor(runtime, options) {
- moduleGraphs.delete(runtime.moduleCache), options.retrieveFile && retrieveFileHandlers.delete(options.retrieveFile), options.retrieveSourceMap && retrieveSourceMapHandlers.delete(options.retrieveSourceMap), moduleGraphs.size === 0 && (Error.prepareStackTrace = originalPrepare, overridden = !1);
- }
- function interceptStackTrace(runtime, options = {}) {
- return overridden || (Error.prepareStackTrace = prepareStackTrace, overridden = !0), moduleGraphs.add(runtime.moduleCache), options.retrieveFile && retrieveFileHandlers.add(options.retrieveFile), options.retrieveSourceMap && retrieveSourceMapHandlers.add(options.retrieveSourceMap), () => resetInterceptor(runtime, options);
- }
- function supportRelativeURL(file, url) {
- if (!file)
- return url;
- const dir = posixDirname(slash(file)), match = /^\w+:\/\/[^/]*/.exec(dir);
- let protocol = match ? match[0] : "";
- const startPath = dir.slice(protocol.length);
- return protocol && /^\/\w:/.test(startPath) ? (protocol += "/", protocol + slash(posixResolve(startPath, url))) : protocol + posixResolve(startPath, url);
- }
- function getRuntimeSourceMap(position) {
- for (const moduleCache of moduleGraphs) {
- const sourceMap = moduleCache.getSourceMap(position.source);
- if (sourceMap)
- return {
- url: position.source,
- map: sourceMap,
- vite: !0
- };
- }
- return null;
- }
- function retrieveFile(path) {
- if (path in fileContentsCache)
- return fileContentsCache[path];
- const content = retrieveFileFromHandlers(path);
- return typeof content == "string" ? (fileContentsCache[path] = content, content) : null;
- }
- function retrieveSourceMapURL(source) {
- const fileData = retrieveFile(source);
- if (!fileData)
- return null;
- const re = /\/\/[@#]\s*sourceMappingURL=([^\s'"]+)\s*$|\/\*[@#]\s*sourceMappingURL=[^\s*'"]+\s*\*\/\s*$/gm;
- let lastMatch, match;
- for (; match = re.exec(fileData); )
- lastMatch = match;
- return lastMatch ? lastMatch[1] : null;
- }
- const reSourceMap = /^data:application\/json[^,]+base64,/;
- function retrieveSourceMap(source) {
- const urlAndMap = retrieveSourceMapFromHandlers(source);
- if (urlAndMap)
- return urlAndMap;
- let sourceMappingURL = retrieveSourceMapURL(source);
- if (!sourceMappingURL)
- return null;
- let sourceMapData;
- if (reSourceMap.test(sourceMappingURL)) {
- const rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(",") + 1);
- sourceMapData = Buffer.from(rawData, "base64").toString(), sourceMappingURL = source;
- } else
- sourceMappingURL = supportRelativeURL(source, sourceMappingURL), sourceMapData = retrieveFile(sourceMappingURL);
- return sourceMapData ? {
- url: sourceMappingURL,
- map: sourceMapData
- } : null;
- }
- function mapSourcePosition(position) {
- if (!position.source)
- return position;
- let sourceMap = getRuntimeSourceMap(position);
- if (sourceMap || (sourceMap = sourceMapCache[position.source]), !sourceMap) {
- const urlAndMap = retrieveSourceMap(position.source);
- if (urlAndMap && urlAndMap.map) {
- const url = urlAndMap.url;
- sourceMap = sourceMapCache[position.source] = {
- url,
- map: new DecodedMap(typeof urlAndMap.map == "string" ? JSON.parse(urlAndMap.map) : urlAndMap.map, url)
- };
- const contents = sourceMap.map?.map.sourcesContent;
- sourceMap.map && contents && sourceMap.map.resolvedSources.forEach((source, i) => {
- const content = contents[i];
- if (content && source && url) {
- const contentUrl = supportRelativeURL(url, source);
- fileContentsCache[contentUrl] = content;
- }
- });
- } else
- sourceMap = sourceMapCache[position.source] = {
- url: null,
- map: null
- };
- }
- if (sourceMap && sourceMap.map && sourceMap.url) {
- const originalPosition = getOriginalPosition(sourceMap.map, position);
- if (originalPosition && originalPosition.source != null)
- return originalPosition.source = supportRelativeURL(sourceMap.url, originalPosition.source), sourceMap.vite && (originalPosition._vite = !0), originalPosition;
- }
- return position;
- }
- function mapEvalOrigin(origin) {
- let match = /^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(origin);
- if (match) {
- const position = mapSourcePosition({
- name: null,
- source: match[2],
- line: +match[3],
- column: +match[4] - 1
- });
- return `eval at ${match[1]} (${position.source}:${position.line}:${position.column + 1})`;
- }
- return match = /^eval at ([^(]+) \((.+)\)$/.exec(origin), match ? `eval at ${match[1]} (${mapEvalOrigin(match[2])})` : origin;
- }
- function CallSiteToString() {
- let fileName, fileLocation = "";
- if (this.isNative())
- fileLocation = "native";
- else {
- fileName = this.getScriptNameOrSourceURL(), !fileName && this.isEval() && (fileLocation = this.getEvalOrigin(), fileLocation += ", "), fileName ? fileLocation += fileName : fileLocation += "<anonymous>";
- const lineNumber = this.getLineNumber();
- if (lineNumber != null) {
- fileLocation += `:${lineNumber}`;
- const columnNumber = this.getColumnNumber();
- columnNumber && (fileLocation += `:${columnNumber}`);
- }
- }
- let line = "";
- const functionName = this.getFunctionName();
- let addSuffix = !0;
- const isConstructor = this.isConstructor();
- if (!(this.isToplevel() || isConstructor)) {
- let typeName = this.getTypeName();
- typeName === "[object Object]" && (typeName = "null");
- const methodName = this.getMethodName();
- functionName ? (typeName && functionName.indexOf(typeName) !== 0 && (line += `${typeName}.`), line += functionName, methodName && functionName.indexOf(`.${methodName}`) !== functionName.length - methodName.length - 1 && (line += ` [as ${methodName}]`)) : line += `${typeName}.${methodName || "<anonymous>"}`;
- } else
- isConstructor ? line += `new ${functionName || "<anonymous>"}` : functionName ? line += functionName : (line += fileLocation, addSuffix = !1);
- return addSuffix && (line += ` (${fileLocation})`), line;
- }
- function cloneCallSite(frame) {
- const object = {};
- return Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach((name) => {
- const key = name;
- object[key] = /^(?:is|get)/.test(name) ? function() {
- return frame[key].call(frame);
- } : frame[key];
- }), object.toString = CallSiteToString, object;
- }
- function wrapCallSite(frame, state) {
- if (state === void 0 && (state = { nextPosition: null, curPosition: null }), frame.isNative())
- return state.curPosition = null, frame;
- const source = frame.getFileName() || frame.getScriptNameOrSourceURL();
- if (source) {
- const line = frame.getLineNumber();
- let column = frame.getColumnNumber() - 1;
- const headerLength = 62;
- line === 1 && column > headerLength && !frame.isEval() && (column -= headerLength);
- const position = mapSourcePosition({
- name: null,
- source,
- line,
- column
- });
- state.curPosition = position, frame = cloneCallSite(frame);
- const originalFunctionName = frame.getFunctionName;
- return frame.getFunctionName = function() {
- const name = state.nextPosition == null ? originalFunctionName() : state.nextPosition.name || originalFunctionName();
- return name === "eval" && "_vite" in position ? null : name;
- }, frame.getFileName = function() {
- return position.source ?? void 0;
- }, frame.getLineNumber = function() {
- return position.line;
- }, frame.getColumnNumber = function() {
- return position.column + 1;
- }, frame.getScriptNameOrSourceURL = function() {
- return position.source;
- }, frame;
- }
- let origin = frame.isEval() && frame.getEvalOrigin();
- return origin && (origin = mapEvalOrigin(origin), frame = cloneCallSite(frame), frame.getEvalOrigin = function() {
- return origin || void 0;
- }), frame;
- }
- function prepareStackTrace(error, stack) {
- const name = error.name || "Error", message = error.message || "", errorString = `${name}: ${message}`, state = { nextPosition: null, curPosition: null }, processedStack = [];
- for (let i = stack.length - 1; i >= 0; i--)
- processedStack.push(`
- at ${wrapCallSite(stack[i], state)}`), state.nextPosition = state.curPosition;
- return state.curPosition = state.nextPosition = null, errorString + processedStack.reverse().join("");
- }
- function enableSourceMapSupport(runtime) {
- if (runtime.options.sourcemapInterceptor === "node") {
- if (typeof process > "u")
- throw new TypeError(`Cannot use "sourcemapInterceptor: 'node'" because global "process" variable is not available.`);
- if (typeof process.setSourceMapsEnabled != "function")
- throw new TypeError(`Cannot use "sourcemapInterceptor: 'node'" because "process.setSourceMapsEnabled" function is not available. Please use Node >= 16.6.0.`);
- const isEnabledAlready = process.sourceMapsEnabled ?? !1;
- return process.setSourceMapsEnabled(!0), () => !isEnabledAlready && process.setSourceMapsEnabled(!1);
- }
- return interceptStackTrace(runtime, typeof runtime.options.sourcemapInterceptor == "object" ? runtime.options.sourcemapInterceptor : void 0);
- }
- class ViteRuntime {
- options;
- runner;
- debug;
- /**
- * Holds the cache of modules
- * Keys of the map are ids
- */
- moduleCache;
- hmrClient;
- entrypoints = /* @__PURE__ */ new Set();
- idToUrlMap = /* @__PURE__ */ new Map();
- fileToIdMap = /* @__PURE__ */ new Map();
- envProxy = new Proxy({}, {
- get(_, p) {
- throw new Error(`[vite-runtime] Dynamic access of "import.meta.env" is not supported. Please, use "import.meta.env.${String(p)}" instead.`);
- }
- });
- _destroyed = !1;
- _resetSourceMapSupport;
- constructor(options, runner, debug) {
- this.options = options, this.runner = runner, this.debug = debug, this.moduleCache = options.moduleCache ?? new ModuleCacheMap(options.root), typeof options.hmr == "object" && (this.hmrClient = new HMRClient(options.hmr.logger === !1 ? silentConsole : options.hmr.logger || console, options.hmr.connection, ({ acceptedPath, ssrInvalidates }) => (this.moduleCache.invalidate(acceptedPath), ssrInvalidates && this.invalidateFiles(ssrInvalidates), this.executeUrl(acceptedPath))), options.hmr.connection.onUpdate(createHMRHandler(this))), options.sourcemapInterceptor !== !1 && (this._resetSourceMapSupport = enableSourceMapSupport(this));
- }
- /**
- * URL to execute. Accepts file path, server path or id relative to the root.
- */
- async executeUrl(url) {
- url = this.normalizeEntryUrl(url);
- const fetchedModule = await this.cachedModule(url);
- return await this.cachedRequest(url, fetchedModule);
- }
- /**
- * Entrypoint URL to execute. Accepts file path, server path or id relative to the root.
- * In the case of a full reload triggered by HMR, this is the module that will be reloaded.
- * If this method is called multiple times, all entrypoints will be reloaded one at a time.
- */
- async executeEntrypoint(url) {
- url = this.normalizeEntryUrl(url);
- const fetchedModule = await this.cachedModule(url);
- return await this.cachedRequest(url, fetchedModule, [], {
- entrypoint: !0
- });
- }
- /**
- * Clear all caches including HMR listeners.
- */
- clearCache() {
- this.moduleCache.clear(), this.idToUrlMap.clear(), this.entrypoints.clear(), this.hmrClient?.clear();
- }
- /**
- * Clears all caches, removes all HMR listeners, and resets source map support.
- * This method doesn't stop the HMR connection.
- */
- async destroy() {
- this._resetSourceMapSupport?.(), this.clearCache(), this.hmrClient = void 0, this._destroyed = !0;
- }
- /**
- * Returns `true` if the runtime has been destroyed by calling `destroy()` method.
- */
- isDestroyed() {
- return this._destroyed;
- }
- invalidateFiles(files) {
- files.forEach((file) => {
- const ids = this.fileToIdMap.get(file);
- ids && ids.forEach((id) => this.moduleCache.invalidate(id));
- });
- }
- // we don't use moduleCache.normalize because this URL doesn't have to follow the same rules
- // this URL is something that user passes down manually, and is later resolved by fetchModule
- // moduleCache.normalize is used on resolved "file" property
- normalizeEntryUrl(url) {
- if (url[0] === ".")
- return url;
- url.startsWith("file://") && (url = url.slice(isWindows ? 8 : 7)), url = slash(url);
- const _root = this.options.root, root = _root[_root.length - 1] === "/" ? _root : `${_root}/`;
- return url.startsWith(root) ? url.slice(root.length - 1) : url[0] === "/" ? url : wrapId(url);
- }
- processImport(exports, fetchResult, metadata) {
- if (!("externalize" in fetchResult))
- return exports;
- const { id, type } = fetchResult;
- return type !== "module" && type !== "commonjs" ? exports : (analyzeImportedModDifference(exports, id, type, metadata), proxyGuardOnlyEsm(exports, id, metadata));
- }
- async cachedRequest(id, fetchedModule, callstack = [], metadata) {
- const moduleId = fetchedModule.id;
- metadata?.entrypoint && this.entrypoints.add(moduleId);
- const mod = this.moduleCache.getByModuleId(moduleId), { imports, importers } = mod, importee = callstack[callstack.length - 1];
- if (importee && importers.add(importee), (callstack.includes(moduleId) || Array.from(imports.values()).some((i) => importers.has(i))) && mod.exports)
- return this.processImport(mod.exports, fetchedModule, metadata);
- let debugTimer;
- this.debug && (debugTimer = setTimeout(() => {
- const getStack = () => `stack:
- ${[...callstack, moduleId].reverse().map((p) => ` - ${p}`).join(`
- `)}`;
- this.debug(`[vite-runtime] module ${moduleId} takes over 2s to load.
- ${getStack()}`);
- }, 2e3));
- try {
- if (mod.promise)
- return this.processImport(await mod.promise, fetchedModule, metadata);
- const promise = this.directRequest(id, fetchedModule, callstack);
- return mod.promise = promise, mod.evaluated = !1, this.processImport(await promise, fetchedModule, metadata);
- } finally {
- mod.evaluated = !0, debugTimer && clearTimeout(debugTimer);
- }
- }
- async cachedModule(id, importer) {
- if (this._destroyed)
- throw new Error("[vite] Vite runtime has been destroyed.");
- const normalized = this.idToUrlMap.get(id);
- if (normalized) {
- const mod2 = this.moduleCache.getByModuleId(normalized);
- if (mod2.meta)
- return mod2.meta;
- }
- this.debug?.("[vite-runtime] fetching", id);
- const fetchedModule = id.startsWith("data:") ? { externalize: id, type: "builtin" } : await this.options.fetchModule(id, importer), idQuery = id.split("?")[1], query = idQuery ? `?${idQuery}` : "", file = "file" in fetchedModule ? fetchedModule.file : void 0, fullFile = file ? `${file}${query}` : id, moduleId = this.moduleCache.normalize(fullFile), mod = this.moduleCache.getByModuleId(moduleId);
- if (fetchedModule.id = moduleId, mod.meta = fetchedModule, file) {
- const fileModules = this.fileToIdMap.get(file) || [];
- fileModules.push(moduleId), this.fileToIdMap.set(file, fileModules);
- }
- return this.idToUrlMap.set(id, moduleId), this.idToUrlMap.set(unwrapId(id), moduleId), fetchedModule;
- }
- // override is allowed, consider this a public API
- async directRequest(id, fetchResult, _callstack) {
- const moduleId = fetchResult.id, callstack = [..._callstack, moduleId], mod = this.moduleCache.getByModuleId(moduleId), request = async (dep, metadata) => {
- const fetchedModule = await this.cachedModule(dep, moduleId);
- return this.moduleCache.getByModuleId(fetchedModule.id).importers.add(moduleId), mod.imports.add(fetchedModule.id), this.cachedRequest(dep, fetchedModule, callstack, metadata);
- }, dynamicRequest = async (dep) => (dep = String(dep), dep[0] === "." && (dep = posixResolve(posixDirname(id), dep)), request(dep, { isDynamicImport: !0 }));
- if ("externalize" in fetchResult) {
- const { externalize } = fetchResult;
- this.debug?.("[vite-runtime] externalizing", externalize);
- const exports2 = await this.runner.runExternalModule(externalize);
- return mod.exports = exports2, exports2;
- }
- const { code, file } = fetchResult;
- if (code == null) {
- const importer = callstack[callstack.length - 2];
- throw new Error(`[vite-runtime] Failed to load "${id}"${importer ? ` imported from ${importer}` : ""}`);
- }
- const modulePath = cleanUrl(file || moduleId), href = posixPathToFileHref(modulePath), filename = modulePath, dirname2 = posixDirname(modulePath), meta = {
- filename: isWindows ? toWindowsPath(filename) : filename,
- dirname: isWindows ? toWindowsPath(dirname2) : dirname2,
- url: href,
- env: this.envProxy,
- resolve(id2, parent) {
- throw new Error('[vite-runtime] "import.meta.resolve" is not supported.');
- },
- // should be replaced during transformation
- glob() {
- throw new Error('[vite-runtime] "import.meta.glob" is not supported.');
- }
- }, exports = /* @__PURE__ */ Object.create(null);
- Object.defineProperty(exports, Symbol.toStringTag, {
- value: "Module",
- enumerable: !1,
- configurable: !1
- }), mod.exports = exports;
- let hotContext;
- this.hmrClient && Object.defineProperty(meta, "hot", {
- enumerable: !0,
- get: () => {
- if (!this.hmrClient)
- throw new Error("[vite-runtime] HMR client was destroyed.");
- return this.debug?.("[vite-runtime] creating hmr context for", moduleId), hotContext ||= new HMRContext(this.hmrClient, moduleId), hotContext;
- },
- set: (value) => {
- hotContext = value;
- }
- });
- const context = {
- [ssrImportKey]: request,
- [ssrDynamicImportKey]: dynamicRequest,
- [ssrModuleExportsKey]: exports,
- [ssrExportAllKey]: (obj) => exportAll(exports, obj),
- [ssrImportMetaKey]: meta
- };
- return this.debug?.("[vite-runtime] executing", href), await this.runner.runViteModule(context, code, id), exports;
- }
- }
- function exportAll(exports, sourceModule) {
- if (exports !== sourceModule && !(isPrimitive(sourceModule) || Array.isArray(sourceModule) || sourceModule instanceof Promise)) {
- for (const key in sourceModule)
- if (key !== "default" && key !== "__esModule")
- try {
- Object.defineProperty(exports, key, {
- enumerable: !0,
- configurable: !0,
- get: () => sourceModule[key]
- });
- } catch {
- }
- }
- }
- class ESModulesRunner {
- async runViteModule(context, code) {
- await new AsyncFunction(
- ssrModuleExportsKey,
- ssrImportMetaKey,
- ssrImportKey,
- ssrDynamicImportKey,
- ssrExportAllKey,
- // source map should already be inlined by Vite
- '"use strict";' + code
- )(context[ssrModuleExportsKey], context[ssrImportMetaKey], context[ssrImportKey], context[ssrDynamicImportKey], context[ssrExportAllKey]), Object.seal(context[ssrModuleExportsKey]);
- }
- runExternalModule(filepath) {
- return import(filepath);
- }
- }
- export {
- ESModulesRunner,
- ModuleCacheMap,
- ViteRuntime,
- ssrDynamicImportKey,
- ssrExportAllKey,
- ssrImportKey,
- ssrImportMetaKey,
- ssrModuleExportsKey
- };
|