| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454 | 'use strict';Object.defineProperty(exports, '__esModule', {  value: true});exports.default = void 0;function nativeModule() {  const data = _interopRequireWildcard(require('module'));  nativeModule = function () {    return data;  };  return data;}function path() {  const data = _interopRequireWildcard(require('path'));  path = function () {    return data;  };  return data;}function _url() {  const data = require('url');  _url = function () {    return data;  };  return data;}function _vm() {  const data = require('vm');  _vm = function () {    return data;  };  return data;}function _cjsModuleLexer() {  const data = require('cjs-module-lexer');  _cjsModuleLexer = function () {    return data;  };  return data;}function _collectV8Coverage() {  const data = require('collect-v8-coverage');  _collectV8Coverage = function () {    return data;  };  return data;}function _execa() {  const data = _interopRequireDefault(require('execa'));  _execa = function () {    return data;  };  return data;}function fs() {  const data = _interopRequireWildcard(require('graceful-fs'));  fs = function () {    return data;  };  return data;}function _slash() {  const data = _interopRequireDefault(require('slash'));  _slash = function () {    return data;  };  return data;}function _stripBom() {  const data = _interopRequireDefault(require('strip-bom'));  _stripBom = function () {    return data;  };  return data;}function _transform() {  const data = require('@jest/transform');  _transform = function () {    return data;  };  return data;}function _jestHasteMap() {  const data = _interopRequireDefault(require('jest-haste-map'));  _jestHasteMap = function () {    return data;  };  return data;}function _jestMessageUtil() {  const data = require('jest-message-util');  _jestMessageUtil = function () {    return data;  };  return data;}function _jestRegexUtil() {  const data = require('jest-regex-util');  _jestRegexUtil = function () {    return data;  };  return data;}function _jestResolve() {  const data = _interopRequireDefault(require('jest-resolve'));  _jestResolve = function () {    return data;  };  return data;}function _jestSnapshot() {  const data = _interopRequireDefault(require('jest-snapshot'));  _jestSnapshot = function () {    return data;  };  return data;}function _jestUtil() {  const data = require('jest-util');  _jestUtil = function () {    return data;  };  return data;}var _helpers = require('./helpers');function _interopRequireDefault(obj) {  return obj && obj.__esModule ? obj : {default: obj};}function _getRequireWildcardCache(nodeInterop) {  if (typeof WeakMap !== 'function') return null;  var cacheBabelInterop = new WeakMap();  var cacheNodeInterop = new WeakMap();  return (_getRequireWildcardCache = function (nodeInterop) {    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;  })(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {  if (!nodeInterop && obj && obj.__esModule) {    return obj;  }  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {    return {default: obj};  }  var cache = _getRequireWildcardCache(nodeInterop);  if (cache && cache.has(obj)) {    return cache.get(obj);  }  var newObj = {};  var hasPropertyDescriptor =    Object.defineProperty && Object.getOwnPropertyDescriptor;  for (var key in obj) {    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {      var desc = hasPropertyDescriptor        ? Object.getOwnPropertyDescriptor(obj, key)        : null;      if (desc && (desc.get || desc.set)) {        Object.defineProperty(newObj, key, desc);      } else {        newObj[key] = obj[key];      }    }  }  newObj.default = obj;  if (cache) {    cache.set(obj, newObj);  }  return newObj;}function _defineProperty(obj, key, value) {  if (key in obj) {    Object.defineProperty(obj, key, {      value: value,      enumerable: true,      configurable: true,      writable: true    });  } else {    obj[key] = value;  }  return obj;}const esmIsAvailable = typeof _vm().SourceTextModule === 'function';const defaultTransformOptions = {  isInternalModule: false,  supportsDynamicImport: esmIsAvailable,  supportsExportNamespaceFrom: false,  supportsStaticESM: false,  supportsTopLevelAwait: false};// These are modules that we know// * are safe to require from the outside (not stateful, not prone to errors passing in instances from different realms), and// * take sufficiently long to require to warrant an optimization.// When required from the outside, they use the worker's require cache and are thus// only loaded once per worker, not once per test file.// Use /benchmarks/test-file-overhead to measure the impact.// Note that this only applies when they are required in an internal context;// users who require one of these modules in their tests will still get the module from inside the VM.// Prefer listing a module here only if it is impractical to use the jest-resolve-outside-vm-option where it is required,// e.g. because there are many require sites spread across the dependency graph.const INTERNAL_MODULE_REQUIRE_OUTSIDE_OPTIMIZED_MODULES = new Set(['chalk']);const JEST_RESOLVE_OUTSIDE_VM_OPTION = Symbol.for(  'jest-resolve-outside-vm-option');const testTimeoutSymbol = Symbol.for('TEST_TIMEOUT_SYMBOL');const retryTimesSymbol = Symbol.for('RETRY_TIMES');const NODE_MODULES = path().sep + 'node_modules' + path().sep;const getModuleNameMapper = config => {  if (    Array.isArray(config.moduleNameMapper) &&    config.moduleNameMapper.length  ) {    return config.moduleNameMapper.map(([regex, moduleName]) => ({      moduleName,      regex: new RegExp(regex)    }));  }  return null;};const unmockRegExpCache = new WeakMap();const EVAL_RESULT_VARIABLE = 'Object.<anonymous>';const runtimeSupportsVmModules = typeof _vm().SyntheticModule === 'function';const supportsTopLevelAwait =  runtimeSupportsVmModules &&  (() => {    try {      // eslint-disable-next-line no-new      new (_vm().SourceTextModule)('await Promise.resolve()');      return true;    } catch {      return false;    }  })();const supportsNodeColonModulePrefixInRequire = (() => {  try {    require('node:fs');    return true;  } catch {    return false;  }})();const supportsNodeColonModulePrefixInImport = (() => {  const {stdout} = _execa().default.sync(    'node',    [      '--eval',      'import("node:fs").then(() => console.log(true), () => console.log(false));'    ],    {      reject: false    }  );  return stdout === 'true';})();class Runtime {  constructor(    config,    environment,    resolver,    transformer,    cacheFS,    coverageOptions,    testPath  ) {    var _this$_environment$ex, _this$_environment$ex2, _this$_environment;    _defineProperty(this, '_cacheFS', void 0);    _defineProperty(this, '_config', void 0);    _defineProperty(this, '_coverageOptions', void 0);    _defineProperty(this, '_currentlyExecutingModulePath', void 0);    _defineProperty(this, '_environment', void 0);    _defineProperty(this, '_explicitShouldMock', void 0);    _defineProperty(this, '_explicitShouldMockModule', void 0);    _defineProperty(this, '_fakeTimersImplementation', void 0);    _defineProperty(this, '_internalModuleRegistry', void 0);    _defineProperty(this, '_isCurrentlyExecutingManualMock', void 0);    _defineProperty(this, '_mainModule', void 0);    _defineProperty(this, '_mockFactories', void 0);    _defineProperty(this, '_mockMetaDataCache', void 0);    _defineProperty(this, '_mockRegistry', void 0);    _defineProperty(this, '_isolatedMockRegistry', void 0);    _defineProperty(this, '_moduleMockRegistry', void 0);    _defineProperty(this, '_moduleMockFactories', void 0);    _defineProperty(this, '_moduleMocker', void 0);    _defineProperty(this, '_isolatedModuleRegistry', void 0);    _defineProperty(this, '_moduleRegistry', void 0);    _defineProperty(this, '_esmoduleRegistry', void 0);    _defineProperty(this, '_cjsNamedExports', void 0);    _defineProperty(this, '_esmModuleLinkingMap', void 0);    _defineProperty(this, '_testPath', void 0);    _defineProperty(this, '_resolver', void 0);    _defineProperty(this, '_shouldAutoMock', void 0);    _defineProperty(this, '_shouldMockModuleCache', void 0);    _defineProperty(this, '_shouldUnmockTransitiveDependenciesCache', void 0);    _defineProperty(this, '_sourceMapRegistry', void 0);    _defineProperty(this, '_scriptTransformer', void 0);    _defineProperty(this, '_fileTransforms', void 0);    _defineProperty(this, '_fileTransformsMutex', void 0);    _defineProperty(this, '_v8CoverageInstrumenter', void 0);    _defineProperty(this, '_v8CoverageResult', void 0);    _defineProperty(this, '_transitiveShouldMock', void 0);    _defineProperty(this, '_unmockList', void 0);    _defineProperty(this, '_virtualMocks', void 0);    _defineProperty(this, '_virtualModuleMocks', void 0);    _defineProperty(this, '_moduleImplementation', void 0);    _defineProperty(this, 'jestObjectCaches', void 0);    _defineProperty(this, 'jestGlobals', void 0);    _defineProperty(this, 'esmConditions', void 0);    _defineProperty(this, 'cjsConditions', void 0);    _defineProperty(this, 'isTornDown', false);    this._cacheFS = cacheFS;    this._config = config;    this._coverageOptions = coverageOptions;    this._currentlyExecutingModulePath = '';    this._environment = environment;    this._explicitShouldMock = new Map();    this._explicitShouldMockModule = new Map();    this._internalModuleRegistry = new Map();    this._isCurrentlyExecutingManualMock = null;    this._mainModule = null;    this._mockFactories = new Map();    this._mockRegistry = new Map();    this._moduleMockRegistry = new Map();    this._moduleMockFactories = new Map();    invariant(      this._environment.moduleMocker,      '`moduleMocker` must be set on an environment when created'    );    this._moduleMocker = this._environment.moduleMocker;    this._isolatedModuleRegistry = null;    this._isolatedMockRegistry = null;    this._moduleRegistry = new Map();    this._esmoduleRegistry = new Map();    this._cjsNamedExports = new Map();    this._esmModuleLinkingMap = new WeakMap();    this._testPath = testPath;    this._resolver = resolver;    this._scriptTransformer = transformer;    this._shouldAutoMock = config.automock;    this._sourceMapRegistry = new Map();    this._fileTransforms = new Map();    this._fileTransformsMutex = new Map();    this._virtualMocks = new Map();    this._virtualModuleMocks = new Map();    this.jestObjectCaches = new Map();    this._mockMetaDataCache = new Map();    this._shouldMockModuleCache = new Map();    this._shouldUnmockTransitiveDependenciesCache = new Map();    this._transitiveShouldMock = new Map();    this._fakeTimersImplementation =      config.timers === 'legacy'        ? this._environment.fakeTimers        : this._environment.fakeTimersModern;    this._unmockList = unmockRegExpCache.get(config);    if (!this._unmockList && config.unmockedModulePathPatterns) {      this._unmockList = new RegExp(        config.unmockedModulePathPatterns.join('|')      );      unmockRegExpCache.set(config, this._unmockList);    }    const envExportConditions =      (_this$_environment$ex =        (_this$_environment$ex2 = (_this$_environment = this._environment)          .exportConditions) === null || _this$_environment$ex2 === void 0          ? void 0          : _this$_environment$ex2.call(_this$_environment)) !== null &&      _this$_environment$ex !== void 0        ? _this$_environment$ex        : [];    this.esmConditions = Array.from(      new Set(['import', 'default', ...envExportConditions])    );    this.cjsConditions = Array.from(      new Set(['require', 'default', ...envExportConditions])    );    if (config.automock) {      config.setupFiles.forEach(filePath => {        if (filePath.includes(NODE_MODULES)) {          const moduleID = this._resolver.getModuleID(            this._virtualMocks,            filePath,            undefined, // shouldn't really matter, but in theory this will make sure the caching is correct            {              conditions: this.unstable_shouldLoadAsEsm(filePath)                ? this.esmConditions                : this.cjsConditions            }          );          this._transitiveShouldMock.set(moduleID, false);        }      });    }    this.resetModules();  }  static async createContext(config, options) {    (0, _jestUtil().createDirectory)(config.cacheDirectory);    const instance = Runtime.createHasteMap(config, {      console: options.console,      maxWorkers: options.maxWorkers,      resetCache: !config.cache,      watch: options.watch,      watchman: options.watchman    });    const hasteMap = await instance.build();    return {      config,      hasteFS: hasteMap.hasteFS,      moduleMap: hasteMap.moduleMap,      resolver: Runtime.createResolver(config, hasteMap.moduleMap)    };  }  static createHasteMap(config, options) {    const ignorePatternParts = [      ...config.modulePathIgnorePatterns,      ...(options && options.watch ? config.watchPathIgnorePatterns : []),      config.cacheDirectory.startsWith(config.rootDir + path().sep) &&        config.cacheDirectory    ].filter(Boolean);    const ignorePattern =      ignorePatternParts.length > 0        ? new RegExp(ignorePatternParts.join('|'))        : undefined;    return _jestHasteMap().default.create({      cacheDirectory: config.cacheDirectory,      computeSha1: config.haste.computeSha1,      console:        options === null || options === void 0 ? void 0 : options.console,      dependencyExtractor: config.dependencyExtractor,      enableSymlinks: config.haste.enableSymlinks,      extensions: [_jestSnapshot().default.EXTENSION].concat(        config.moduleFileExtensions      ),      forceNodeFilesystemAPI: config.haste.forceNodeFilesystemAPI,      hasteImplModulePath: config.haste.hasteImplModulePath,      hasteMapModulePath: config.haste.hasteMapModulePath,      ignorePattern,      maxWorkers:        (options === null || options === void 0          ? void 0          : options.maxWorkers) || 1,      mocksPattern: (0, _jestRegexUtil().escapePathForRegex)(        path().sep + '__mocks__' + path().sep      ),      name: config.name,      platforms: config.haste.platforms || ['ios', 'android'],      resetCache:        options === null || options === void 0 ? void 0 : options.resetCache,      retainAllFiles: false,      rootDir: config.rootDir,      roots: config.roots,      throwOnModuleCollision: config.haste.throwOnModuleCollision,      useWatchman:        options === null || options === void 0 ? void 0 : options.watchman,      watch: options === null || options === void 0 ? void 0 : options.watch    });  }  static createResolver(config, moduleMap) {    return new (_jestResolve().default)(moduleMap, {      defaultPlatform: config.haste.defaultPlatform,      extensions: config.moduleFileExtensions.map(extension => '.' + extension),      hasCoreModules: true,      moduleDirectories: config.moduleDirectories,      moduleNameMapper: getModuleNameMapper(config),      modulePaths: config.modulePaths,      platforms: config.haste.platforms,      resolver: config.resolver,      rootDir: config.rootDir    });  }  static async runCLI() {    throw new Error('The jest-runtime CLI has been moved into jest-repl');  }  static getCLIOptions() {    throw new Error('The jest-runtime CLI has been moved into jest-repl');  } // unstable as it should be replaced by https://github.com/nodejs/modules/issues/393, and we don't want people to use it  unstable_shouldLoadAsEsm(path) {    return _jestResolve().default.unstable_shouldLoadAsEsm(      path,      this._config.extensionsToTreatAsEsm    );  } // not async _now_, but transform will be  async loadEsmModule(modulePath, query = '') {    const cacheKey = modulePath + query;    if (this._fileTransformsMutex.has(cacheKey)) {      await this._fileTransformsMutex.get(cacheKey);    }    if (!this._esmoduleRegistry.has(cacheKey)) {      invariant(        typeof this._environment.getVmContext === 'function',        'ES Modules are only supported if your test environment has the `getVmContext` function'      );      const context = this._environment.getVmContext();      invariant(context, 'Test environment has been torn down');      let transformResolve;      let transformReject;      this._fileTransformsMutex.set(        cacheKey,        new Promise((resolve, reject) => {          transformResolve = resolve;          transformReject = reject;        })      );      invariant(        transformResolve && transformReject,        'Promise initialization should be sync - please report this bug to Jest!'      );      if (this._resolver.isCoreModule(modulePath)) {        const core = this._importCoreModule(modulePath, context);        this._esmoduleRegistry.set(cacheKey, core);        transformResolve();        return core;      }      const transformedCode = await this.transformFileAsync(modulePath, {        isInternalModule: false,        supportsDynamicImport: true,        supportsExportNamespaceFrom: true,        supportsStaticESM: true,        supportsTopLevelAwait      });      try {        const module = new (_vm().SourceTextModule)(transformedCode, {          context,          identifier: modulePath,          importModuleDynamically: async (specifier, referencingModule) => {            invariant(              runtimeSupportsVmModules,              'You need to run with a version of node that supports ES Modules in the VM API. See https://jestjs.io/docs/ecmascript-modules'            );            const module = await this.resolveModule(              specifier,              referencingModule.identifier,              referencingModule.context            );            return this.linkAndEvaluateModule(module);          },          initializeImportMeta(meta) {            meta.url = (0, _url().pathToFileURL)(modulePath).href;          }        });        invariant(          !this._esmoduleRegistry.has(cacheKey),          `Module cache already has entry ${cacheKey}. This is a bug in Jest, please report it!`        );        this._esmoduleRegistry.set(cacheKey, module);        transformResolve();      } catch (error) {        transformReject(error);        throw error;      }    }    const module = this._esmoduleRegistry.get(cacheKey);    invariant(      module,      'Module cache does not contain module. This is a bug in Jest, please open up an issue'    );    return module;  }  resolveModule(specifier, referencingIdentifier, context) {    if (this.isTornDown) {      this._logFormattedReferenceError(        'You are trying to `import` a file after the Jest environment has been torn down.'      );      process.exitCode = 1;      return;    }    if (specifier === '@jest/globals') {      const fromCache = this._esmoduleRegistry.get('@jest/globals');      if (fromCache) {        return fromCache;      }      const globals = this.getGlobalsForEsm(referencingIdentifier, context);      this._esmoduleRegistry.set('@jest/globals', globals);      return globals;    }    if (specifier.startsWith('file://')) {      specifier = (0, _url().fileURLToPath)(specifier);    }    const [path, query] = specifier.split('?');    if (      this._shouldMock(        referencingIdentifier,        path,        this._explicitShouldMockModule,        {          conditions: this.esmConditions        }      )    ) {      return this.importMock(referencingIdentifier, path, context);    }    const resolved = this._resolveModule(referencingIdentifier, path, {      conditions: this.esmConditions    });    if (      this._resolver.isCoreModule(resolved) ||      this.unstable_shouldLoadAsEsm(resolved)    ) {      return this.loadEsmModule(resolved, query);    }    return this.loadCjsAsEsm(referencingIdentifier, resolved, context);  }  async linkAndEvaluateModule(module) {    if (this.isTornDown) {      this._logFormattedReferenceError(        'You are trying to `import` a file after the Jest environment has been torn down.'      );      process.exitCode = 1;      return;    }    if (module.status === 'unlinked') {      // since we might attempt to link the same module in parallel, stick the promise in a weak map so every call to      // this method can await it      this._esmModuleLinkingMap.set(        module,        module.link((specifier, referencingModule) =>          this.resolveModule(            specifier,            referencingModule.identifier,            referencingModule.context          )        )      );    }    await this._esmModuleLinkingMap.get(module);    if (module.status === 'linked') {      await module.evaluate();    }    return module;  }  async unstable_importModule(from, moduleName) {    invariant(      runtimeSupportsVmModules,      'You need to run with a version of node that supports ES Modules in the VM API. See https://jestjs.io/docs/ecmascript-modules'    );    const [path, query] = (      moduleName !== null && moduleName !== void 0 ? moduleName : ''    ).split('?');    const modulePath = this._resolveModule(from, path, {      conditions: this.esmConditions    });    const module = await this.loadEsmModule(modulePath, query);    return this.linkAndEvaluateModule(module);  }  loadCjsAsEsm(from, modulePath, context) {    // CJS loaded via `import` should share cache with other CJS: https://github.com/nodejs/modules/issues/503    const cjs = this.requireModuleOrMock(from, modulePath);    const parsedExports = this.getExportsOfCjs(modulePath);    const cjsExports = [...parsedExports].filter(exportName => {      // we don't wanna respect any exports _named_ default as a named export      if (exportName === 'default') {        return false;      }      return Object.hasOwnProperty.call(cjs, exportName);    });    const module = new (_vm().SyntheticModule)(      [...cjsExports, 'default'],      function () {        cjsExports.forEach(exportName => {          // @ts-expect-error          this.setExport(exportName, cjs[exportName]);        }); // @ts-expect-error: TS doesn't know what `this` is        this.setExport('default', cjs);      },      {        context,        identifier: modulePath      }    );    return evaluateSyntheticModule(module);  }  async importMock(from, moduleName, context) {    const moduleID = this._resolver.getModuleID(      this._virtualModuleMocks,      from,      moduleName,      {        conditions: this.esmConditions      }    );    if (this._moduleMockRegistry.has(moduleID)) {      return this._moduleMockRegistry.get(moduleID);    }    if (this._moduleMockFactories.has(moduleID)) {      const invokedFactory = await this._moduleMockFactories.get(        moduleID // has check above makes this ok      )();      const module = new (_vm().SyntheticModule)(        Object.keys(invokedFactory),        function () {          Object.entries(invokedFactory).forEach(([key, value]) => {            // @ts-expect-error: TS doesn't know what `this` is            this.setExport(key, value);          });        },        {          context,          identifier: moduleName        }      );      this._moduleMockRegistry.set(moduleID, module);      return evaluateSyntheticModule(module);    }    throw new Error('Attempting to import a mock without a factory');  }  getExportsOfCjs(modulePath) {    var _this$_fileTransforms, _this$_fileTransforms2;    const cachedNamedExports = this._cjsNamedExports.get(modulePath);    if (cachedNamedExports) {      return cachedNamedExports;    }    const transformedCode =      (_this$_fileTransforms =        (_this$_fileTransforms2 = this._fileTransforms.get(modulePath)) ===          null || _this$_fileTransforms2 === void 0          ? void 0          : _this$_fileTransforms2.code) !== null &&      _this$_fileTransforms !== void 0        ? _this$_fileTransforms        : this.readFile(modulePath);    const {exports, reexports} = (0, _cjsModuleLexer().parse)(transformedCode);    const namedExports = new Set(exports);    reexports.forEach(reexport => {      const resolved = this._resolveModule(modulePath, reexport, {        conditions: this.esmConditions      });      const exports = this.getExportsOfCjs(resolved);      exports.forEach(namedExports.add, namedExports);    });    this._cjsNamedExports.set(modulePath, namedExports);    return namedExports;  }  requireModule(from, moduleName, options, isRequireActual = false) {    var _options$isInternalMo;    const isInternal =      (_options$isInternalMo =        options === null || options === void 0          ? void 0          : options.isInternalModule) !== null &&      _options$isInternalMo !== void 0        ? _options$isInternalMo        : false;    const moduleID = this._resolver.getModuleID(      this._virtualMocks,      from,      moduleName,      isInternal        ? undefined        : {            conditions: this.cjsConditions          }    );    let modulePath; // Some old tests rely on this mocking behavior. Ideally we'll change this    // to be more explicit.    const moduleResource = moduleName && this._resolver.getModule(moduleName);    const manualMock =      moduleName && this._resolver.getMockModule(from, moduleName);    if (      !(options !== null && options !== void 0 && options.isInternalModule) &&      !isRequireActual &&      !moduleResource &&      manualMock &&      manualMock !== this._isCurrentlyExecutingManualMock &&      this._explicitShouldMock.get(moduleID) !== false    ) {      modulePath = manualMock;    }    if (moduleName && this._resolver.isCoreModule(moduleName)) {      return this._requireCoreModule(        moduleName,        supportsNodeColonModulePrefixInRequire      );    }    if (!modulePath) {      modulePath = this._resolveModule(        from,        moduleName,        isInternal          ? undefined          : {              conditions: this.cjsConditions            }      );    }    if (this.unstable_shouldLoadAsEsm(modulePath)) {      // Node includes more info in the message      const error = new Error(        `Must use import to load ES Module: ${modulePath}`      ); // @ts-expect-error: `code` is not defined      error.code = 'ERR_REQUIRE_ESM';      throw error;    }    let moduleRegistry;    if (isInternal) {      moduleRegistry = this._internalModuleRegistry;    } else if (this._isolatedModuleRegistry) {      moduleRegistry = this._isolatedModuleRegistry;    } else {      moduleRegistry = this._moduleRegistry;    }    const module = moduleRegistry.get(modulePath);    if (module) {      return module.exports;    } // We must register the pre-allocated module object first so that any    // circular dependencies that may arise while evaluating the module can    // be satisfied.    const localModule = {      children: [],      exports: {},      filename: modulePath,      id: modulePath,      loaded: false,      path: path().dirname(modulePath)    };    moduleRegistry.set(modulePath, localModule);    try {      this._loadModule(        localModule,        from,        moduleName,        modulePath,        options,        moduleRegistry      );    } catch (error) {      moduleRegistry.delete(modulePath);      throw error;    }    return localModule.exports;  }  requireInternalModule(from, to) {    if (to) {      var _nativeModule$createR;      const require = (        (_nativeModule$createR = nativeModule().createRequire) !== null &&          _nativeModule$createR !== void 0          ? _nativeModule$createR          : nativeModule().createRequireFromPath      )(from);      if (INTERNAL_MODULE_REQUIRE_OUTSIDE_OPTIMIZED_MODULES.has(to)) {        return require(to);      }      const outsideJestVmPath = (0, _helpers.decodePossibleOutsideJestVmPath)(        to      );      if (outsideJestVmPath) {        return require(outsideJestVmPath);      }    }    return this.requireModule(from, to, {      isInternalModule: true,      supportsDynamicImport: esmIsAvailable,      supportsExportNamespaceFrom: false,      supportsStaticESM: false,      supportsTopLevelAwait: false    });  }  requireActual(from, moduleName) {    return this.requireModule(from, moduleName, undefined, true);  }  requireMock(from, moduleName) {    var _this$_isolatedMockRe;    const moduleID = this._resolver.getModuleID(      this._virtualMocks,      from,      moduleName,      {        conditions: this.cjsConditions      }    );    if (      (_this$_isolatedMockRe = this._isolatedMockRegistry) !== null &&      _this$_isolatedMockRe !== void 0 &&      _this$_isolatedMockRe.has(moduleID)    ) {      return this._isolatedMockRegistry.get(moduleID);    } else if (this._mockRegistry.has(moduleID)) {      return this._mockRegistry.get(moduleID);    }    const mockRegistry = this._isolatedMockRegistry || this._mockRegistry;    if (this._mockFactories.has(moduleID)) {      // has check above makes this ok      const module = this._mockFactories.get(moduleID)();      mockRegistry.set(moduleID, module);      return module;    }    const manualMockOrStub = this._resolver.getMockModule(from, moduleName);    let modulePath =      this._resolver.getMockModule(from, moduleName) ||      this._resolveModule(from, moduleName, {        conditions: this.cjsConditions      });    let isManualMock =      manualMockOrStub &&      !this._resolver.resolveStubModuleName(from, moduleName);    if (!isManualMock) {      // If the actual module file has a __mocks__ dir sitting immediately next      // to it, look to see if there is a manual mock for this file.      //      // subDir1/my_module.js      // subDir1/__mocks__/my_module.js      // subDir2/my_module.js      // subDir2/__mocks__/my_module.js      //      // Where some other module does a relative require into each of the      // respective subDir{1,2} directories and expects a manual mock      // corresponding to that particular my_module.js file.      const moduleDir = path().dirname(modulePath);      const moduleFileName = path().basename(modulePath);      const potentialManualMock = path().join(        moduleDir,        '__mocks__',        moduleFileName      );      if (fs().existsSync(potentialManualMock)) {        isManualMock = true;        modulePath = potentialManualMock;      }    }    if (isManualMock) {      const localModule = {        children: [],        exports: {},        filename: modulePath,        id: modulePath,        loaded: false,        path: path().dirname(modulePath)      };      this._loadModule(        localModule,        from,        moduleName,        modulePath,        undefined,        mockRegistry      );      mockRegistry.set(moduleID, localModule.exports);    } else {      // Look for a real module to generate an automock from      mockRegistry.set(moduleID, this._generateMock(from, moduleName));    }    return mockRegistry.get(moduleID);  }  _loadModule(    localModule,    from,    moduleName,    modulePath,    options,    moduleRegistry  ) {    if (path().extname(modulePath) === '.json') {      const text = (0, _stripBom().default)(this.readFile(modulePath));      const transformedFile = this._scriptTransformer.transformJson(        modulePath,        this._getFullTransformationOptions(options),        text      );      localModule.exports =        this._environment.global.JSON.parse(transformedFile);    } else if (path().extname(modulePath) === '.node') {      localModule.exports = require(modulePath);    } else {      // Only include the fromPath if a moduleName is given. Else treat as root.      const fromPath = moduleName ? from : null;      this._execModule(localModule, options, moduleRegistry, fromPath);    }    localModule.loaded = true;  }  _getFullTransformationOptions(options = defaultTransformOptions) {    return {...options, ...this._coverageOptions};  }  requireModuleOrMock(from, moduleName) {    // this module is unmockable    if (moduleName === '@jest/globals') {      // @ts-expect-error: we don't care that it's not assignable to T      return this.getGlobalsForCjs(from);    }    try {      if (        this._shouldMock(from, moduleName, this._explicitShouldMock, {          conditions: this.cjsConditions        })      ) {        return this.requireMock(from, moduleName);      } else {        return this.requireModule(from, moduleName);      }    } catch (e) {      const moduleNotFound =        _jestResolve().default.tryCastModuleNotFoundError(e);      if (moduleNotFound) {        if (          moduleNotFound.siblingWithSimilarExtensionFound === null ||          moduleNotFound.siblingWithSimilarExtensionFound === undefined        ) {          moduleNotFound.hint = (0, _helpers.findSiblingsWithFileExtension)(            this._config.moduleFileExtensions,            from,            moduleNotFound.moduleName || moduleName          );          moduleNotFound.siblingWithSimilarExtensionFound = Boolean(            moduleNotFound.hint          );        }        moduleNotFound.buildMessage(this._config.rootDir);        throw moduleNotFound;      }      throw e;    }  }  isolateModules(fn) {    if (this._isolatedModuleRegistry || this._isolatedMockRegistry) {      throw new Error(        'isolateModules cannot be nested inside another isolateModules.'      );    }    this._isolatedModuleRegistry = new Map();    this._isolatedMockRegistry = new Map();    try {      fn();    } finally {      var _this$_isolatedModule, _this$_isolatedMockRe2;      // might be cleared within the callback      (_this$_isolatedModule = this._isolatedModuleRegistry) === null ||      _this$_isolatedModule === void 0        ? void 0        : _this$_isolatedModule.clear();      (_this$_isolatedMockRe2 = this._isolatedMockRegistry) === null ||      _this$_isolatedMockRe2 === void 0        ? void 0        : _this$_isolatedMockRe2.clear();      this._isolatedModuleRegistry = null;      this._isolatedMockRegistry = null;    }  }  resetModules() {    var _this$_isolatedModule2, _this$_isolatedMockRe3;    (_this$_isolatedModule2 = this._isolatedModuleRegistry) === null ||    _this$_isolatedModule2 === void 0      ? void 0      : _this$_isolatedModule2.clear();    (_this$_isolatedMockRe3 = this._isolatedMockRegistry) === null ||    _this$_isolatedMockRe3 === void 0      ? void 0      : _this$_isolatedMockRe3.clear();    this._isolatedModuleRegistry = null;    this._isolatedMockRegistry = null;    this._mockRegistry.clear();    this._moduleRegistry.clear();    this._esmoduleRegistry.clear();    this._cjsNamedExports.clear();    this._moduleMockRegistry.clear();    if (this._environment) {      if (this._environment.global) {        const envGlobal = this._environment.global;        Object.keys(envGlobal).forEach(key => {          const globalMock = envGlobal[key];          if (            ((typeof globalMock === 'object' && globalMock !== null) ||              typeof globalMock === 'function') &&            globalMock._isMockFunction === true          ) {            globalMock.mockClear();          }        });      }      if (this._environment.fakeTimers) {        this._environment.fakeTimers.clearAllTimers();      }    }  }  async collectV8Coverage() {    this._v8CoverageInstrumenter =      new (_collectV8Coverage().CoverageInstrumenter)();    await this._v8CoverageInstrumenter.startInstrumenting();  }  async stopCollectingV8Coverage() {    if (!this._v8CoverageInstrumenter) {      throw new Error('You need to call `collectV8Coverage` first.');    }    this._v8CoverageResult =      await this._v8CoverageInstrumenter.stopInstrumenting();  }  getAllCoverageInfoCopy() {    return (0, _jestUtil().deepCyclicCopy)(      this._environment.global.__coverage__    );  }  getAllV8CoverageInfoCopy() {    if (!this._v8CoverageResult) {      throw new Error('You need to `stopCollectingV8Coverage` first');    }    return this._v8CoverageResult      .filter(res => res.url.startsWith('file://'))      .map(res => ({...res, url: (0, _url().fileURLToPath)(res.url)}))      .filter(        (          res // TODO: will this work on windows? It might be better if `shouldInstrument` deals with it anyways        ) =>          res.url.startsWith(this._config.rootDir) &&          this._fileTransforms.has(res.url) &&          (0, _transform().shouldInstrument)(            res.url,            this._coverageOptions,            this._config          )      )      .map(result => {        const transformedFile = this._fileTransforms.get(result.url);        return {          codeTransformResult: transformedFile,          result        };      });  }  getSourceMaps() {    return this._sourceMapRegistry;  }  setMock(from, moduleName, mockFactory, options) {    if (options !== null && options !== void 0 && options.virtual) {      const mockPath = this._resolver.getModulePath(from, moduleName);      this._virtualMocks.set(mockPath, true);    }    const moduleID = this._resolver.getModuleID(      this._virtualMocks,      from,      moduleName,      {        conditions: this.cjsConditions      }    );    this._explicitShouldMock.set(moduleID, true);    this._mockFactories.set(moduleID, mockFactory);  }  setModuleMock(from, moduleName, mockFactory, options) {    if (options !== null && options !== void 0 && options.virtual) {      const mockPath = this._resolver.getModulePath(from, moduleName);      this._virtualModuleMocks.set(mockPath, true);    }    const moduleID = this._resolver.getModuleID(      this._virtualModuleMocks,      from,      moduleName,      {        conditions: this.esmConditions      }    );    this._explicitShouldMockModule.set(moduleID, true);    this._moduleMockFactories.set(moduleID, mockFactory);  }  restoreAllMocks() {    this._moduleMocker.restoreAllMocks();  }  resetAllMocks() {    this._moduleMocker.resetAllMocks();  }  clearAllMocks() {    this._moduleMocker.clearAllMocks();  }  teardown() {    this.restoreAllMocks();    this.resetAllMocks();    this.resetModules();    this._internalModuleRegistry.clear();    this._mainModule = null;    this._mockFactories.clear();    this._moduleMockFactories.clear();    this._mockMetaDataCache.clear();    this._shouldMockModuleCache.clear();    this._shouldUnmockTransitiveDependenciesCache.clear();    this._explicitShouldMock.clear();    this._explicitShouldMockModule.clear();    this._transitiveShouldMock.clear();    this._virtualMocks.clear();    this._virtualModuleMocks.clear();    this._cacheFS.clear();    this._unmockList = undefined;    this._sourceMapRegistry.clear();    this._fileTransforms.clear();    this._fileTransformsMutex.clear();    this.jestObjectCaches.clear();    this._v8CoverageResult = [];    this._v8CoverageInstrumenter = undefined;    this._moduleImplementation = undefined;    this.isTornDown = true;  }  _resolveModule(from, to, options) {    return to ? this._resolver.resolveModule(from, to, options) : from;  }  _requireResolve(from, moduleName, options = {}) {    if (moduleName == null) {      throw new Error(        'The first argument to require.resolve must be a string. Received null or undefined.'      );    }    if (path().isAbsolute(moduleName)) {      const module = this._resolver.resolveModuleFromDirIfExists(        moduleName,        moduleName,        {          conditions: this.cjsConditions,          paths: []        }      );      if (module) {        return module;      }    } else {      const {paths} = options;      if (paths) {        for (const p of paths) {          const absolutePath = path().resolve(from, '..', p);          const module = this._resolver.resolveModuleFromDirIfExists(            absolutePath,            moduleName, // required to also resolve files without leading './' directly in the path            {              conditions: this.cjsConditions,              paths: [absolutePath]            }          );          if (module) {            return module;          }        }        throw new (_jestResolve().default.ModuleNotFoundError)(          `Cannot resolve module '${moduleName}' from paths ['${paths.join(            "', '"          )}'] from ${from}`        );      }    }    try {      return this._resolveModule(from, moduleName, {        conditions: this.cjsConditions      });    } catch (err) {      const module = this._resolver.getMockModule(from, moduleName);      if (module) {        return module;      } else {        throw err;      }    }  }  _requireResolvePaths(from, moduleName) {    if (moduleName == null) {      throw new Error(        'The first argument to require.resolve.paths must be a string. Received null or undefined.'      );    }    if (!moduleName.length) {      throw new Error(        'The first argument to require.resolve.paths must not be the empty string.'      );    }    if (moduleName[0] === '.') {      return [path().resolve(from, '..')];    }    if (this._resolver.isCoreModule(moduleName)) {      return null;    }    return this._resolver.getModulePaths(path().resolve(from, '..'));  }  _execModule(localModule, options, moduleRegistry, from) {    if (this.isTornDown) {      this._logFormattedReferenceError(        'You are trying to `import` a file after the Jest environment has been torn down.'      );      process.exitCode = 1;      return;    } // If the environment was disposed, prevent this module from being executed.    if (!this._environment.global) {      return;    }    const module = localModule;    const filename = module.filename;    const lastExecutingModulePath = this._currentlyExecutingModulePath;    this._currentlyExecutingModulePath = filename;    const origCurrExecutingManualMock = this._isCurrentlyExecutingManualMock;    this._isCurrentlyExecutingManualMock = filename;    module.children = [];    Object.defineProperty(module, 'parent', {      enumerable: true,      get() {        const key = from || '';        return moduleRegistry.get(key) || null;      }    });    module.paths = this._resolver.getModulePaths(module.path);    Object.defineProperty(module, 'require', {      value: this._createRequireImplementation(module, options)    });    const transformedCode = this.transformFile(filename, options);    let compiledFunction = null;    const script = this.createScriptFromCode(transformedCode, filename);    let runScript = null;    const vmContext = this._environment.getVmContext();    if (vmContext) {      runScript = script.runInContext(vmContext, {        filename      });    }    if (runScript !== null) {      compiledFunction = runScript[EVAL_RESULT_VARIABLE];    }    if (compiledFunction === null) {      this._logFormattedReferenceError(        'You are trying to `import` a file after the Jest environment has been torn down.'      );      process.exitCode = 1;      return;    }    const jestObject = this._createJestObjectFor(filename);    this.jestObjectCaches.set(filename, jestObject);    const lastArgs = [      this._config.injectGlobals ? jestObject : undefined, // jest object      ...this._config.extraGlobals.map(globalVariable => {        if (this._environment.global[globalVariable]) {          return this._environment.global[globalVariable];        }        throw new Error(          `You have requested '${globalVariable}' as a global variable, but it was not present. Please check your config or your global environment.`        );      })    ];    if (!this._mainModule && filename === this._testPath) {      this._mainModule = module;    }    Object.defineProperty(module, 'main', {      enumerable: true,      value: this._mainModule    });    try {      compiledFunction.call(        module.exports,        module, // module object        module.exports, // module exports        module.require, // require implementation        module.path, // __dirname        module.filename, // __filename        // @ts-expect-error        ...lastArgs.filter(notEmpty)      );    } catch (error) {      this.handleExecutionError(error, module);    }    this._isCurrentlyExecutingManualMock = origCurrExecutingManualMock;    this._currentlyExecutingModulePath = lastExecutingModulePath;  }  transformFile(filename, options) {    const source = this.readFile(filename);    if (options !== null && options !== void 0 && options.isInternalModule) {      return source;    }    let transformedFile = this._fileTransforms.get(filename);    if (transformedFile) {      return transformedFile.code;    }    transformedFile = this._scriptTransformer.transform(      filename,      this._getFullTransformationOptions(options),      source    );    this._fileTransforms.set(filename, {      ...transformedFile,      wrapperLength: this.constructModuleWrapperStart().length    });    if (transformedFile.sourceMapPath) {      this._sourceMapRegistry.set(filename, transformedFile.sourceMapPath);    }    return transformedFile.code;  }  async transformFileAsync(filename, options) {    const source = this.readFile(filename);    if (options !== null && options !== void 0 && options.isInternalModule) {      return source;    }    let transformedFile = this._fileTransforms.get(filename);    if (transformedFile) {      return transformedFile.code;    }    transformedFile = await this._scriptTransformer.transformAsync(      filename,      this._getFullTransformationOptions(options),      source    );    this._fileTransforms.set(filename, {...transformedFile, wrapperLength: 0});    if (transformedFile.sourceMapPath) {      this._sourceMapRegistry.set(filename, transformedFile.sourceMapPath);    }    return transformedFile.code;  }  createScriptFromCode(scriptSource, filename) {    try {      const scriptFilename = this._resolver.isCoreModule(filename)        ? `jest-nodejs-core-${filename}`        : filename;      return new (_vm().Script)(this.wrapCodeInModuleWrapper(scriptSource), {        displayErrors: true,        filename: scriptFilename,        // @ts-expect-error: Experimental ESM API        importModuleDynamically: async specifier => {          var _this$_environment$ge, _this$_environment2;          invariant(            runtimeSupportsVmModules,            'You need to run with a version of node that supports ES Modules in the VM API. See https://jestjs.io/docs/ecmascript-modules'          );          const context =            (_this$_environment$ge = (_this$_environment2 = this._environment)              .getVmContext) === null || _this$_environment$ge === void 0              ? void 0              : _this$_environment$ge.call(_this$_environment2);          invariant(context, 'Test environment has been torn down');          const module = await this.resolveModule(            specifier,            scriptFilename,            context          );          return this.linkAndEvaluateModule(module);        }      });    } catch (e) {      throw (0, _transform().handlePotentialSyntaxError)(e);    }  }  _requireCoreModule(moduleName, supportPrefix) {    const moduleWithoutNodePrefix =      supportPrefix && moduleName.startsWith('node:')        ? moduleName.slice('node:'.length)        : moduleName;    if (moduleWithoutNodePrefix === 'process') {      return this._environment.global.process;    }    if (moduleWithoutNodePrefix === 'module') {      return this._getMockedNativeModule();    }    return require(moduleWithoutNodePrefix);  }  _importCoreModule(moduleName, context) {    const required = this._requireCoreModule(      moduleName,      supportsNodeColonModulePrefixInImport    );    const module = new (_vm().SyntheticModule)(      ['default', ...Object.keys(required)],      function () {        // @ts-expect-error: TS doesn't know what `this` is        this.setExport('default', required);        Object.entries(required).forEach(([key, value]) => {          // @ts-expect-error: TS doesn't know what `this` is          this.setExport(key, value);        });      }, // should identifier be `node://${moduleName}`?      {        context,        identifier: moduleName      }    );    return evaluateSyntheticModule(module);  }  _getMockedNativeModule() {    if (this._moduleImplementation) {      return this._moduleImplementation;    }    const createRequire = modulePath => {      const filename =        typeof modulePath === 'string'          ? modulePath.startsWith('file:///')            ? (0, _url().fileURLToPath)(new (_url().URL)(modulePath))            : modulePath          : (0, _url().fileURLToPath)(modulePath);      if (!path().isAbsolute(filename)) {        const error = new TypeError(          `The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received '${filename}'`        ); // @ts-expect-error        error.code = 'ERR_INVALID_ARG_TYPE';        throw error;      }      return this._createRequireImplementation({        children: [],        exports: {},        filename,        id: filename,        loaded: false,        path: path().dirname(filename)      });    }; // should we implement the class ourselves?    class Module extends nativeModule().Module {}    Object.entries(nativeModule().Module).forEach(([key, value]) => {      // @ts-expect-error      Module[key] = value;    });    Module.Module = Module;    if ('createRequire' in nativeModule()) {      Module.createRequire = createRequire;    }    if ('createRequireFromPath' in nativeModule()) {      Module.createRequireFromPath = function createRequireFromPath(filename) {        if (typeof filename !== 'string') {          const error = new TypeError(            `The argument 'filename' must be string. Received '${filename}'.${              filename instanceof _url().URL                ? ' Use createRequire for URL filename.'                : ''            }`          ); // @ts-expect-error          error.code = 'ERR_INVALID_ARG_TYPE';          throw error;        }        return createRequire(filename);      };    }    if ('syncBuiltinESMExports' in nativeModule()) {      // cast since TS seems very confused about whether it exists or not      Module.syncBuiltinESMExports = function syncBuiltinESMExports() {};    }    this._moduleImplementation = Module;    return Module;  }  _generateMock(from, moduleName) {    const modulePath =      this._resolver.resolveStubModuleName(from, moduleName) ||      this._resolveModule(from, moduleName, {        conditions: this.cjsConditions      });    if (!this._mockMetaDataCache.has(modulePath)) {      // This allows us to handle circular dependencies while generating an      // automock      this._mockMetaDataCache.set(        modulePath,        this._moduleMocker.getMetadata({}) || {}      ); // In order to avoid it being possible for automocking to potentially      // cause side-effects within the module environment, we need to execute      // the module in isolation. This could cause issues if the module being      // mocked has calls into side-effectful APIs on another module.      const origMockRegistry = this._mockRegistry;      const origModuleRegistry = this._moduleRegistry;      this._mockRegistry = new Map();      this._moduleRegistry = new Map();      const moduleExports = this.requireModule(from, moduleName); // Restore the "real" module/mock registries      this._mockRegistry = origMockRegistry;      this._moduleRegistry = origModuleRegistry;      const mockMetadata = this._moduleMocker.getMetadata(moduleExports);      if (mockMetadata == null) {        throw new Error(          `Failed to get mock metadata: ${modulePath}\n\n` +            'See: https://jestjs.io/docs/manual-mocks#content'        );      }      this._mockMetaDataCache.set(modulePath, mockMetadata);    }    return this._moduleMocker.generateFromMetadata(      // added above if missing      this._mockMetaDataCache.get(modulePath)    );  }  _shouldMock(from, moduleName, explicitShouldMock, options) {    const moduleID = this._resolver.getModuleID(      this._virtualMocks,      from,      moduleName,      options    );    const key = from + path().delimiter + moduleID;    if (explicitShouldMock.has(moduleID)) {      // guaranteed by `has` above      return explicitShouldMock.get(moduleID);    }    if (      !this._shouldAutoMock ||      this._resolver.isCoreModule(moduleName) ||      this._shouldUnmockTransitiveDependenciesCache.get(key)    ) {      return false;    }    if (this._shouldMockModuleCache.has(moduleID)) {      // guaranteed by `has` above      return this._shouldMockModuleCache.get(moduleID);    }    let modulePath;    try {      modulePath = this._resolveModule(from, moduleName, options);    } catch (e) {      const manualMock = this._resolver.getMockModule(from, moduleName);      if (manualMock) {        this._shouldMockModuleCache.set(moduleID, true);        return true;      }      throw e;    }    if (this._unmockList && this._unmockList.test(modulePath)) {      this._shouldMockModuleCache.set(moduleID, false);      return false;    } // transitive unmocking for package managers that store flat packages (npm3)    const currentModuleID = this._resolver.getModuleID(      this._virtualMocks,      from,      undefined,      options    );    if (      this._transitiveShouldMock.get(currentModuleID) === false ||      (from.includes(NODE_MODULES) &&        modulePath.includes(NODE_MODULES) &&        ((this._unmockList && this._unmockList.test(from)) ||          explicitShouldMock.get(currentModuleID) === false))    ) {      this._transitiveShouldMock.set(moduleID, false);      this._shouldUnmockTransitiveDependenciesCache.set(key, true);      return false;    }    this._shouldMockModuleCache.set(moduleID, true);    return true;  }  _createRequireImplementation(from, options) {    const resolve = (moduleName, resolveOptions) => {      const resolved = this._requireResolve(        from.filename,        moduleName,        resolveOptions      );      if (        resolveOptions !== null &&        resolveOptions !== void 0 &&        resolveOptions[JEST_RESOLVE_OUTSIDE_VM_OPTION] &&        options !== null &&        options !== void 0 &&        options.isInternalModule      ) {        return (0, _helpers.createOutsideJestVmPath)(resolved);      }      return resolved;    };    resolve.paths = moduleName =>      this._requireResolvePaths(from.filename, moduleName);    const moduleRequire =      options !== null && options !== void 0 && options.isInternalModule        ? moduleName => this.requireInternalModule(from.filename, moduleName)        : this.requireModuleOrMock.bind(this, from.filename);    moduleRequire.extensions = Object.create(null);    moduleRequire.resolve = resolve;    moduleRequire.cache = (() => {      // TODO: consider warning somehow that this does nothing. We should support deletions, anyways      const notPermittedMethod = () => true;      return new Proxy(Object.create(null), {        defineProperty: notPermittedMethod,        deleteProperty: notPermittedMethod,        get: (_target, key) =>          typeof key === 'string' ? this._moduleRegistry.get(key) : undefined,        getOwnPropertyDescriptor() {          return {            configurable: true,            enumerable: true          };        },        has: (_target, key) =>          typeof key === 'string' && this._moduleRegistry.has(key),        ownKeys: () => Array.from(this._moduleRegistry.keys()),        set: notPermittedMethod      });    })();    Object.defineProperty(moduleRequire, 'main', {      enumerable: true,      value: this._mainModule    });    return moduleRequire;  }  _createJestObjectFor(from) {    var _this$_moduleMocker$m, _this$_moduleMocker$m2;    const disableAutomock = () => {      this._shouldAutoMock = false;      return jestObject;    };    const enableAutomock = () => {      this._shouldAutoMock = true;      return jestObject;    };    const unmock = moduleName => {      const moduleID = this._resolver.getModuleID(        this._virtualMocks,        from,        moduleName,        {          conditions: this.cjsConditions        }      );      this._explicitShouldMock.set(moduleID, false);      return jestObject;    };    const deepUnmock = moduleName => {      const moduleID = this._resolver.getModuleID(        this._virtualMocks,        from,        moduleName,        {          conditions: this.cjsConditions        }      );      this._explicitShouldMock.set(moduleID, false);      this._transitiveShouldMock.set(moduleID, false);      return jestObject;    };    const mock = (moduleName, mockFactory, options) => {      if (mockFactory !== undefined) {        return setMockFactory(moduleName, mockFactory, options);      }      const moduleID = this._resolver.getModuleID(        this._virtualMocks,        from,        moduleName,        {          conditions: this.cjsConditions        }      );      this._explicitShouldMock.set(moduleID, true);      return jestObject;    };    const setMockFactory = (moduleName, mockFactory, options) => {      this.setMock(from, moduleName, mockFactory, options);      return jestObject;    };    const mockModule = (moduleName, mockFactory, options) => {      if (typeof mockFactory !== 'function') {        throw new Error('`unstable_mockModule` must be passed a mock factory');      }      this.setModuleMock(from, moduleName, mockFactory, options);      return jestObject;    };    const clearAllMocks = () => {      this.clearAllMocks();      return jestObject;    };    const resetAllMocks = () => {      this.resetAllMocks();      return jestObject;    };    const restoreAllMocks = () => {      this.restoreAllMocks();      return jestObject;    };    const _getFakeTimers = () => {      if (        this.isTornDown ||        !(this._environment.fakeTimers || this._environment.fakeTimersModern)      ) {        this._logFormattedReferenceError(          'You are trying to access a property or method of the Jest environment after it has been torn down.'        );        process.exitCode = 1;      }      return this._fakeTimersImplementation;    };    const useFakeTimers = (type = 'modern') => {      if (type === 'legacy') {        this._fakeTimersImplementation = this._environment.fakeTimers;      } else {        this._fakeTimersImplementation = this._environment.fakeTimersModern;      }      this._fakeTimersImplementation.useFakeTimers();      return jestObject;    };    const useRealTimers = () => {      _getFakeTimers().useRealTimers();      return jestObject;    };    const resetModules = () => {      this.resetModules();      return jestObject;    };    const isolateModules = fn => {      this.isolateModules(fn);      return jestObject;    };    const fn = this._moduleMocker.fn.bind(this._moduleMocker);    const spyOn = this._moduleMocker.spyOn.bind(this._moduleMocker);    const mocked =      (_this$_moduleMocker$m =        (_this$_moduleMocker$m2 = this._moduleMocker.mocked) === null ||        _this$_moduleMocker$m2 === void 0          ? void 0          : _this$_moduleMocker$m2.bind(this._moduleMocker)) !== null &&      _this$_moduleMocker$m !== void 0        ? _this$_moduleMocker$m        : () => {            throw new Error(              'Your test environment does not support `mocked`, please update it.'            );          };    const setTimeout = timeout => {      if (this._environment.global.jasmine) {        this._environment.global.jasmine._DEFAULT_TIMEOUT_INTERVAL = timeout;      } else {        // @ts-expect-error: https://github.com/Microsoft/TypeScript/issues/24587        this._environment.global[testTimeoutSymbol] = timeout;      }      return jestObject;    };    const retryTimes = numTestRetries => {      // @ts-expect-error: https://github.com/Microsoft/TypeScript/issues/24587      this._environment.global[retryTimesSymbol] = numTestRetries;      return jestObject;    };    const jestObject = {      advanceTimersByTime: msToRun =>        _getFakeTimers().advanceTimersByTime(msToRun),      advanceTimersToNextTimer: steps =>        _getFakeTimers().advanceTimersToNextTimer(steps),      autoMockOff: disableAutomock,      autoMockOn: enableAutomock,      clearAllMocks,      clearAllTimers: () => _getFakeTimers().clearAllTimers(),      createMockFromModule: moduleName => this._generateMock(from, moduleName),      deepUnmock,      disableAutomock,      doMock: mock,      dontMock: unmock,      enableAutomock,      fn,      genMockFromModule: moduleName => this._generateMock(from, moduleName),      getRealSystemTime: () => {        const fakeTimers = _getFakeTimers();        if (fakeTimers === this._environment.fakeTimersModern) {          return fakeTimers.getRealSystemTime();        } else {          throw new TypeError(            'getRealSystemTime is not available when not using modern timers'          );        }      },      getTimerCount: () => _getFakeTimers().getTimerCount(),      isMockFunction: this._moduleMocker.isMockFunction,      isolateModules,      mock,      mocked,      requireActual: this.requireActual.bind(this, from),      requireMock: this.requireMock.bind(this, from),      resetAllMocks,      resetModules,      restoreAllMocks,      retryTimes,      runAllImmediates: () => {        const fakeTimers = _getFakeTimers();        if (fakeTimers === this._environment.fakeTimers) {          fakeTimers.runAllImmediates();        } else {          throw new TypeError(            'runAllImmediates is not available when using modern timers'          );        }      },      runAllTicks: () => _getFakeTimers().runAllTicks(),      runAllTimers: () => _getFakeTimers().runAllTimers(),      runOnlyPendingTimers: () => _getFakeTimers().runOnlyPendingTimers(),      setMock: (moduleName, mock) => setMockFactory(moduleName, () => mock),      setSystemTime: now => {        const fakeTimers = _getFakeTimers();        if (fakeTimers === this._environment.fakeTimersModern) {          fakeTimers.setSystemTime(now);        } else {          throw new TypeError(            'setSystemTime is not available when not using modern timers'          );        }      },      setTimeout,      spyOn,      unmock,      unstable_mockModule: mockModule,      useFakeTimers,      useRealTimers    };    return jestObject;  }  _logFormattedReferenceError(errorMessage) {    const testPath = this._testPath      ? ` From ${(0, _slash().default)(          path().relative(this._config.rootDir, this._testPath)        )}.`      : '';    const originalStack = new ReferenceError(`${errorMessage}${testPath}`).stack      .split('\n') // Remove this file from the stack (jest-message-utils will keep one line)      .filter(line => line.indexOf(__filename) === -1)      .join('\n');    const {message, stack} = (0, _jestMessageUtil().separateMessageFromStack)(      originalStack    );    console.error(      `\n${message}\n` +        (0, _jestMessageUtil().formatStackTrace)(stack, this._config, {          noStackTrace: false        })    );  }  wrapCodeInModuleWrapper(content) {    return this.constructModuleWrapperStart() + content + '\n}});';  }  constructModuleWrapperStart() {    const args = this.constructInjectedModuleParameters();    return '({"' + EVAL_RESULT_VARIABLE + `":function(${args.join(',')}){`;  }  constructInjectedModuleParameters() {    return [      'module',      'exports',      'require',      '__dirname',      '__filename',      this._config.injectGlobals ? 'jest' : undefined,      ...this._config.extraGlobals    ].filter(notEmpty);  }  handleExecutionError(e, module) {    const moduleNotFoundError =      _jestResolve().default.tryCastModuleNotFoundError(e);    if (moduleNotFoundError) {      if (!moduleNotFoundError.requireStack) {        moduleNotFoundError.requireStack = [module.filename || module.id];        for (let cursor = module.parent; cursor; cursor = cursor.parent) {          moduleNotFoundError.requireStack.push(cursor.filename || cursor.id);        }        moduleNotFoundError.buildMessage(this._config.rootDir);      }      throw moduleNotFoundError;    }    throw e;  }  getGlobalsForCjs(from) {    const jest = this.jestObjectCaches.get(from);    invariant(jest, 'There should always be a Jest object already');    return {...this.getGlobalsFromEnvironment(), jest};  }  getGlobalsForEsm(from, context) {    let jest = this.jestObjectCaches.get(from);    if (!jest) {      jest = this._createJestObjectFor(from);      this.jestObjectCaches.set(from, jest);    }    const globals = {...this.getGlobalsFromEnvironment(), jest};    const module = new (_vm().SyntheticModule)(      Object.keys(globals),      function () {        Object.entries(globals).forEach(([key, value]) => {          // @ts-expect-error: TS doesn't know what `this` is          this.setExport(key, value);        });      },      {        context,        identifier: '@jest/globals'      }    );    return evaluateSyntheticModule(module);  }  getGlobalsFromEnvironment() {    if (this.jestGlobals) {      return {...this.jestGlobals};    }    return {      afterAll: this._environment.global.afterAll,      afterEach: this._environment.global.afterEach,      beforeAll: this._environment.global.beforeAll,      beforeEach: this._environment.global.beforeEach,      describe: this._environment.global.describe,      expect: this._environment.global.expect,      fdescribe: this._environment.global.fdescribe,      fit: this._environment.global.fit,      it: this._environment.global.it,      test: this._environment.global.test,      xdescribe: this._environment.global.xdescribe,      xit: this._environment.global.xit,      xtest: this._environment.global.xtest    };  }  readFile(filename) {    let source = this._cacheFS.get(filename);    if (!source) {      source = fs().readFileSync(filename, 'utf8');      this._cacheFS.set(filename, source);    }    return source;  }  setGlobalsForRuntime(globals) {    this.jestGlobals = globals;  }}exports.default = Runtime;_defineProperty(Runtime, 'shouldInstrument', _transform().shouldInstrument);function invariant(condition, message) {  if (!condition) {    throw new Error(message);  }}function notEmpty(value) {  return value !== null && value !== undefined;}async function evaluateSyntheticModule(module) {  await module.link(() => {    throw new Error('This should never happen');  });  await module.evaluate();  return module;}
 |