Files
gibbz/frontend/node_modules/@vitest/mocker/dist/chunk-automock.js
T
2026-09-22 08:41:20 +02:00

527 lines
68 KiB
JavaScript

import { readFileSync } from 'node:fs';
import { pathToFileURL, fileURLToPath } from 'node:url';
import MagicString from 'magic-string';
import { walk } from 'estree-walker';
import module$1, { isBuiltin, createRequire } from 'node:module';
import { extname } from 'node:path';
import { f as filterOutComments } from './chunk-helpers.js';
const isNodeInPatternWeakSet = new WeakSet();
function setIsNodeInPattern(node) {
return isNodeInPatternWeakSet.add(node);
}
function isNodeInPattern(node) {
return isNodeInPatternWeakSet.has(node);
}
/**
* Same logic from \@vue/compiler-core & \@vue/compiler-sfc
* Except this is using acorn AST
*/
function esmWalker(root, { onIdentifier, onImportMeta, onDynamicImport, onCallExpression }) {
const parentStack = [];
const varKindStack = [];
const scopeMap = new WeakMap();
const identifiers = [];
const setScope = (node, name) => {
let scopeIds = scopeMap.get(node);
if (scopeIds && scopeIds.has(name)) {
return;
}
if (!scopeIds) {
scopeIds = new Set();
scopeMap.set(node, scopeIds);
}
scopeIds.add(name);
};
function isInScope(name, parents) {
return parents.some((node) => node && scopeMap.get(node)?.has(name));
}
function handlePattern(p, parentScope) {
if (p.type === "Identifier") {
setScope(parentScope, p.name);
} else if (p.type === "RestElement") {
handlePattern(p.argument, parentScope);
} else if (p.type === "ObjectPattern") {
p.properties.forEach((property) => {
if (property.type === "RestElement") {
setScope(parentScope, property.argument.name);
} else {
handlePattern(property.value, parentScope);
}
});
} else if (p.type === "ArrayPattern") {
p.elements.forEach((element) => {
if (element) {
handlePattern(element, parentScope);
}
});
} else if (p.type === "AssignmentPattern") {
handlePattern(p.left, parentScope);
} else {
setScope(parentScope, p.name);
}
}
walk(root, {
enter(node, parent) {
if (node.type === "ImportDeclaration") {
return this.skip();
}
// track parent stack, skip for "else-if"/"else" branches as acorn nests
// the ast within "if" nodes instead of flattening them
if (parent && !(parent.type === "IfStatement" && node === parent.alternate)) {
parentStack.unshift(parent);
}
// track variable declaration kind stack used by VariableDeclarator
if (node.type === "VariableDeclaration") {
varKindStack.unshift(node.kind);
}
if (node.type === "CallExpression") {
onCallExpression?.(node);
}
if (node.type === "MetaProperty" && node.meta.name === "import") {
onImportMeta?.(node);
} else if (node.type === "ImportExpression") {
onDynamicImport?.(node);
}
if (node.type === "Identifier") {
if (!isInScope(node.name, parentStack) && isRefIdentifier(node, parent, parentStack)) {
// record the identifier, for DFS -> BFS
identifiers.push([node, parentStack.slice(0)]);
}
} else if (node.type === "ClassDeclaration" && node.id) {
// A class declaration name could shadow an import, so add its name to the parent scope
const parentScope = findParentScope(parentStack);
if (parentScope) {
setScope(parentScope, node.id.name);
}
} else if (node.type === "ClassExpression" && node.id) {
// A class expression name could shadow an import, so add its name to the scope
setScope(node, node.id.name);
} else if (isFunctionNode(node)) {
// If it is a function declaration, it could be shadowing an import
// Add its name to the scope so it won't get replaced
if (node.type === "FunctionDeclaration") {
const parentScope = findParentScope(parentStack);
if (parentScope) {
setScope(parentScope, node.id.name);
}
}
// walk function expressions and add its arguments to known identifiers
// so that we don't prefix them
node.params.forEach((p) => {
if (p.type === "ObjectPattern" || p.type === "ArrayPattern") {
handlePattern(p, node);
return;
}
walk(p.type === "AssignmentPattern" ? p.left : p, { enter(child, parent) {
// skip params default value of destructure
if (parent?.type === "AssignmentPattern" && parent?.right === child) {
return this.skip();
}
if (child.type !== "Identifier") {
return;
}
// do not record as scope variable if is a destructuring keyword
if (isStaticPropertyKey(child, parent)) {
return;
}
// do not record if this is a default value
// assignment of a destructuring variable
if (parent?.type === "TemplateLiteral" && parent?.expressions.includes(child) || parent?.type === "CallExpression" && parent?.callee === child) {
return;
}
setScope(node, child.name);
} });
});
} else if (node.type === "Property" && parent.type === "ObjectPattern") {
// mark property in destructuring pattern
setIsNodeInPattern(node);
} else if (node.type === "VariableDeclarator") {
const parentFunction = findParentScope(parentStack, varKindStack[0] === "var");
if (parentFunction) {
handlePattern(node.id, parentFunction);
}
} else if (node.type === "CatchClause" && node.param) {
handlePattern(node.param, node);
}
},
leave(node, parent) {
// untrack parent stack from above
if (parent && !(parent.type === "IfStatement" && node === parent.alternate)) {
parentStack.shift();
}
if (node.type === "VariableDeclaration") {
varKindStack.shift();
}
}
});
// emit the identifier events in BFS so the hoisted declarations
// can be captured correctly
identifiers.forEach(([node, stack]) => {
if (!isInScope(node.name, stack)) {
const parent = stack[0];
const hasBindingShortcut = isStaticProperty(parent) && parent.shorthand && (!isNodeInPattern(parent) || isInDestructuringAssignment(parent, parentStack));
const classDeclaration = parent.type === "ClassDeclaration" && node === parent.superClass;
const classExpression = parent.type === "ClassExpression" && node === parent.id;
onIdentifier?.(node, {
hasBindingShortcut,
classDeclaration,
classExpression
}, stack);
}
});
}
function isRefIdentifier(id, parent, parentStack) {
// declaration id
if (parent.type === "CatchClause" || (parent.type === "VariableDeclarator" || parent.type === "ClassDeclaration") && parent.id === id) {
return false;
}
if (isFunctionNode(parent)) {
// function declaration/expression id
if (parent.id === id) {
return false;
}
// params list
if (parent.params.includes(id)) {
return false;
}
}
// class method name
if (parent.type === "MethodDefinition" && !parent.computed) {
return false;
}
// class property
if (parent.type === "PropertyDefinition" && !parent.computed) {
// Default values can still reference identifiers
return id === parent.value;
}
// property key
if (isStaticPropertyKey(id, parent)) {
return false;
}
// object destructuring pattern
if (isNodeInPattern(parent) && parent.value === id) {
return false;
}
// non-assignment array destructuring pattern
if (parent.type === "ArrayPattern" && !isInDestructuringAssignment(parent, parentStack)) {
return false;
}
// member expression property
if (parent.type === "MemberExpression" && parent.property === id && !parent.computed) {
return false;
}
if (parent.type === "ExportSpecifier") {
return false;
}
// is a special keyword but parsed as identifier
if (id.name === "arguments") {
return false;
}
return true;
}
function isStaticProperty(node) {
return node && node.type === "Property" && !node.computed;
}
function isStaticPropertyKey(node, parent) {
return isStaticProperty(parent) && parent.key === node;
}
const functionNodeTypeRE = /Function(?:Expression|Declaration)$|Method$/;
function isFunctionNode(node) {
return functionNodeTypeRE.test(node.type);
}
const blockNodeTypeRE = /^BlockStatement$|^For(?:In|Of)?Statement$/;
function isBlock(node) {
return blockNodeTypeRE.test(node.type);
}
function findParentScope(parentStack, isVar = false) {
return parentStack.find(isVar ? isFunctionNode : isBlock);
}
function isInDestructuringAssignment(parent, parentStack) {
if (parent && (parent.type === "Property" || parent.type === "ArrayPattern")) {
return parentStack.some((i) => i.type === "AssignmentExpression");
}
return false;
}
function getArbitraryModuleIdentifier(node) {
return node.type === "Identifier" ? node.name : node.raw;
}
/* cjs-module-lexer 2.2.1 */
let A$1;const B$1=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse$1(E,g="@"){if(!A$1)throw new Error("Not initialized");const w=E.length+1,D=(A$1.__heap_base.value||A$1.__heap_base)+4*w-A$1.memory.buffer.byteLength;D>0&&A$1.memory.grow(Math.ceil(D/65536));const G=A$1.sa(w);(B$1?C$1:I)(E,new Uint16Array(A$1.memory.buffer,G,w));const S=A$1.parseCJS(G,E.length,0,0,0);if(S){const B=new Error(`Parse error ${g}${A$1.e()}:${E.slice(0,A$1.e()).split("\n").length}:${A$1.e()-E.lastIndexOf("\n",A$1.e()-1)}`);throw Object.assign(B,{idx:A$1.e()}),5!==S&&6!==S&&7!==S||Object.assign(B,{code:"ERR_LEXER_ESM_SYNTAX"}),B}let o=new Set,R=new Set,y=new Set;for(;A$1.rre();){const B=Q$1(E.slice(A$1.res(),A$1.ree()));B&&R.add(B);}for(;A$1.ru();)y.add(Q$1(E.slice(A$1.us(),A$1.ue())));for(;A$1.re();){let B=Q$1(E.slice(A$1.es(),A$1.ee()));void 0===B||y.has(B)||o.add(B);}return {exports:[...o],reexports:[...R]}}function Q$1(A){if('"'!==A[0]&&"'"!==A[0])return A;try{const B=function(A){const B=A[0];if('"'===B)try{return JSON.parse(A)}catch{}else if("'"===B&&A.length>1&&"'"===A[A.length-1]&&-1===A.indexOf('"'))try{return JSON.parse('"'+A.slice(1,-1)+'"')}catch{}let Q="",g={v:1};for(;g.v<A.length;){const I=A[g.v];switch(I){case B:return Q;case "\\":++g.v,Q+=E$1(A,g);break;case "\r":case "\n":throw new SyntaxError;default:++g.v,Q+=I;}}throw new SyntaxError}(A);for(let A=0;A<B.length;A++){const Q=64512&B.charCodeAt(A);if(!(Q<55296)){if(55296!==Q)return;if(56320!=(64512&B.charCodeAt(++A)))return}}return B}catch{}}function E$1(A,B){if(B.v===A.length)throw new SyntaxError;const Q=A[B.v];switch(++B.v,Q){case "\r":"\n"===A[B.v]&&++B.v;case "\n":case "\u2028":case "\u2029":return "";case "r":return "\r";case "n":return "\n";case "t":return "\t";case "b":return "\b";case "f":return "\f";case "v":return "\v";case "x":return function(A,B){const Q=g(A[B.v]);++B.v;const E=g(A[B.v]);return ++B.v,String.fromCodePoint(16*Q+E)}(A,B);case "u":return function(A,B){let Q=0;if("{"===A[B.v]){++B.v;do{if(Q=16*Q+g(A[B.v]),Q>1114111)throw new SyntaxError;++B.v;}while("}"!==A[B.v]);++B.v;}else for(let E=0;E<4;++E)Q=16*Q+g(A[B.v]),++B.v;return String.fromCodePoint(Q)}(A,B);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return function(A,B,Q){let E=A<="3"?2:1,g=+A;do{if((A=B[Q.v])<"0"||A>"7")break;g=8*g+ +A,++Q.v,--E;}while(E>0);return String.fromCodePoint(g)}(Q,A,B);default:return Q}}function g(A){if(A>="0"&&A<="9")return +A;if(A>="a"&&A<="f")return A.charCodeAt(0)-87;if(A>="A"&&A<="F")return A.charCodeAt(0)-55;throw new SyntaxError}function I(A,B){const Q=A.length;let E=0;for(;E<Q;){const Q=A.charCodeAt(E);B[E++]=(255&Q)<<8|Q>>>8;}}function C$1(A,B){const Q=A.length;let E=0;for(;E<Q;)B[E]=A.charCodeAt(E++);}function w(){const A="AGFzbQEAAAABXA1gAX8Bf2ACf38AYAABf2AAAGABfwBgBn9/f39/fwF/YAJ/fwF/YAd/f39/f39/AX9gA39/fwF/YAh/f39/f39/fwF/YAV/f39/fwF/YAR/f39/AX9gBH9/f38AAzMyAQEBAwAABAUJBAAEBAMDAAcCAAAICgAFAAAGBQsHBgAAAAAIAAICAgICAgICAgIFDAYEBQFwAQUFBQMBAAEGCAF/AEHQmAILB1wOBm1lbW9yeQIAC19faGVhcF9iYXNlAwACc2EAJAFlACUCZXMAJgJlZQAnA3JlcwAoA3JlZQApAnVzACoCdWUAKwJyZQAsA3JyZQAtAnJ1AC4IcGFyc2VDSlMALwkKAQBBAQsEAAECAwwBAgrJkwEyDgAgACABQcgfQcAfEDALDgAgACABQdQfQcwfEDALDgAgACABQeAfQdgfEDALEgBBzB9BADYCAEHUH0EANgIAC8wBAQN/AkBBvKABKAIAIgNBAmpB5QBB8QBB9QBB6QBB8gBB5QAQEARAQbygASADQQ5qNgIAAkAQEUEoRw0AQbygAUG8oAEoAgBBAmo2AgAQESEBQbygASgCACECIAFBJ0cgAUEiR3ENACABEAxBvKABQbygASgCAEECaiIBNgIAEBFBKUcNAAJAIABBAWsOAgMDAAtBtKABKAIAIAI2AgBBtKABKAIAIAE2AgRBAQ8LQbygASADNgIAC0EADwsgAiABQaAfKAIAEQEAQQELGwAgAEGYHygCAEYEQEEBDwsgAEECay8BABAPC/8CAQV/QZgfKAIAIQQDQAJAIABBAmshASAALwEAIgJBIEcNACAAIARLIAEhAA0BCwsCQCACQT1HDQADQAJAIAFBAmshACABLwEAQSBHDQAgASAESyAAIQENAQsLIABBAmohASAAQQRqIQNBACECA0ACQCABLwEAIgBBgPgDcUGAuANGBEAgAEH/B3EgAUECay8BAEH/B3FBCnRyQYCABGohAAsgAEUgASAETXINACAAQdwARg0CIAAQEkUNACABQX5BfCAAQYCABEkbaiEBIAAQEyECDAELCyACQQFxRQ0AIAEvAQBBIEcNAEG0oAEoAgAiAkGwHygCAEYNACACIAM2AgwgAiABQQJqNgIIA0ACQCABQQJrIQAgAS8BACIDQSBHDQAgASAESyAAIQENAQsLAkACQAJAIANB8gBrDgMAAwEDCyAAQfYAQeEAEBQNAQwCCyAAQewAQeUAEBQNACAAQeMAQe8AQe4AQfMAEBVFDQELQbSgASACQRBqNgIACws7AQF/AkAgAC8BACABRw0AIAAvAQIgAkcNACAALwEEIANHDQAgAC8BBiAERw0AIAAvAQggBUYhBgsgBgtPAQF/AkAgAC8BACABRw0AIAAvAQIgAkcNACAALwEEIANHDQAgAC8BBiAERw0AIAAvAQggBUcNACAALwEKIAZHDQAgAC8BDCAHRiEICyAIC7MFAQN/QbygAUG8oAEoAgAiAkEOajYCAAJAAkAQESIBQdsARwRAIAFBPUYNASABQS5HDQJBvKABQbygASgCAEECajYCABARQbygASgCACEBEBZFDQJBvKABKAIAIQAQEUE9Rw0CIAEgAEGcHygCABEBAA8LQbygAUG8oAEoAgBBAmo2AgAQESIAQSdHIABBIkdxDQFBvKABKAIAIAAQDEG8oAFBvKABKAIAQQJqIgA2AgAQEUHdAEcNAUG8oAFBvKABKAIAQQJqNgIAEBFBPUcNASAAQZwfKAIAEQEADAELIABFDQBBqB8oAgARAwBBvKABQbygASgCAEECajYCABARIgBB8gBHBEAgAEH7AEcNAUG8oAEoAgBBAmshAQJAAkADQEG8oAFBvKABKAIAIgBBAmo2AgAgAEHAoAEoAgBPDQIQESEAQbygASgCACECAkAgABAWBEBBvKABKAIAIQMQESIAQTpGBEBBvKABQbygASgCAEECajYCABAREBZFDQRBvKABKAIALwEAIQALIAIgA0GcHygCABEBAAwBCwJAIABBIkcEQCAAQS5GDQEgAEEnRw0EC0G8oAEoAgAgABAMQbygAUG8oAEoAgBBAmoiAzYCABARIgBBOkcNAUG8oAFBvKABKAIAQQJqNgIAEBEQFkUNA0G8oAEoAgAvAQAhACADQZwfKAIAEQEADAELQbygASgCACIALwECQS5HDQIgAC8BBEEuRw0CQbygASAAQQZqNgIAAkACQCAALwEGIgBB8gBGBH9BARAEQbygASgCACEADQEgAC8BAAUgAAtB//8DcRAWRQ0EDAELQbygASAAQQJqNgIACxARIQALIABB//8DcSIAQSxGDQALIABB/QBGDQELQbygASABNgIACw8LQQEQBBoLQbygASAC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IABB6wBHcg0BQbygASgCACIALwECQeUARw0BIAAvAQRB+QBHDQEgAC8BBkHzAEcNASAAQQZqIQJBvKABIABBCGo2AgAQEUEoRw0BQbygAUG8oAEoAgBBAmo2AgAQEUG8oAEoAgAhBhAWRQ0BQbygASgCABARQSlHDQFBvKABQbygASgCACICQQJqNgIAEBFBLkcNAUG8oAFBvKABKAIAQQJqNgIAEBFB5gBHDQFBvKABKAIAIgBBAmpB7wBB8gBBxQBB4QBB4wBB6AAQEEUNAUG8oAEgAEEOajYCABARQbygASgCACIAQQJrIQJBKEcNAUG8oAEgAEECajYCABARQeYARw0BQbygASgCACIAQQJqQfUAQe4AQeMAQfQAQekAQe8AQe4AEAhFDQFBvKABIABBEGo2AgAQEUEoRw0BQbygAUG8oAEoAgBBAmo2AgAQEUG8oAEoAgAhBxAWRQ0BQbygASgCACEBEBFBKUcNAUG8oAFBvKABKAIAQQJqNgIAEBFB+wBHDQFBvKABQbygASgCAEECajYCABARQekARw0BQbygASgCACIALwECQeYARw0BQbygASAAQQRqNgIAEBFBKEcNAUG8oAFBvKABKAIAQQJqNgIAEBEaQbygASgCACIAIAcgASAHayIJECMNASAGayIFQQF1IQRBvKABIAAgCUEBdSIIQQF0ajYCAAJAAkACQBARIgBBIUcEQCAAQT1HDQVBvKABKAIAIgAvAQJBPUcNBSAALwEEQT1HDQVBvKABIABBBmo2AgAQESIBQSdHIAFBIkdxDQVBvKABKAIAIgBBAmpB5ABB5QBB5gBB4QBB9QBB7ABB9AAQCEUNBUG8oAEgAEEQajYCABARIAFHDQVBvKABQbygASgCAEECajYCABARQfwARw0FQbygASgCACIALwECQfwARw0FQbygASAAQQRqNgIAEBEaQbygASgCACIAIAcgCRAjDQVBvKABIAAgCEEBdGo2AgAQEUE9Rw0FQbygASgCACIALwECQT1HDQUgAC8BBEE9Rw0FQbygASAAQQZqNgIAEBEiA0EnRyADQSJHcQ0FQQAhAQJAQbygASgCACIAQQJqIgovAQBB3wBHDQAgCi8BAkHfAEcNACAKLwEEQeUARw0AIAovAQZB8wBHDQAgCi8BCEHNAEcNACAKLwEKQe8ARw0AIAovAQxB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vKABIAAgCEEBdGo2AgAQEUEsRw0DQbygAUG8oAEoAgBBAmo2AgAQEUH7AEcNA0G8oAFBvKABKAIAQQJqNgIAEBFB5QBHDQNBvKABKAIAIgBBAmoQGUUNA0G8oAEgAEEUajYCABARQTpHDQNBvKABQbygASgCAEECajYCABARQbygASgCACEBQfQARwRAIAEvAQJB8gBHDQQgAS8BBEH1AEcNBCABLwEGQeUARw0EC0G8oAEgAUEIajYCABARQSxHDQNBvKABQbygASgCAEECajYCABARQecARw0DQbygASgCACIALwECQeUARw0DIAAvAQRB9ABHDQNBvKABIABBBmo2AgAQESIAQTpGBH9BvKABQbygASgCAEECajYCABARQeYARw0EQbygASgCACIAQQJqQfUAQe4AQeMAQfQAQekAQe8AQe4AEAhFDQRBvKABIABBEGoiATYCABARIgBBKEcEQCABQbygASgCAEYNBSAAEBZFDQULEBEFIAALQShHDQNBvKABQbygASgCAEECajYCABARQSlHDQNBvKABQbygASgCAEECajYCABARQfsARw0DQbygAUG8oAEoAgBBAmo2AgAQEUHyAEcNA0G8oAEoAgAiAEECakHlAEH0AEH1AEHyAEHuABAHRQ0DQbygASAAQQxqNgIAEBEaQbygASgCACIAIAYgBRAjDQNBvKABIAAgBEEBdGo2AgAQEUHbAEcNA0G8oAFBvKABKAIAQQJqNgIAEBEaQbygASgCACIAIAcgCRAjDQNBvKABIAAgCEEBdGo2AgAQEUHdAEcNA0G8oAFBvKABKAIAQQJqNgIAEBEiAEE7RgR/QbygAUG8oAEoAgBBAmo2AgAQEQUgAAtB/QBHDQNBvKABQbygASgCAEECajYCABARIgBBLEYEf0G8oAFBvKABKAIAQQJqNgIAEBEFIAALQf0ARw0DQbygAUG8oAEoAgBBAmo2AgAQEUEpRw0DQbygAUG8oAEoAgBBAmo2AgAQESIAQTtHDQELQbygAUG8oAEoAgBBAmo2AgAQESEACyAAQf0ARw0BQbygAUG8oAEoAgBBAmo2AgAQEUEpRw0BQbSgASgCACEDQYAgIQADQAJAIAAgA0cEQCAEIABBDGooAgAgAEEIaigCACIBa0EBdUcNASAGIAEgBRAjDQEgACgCACAAQQRqKAIAQaAf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";return "undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),A=>A.charCodeAt(0))}let D;function init$1(){return D||(D=(async()=>{const B=await WebAssembly.compile(w()),{exports:Q}=await WebAssembly.instantiate(B);A$1=Q;})())}
/* es-module-lexer 2.3.2 */
(function(A){return 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",A})({});const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse(C,g="@"){if(!E)return init.then(()=>parse(C,g));const I=C.length+1,w=(E.__heap_base.value||E.__heap_base)+4*I-E.memory.buffer.byteLength;w>0&&E.memory.grow(Math.ceil(w/65536));const D=E.sa(I-1);if("undefined"!=typeof Buffer?Buffer.from(E.memory.buffer,D,2*(I-1)).write(C,"utf16le"):(A?Q:B)(C,new Uint16Array(E.memory.buffer,D,I)),!E.parse())throw Object.assign(new Error(`Parse error ${g}:${C.slice(0,E.e()).split("\n").length}:${E.e()-C.lastIndexOf("\n",E.e()-1)}`),{idx:E.e()});const o=[],G=[];for(;E.ri();){const A=E.is(),B=E.ie(),Q=E.it(),g=E.ai(),I=E.id(),w=E.ss(),D=E.se();let G;E.ip()&&(G=i(C.slice(-1===I?A-1:A,-1===I?B+1:B)));let J=null;for(J=[],E.rsa();E.ra();){const A=E.aks(),B=E.ake(),Q=E.avs(),g=E.ave();J.push([s(C.slice(A,B)),s(C.slice(Q,g))]);}0===J.length&&(J=null),o.push({n:G,t:Q,s:A,e:B,ss:w,se:D,d:I,a:g,at:J});}for(;E.re();){const A=E.es(),B=E.ee(),Q=E.els(),g=E.ele(),I=Q<0?void 0:s(C.slice(Q,g)),w=s(C.slice(A,B));G.push({s:A,e:B,ls:Q,le:g,ss:E.ess(),n:w,ln:I});}function i(A){try{return (0,eval)(A)}catch(A){}}function s(A){if(!A)return A;const B=A[0];return ('"'===B||"'"===B)&&i(A)||A}return [o,G,!!E.f(),!!E.ms()]}function B(A,B){const Q=A.length;let E=0;for(;E<Q;){const Q=A.charCodeAt(E);B[E++]=(255&Q)<<8|Q>>>8;}}function Q(A,B){const Q=A.length;let E=0;for(;E<Q;)B[E]=A.charCodeAt(E++);}let E;const C=()=>{return A="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DQECQAJAIABBAmoiAC8BACIHQdwAaw4FAAICAgUBCyACQQRqIQAMAQsgB0EkRw0AIAIvAQRB+wBHDQALC0GYCiABQQJrNgIADwsgABAmQZgKKAIAIQALQZgKIABBAmoiADYCAAJAAkACQEEBECVBKWsOBAECAgACC0GYCkGYCigCAEECajYCAEEBECUaIAMgADYCBEGYCigCACEAIANBAToAGCADIAA2AhAMCAtBggogBTsBACADIAA2AgRBmAooAgAhACADQQE6ABggAyAAQQJqNgIMQYAKIAQ7AQAPC0GYCkGYCigCAEECazYCAA8LIAdFIABB+wBHckUEQEGYCigCACEAQYIKLwEADQZBnAooAgAhAQNAAkACQCAAIAFJBEBBARAlIgBBIkYgAEEnRnINASAAQf0ARw0CQZgKQZgKKAIAQQJqNgIAC0EBECUhAUGYCigCACEAIAFB5gBGBEAgAEECakGcCEEGEB8NBwtBmAogAEEIajYCAEEBECUiAEEiRyAAQSdHcQ0GIAYgAEEAEDkPCyAAECYLQZgKQZgKKAIAQQJqIgA2AgAMAAsACwJAAkAgAEEnaw4EAwEBAwALIABBIkYNAgtBmAooAgAhBAsgBCAJRw0AQZgKIARBAms2AgAPCyAAQSpHIAVxDQJBggovAQANAkGYCigCACEAQZwKKAIAIQIDQCAAIAJPDQEgAC8BACIBQSdHIAFBIkdxBEBBmAogAEECaiIANgIADAEFIAYgASADEDkPCwALAAsQMgsPC0GYCkGYCigCAEECazYCAA8LQZgKIABBAms2AgALQwEDf0GYCigCACEAQZwKKAIAIQIDQAJAIABBAmohASAAIAJPDQAgASEAIAEvAQBBCmsOBAABAQABCwtBmAogATYCAAtwAQR/QZgKKAIAQQJqIQFBnAooAgAhBAJAA0AgASICQQJqIQEgAiAETw0BIAEvAQAhAwJAIABFBEAgA0EqRg0BIANBCmsOBAMCAgMCCyADQSpHDQELIAIvAQRBL0cNAAsgAkEEaiEBC0GYCiABNgIACwsAIABBn4CABBA8C30BBH9BnAooAgAhA0GYCigCACEBA0ACQAJAAkAgAS8BACICQS9GBEAgAS8BAiIBQSpHBEAgAUEvRg0CQS8PCyAAECMMAgsgAARAIAIQJA0CDAMLIAIQLg0BDAILECILQZgKQZgKKAIAIgRBAmoiATYCACADIARLDQELCyACC4YBAQR/QZgKKAIAIQFBnAooAgAhBAJAA0ACQCABIgJBAmohASACIARPDQAgAS8BACIDIABGDQIgA0HcAEcEQCADQQprDgQBAgIBAgsgAkEEaiEBIAIvAQRBDUcNASACQQZqIAEgAi8BBkEKRhshAQwBCwtBmAogATYCABAyDwtBmAogATYCAAtuAQF/AkAgAEEpRyAAQShrQf//A3FBB0lxIABBIWsiAUEFTUEAQQEgAXRBMXEbckUEQCAAQTprIgFB//8DcUElT0K/gICAoAIgAa2Ip0EBcUVyDQELQQEPCyAAQf0ARyAAQfsAa0H//wNxQQRJcQsuAQF/QQEhAQJAIABBlAlBBRAqDQAgAEGeCUEDECoNACAAQaQJQQIQKiEBCyABC28BAX8CfyAALwEAIgEQJCABQSlGciABQf0ARnJFBEBBACABQd0ARw0BGgsDQAJAIABBoIsETQ0AIAEQJEUNACAAQQJrIgAvAQAhAQwBCwtBASABQSlGIAFB3QBGciABQf0ARnINABogARA0QQFzCws+AQJ/AkAgACACQQF0IgJrIgRBAmoiAEGgiwRJDQAgACABIAIQHw0AIABBoIsERgRAQQEPCyAEEDMhAwsgAwuDAQECf0EBIQICQAJAAkACQAJAAkAgAC8BACIBQTtrDgQFBAQBAAsCQCABQeUAaw4EAwQEAgALIAFBKUYNBCABQfkARw0DIABBAmtBsAlBBhAqDwsgAEECay8BAEE9Rg8LIABBAmtBqAlBBBAqDwsgAEECa0G8CUEDECoPC0EAIQILIAILqgMBAn8CQAJAAkACQAJAAkACQAJAAkACQCAALwEAQeQAaw4UAAECCQkJCQMJCQQFCQkGCQcJCQgJCwJAAkAgAEECay8BAEHpAGsOBAAKCgEKCyAAQQRrQbgIQQIQKg8LIABBBGtBvAhBAxAqDwsCQAJAAkAgAEECay8BAEHzAGsOAwABAgoLIABBBGsvAQAiAUHhAEcEQCABQewARw0KIABBBmtB5QAQOw8LIABBBmtB4wAQOw8LIABBBGtBwghBBBAqDwsgAEEEa0HKCEEGECoPCyAAQQJrLwEAQe8ARw0GIABBBGsvAQBB5QBHDQYgAEEGay8BACIBQfAARwRAIAFB4wBHDQcgAEEIa0HWCEEGECoPCyAAQQhrQeIIQQIQKg8LIABBAmtB5ghBBBAqDwtBASECIABBAmsiAEHpABA7DQQgAEHuCEEFECoPCyAAQQJrQeQAEDsPCyAAQQJrQfgIQQcQKg8LIABBAmtBhglBBBAqDwsgAEECay8BACIBQe8ARwRAIAFB5QBHDQEgAEEEa0HuABA7DwsgAEEEa0GOCUEDECohAgsgAgs0AQF/IABBoAFGIABBCWsiAUEXTUEAQQEgAXRBn4CABHEbckUEQCAAEDQgAEEuR3EPC0EBCwsAIABBjYCABBA8C0gBAn8CQCAALwEAIgJB5QBHBEAgAkHrAEcNASAAQQJrQeYIQQQQKg8LIABBAmsvAQBB9QBHDQAgAEEEa0HKCEEGECohAQsgAQvbAQEEf0GYCigCACEAQZwKKAIAIQMDQCAAQQJqIQECQAJAIAAgA08NAAJAAkACQCABLwEAIgJB2wBrDgIBAgALIAEhACACQQprDgQCBAQCAwsCQANAAkAgAUECaiEAIAEgA08NAAJAAkAgAC8BACICQdwAaw4CAAQBCyABQQRqIQEMAgsgACEBIAJBCmsOBAABAQABCwtBmAogADYCABAyQZgKKAIAIQAMBAtBmAogADYCAAwDCyAAQQRqIQAMAgtBmAogATYCABAyDwsgAkEvRw0AC0GYCiAANgIAC94BAQR/QZgKKAIAIQBBnAooAgAhAwJAAkADQAJAIAAiAUECaiEAIAEgA08NAAJAAkACQCAALwEAIgJB3ABrDgUCBAQEAQALIAJBJEcNAyABLwEEQfsARw0DQZgKIAFBBGoiAjYCAEGMCigCAEGCCi8BACIAQQN0aiIBQQQ2AgBBggogAEEBajsBACABIAI2AgQPC0GYCiAANgIAQYIKQYIKLwEAQQFrIgE7AQBBjAooAgAgAUH//wNxQQN0aigCAEEDRw0DDAQLIAFBBGohAAwBCwtBmAogADYCAAsQMgsLMwEBf0HkCUEBOgAAQZgKKAIAIQBBmApBnAooAgBBAmo2AgBB9AkgAEGgiwRrQQF1NgIACz0BAX8Cf0EBIAAvAQAiAUEJa0H//wNxQQVJIAFBgAFyQaABRnINABpBACABEDRFDQAaIAAQOiABQS5HcgsLXgEBfwJAIABB+P8DcUEoRiAAQSFrIgFBBU1BAEEBIAF0QTFxG3JFBEAgAEE6ayIBQf//A3FBJU9Cv4CAgKADIAGtiKdBAXFFcg0BC0EBDwsgAEH7AGtB//8DcUEESQtXAQN/QZgKKAIAIQEDQAJAIABB//8DcSICECQEQCAAIQMMAQsgACEDIAIQNA0AQQAhA0GYCiABQQJqIgI2AgAgAS8BAiEAIAIhASAADQELCyADQf//A3ELpQEBBH8CQEGYCigCACIDLwEAIgVB4QBHBEAgASECIAAhBAwBC0GYCiADQQRqNgIAQQEQJSECQZgKKAIAIQQCQCACQSJGIAJBJ0ZyRQRAIAIQNRpBmAooAgAhAgwBCyACECZBmApBmAooAgBBAmoiAjYCAAtBARAlIQVBmAooAgAhAwsgAyAERwRAIAQgAkEAIAAgACABRiIAG0EAIAEgABsQBAsgBQvTBAEHf0GYCigCACEBAkAgAEHf/wNxQdsARgRAIAEvAQAhBUGYCiABQQJqNgIAQf0AQd0AIAVB+wBGGyEGQQEQJSEDQZwKKAIAIQcDQAJAIAYgA0H//wNxIgJGQZgKKAIAIgEgB0tyDQACQCACQS5HDQAgAS8BAkEuRw0AIAEvAQRBLkcNAEGYCiABQQZqNgIAQQEQJRA3IQMMAgsCQAJ/AkAgBUH7AEYEQAJAIAJBIkYgAkEnRnJFBEAgAkHbAEcNAUEAEDgaQZgKQZgKKAIAQQJqNgIAIAEMBAsgAhAmQZgKQZgKKAIAQQJqNgIAIAEMAwsgASEAIANBMGtB//8DcUEJSw0BA0AgACICQQJqIQAgAi8BAiIDQTBrQf//A3FBCkkNACADQcEAayIEQR5NQQBBASAEdEG/gIGEBHEbDQAgA0HhAGsiBEEXTUEAQQEgBHRBv8CBBHEbDQACQAJAIANBK2sOBAABAAIBCyACLwEAQSByQeUARg0BCwtBmAogADYCACABDAILIAJBLEYEQEGYCiABQQJqNgIAQQEQJSEDDAULIAIQNyECDAILIAIQNRpBmAooAgALIQBBARAlIgJBOkYEQEGYCkGYCigCAEECajYCAEEBECUQNyECDAELIAAgAU0NACABIAAgASAAEAQLIAJBPUYEQEEAEDghAgtBmAooAgAhASACQSxHDQBBmAogAUECajYCAEEBECUhAwwBCwtBmAogAUECajYCAAwBCyAAEDUaQZgKKAIAIgAgAU0NACABIAAgASAAEAQLQQEQJQvgDgEMf0GECkGYCigCACIBNgIAQZAKKAIAIQpBjAooAgAhB0GcCigCACEMQYIKLwEAIQsgASIDIQUCQANAQZgKIAVBAmoiBDYCACAFIAxPBEBBACEIDAILAkACQCAELwEAIgIQLg0AAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEGCCi8BACIGIAtHDQAgAiEIAkACQCACQSlrDgQcAQEcAAsgAkE7RiACQd0ARnIgAkH9AEZyDRkLIAAgCXFBAUcNAAJAIAJBImsODgsODg4OCxAIDg4HDg4MAAsCQCACQdsAaw4PBQ4GDg4NDg4EDgIODg4DAAsCQCACQfsAaw4DCQ4KAAsgAkEKaw4EGg0NGg0LAkAgAkEiaw4OCg0NDQ0KDwcNDQYNDQsACwJAIAJB2wBrDg8EDQUNDQwNDQMNAQ0NDQIACwJAIAJBCmsOBBcNDRcACyACQfsAaw4DBwwIDAsgBg0MIAQQHkUNDCAFQQRqQYIIQQoQHw0MECAMEgsgBS8BBEHtAEcNCyAEEB5FDQsgBSkABkLwgLyDoI6AOlINCxAhDBELIAUvAQRB7ABHDQogBBAeRQ0KIAVBBmpBsghBBhAfDQogBS8BDBAkRQ0KQZQKQQE6AAAMCgsgByAGQQN0aiIBQQg2AgBBggogBkEBajsBACABIAM2AgQMDwsgBkUND0GCCiAGQQFrOwEADA4LIAZFDQ1BgAovAQAiAUUNDSAHIAZBA3RqQQhrKAIAQQVHDQ0gCiABQQJ0akEEaygCACIBKAIEDQ0gASADQQJqNgIEQZgKIAVBBGo2AgBBARAlGiABQZgKKAIAIgE2AhBBmAogAUECazYCAAwNCyAGRQ0NQYIKIAZBAWsiBDsBAEGACi8BACIBRQ0MIAcgBEH//wNxQQN0aigCAEEFRw0MIAogAUECdGpBBGsoAgAiBCgCBEUEQCAEIANBAmo2AgQLIAQgBUEEajYCDEGACiABQQFrOwEADAwLAkAgAy8BAEEpRw0AQdQJKAIAIgFFDQAgASgCDCADQQJqRw0AQdQJQdgJKAIAIgE2AgAgAQRAIAFBADYCJAwBC0HECUEANgIACyAHIAZBA3RqIgFBBkECQZQKLQAAGzYCAEGCCiAGQQFqOwEAIAEgAzYCBEGUCkEAOgAADAsLIAZFDQtBggogBkEBayIBOwEAIAcgAUH//wNxQQN0aigCAEEERw0KDAkLIAIQJgwJCwJAIAUvAQQiBEEqRwRAIARBL0cNARAiDAwLQQEQIwwLCwJAIAMvAQAiBRAnBEACQAJAAkAgBUEraw4EAQsCAAsLIANBAmsvAQBBMGtB//8DcUEKSQ0DDAoLIANBAmsvAQBBK0YNAgwJCyADQQJrLwEAQS1GDQEMCAsgBUEpRw0AIAcgBkEDdGooAgQQKA0HCwJAAkAgBkUgBUHmAEdyDQAgByAGQQN0aiIBQQhrKAIAQQFHDQAgA0ECay8BAEHvAEcNASADQQRrEClFDQEgAUEEaygCAEGeCUEDECpFDQEMCAsgBUH9AEcNACAHIAZBA3RqIgEoAgQQKw0HIAEoAgBBBkYNBwsgAxAsDQZBiAotAAAgBUEvRnEgBUEAR3NFDQZB3AkoAgAiAUUNBCADIAEoAgBJDQQgAyEEIAMgASgCBE0NBgwFCyAHIAZBA3RqIgEgAzYCBEGCCiAGQQFqOwEAIAFBAzYCAAwGCyACQTBrQf//A3FBCkkgAkEgckHhAGtB//8DcUEaSXINAAJAAkAgAkHcAGsOBAIBAQIACyACQSRGDQELIAJBoAFGIAJBgAFJcg0GCwNAIAQvAQIiAUEgckHhAGshCAJAIAFBMGtB//8DcUEKSSAIQf//A3FBGklyDQACQAJAIAFB3ABrDgQCAQECAAsgAUEkRg0BCyABQaABRiABQYABSXINBwtBmAogBEECaiIENgIADAALAAsgByAGQQN0aiIBQQE2AgBBggogBkEBajsBACABIAM2AgQMBAsgAyEECwNAIARBoIsESwRAIARBAmsiBC8BACIFEC1FDQELCyAFQf//A3EQLgRAA0AgBEGgiwRLBEBBhAogBEECayIENgIAIAQvAQAQLg0BCwsgBBAvDQELQYgKQQE6AAAMAgsQMEGICkEAOgAADAELEDELQYQKQZgKKAIAIgE2AgAMAQsQMgtBACEIQeQJLQAADQMCQCABIANGBEAgAEUNAUGCCi8BACALRiAJcUUNAUEBIQkgASEDQZgKKAIALwEAIghBCmsOBAUCAgUCCyACQS9GBEBBiAotAABBAXMhCQwBC0EBIQkgAkEwa0H//wNxQQpJIAJB3/8DcUHBAGtB//8DcUEaSXIgAkEkRiACQd8ARnJyIAJB/wBLcg0AIAEhAwJAAkAgAkEnaw4DAwEDAAsCQCACQd0Aaw4EAwEBAwALIAJBIkYgAkH9AEZyDQELQQAhCQsgASEDC0GYCigCACEFDAELCyACDwsgCAuvBAEHfyABQSJGIAFBJ0ZyRQRAEDIPC0GYCigCACEDIAEQJiAAIANBAmpBmAooAgBBARADIAIEQEHUCSgCAEEEQQYgAkEBRhs2AhwLQZgKQZgKKAIAQQJqNgIAQQAQJSEAQZgKKAIAIQQCQAJAIABB9wBHDQAgBC8BAkHpAEcNACAELwEEQfQARw0AIAQvAQZB6ABGDQELQZgKIARBAms2AgAPC0GYCiAEQQhqNgIAAkBBARAlQfsARwRADAELQewJKAIAIQNB1AkoAgAhBUGYCigCACIGIQBBACECA0AgAyEBQZgKIABBAmo2AgBBARAlIQBBmAooAgAhBwJAAkACQCAAQSJHBEAgAEEnRw0BQScQJgwCC0EiECYMAQsgABA1IQNBmAooAgAhAAwBC0GYCigCAEECaiEAQZgKIAA2AgBBARAlIQMLIANBOkcEQAwCC0GYCkGYCigCAEECajYCAEEBECUiA0EiRiADQSdGckUEQAwCC0GYCigCACEIIAMQJkHsCSABQRRqIgM2AgBBmAooAgAhCSABQQA2AhAgASAINgIIIAEgADYCBCABIAc2AgAgASAJQQJqIgA2AgwCQCACRQRAIAUgATYCIAwBCyACIAE2AhALQZgKIAA2AgACQEEBECUiAEEsRwRAIABB/QBGDQEMAwtBmApBmAooAgBBAmoiADYCACABIQIMAQsLIAUgBjYCECAFQZgKKAIAQQJqNgIMDwtBmAogBDYCAAstAQF/AkAgAC8BAEEuRw0AIABBAmsvAQBBLkcNACAAQQRrLwEAQS5GIQELIAELNQEBfwJAIABBoIsESQ0AIAAvAQAgAUcNACAAQaCLBEYEQEEBDwsgAEECay8BABAtIQILIAILKQEBfyAAQaABRiAAQQlrIgJBF01BAEEBIAJ0IAFxG3JFBEBBAA8LQQELC8cBAQBBgggLvwF4AHAAbwByAHQAZQB0AGEAbwB1AHIAYwBlAHIAbwBtAHUAbgBjAHQAaQBvAG4AbABhAHMAcwB2AG8AeQBpAGUAZABlAGwAZQBjAG8AbgB0AGkAbgBpAG4AcwB0AGEAbgB0AHkAYgByAGUAYQByAGUAdAB1AHIAZABlAGIAdQBnAGcAZQBhAHcAYQBpAHQAaAByAHcAaABpAGwAZQBmAG8AcgBpAGYAYwBhAHQAYwBmAGkAbgBhAGwAbABlAGwAcw==","undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),A=>A.charCodeAt(0));var A;};const init=WebAssembly.compile(C()).then(WebAssembly.instantiate).then(({exports:A})=>{E=A;});
async function initSyntaxLexers() {
await Promise.all([init$1(), init]);
}
const isTransform = process.execArgv.includes("--experimental-transform-types") || process.env.NODE_OPTIONS?.includes("--experimental-transform-types");
function transformCode(code, filename) {
const ext = extname(filename.split("?")[0]);
const isTs = ext === ".ts" || ext === ".cts" || ext === ".mts";
if (!isTs) {
return code;
}
if (!module$1.stripTypeScriptTypes) {
throw new Error(`Cannot parse '${filename}' because "module.stripTypeScriptTypes" is not supported. Module mocking requires Node.js 22.15 or higher. This is NOT a bug of Vitest.`);
}
return module$1.stripTypeScriptTypes(code, { mode: isTransform ? "transform" : "strip" });
}
const cachedFileExports = new Map();
function collectModuleExports(filename, code, format, exports = []) {
if (format === "module") {
const [imports_, exports_] = parse(code, filename);
const fileExports = [...exports_.map((p) => p.n)];
imports_.forEach(({ ss: start, se: end, n: name }) => {
const substring = code.substring(start, end).replace(/ +/g, " ");
if (name && substring.startsWith("export *") && !substring.startsWith("export * as")) {
fileExports.push(...tryParseModule(name));
}
});
cachedFileExports.set(filename, fileExports);
exports.push(...fileExports);
} else {
const { exports: exports_, reexports } = parse$1(code, filename);
const fileExports = [...exports_];
reexports.forEach((name) => {
fileExports.push(...tryParseModule(name));
});
cachedFileExports.set(filename, fileExports);
exports.push(...fileExports);
}
function tryParseModule(name) {
try {
return parseModule(name);
} catch (error) {
console.warn(`[module mocking] Failed to parse '${name}' imported from ${filename}:`, error);
return [];
}
}
let __require;
function getModuleRequire() {
return __require ??= createRequire(filename);
}
function parseModule(name) {
if (isBuiltin(name)) {
if (cachedFileExports.has(name)) {
const cachedExports = cachedFileExports.get(name);
return cachedExports;
}
const builtinModule = getBuiltinModule(name);
const builtinExports = Object.keys(builtinModule);
cachedFileExports.set(name, builtinExports);
return builtinExports;
}
const resolvedModuleUrl = format === "module" ? import.meta.resolve(name, pathToFileURL(filename).toString()) : getModuleRequire().resolve(name);
const resolvedModulePath = format === "commonjs" ? resolvedModuleUrl : fileURLToPath(resolvedModuleUrl);
if (cachedFileExports.has(resolvedModulePath)) {
return cachedFileExports.get(resolvedModulePath);
}
const fileContent = readFileSync(resolvedModulePath, "utf-8");
const ext = extname(resolvedModulePath);
const code = transformCode(fileContent, resolvedModulePath);
if (code == null) {
cachedFileExports.set(resolvedModulePath, []);
return [];
}
const resolvedModuleFormat = resolveModuleFormat(resolvedModulePath, code);
if (ext === ".json") {
return ["default"];
} else {
// can't do wasm, for example
console.warn(`Cannot process '${resolvedModuleFormat}' imported from ${filename} because of unknown file extension: ${ext}.`);
}
if (resolvedModuleFormat) {
return collectModuleExports(resolvedModulePath, code, resolvedModuleFormat, exports);
}
return [];
}
return Array.from(new Set(exports));
}
function resolveModuleFormat(url, code) {
const ext = extname(url);
if (ext === ".cjs" || ext === ".cts") {
return "commonjs";
} else if (ext === ".mjs" || ext === ".mts") {
return "module";
} else if (ext === ".js" || ext === ".ts" || ext === "") {
if (!module$1.findPackageJSON) {
throw new Error(`Cannot parse the module format of '${url}' because "module.findPackageJSON" is not available. Upgrade to Node 22.14 to use this feature. This is NOT a bug of Vitest.`);
}
const pkgJsonPath = module$1.findPackageJSON(url);
const pkgJson = pkgJsonPath ? JSON.parse(readFileSync(pkgJsonPath, "utf-8")) : {};
if (pkgJson?.type === "module") {
return "module";
} else if (pkgJson?.type === "commonjs") {
return "commonjs";
} else {
// Ambiguous input! Check if it has ESM syntax. Node.js is much smarter here,
// but we don't need to run the code, so we can be more relaxed
if (hasESM(filterOutComments(code))) {
return "module";
} else {
return "commonjs";
}
}
}
return undefined;
}
let __globalRequire;
function getBuiltinModule(moduleId) {
__globalRequire ??= module$1.createRequire(import.meta.url);
return __globalRequire(moduleId);
}
const ESM_RE = /(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m;
function hasESM(code) {
return ESM_RE.test(code);
}
// TODO: better source map replacement
function automockModule(code, mockType, parse, options = {}) {
const globalThisAccessor = options.globalThisAccessor || "\"__vitest_mocker__\"";
let ast;
try {
ast = parse(code);
} catch (cause) {
if (options.id) {
throw new Error(`failed to parse ${options.id}`, { cause });
}
throw cause;
}
const m = new MagicString(code);
const allSpecifiers = [];
const replacers = [];
let importIndex = 0;
for (const _node of ast.body) {
if (_node.type === "ExportAllDeclaration") {
const node = _node;
// TODO: pass it down in the browser mode
if (!options.id) {
throw new Error(`automocking files with \`export *\` is not supported because it cannot be easily statically analysed`);
}
const source = node.source.value;
if (typeof source !== "string") {
throw new TypeError(`unknown source type while automocking: ${source}`);
}
const moduleUrl = import.meta.resolve(source, pathToFileURL(options.id).toString());
const modulePath = fileURLToPath(moduleUrl);
const moduleContent = readFileSync(modulePath, "utf-8");
const transformedCode = transformCode(moduleContent, moduleUrl);
const moduleFormat = resolveModuleFormat(moduleUrl, transformedCode);
const moduleExports = collectModuleExports(modulePath, transformedCode, moduleFormat || "module");
replacers.push(() => {
const importNames = [];
moduleExports.forEach((exportName) => {
const isReexported = allSpecifiers.some(({ name, alias }) => name === exportName || alias === exportName);
if (!isReexported) {
importNames.push(exportName);
allSpecifiers.push({ name: exportName });
}
});
const importString = `import { ${importNames.join(", ")} } from '${source}';`;
m.overwrite(node.start, node.end, importString);
});
}
if (_node.type === "ExportNamedDeclaration") {
const node = _node;
const declaration = node.declaration;
function traversePattern(expression) {
// export const test = '1'
if (expression.type === "Identifier") {
allSpecifiers.push({ name: expression.name });
} else if (expression.type === "ArrayPattern") {
expression.elements.forEach((element) => {
if (!element) {
return;
}
traversePattern(element);
});
} else if (expression.type === "ObjectPattern") {
expression.properties.forEach((property) => {
// export const { ...rest } = {}
if (property.type === "RestElement") {
traversePattern(property);
} else if (property.type === "Property") {
traversePattern(property.value);
} else ;
});
} else if (expression.type === "RestElement") {
traversePattern(expression.argument);
} else if (expression.type === "AssignmentPattern") {
throw new Error(`AssignmentPattern is not supported. Please open a new bug report.`);
} else if (expression.type === "MemberExpression") {
throw new Error(`MemberExpression is not supported. Please open a new bug report.`);
} else ;
}
if (declaration) {
if (declaration.type === "FunctionDeclaration") {
allSpecifiers.push({ name: declaration.id.name });
} else if (declaration.type === "VariableDeclaration") {
declaration.declarations.forEach((declaration) => {
traversePattern(declaration.id);
});
} else if (declaration.type === "ClassDeclaration") {
allSpecifiers.push({ name: declaration.id.name });
} else ;
m.remove(node.start, declaration.start);
}
const specifiers = node.specifiers || [];
const source = node.source;
if (!source && specifiers.length) {
specifiers.forEach((specifier) => {
allSpecifiers.push({
alias: getArbitraryModuleIdentifier(specifier.exported),
name: getArbitraryModuleIdentifier(specifier.local)
});
});
m.remove(node.start, node.end);
} else if (source && specifiers.length) {
const importNames = [];
specifiers.forEach((specifier) => {
const importedName = `__vitest_imported_${importIndex++}__`;
importNames.push([getArbitraryModuleIdentifier(specifier.local), importedName]);
allSpecifiers.push({
name: importedName,
alias: getArbitraryModuleIdentifier(specifier.exported)
});
});
const importString = `import { ${importNames.map(([name, alias]) => `${name} as ${alias}`).join(", ")} } from '${source.value}'`;
m.overwrite(node.start, node.end, importString);
}
}
if (_node.type === "ExportDefaultDeclaration") {
const node = _node;
const declaration = node.declaration;
allSpecifiers.push({
name: "__vitest_default",
alias: "default"
});
m.overwrite(node.start, declaration.start, `const __vitest_default = `);
}
}
replacers.forEach((cb) => cb());
const moduleObject = `
const __vitest_current_es_module__ = {
__esModule: true,
${allSpecifiers.map(({ name }) => `["${name}"]: ${name},`).join("\n ")}
}
const __vitest_mocked_module__ = globalThis[${globalThisAccessor}].mockObject(__vitest_current_es_module__, "${mockType}")
`;
const assigning = allSpecifiers.map(({ name }, index) => {
return `const __vitest_mocked_${index}__ = __vitest_mocked_module__["${name}"]`;
}).join("\n");
const redeclarations = allSpecifiers.map(({ name, alias }, index) => {
return ` __vitest_mocked_${index}__ as ${alias || name},`;
}).join("\n");
const specifiersExports = `
export {
${redeclarations}
}
`;
m.append(moduleObject + assigning + specifiersExports);
return m;
}
export { automockModule as a, collectModuleExports as c, esmWalker as e, initSyntaxLexers as i };