text: "use strict";
  // Midified from https://github.com/vuejs/vue-cli/blob/dev/packages/@0vue/cli-shared-utils/lib/module.js
  var __importDefault = (this && this.__importDefault) || function (mod) {
      return (mod && mod.__esModule) ? mod : { "default": mod };
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  const semver_1 = __importDefault(require("semver"));
  const upath_1 = __importDefault(require("upath"));
  const fs_extra_1 = __importDefault(require("fs-extra"));
  const env_1 = __importDefault(require("./env"));
  function resolveFallback(request, options) {
      const Module = require('module');
      const isMain = false;
      const fakeParent = new Module('', null);
      const paths = [];
      for (let i = 0; i < options.paths.length; i++) {
          const path = (options.paths)[i];
          fakeParent.paths = Module._nodeModulePaths(path);
          const lookupPaths = Module._resolveLookupPaths(request, fakeParent, true);
          if (!paths.includes(path))
              paths.push(path);
          for (let j = 0; j < lookupPaths.length; j++) {
              if (!paths.includes(lookupPaths[j]))
                  paths.push(lookupPaths[j]);
          }
      }
      const filename = Module._findPath(request, paths, isMain);
      if (!filename) {
          const err = new Error(`Cannot find module '${request}'`);
          // @ts-ignores
          err.code = 'MODULE_NOT_FOUND';
          throw err;
      }
      return filename;
  }
  const resolve = semver_1.default.satisfies(process.version, '>=10.0.0')
      ? require.resolve
      : resolveFallback;
  function resolveModule(request, context) {
      let resolvedPath;
      // TODO
      // Temporary workaround for jest cannot resolve module path from '__mocks__'
      // when using 'require.resolve'.
      if (env_1.default.isTest && request !== '@vuepress/theme-default') {
          resolvedPath = upath_1.default.resolve(__dirname, '../../../../__mocks__', request);
          if (!fs_extra_1.default.existsSync(`${resolvedPath}.js`) && !fs_extra_1.default.existsSync(`${resolvedPath}/index.js`)) {
              throw new Error(`Cannot find module '${request}'`);
          }
          return resolvedPath;
      }
      // module.paths is for globally install packages.
      const paths = [context || process.cwd(), ...module.paths];
      resolvedPath = resolve(request, { paths });
      return resolvedPath;
  }
  exports.resolveModule = resolveModule;
  function loadModule(request, context, force = false) {
      const resolvedPath = resolveModule(request, context);
      if (resolvedPath) {
          if (force) {
              clearRequireCache(resolvedPath);
          }
          return require(resolvedPath);
      }
  }
  exports.loadModule = loadModule;
  function clearModule(request, context) {
      const resolvedPath = resolveModule(request, context);
      if (resolvedPath) {
          clearRequireCache(resolvedPath);
      }
  }
  exports.clearModule = clearModule;
  function clearRequireCache(id, map = new Map()) {
      const module = require.cache[id];
      if (module) {
          map.set(id, true);
          // Clear children modules
          module.children.forEach((child) => {
              if (!map.get(child.id))
                  clearRequireCache(child.id, map);
          });
          delete require.cache[id];
      }
  }
  