| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | const Module = require('module')const path = require('path')const semver = require('semver')// https://github.com/benmosher/eslint-plugin-import/pull/1591// https://github.com/benmosher/eslint-plugin-import/pull/1602// Polyfill Node's `Module.createRequireFromPath` if not present (added in Node v10.12.0)// Use `Module.createRequire` if available (added in Node v12.2.0)const createRequire = Module.createRequire || Module.createRequireFromPath || function (filename) {  const mod = new Module(filename, null)  mod.filename = filename  mod.paths = Module._nodeModulePaths(path.dirname(filename))  mod._compile(`module.exports = require;`, filename)  return mod.exports}function resolveFallback (request, options) {  const isMain = false  const fakeParent = new Module('', null)  const paths = []  for (let i = 0; i < options.paths.length; i++) {    const p = options.paths[i]    fakeParent.paths = Module._nodeModulePaths(p)    const lookupPaths = Module._resolveLookupPaths(request, fakeParent, true)    if (!paths.includes(p)) paths.push(p)    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}'`)    err.code = 'MODULE_NOT_FOUND'    throw err  }  return filename}const resolve = semver.satisfies(process.version, '>=10.0.0')  ? require.resolve  : resolveFallbackexports.resolveModule = function (request, context) {  let resolvedPath  try {    try {      resolvedPath = createRequire(path.resolve(context, 'package.json')).resolve(request)    } catch (e) {      resolvedPath = resolve(request, { paths: [context] })    }  } catch (e) {}  return resolvedPath}exports.loadModule = function (request, context, force = false) {  // createRequire doesn't work with jest mock modules  // (which we used in migrator for inquirer, and in tests for cli-service)  // TODO: it's supported in Jest 25  if (process.env.VUE_CLI_TEST && (request.endsWith('migrator') || context === '/')) {    return require(request)  }  try {    return createRequire(path.resolve(context, 'package.json'))(request)  } catch (e) {    const resolvedPath = exports.resolveModule(request, context)    if (resolvedPath) {      if (force) {        clearRequireCache(resolvedPath)      }      return require(resolvedPath)    }  }}exports.clearModule = function (request, context) {  const resolvedPath = exports.resolveModule(request, context)  if (resolvedPath) {    clearRequireCache(resolvedPath)  }}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]  }}
 |