{
  "version": 3,
  "file": "jsenv_node_module_importmap.cjs",
  "sources": [
    "../../src/internal/memoizeAsyncFunction.js",
    "../../node_modules/@jsenv/core/helpers/import-meta/import-meta-url-commonjs.js",
    "../../src/internal/from-js/parseSpecifiersFromFile.js",
    "../../src/internal/from-js/showSource.js",
    "../../src/internal/resolveFile.js",
    "../../src/internal/warnings.js",
    "../../src/internal/from-js/getImportMapFromJsFiles.js",
    "../../src/internal/optimizeImportMap.js",
    "../../src/internal/from-package/resolvePackageMain.js",
    "../../src/internal/from-package/visitPackageImportMap.js",
    "../../src/internal/from-package/specifierIsRelative.js",
    "../../src/internal/from-package/visitPackageImports.js",
    "../../src/internal/from-package/visitPackageExports.js",
    "../../src/internal/from-package/applyPackageManualOverride.js",
    "../../src/internal/from-package/readPackageFile.js",
    "../../src/internal/from-package/node-module-resolution.js",
    "../../src/internal/from-package/getImportMapFromPackageFiles.js",
    "../../src/getImportMapFromProjectFiles.js",
    "../../src/getImportMapFromFile.js",
    "../../src/internal/importMapToVsCodeConfigPaths.js",
    "../../src/writeImportMapFile.js"
  ],
  "sourcesContent": [
    "export const memoizeAsyncFunctionByUrl = (fn) => {\n  const cache = {}\n  return memoizeAsyncFunction(fn, {\n    getMemoryEntryFromArguments: ([url]) => {\n      return {\n        get: () => {\n          return cache[url]\n        },\n        set: (promise) => {\n          cache[url] = promise\n        },\n        delete: () => {\n          delete cache[url]\n        },\n      }\n    },\n  })\n}\n\nexport const memoizeAsyncFunctionBySpecifierAndImporter = (fn) => {\n  const importerCache = {}\n  return memoizeAsyncFunction(fn, {\n    getMemoryEntryFromArguments: ([specifier, importer]) => {\n      return {\n        get: () => {\n          const specifierCacheForImporter = importerCache[importer]\n          return specifierCacheForImporter ? specifierCacheForImporter[specifier] : null\n        },\n        set: (promise) => {\n          const specifierCacheForImporter = importerCache[importer]\n          if (specifierCacheForImporter) {\n            specifierCacheForImporter[specifier] = promise\n          } else {\n            importerCache[importer] = {\n              [specifier]: promise,\n            }\n          }\n        },\n        delete: () => {\n          const specifierCacheForImporter = importerCache[importer]\n          if (specifierCacheForImporter) {\n            delete specifierCacheForImporter[specifier]\n          }\n        },\n      }\n    },\n  })\n}\n\nconst memoizeAsyncFunction = (fn, { getMemoryEntryFromArguments }) => {\n  const memoized = async (...args) => {\n    const memoryEntry = getMemoryEntryFromArguments(args)\n    const promiseFromMemory = memoryEntry.get()\n    if (promiseFromMemory) {\n      return promiseFromMemory\n    }\n    const { promise, resolve, reject } = createControllablePromise()\n    memoryEntry.set(promise)\n    let value\n    let error\n    try {\n      value = fn(...args)\n      error = false\n    } catch (e) {\n      value = e\n      error = true\n      memoryEntry.delete()\n    }\n    if (error) {\n      reject(error)\n    } else {\n      resolve(value)\n    }\n    return promise\n  }\n  memoized.isInMemory = (...args) => {\n    return Boolean(getMemoryEntryFromArguments(args).get())\n  }\n  return memoized\n}\n\nconst createControllablePromise = () => {\n  let resolve\n  let reject\n  const promise = new Promise((res, rej) => {\n    resolve = res\n    reject = rej\n  })\n  return { promise, resolve, reject }\n}\n",
    "/* global __filename */\n\nconst filenameContainsBackSlashes = __filename.indexOf(\"\\\\\") > -1\n\nconst url = filenameContainsBackSlashes\n  ? `file:///${__filename.replace(/\\\\/g, \"/\")}`\n  : `file://${__filename}`\n\nexport default url\n",
    "import { createRequire } from \"module\"\nimport { readFile, urlToFileSystemPath, urlToExtension } from \"@jsenv/util\"\n\nconst require = createRequire(import.meta.url)\n\nconst parser = require(\"@babel/parser\")\nconst traverse = require(\"@babel/traverse\")\n\nexport const parseSpecifiersFromFile = async (\n  fileUrl,\n  { fileContent, jsFilesParsingOptions } = {},\n) => {\n  fileContent = fileContent === undefined ? await readFile(fileUrl, { as: \"string\" }) : fileContent\n\n  const fileExtension = urlToExtension(fileUrl)\n\n  const {\n    jsx = [\".jsx\", \".tsx\"].includes(fileExtension),\n    typescript = [\".ts\", \".tsx\"].includes(urlToExtension(fileUrl)),\n    flow = false,\n  } = jsFilesParsingOptions\n\n  const ast = parser.parse(fileContent, {\n    sourceType: \"module\",\n    sourceFilename: urlToFileSystemPath(fileUrl),\n    plugins: [\n      \"topLevelAwait\",\n      \"exportDefaultFrom\",\n      ...(jsx ? [\"jsx\"] : []),\n      ...(typescript ? [\"typescript\"] : []),\n      ...(flow ? [\"flow\"] : []),\n    ],\n    ...jsFilesParsingOptions,\n    ranges: true,\n  })\n\n  const specifiers = {}\n\n  const addSpecifier = ({ path, type }) => {\n    const specifier = path.node.value\n    specifiers[specifier] = {\n      line: path.node.loc.start.line,\n      column: path.node.loc.start.column,\n      type,\n    }\n  }\n\n  traverse.default(ast, {\n    // \"ImportExpression is replaced with a CallExpression whose callee is an Import node.\"\n    // https://babeljs.io/docs/en/babel-parser#output\n    // ImportExpression: (path) => {\n    //   if (path.node.arguments[0].type !== \"StringLiteral\") {\n    //     // Non-string argument, probably a variable or expression, e.g.\n    //     // import(moduleId)\n    //     // import('./' + moduleName)\n    //     return\n    //   }\n    //   addSpecifier(path.get(\"arguments\")[0])\n    // },\n    CallExpression: (path) => {\n      if (path.node.callee.type !== \"Import\") {\n        // Some other function call, not import();\n        return\n      }\n      if (path.node.arguments[0].type !== \"StringLiteral\") {\n        // Non-string argument, probably a variable or expression, e.g.\n        // import(moduleId)\n        // import('./' + moduleName)\n        return\n      }\n      addSpecifier({\n        path: path.get(\"arguments\")[0],\n        type: \"import-dynamic\",\n      })\n    },\n    ExportAllDeclaration: (path) => {\n      addSpecifier({\n        path: path.get(\"source\"),\n        type: \"export-all\",\n      })\n    },\n    ExportNamedDeclaration: (path) => {\n      if (!path.node.source) {\n        // This export has no \"source\", so it's probably\n        // a local variable or function, e.g.\n        // export { varName }\n        // export const constName = ...\n        // export function funcName() {}\n        return\n      }\n      addSpecifier({\n        path: path.get(\"source\"),\n        type: \"export-named\",\n      })\n    },\n    ImportDeclaration: (path) => {\n      addSpecifier({\n        path: path.get(\"source\"),\n        type: \"import-static\",\n      })\n    },\n  })\n\n  return specifiers\n}\n",
    "// https://github.com/postcss/postcss/blob/fd30d3df5abc0954a0ec642a3cdc644ab2aacf9c/lib/css-syntax-error.js#L43\n// https://github.com/postcss/postcss/blob/fd30d3df5abc0954a0ec642a3cdc644ab2aacf9c/lib/terminal-highlight.js#L50\n// https://github.com/babel/babel/blob/eea156b2cb8deecfcf82d52aa1b71ba4995c7d68/packages/babel-code-frame/src/index.js#L1\n\nexport const showSource = ({ url, line, column, source }) => {\n  let message = \"\"\n\n  message += typeof url === \"undefined\" ? \"Anonymous\" : url\n  if (typeof line !== \"number\") {\n    return message\n  }\n\n  message += `:${line}`\n  if (typeof column === \"number\") {\n    message += `:${column}`\n  }\n\n  if (!source) {\n    return message\n  }\n\n  return `${message}\n${showSourceLocation(source, {\n  line,\n  column,\n})}`\n}\n\nconst red = \"\\x1b[31m\"\nconst grey = \"\\x1b[39m\"\nconst ansiResetSequence = \"\\x1b[0m\"\n\nconst showSourceLocation = (\n  source,\n  {\n    line,\n    column,\n    numberOfSurroundingLinesToShow = 1,\n    lineMaxLength = 120,\n    color = false,\n    markColor = red,\n    asideColor = grey,\n    colorMark = (string) => `${markColor}${string}${ansiResetSequence}`,\n    colorAside = (string) => `${asideColor}${string}${ansiResetSequence}`,\n  },\n) => {\n  const mark = color ? colorMark : (string) => string\n  const aside = color ? colorAside : (string) => string\n\n  const lines = source.split(/\\r?\\n/)\n  let lineRange = {\n    start: line - 1,\n    end: line,\n  }\n  lineRange = moveLineRangeUp(lineRange, numberOfSurroundingLinesToShow)\n  lineRange = moveLineRangeDown(lineRange, numberOfSurroundingLinesToShow)\n  lineRange = lineRangeWithinLines(lineRange, lines)\n  const linesToShow = lines.slice(lineRange.start, lineRange.end)\n  const endLineNumber = lineRange.end\n  const lineNumberMaxWidth = String(endLineNumber).length\n\n  const columnRange = {}\n  if (column === undefined) {\n    columnRange.start = 0\n    columnRange.end = lineMaxLength\n  } else if (column > lineMaxLength) {\n    columnRange.start = column - Math.floor(lineMaxLength / 2)\n    columnRange.end = column + Math.ceil(lineMaxLength / 2)\n  } else {\n    columnRange.start = 0\n    columnRange.end = lineMaxLength\n  }\n\n  return linesToShow.map((lineSource, index) => {\n    const lineNumber = lineRange.start + index + 1\n    const isMainLine = lineNumber === line\n    const lineSourceTruncated = applyColumnRange(columnRange, lineSource)\n    const lineNumberWidth = String(lineNumber).length\n    // ensure if line moves from 7,8,9 to 10 the display is still great\n    const lineNumberRightSpacing = \" \".repeat(lineNumberMaxWidth - lineNumberWidth)\n    const asideSource = `${lineNumber}${lineNumberRightSpacing} |`\n    const lineFormatted = `${aside(asideSource)} ${lineSourceTruncated}`\n    if (isMainLine) {\n      if (column === undefined) {\n        return `${mark(\">\")} ${lineFormatted}`\n      }\n      const lineSourceUntilColumn = lineSourceTruncated.slice(0, column - columnRange.start)\n      const spacing = stringToSpaces(lineSourceUntilColumn)\n      const mainLineFormatted = `${mark(\">\")} ${lineFormatted}\n  ${\" \".repeat(lineNumberWidth)} ${aside(\"|\")}${spacing}${mark(\"^\")}`\n      return mainLineFormatted\n    }\n    return `  ${lineFormatted}`\n  }).join(`\n`)\n}\n\nconst applyColumnRange = ({ start, end }, line) => {\n  if (typeof start !== \"number\") {\n    throw new TypeError(`start must be a number, received ${start}`)\n  }\n  if (typeof end !== \"number\") {\n    throw new TypeError(`end must be a number, received ${end}`)\n  }\n  if (end < start) {\n    throw new Error(`end must be greater than start, but ${end} is smaller than ${start}`)\n  }\n\n  const prefix = \"…\"\n  const suffix = \"…\"\n  const lastIndex = line.length\n\n  if (line.length === 0) {\n    // don't show any ellipsis if the line is empty\n    // because it's not truncated in that case\n    return \"\"\n  }\n\n  const startTruncated = start > 0\n  const endTruncated = lastIndex > end\n\n  let from = startTruncated ? start + prefix.length : start\n  let to = endTruncated ? end - suffix.length : end\n  if (to > lastIndex) to = lastIndex\n\n  if (start >= lastIndex || from === to) {\n    return \"\"\n  }\n\n  let result = \"\"\n  while (from < to) {\n    result += line[from]\n    from++\n  }\n\n  if (result.length === 0) {\n    return \"\"\n  }\n  if (startTruncated && endTruncated) {\n    return `${prefix}${result}${suffix}`\n  }\n  if (startTruncated) {\n    return `${prefix}${result}`\n  }\n  if (endTruncated) {\n    return `${result}${suffix}`\n  }\n  return result\n}\n\nconst stringToSpaces = (string) => string.replace(/[^\\t]/g, \" \")\n\n// const getLineRangeLength = ({ start, end }) => end - start\n\nconst moveLineRangeUp = ({ start, end }, number) => {\n  return {\n    start: start - number,\n    end,\n  }\n}\n\nconst moveLineRangeDown = ({ start, end }, number) => {\n  return {\n    start,\n    end: end + number,\n  }\n}\n\nconst lineRangeWithinLines = ({ start, end }, lines) => {\n  return {\n    start: start < 0 ? 0 : start,\n    end: end > lines.length ? lines.length : end,\n  }\n}\n",
    "import { resolveUrl, readFileSystemNodeStat, urlToFilename, urlToExtension } from \"@jsenv/util\"\nimport { firstOperationMatching } from \"@jsenv/cancellation\"\n\nexport const resolveFile = async (fileUrl, { magicExtensions }) => {\n  const fileStat = await readFileSystemNodeStat(fileUrl, {\n    nullIfNotFound: true,\n  })\n\n  // file found\n  if (fileStat && fileStat.isFile()) {\n    return fileUrl\n  }\n\n  // directory found\n  if (fileStat && fileStat.isDirectory()) {\n    const indexFileSuffix = fileUrl.endsWith(\"/\") ? \"index\" : \"/index\"\n    const indexFileUrl = `${fileUrl}${indexFileSuffix}`\n    const extensionLeadingToAFile = await findExtensionLeadingToFile(indexFileUrl, magicExtensions)\n    if (extensionLeadingToAFile === null) {\n      return null\n    }\n    return `${indexFileUrl}${extensionLeadingToAFile}`\n  }\n\n  // file not found and it has an extension\n  const extension = urlToExtension(fileUrl)\n  if (extension !== \"\") {\n    return null\n  }\n\n  const extensionLeadingToAFile = await findExtensionLeadingToFile(fileUrl, magicExtensions)\n  // magic extension not found\n  if (extensionLeadingToAFile === null) {\n    return null\n  }\n\n  // magic extension worked\n  return `${fileUrl}${extensionLeadingToAFile}`\n}\n\nconst findExtensionLeadingToFile = async (fileUrl, magicExtensions) => {\n  const urlDirectoryUrl = resolveUrl(\"./\", fileUrl)\n  const urlFilename = urlToFilename(fileUrl)\n  const extensionLeadingToFile = await firstOperationMatching({\n    array: magicExtensions,\n    start: async (extensionCandidate) => {\n      const urlCandidate = `${urlDirectoryUrl}${urlFilename}${extensionCandidate}`\n      const stats = await readFileSystemNodeStat(urlCandidate, { nullIfNotFound: true })\n      return stats && stats.isFile() ? extensionCandidate : null\n    },\n    predicate: (extension) => Boolean(extension),\n  })\n  return extensionLeadingToFile || null\n}\n",
    "export const createPackageNameMustBeAStringWarning = ({ packageName, packageFileUrl }) => {\n  return {\n    code: \"PACKAGE_NAME_MUST_BE_A_STRING\",\n    message: `package name field must be a string\n--- package name field ---\n${packageName}\n--- package.json file path ---\n${packageFileUrl}`,\n  }\n}\n",
    "import { createDetailedMessage } from \"@jsenv/logger\"\nimport { resolveUrl, readFile, urlToExtension, urlToRelativeUrl } from \"@jsenv/util\"\nimport {\n  normalizeImportMap,\n  resolveImport,\n  sortImportMap,\n  composeTwoImportMaps,\n} from \"@jsenv/import-map\"\nimport { isSpecifierForNodeCoreModule } from \"@jsenv/import-map/src/isSpecifierForNodeCoreModule.js\"\n\nimport {\n  memoizeAsyncFunctionByUrl,\n  memoizeAsyncFunctionBySpecifierAndImporter,\n} from \"../memoizeAsyncFunction.js\"\n\nimport { parseSpecifiersFromFile } from \"./parseSpecifiersFromFile.js\"\nimport { showSource } from \"./showSource.js\"\nimport { resolveFile } from \"../resolveFile.js\"\nimport { createPackageNameMustBeAStringWarning } from \"../warnings.js\"\n\nconst BARE_SPECIFIER_ERROR = {}\n\nexport const getImportMapFromJsFiles = async ({\n  logger,\n  warn,\n  projectDirectoryUrl,\n  importMap,\n  magicExtensions,\n  runtime,\n  treeshakeMappings,\n  jsFilesParsingOptions,\n}) => {\n  const projectPackageFileUrl = resolveUrl(\"./package.json\", projectDirectoryUrl)\n\n  const imports = {}\n  const scopes = {}\n  const addMapping = ({ scope, from, to }) => {\n    if (scope) {\n      scopes[scope] = {\n        ...(scopes[scope] || {}),\n        [from]: to,\n      }\n    } else {\n      imports[from] = to\n    }\n  }\n\n  const topLevelMappingsUsed = []\n  const scopedMappingsUsed = {}\n  const markMappingAsUsed = ({ scope, from, to }) => {\n    if (scope) {\n      if (scope in scopedMappingsUsed) {\n        scopedMappingsUsed[scope].push({ from, to })\n      } else {\n        scopedMappingsUsed[scope] = [{ from, to }]\n      }\n    } else {\n      topLevelMappingsUsed.push({ from, to })\n    }\n  }\n  const importMapNormalized = normalizeImportMap(importMap, projectDirectoryUrl)\n  const trackAndResolveImport = (specifier, importer) => {\n    return resolveImport({\n      specifier,\n      importer,\n      importMap: importMapNormalized,\n      defaultExtension: false,\n      onImportMapping: ({ scope, from }) => {\n        if (scope) {\n          // make scope relative again\n          scope = `./${urlToRelativeUrl(scope, projectDirectoryUrl)}`\n          // make from relative again\n          if (from.startsWith(projectDirectoryUrl)) {\n            from = `./${urlToRelativeUrl(from, projectDirectoryUrl)}`\n          }\n        }\n\n        markMappingAsUsed({\n          scope,\n          from,\n          to: scope ? importMap.scopes[scope][from] : importMap.imports[from],\n        })\n      },\n      createBareSpecifierError: () => BARE_SPECIFIER_ERROR,\n    })\n  }\n\n  const resolveFileSystemUrl = memoizeAsyncFunctionBySpecifierAndImporter(\n    async (specifier, importer, { importedBy }) => {\n      if (runtime === \"node\" && isSpecifierForNodeCoreModule(specifier)) {\n        return null\n      }\n\n      let fileUrl\n      let gotBareSpecifierError = false\n\n      try {\n        fileUrl = trackAndResolveImport(specifier, importer)\n      } catch (e) {\n        if (e !== BARE_SPECIFIER_ERROR) {\n          throw e\n        }\n        if (importer === projectPackageFileUrl) {\n          // cannot find package main file (package.main is \"\" for instance)\n          // we can't discover main file and parse dependencies\n          return null\n        }\n        gotBareSpecifierError = true\n        fileUrl = resolveUrl(specifier, importer)\n      }\n\n      const fileUrlOnFileSystem = await resolveFile(fileUrl, {\n        magicExtensions: magicExtensionWithImporterExtension(magicExtensions, importer),\n      })\n\n      if (!fileUrlOnFileSystem) {\n        warn(\n          createFileNotFoundWarning({\n            specifier,\n            importedBy,\n            fileUrl,\n            magicExtensions,\n          }),\n        )\n        return null\n      }\n\n      const needsAutoMapping = fileUrlOnFileSystem !== fileUrl || gotBareSpecifierError\n      if (needsAutoMapping) {\n        const packageDirectoryUrl = packageDirectoryUrlFromUrl(fileUrl, projectDirectoryUrl)\n        const packageFileUrl = resolveUrl(\"package.json\", packageDirectoryUrl)\n        const autoMapping = {\n          scope:\n            packageFileUrl === projectPackageFileUrl\n              ? undefined\n              : `./${urlToRelativeUrl(packageDirectoryUrl, projectDirectoryUrl)}`,\n          from: specifier,\n          to: `./${urlToRelativeUrl(fileUrlOnFileSystem, projectDirectoryUrl)}`,\n        }\n        addMapping(autoMapping)\n        markMappingAsUsed(autoMapping)\n\n        const closestPackageObject = await readFile(packageFileUrl, { as: \"json\" })\n        // it's imprecise because we are not ensuring the wildcard correspond to automapping\n        // but good enough for now\n        const containsWildcard = Object.keys(closestPackageObject.exports || {}).some((key) =>\n          key.includes(\"*\"),\n        )\n\n        const autoMappingWarning = formatAutoMappingSpecifierWarning({\n          specifier,\n          importedBy,\n          autoMapping,\n          closestPackageDirectoryUrl: packageDirectoryUrl,\n          closestPackageObject,\n        })\n        if (containsWildcard) {\n          logger.debug(autoMappingWarning)\n        } else {\n          warn(autoMappingWarning)\n        }\n      }\n\n      return fileUrlOnFileSystem\n    },\n  )\n\n  const visitFile = memoizeAsyncFunctionByUrl(async (fileUrl) => {\n    const fileContent = await readFile(fileUrl, { as: \"string\" })\n    const specifiers = await parseSpecifiersFromFile(fileUrl, {\n      fileContent,\n      jsFilesParsingOptions,\n    })\n\n    const dependencies = await Promise.all(\n      Object.keys(specifiers).map(async (specifier) => {\n        const specifierInfo = specifiers[specifier]\n        const dependencyUrlOnFileSystem = await resolveFileSystemUrl(specifier, fileUrl, {\n          importedBy: showSource({\n            url: fileUrl,\n            line: specifierInfo.line,\n            column: specifierInfo.column,\n            source: fileContent,\n          }),\n        })\n        return dependencyUrlOnFileSystem\n      }),\n    )\n    const dependenciesToVisit = dependencies.filter((dependency) => {\n      return dependency && !visitFile.isInMemory(dependency)\n    })\n    await Promise.all(\n      dependenciesToVisit.map((dependency) => {\n        return visitFile(dependency)\n      }),\n    )\n  })\n\n  const projectPackageObject = await readFile(projectPackageFileUrl, { as: \"json\" })\n  const projectPackageName = projectPackageObject.name\n  if (typeof projectPackageName !== \"string\") {\n    warn(\n      createPackageNameMustBeAStringWarning({\n        packageName: projectPackageName,\n        packageFileUrl: projectPackageFileUrl,\n      }),\n    )\n    return importMap\n  }\n\n  const projectMainFileUrlOnFileSystem = await resolveFileSystemUrl(\n    projectPackageName,\n    projectPackageFileUrl,\n    {\n      importedBy: projectPackageObject.exports\n        ? `${projectPackageFileUrl}#exports`\n        : `${projectPackageFileUrl}`,\n    },\n  )\n  if (projectMainFileUrlOnFileSystem) {\n    await visitFile(projectMainFileUrlOnFileSystem)\n  }\n\n  if (treeshakeMappings) {\n    const importsUsed = {}\n    topLevelMappingsUsed.forEach(({ from, to }) => {\n      importsUsed[from] = to\n    })\n    const scopesUsed = {}\n    Object.keys(scopedMappingsUsed).forEach((scope) => {\n      const mappingsUsed = scopedMappingsUsed[scope]\n      const scopedMappings = {}\n      mappingsUsed.forEach(({ from, to }) => {\n        scopedMappings[from] = to\n      })\n      scopesUsed[scope] = scopedMappings\n    })\n    return sortImportMap({\n      imports: importsUsed,\n      scopes: scopesUsed,\n    })\n  }\n\n  return sortImportMap(composeTwoImportMaps(importMap, { imports, scopes }))\n}\n\nconst packageDirectoryUrlFromUrl = (url, projectDirectoryUrl) => {\n  const relativeUrl = urlToRelativeUrl(url, projectDirectoryUrl)\n\n  const lastNodeModulesDirectoryStartIndex = relativeUrl.lastIndexOf(\"node_modules/\")\n  if (lastNodeModulesDirectoryStartIndex === -1) {\n    return projectDirectoryUrl\n  }\n\n  const lastNodeModulesDirectoryEndIndex =\n    lastNodeModulesDirectoryStartIndex + `node_modules/`.length\n\n  const beforeNodeModulesLastDirectory = relativeUrl.slice(0, lastNodeModulesDirectoryEndIndex)\n  const afterLastNodeModulesDirectory = relativeUrl.slice(lastNodeModulesDirectoryEndIndex)\n  const remainingDirectories = afterLastNodeModulesDirectory.split(\"/\")\n\n  if (afterLastNodeModulesDirectory[0] === \"@\") {\n    // scoped package\n    return `${projectDirectoryUrl}${beforeNodeModulesLastDirectory}${remainingDirectories\n      .slice(0, 2)\n      .join(\"/\")}`\n  }\n  return `${projectDirectoryUrl}${beforeNodeModulesLastDirectory}${remainingDirectories[0]}/`\n}\n\nconst magicExtensionWithImporterExtension = (magicExtensions, importer) => {\n  const importerExtension = urlToExtension(importer)\n  const magicExtensionsWithoutImporterExtension = magicExtensions.filter(\n    (ext) => ext !== importerExtension,\n  )\n  return [importerExtension, ...magicExtensionsWithoutImporterExtension]\n}\n\nconst createFileNotFoundWarning = ({ specifier, importedBy, fileUrl, magicExtensions }) => {\n  return {\n    code: \"FILE_NOT_FOUND\",\n    message: createDetailedMessage(`Cannot find file for \"${specifier}\"`, {\n      \"specifier origin\": importedBy,\n      \"file url tried\": fileUrl,\n      ...(urlToExtension(fileUrl) === \"\"\n        ? { [\"extensions tried\"]: magicExtensions.join(`, `) }\n        : {}),\n    }),\n  }\n}\n\nconst formatAutoMappingSpecifierWarning = ({\n  importedBy,\n  autoMapping,\n  closestPackageDirectoryUrl,\n  closestPackageObject,\n}) => {\n  return {\n    code: \"AUTO_MAPPING\",\n    message: createDetailedMessage(`Auto mapping ${autoMapping.from} to ${autoMapping.to}.`, {\n      \"specifier origin\": importedBy,\n      \"suggestion\": decideAutoMappingSuggestion({\n        autoMapping,\n        closestPackageDirectoryUrl,\n        closestPackageObject,\n      }),\n    }),\n  }\n}\n\nconst decideAutoMappingSuggestion = ({\n  autoMapping,\n  closestPackageDirectoryUrl,\n  closestPackageObject,\n}) => {\n  if (typeof closestPackageObject.importmap === \"string\") {\n    const packageImportmapFileUrl = resolveUrl(\n      closestPackageObject.importmap,\n      closestPackageDirectoryUrl,\n    )\n\n    return `To get rid of this warning, add an explicit mapping into importmap file.\n${mappingToImportmapString(autoMapping)}\ninto ${packageImportmapFileUrl}.`\n  }\n\n  return `To get rid of this warning, add an explicit mapping into package.json.\n${mappingToExportsFieldString(autoMapping)}\ninto ${closestPackageDirectoryUrl}package.json.`\n}\n\nconst mappingToImportmapString = ({ scope, from, to }) => {\n  if (scope) {\n    return JSON.stringify(\n      {\n        scopes: {\n          [scope]: {\n            [from]: to,\n          },\n        },\n      },\n      null,\n      \"  \",\n    )\n  }\n\n  return JSON.stringify(\n    {\n      imports: {\n        [from]: to,\n      },\n    },\n    null,\n    \"  \",\n  )\n}\n\nconst mappingToExportsFieldString = ({ scope, from, to }) => {\n  if (scope) {\n    const scopeUrl = resolveUrl(scope, \"file://\")\n    const toUrl = resolveUrl(to, \"file://\")\n    to = `./${urlToRelativeUrl(toUrl, scopeUrl)}`\n  }\n\n  return JSON.stringify(\n    {\n      exports: {\n        [from]: to,\n      },\n    },\n    null,\n    \"  \",\n  )\n}\n",
    "export const optimizeImportMap = ({ imports, scopes }) => {\n  // remove useless duplicates (scoped key+value already defined on imports)\n  const scopesOptimized = {}\n  Object.keys(scopes).forEach((scope) => {\n    const scopeMappings = scopes[scope]\n    const scopeMappingsOptimized = {}\n    Object.keys(scopeMappings).forEach((mappingKey) => {\n      const topLevelMappingValue = imports[mappingKey]\n      const mappingValue = scopeMappings[mappingKey]\n      if (!topLevelMappingValue || topLevelMappingValue !== mappingValue) {\n        scopeMappingsOptimized[mappingKey] = mappingValue\n      }\n    })\n    if (Object.keys(scopeMappingsOptimized).length > 0) {\n      scopesOptimized[scope] = scopeMappingsOptimized\n    }\n  })\n  return { imports, scopes: scopesOptimized }\n}\n",
    "import { createDetailedMessage } from \"@jsenv/logger\"\nimport { resolveUrl, urlToFileSystemPath, urlToExtension } from \"@jsenv/util\"\nimport { resolveFile } from \"../resolveFile.js\"\n\nconst magicExtensions = [\".js\", \".json\", \".node\"]\n\nexport const resolvePackageMain = ({\n  warn,\n  packageConditions,\n  packageFileUrl,\n  packageJsonObject,\n}) => {\n  // we should remove \"module\", \"browser\", \"jsenext:main\" because Node.js native resolution\n  // ignores them\n  if (packageConditions.includes(\"import\") && \"module\" in packageJsonObject) {\n    return resolveMainFile({\n      warn,\n      packageFileUrl,\n      packageMainFieldName: \"module\",\n      packageMainFieldValue: packageJsonObject.module,\n    })\n  }\n\n  if (packageConditions.includes(\"import\") && \"jsnext:main\" in packageJsonObject) {\n    return resolveMainFile({\n      warn,\n      packageFileUrl,\n      packageMainFieldName: \"jsnext:main\",\n      packageMainFieldValue: packageJsonObject[\"jsnext:main\"],\n    })\n  }\n\n  if (\n    packageConditions.includes(\"browser\") &&\n    \"browser\" in packageJsonObject &&\n    // when it's an object it means some files\n    // should be replaced with an other, let's ignore this when we are searching\n    // for the main file\n    typeof packageJsonObject.browser === \"string\"\n  ) {\n    return resolveMainFile({\n      warn,\n      packageFileUrl,\n      packageMainFieldName: \"browser\",\n      packageMainFieldValue: packageJsonObject.browser,\n    })\n  }\n\n  if (\"main\" in packageJsonObject) {\n    return resolveMainFile({\n      warn,\n      packageFileUrl,\n      packageMainFieldName: \"main\",\n      packageMainFieldValue: packageJsonObject.main,\n    })\n  }\n\n  return resolveMainFile({\n    warn,\n    packageFileUrl,\n    packageMainFieldName: \"default\",\n    packageMainFieldValue: \"index\",\n  })\n}\n\nconst resolveMainFile = async ({\n  warn,\n  packageFileUrl,\n  packageMainFieldName,\n  packageMainFieldValue,\n}) => {\n  // main is explicitely empty meaning\n  // it is assumed that we should not find a file\n  if (packageMainFieldValue === \"\") {\n    return null\n  }\n\n  const packageDirectoryUrl = resolveUrl(\"./\", packageFileUrl)\n  const mainFileRelativeUrl = packageMainFieldValue.endsWith(\"/\")\n    ? `${packageMainFieldValue}index`\n    : packageMainFieldValue\n\n  const mainFileUrlFirstCandidate = resolveUrl(mainFileRelativeUrl, packageFileUrl)\n\n  if (!mainFileUrlFirstCandidate.startsWith(packageDirectoryUrl)) {\n    warn(\n      createPackageMainFileMustBeRelativeWarning({\n        packageMainFieldName,\n        packageMainFieldValue,\n        packageFileUrl,\n      }),\n    )\n    return null\n  }\n\n  const mainFileUrl = await resolveFile(mainFileUrlFirstCandidate, {\n    magicExtensions,\n  })\n\n  if (!mainFileUrl) {\n    // we know in advance this remapping does not lead to an actual file.\n    // we only warn because we have no guarantee this remapping will actually be used\n    // in the codebase.\n    // warn only if there is actually a main field\n    // otherwise the package.json is missing the main field\n    // it certainly means it's not important\n    if (packageMainFieldName !== \"default\") {\n      warn(\n        createPackageMainFileNotFoundWarning({\n          specifier: packageMainFieldValue,\n          importedIn: `${packageFileUrl}#${packageMainFieldName}`,\n          fileUrl: mainFileUrlFirstCandidate,\n          magicExtensions,\n        }),\n      )\n    }\n    return mainFileUrlFirstCandidate\n  }\n\n  return mainFileUrl\n}\n\nconst createPackageMainFileMustBeRelativeWarning = ({\n  packageMainFieldName,\n  packageMainFieldValue,\n  packageFileUrl,\n}) => {\n  return {\n    code: \"PACKAGE_MAIN_FILE_MUST_BE_RELATIVE\",\n    message: `${packageMainFieldName} field in package.json must be inside package.json folder.\n--- ${packageMainFieldName} ---\n${packageMainFieldValue}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n\nconst createPackageMainFileNotFoundWarning = ({\n  specifier,\n  importedIn,\n  fileUrl,\n  magicExtensions,\n}) => {\n  return {\n    code: \"PACKAGE_MAIN_FILE_NOT_FOUND\",\n    message: createDetailedMessage(`Cannot find package main file \"${specifier}\"`, {\n      \"imported in\": importedIn,\n      \"file url tried\": fileUrl,\n      ...(urlToExtension(fileUrl) === \"\"\n        ? { [\"extensions tried\"]: magicExtensions.join(`, `) }\n        : {}),\n    }),\n  }\n}\n",
    "import { resolveUrl, moveImportMap } from \"@jsenv/import-map\"\nimport { readFile, urlToFileSystemPath } from \"@jsenv/util\"\n\nexport const visitPackageImportMap = async ({\n  warn,\n  packageFileUrl,\n  packageJsonObject,\n  packageImportmap = packageJsonObject.importmap,\n  projectDirectoryUrl,\n}) => {\n  if (typeof packageImportmap === \"undefined\") {\n    return {}\n  }\n\n  if (typeof packageImportmap === \"string\") {\n    const importmapFileUrl = resolveUrl(packageImportmap, packageFileUrl)\n    try {\n      const importmap = await readFile(importmapFileUrl, { as: \"json\" })\n      return moveImportMap(importmap, importmapFileUrl, projectDirectoryUrl)\n    } catch (e) {\n      if (e.code === \"ENOENT\") {\n        warn(\n          createPackageImportMapNotFoundWarning({\n            importmapFileUrl,\n            packageFileUrl,\n          }),\n        )\n        return {}\n      }\n      throw e\n    }\n  }\n\n  if (typeof packageImportmap === \"object\" && packageImportmap !== null) {\n    return packageImportmap\n  }\n\n  warn(\n    createPackageImportMapUnexpectedWarning({\n      packageImportmap,\n      packageFileUrl,\n    }),\n  )\n  return {}\n}\n\nconst createPackageImportMapNotFoundWarning = ({ importmapFileUrl, packageFileUrl }) => {\n  return {\n    code: \"PACKAGE_IMPORTMAP_NOT_FOUND\",\n    message: `importmap file specified in a package.json cannot be found,\n--- importmap file path ---\n${importmapFileUrl}\n--- package.json path ---\n${packageFileUrl}`,\n  }\n}\n\nconst createPackageImportMapUnexpectedWarning = ({ packageImportmap, packageFileUrl }) => {\n  return {\n    code: \"PACKAGE_IMPORTMAP_UNEXPECTED\",\n    message: `unexpected value in package.json importmap field: value must be a string or an object.\n--- value ---\n${packageImportmap}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n",
    "export const specifierIsRelative = (specifier) => {\n  if (specifier.startsWith(\"//\")) {\n    return false\n  }\n  if (specifier.startsWith(\"../\")) {\n    return false\n  }\n  // starts with http:// or file:// or ftp: for instance\n  if (/^[a-zA-Z]+\\:/.test(specifier)) {\n    return false\n  }\n  return true\n}\n",
    "/*\n\nhttps://nodejs.org/docs/latest-v15.x/api/packages.html#packages_node_js_package_json_field_definitions\n\n*/\n\nimport { urlToFileSystemPath } from \"@jsenv/util\"\nimport { specifierIsRelative } from \"./specifierIsRelative.js\"\n\nexport const visitPackageImports = ({\n  packageFileUrl,\n  packageJsonObject,\n  packageImports = packageJsonObject.imports,\n  packageConditions,\n  warn,\n}) => {\n  const importsSubpaths = {}\n  const onImportsSubpath = ({ key, value, trace }) => {\n    if (!specifierIsRelative(value)) {\n      warn(\n        createSubpathValueMustBeRelativeWarning({\n          value,\n          valueTrace: trace,\n          packageFileUrl,\n        }),\n      )\n      return\n    }\n\n    const keyNormalized = key\n    const valueNormalized = value\n    importsSubpaths[keyNormalized] = valueNormalized\n  }\n\n  const conditions = [...packageConditions, \"default\"]\n\n  const visitSubpathValue = (subpathValue, subpathValueTrace) => {\n    if (typeof subpathValue === \"string\") {\n      return handleString(subpathValue, subpathValueTrace)\n    }\n\n    if (typeof subpathValue === \"object\" && subpathValue !== null) {\n      return handleObject(subpathValue, subpathValueTrace)\n    }\n\n    return handleRemaining(subpathValue, subpathValueTrace)\n  }\n\n  const handleString = (subpathValue, subpathValueTrace) => {\n    const firstBareKey = subpathValueTrace\n      .slice()\n      .reverse()\n      .find((key) => key.startsWith(\"#\"))\n    onImportsSubpath({\n      key: firstBareKey,\n      value: subpathValue,\n      trace: subpathValueTrace,\n    })\n    return true\n  }\n\n  const handleObject = (subpathValue, subpathValueTrace) => {\n    // From Node.js documentation:\n    // \"If a nested conditional does not have any mapping it will continue\n    // checking the remaining conditions of the parent condition\"\n    // https://nodejs.org/docs/latest-v14.x/api/packages.html#packages_nested_conditions\n    //\n    // So it seems what we do here is not sufficient\n    // -> if the condition finally does not lead to something\n    // it should be ignored and an other branch be taken until\n    // something resolves\n    const followConditionBranch = (subpathValue, conditionTrace) => {\n      const bareKeys = []\n      const conditionalKeys = []\n      Object.keys(subpathValue).forEach((availableKey) => {\n        if (availableKey.startsWith(\"#\")) {\n          bareKeys.push(availableKey)\n        } else {\n          conditionalKeys.push(availableKey)\n        }\n      })\n\n      if (bareKeys.length > 0 && conditionalKeys.length > 0) {\n        warn(\n          createSubpathKeysAreMixedWarning({\n            subpathValue,\n            subpathValueTrace: [...subpathValueTrace, ...conditionTrace],\n            packageFileUrl,\n            bareKeys,\n            conditionalKeys,\n          }),\n        )\n        return false\n      }\n\n      // there is no condition, visit all bare keys (starting with #)\n      if (conditionalKeys.length === 0) {\n        let leadsToSomething = false\n        bareKeys.forEach((key) => {\n          leadsToSomething = visitSubpathValue(subpathValue[key], [\n            ...subpathValueTrace,\n            ...conditionTrace,\n            key,\n          ])\n        })\n        return leadsToSomething\n      }\n\n      // there is a condition, keep the first one leading to something\n      return conditionalKeys.some((keyCandidate) => {\n        if (!conditions.includes(keyCandidate)) {\n          return false\n        }\n        const valueCandidate = subpathValue[keyCandidate]\n        return visitSubpathValue(valueCandidate, [\n          ...subpathValueTrace,\n          ...conditionTrace,\n          keyCandidate,\n        ])\n      })\n    }\n\n    return followConditionBranch(subpathValue, [])\n  }\n\n  const handleRemaining = (subpathValue, subpathValueTrace) => {\n    warn(\n      createSubpathIsUnexpectedWarning({\n        subpathValue,\n        subpathValueTrace,\n        packageFileUrl,\n      }),\n    )\n    return false\n  }\n\n  visitSubpathValue(packageImports, [\"imports\"])\n\n  return importsSubpaths\n}\n\nconst createSubpathIsUnexpectedWarning = ({ subpathValue, subpathValueTrace, packageFileUrl }) => {\n  return {\n    code: \"IMPORTS_SUBPATH_UNEXPECTED\",\n    message: `unexpected subpath in package.json imports: value must be an object or a string.\n--- value ---\n${subpathValue}\n--- value at ---\n${subpathValueTrace.join(\".\")}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n\nconst createSubpathKeysAreMixedWarning = ({ subpathValue, subpathValueTrace, packageFileUrl }) => {\n  return {\n    code: \"IMPORTS_SUBPATH_MIXED_KEYS\",\n    message: `unexpected subpath keys in package.json imports: cannot mix bare and conditional keys.\n--- value ---\n${JSON.stringify(subpathValue, null, \"  \")}\n--- value at ---\n${subpathValueTrace.join(\".\")}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n\nconst createSubpathValueMustBeRelativeWarning = ({ value, valueTrace, packageFileUrl }) => {\n  return {\n    code: \"IMPORTS_SUBPATH_VALUE_UNEXPECTED\",\n    message: `unexpected subpath value in package.json imports: value must be relative to package\n--- value ---\n${value}\n--- value at ---\n${valueTrace.join(\".\")}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n",
    "/*\n\nhttps://nodejs.org/docs/latest-v15.x/api/packages.html#packages_node_js_package_json_field_definitions\n\n*/\n\nimport { urlToFileSystemPath, urlToRelativeUrl, resolveUrl } from \"@jsenv/util\"\nimport { specifierIsRelative } from \"./specifierIsRelative.js\"\n\nexport const visitPackageExports = ({\n  packageFileUrl,\n  packageJsonObject,\n  packageExports = packageJsonObject.exports,\n  packageName = packageJsonObject.name,\n  projectDirectoryUrl,\n  packageConditions,\n  warn,\n}) => {\n  const exportsSubpaths = {}\n  const packageDirectoryUrl = resolveUrl(\"./\", packageFileUrl)\n  const packageDirectoryRelativeUrl = urlToRelativeUrl(packageDirectoryUrl, projectDirectoryUrl)\n  const onExportsSubpath = ({ key, value, trace }) => {\n    if (!specifierIsRelative(value)) {\n      warn(\n        createSubpathValueMustBeRelativeWarning({\n          value,\n          valueTrace: trace,\n          packageFileUrl,\n        }),\n      )\n      return\n    }\n\n    const keyNormalized = specifierToSource(key, packageName)\n    const valueNormalized = addressToDestination(value, packageDirectoryRelativeUrl)\n    exportsSubpaths[keyNormalized] = valueNormalized\n  }\n\n  const conditions = [...packageConditions, \"default\"]\n\n  const visitSubpathValue = (subpathValue, subpathValueTrace) => {\n    // false is allowed as alternative to exports: {}\n    if (subpathValue === false) {\n      return handleFalse()\n    }\n\n    if (typeof subpathValue === \"string\") {\n      return handleString(subpathValue, subpathValueTrace)\n    }\n\n    if (typeof subpathValue === \"object\" && subpathValue !== null) {\n      return handleObject(subpathValue, subpathValueTrace)\n    }\n\n    return handleRemaining(subpathValue, subpathValueTrace)\n  }\n\n  const handleFalse = () => {\n    // nothing to do\n    return true\n  }\n\n  const handleString = (subpathValue, subpathValueTrace) => {\n    const firstRelativeKey = subpathValueTrace\n      .slice()\n      .reverse()\n      .find((key) => key.startsWith(\".\"))\n    const key = firstRelativeKey || \".\"\n    onExportsSubpath({\n      key,\n      value: subpathValue,\n      trace: subpathValueTrace,\n    })\n    return true\n  }\n\n  const handleObject = (subpathValue, subpathValueTrace) => {\n    // From Node.js documentation:\n    // \"If a nested conditional does not have any mapping it will continue\n    // checking the remaining conditions of the parent condition\"\n    // https://nodejs.org/docs/latest-v14.x/api/packages.html#packages_nested_conditions\n    //\n    // So it seems what we do here is not sufficient\n    // -> if the condition finally does not lead to something\n    // it should be ignored and an other branch be taken until\n    // something resolves\n    const followConditionBranch = (subpathValue, conditionTrace) => {\n      const relativeKeys = []\n      const conditionalKeys = []\n      Object.keys(subpathValue).forEach((availableKey) => {\n        if (availableKey.startsWith(\".\")) {\n          relativeKeys.push(availableKey)\n        } else {\n          conditionalKeys.push(availableKey)\n        }\n      })\n\n      if (relativeKeys.length > 0 && conditionalKeys.length > 0) {\n        warn(\n          createSubpathKeysAreMixedWarning({\n            subpathValue,\n            subpathValueTrace: [...subpathValueTrace, ...conditionTrace],\n            packageFileUrl,\n            relativeKeys,\n            conditionalKeys,\n          }),\n        )\n        return false\n      }\n\n      // there is no condition, visit all relative keys\n      if (conditionalKeys.length === 0) {\n        let leadsToSomething = false\n        relativeKeys.forEach((key) => {\n          leadsToSomething = visitSubpathValue(subpathValue[key], [\n            ...subpathValueTrace,\n            ...conditionTrace,\n            key,\n          ])\n        })\n        return leadsToSomething\n      }\n\n      // there is a condition, keep the first one leading to something\n      return conditionalKeys.some((keyCandidate) => {\n        if (!conditions.includes(keyCandidate)) {\n          return false\n        }\n        const valueCandidate = subpathValue[keyCandidate]\n        return visitSubpathValue(valueCandidate, [\n          ...subpathValueTrace,\n          ...conditionTrace,\n          keyCandidate,\n        ])\n      })\n    }\n\n    if (Array.isArray(subpathValue)) {\n      subpathValue = exportsObjectFromExportsArray(subpathValue)\n    }\n    return followConditionBranch(subpathValue, [])\n  }\n\n  const handleRemaining = (subpathValue, subpathValueTrace) => {\n    warn(\n      createSubpathIsUnexpectedWarning({\n        subpathValue,\n        subpathValueTrace,\n        packageFileUrl,\n      }),\n    )\n    return false\n  }\n\n  visitSubpathValue(packageExports, [\"exports\"])\n\n  return exportsSubpaths\n}\n\nconst exportsObjectFromExportsArray = (exportsArray) => {\n  const exportsObject = {}\n\n  exportsArray.forEach((exportValue) => {\n    if (typeof exportValue === \"object\") {\n      Object.assign(exportsObject, exportValue)\n      return\n    }\n    if (typeof exportValue === \"string\") {\n      exportsObject.default = exportValue\n    }\n  })\n\n  return exportsObject\n}\n\nconst specifierToSource = (specifier, packageName) => {\n  if (specifier === \".\") {\n    return packageName\n  }\n\n  if (specifier[0] === \"/\") {\n    return specifier\n  }\n\n  if (specifier.startsWith(\"./\")) {\n    return `${packageName}${specifier.slice(1)}`\n  }\n\n  return `${packageName}/${specifier}`\n}\n\nconst addressToDestination = (address, packageDirectoryRelativeUrl) => {\n  if (address[0] === \"/\") {\n    return address\n  }\n\n  if (address.startsWith(\"./\")) {\n    return `./${packageDirectoryRelativeUrl}${address.slice(2)}`\n  }\n\n  return `./${packageDirectoryRelativeUrl}${address}`\n}\n\nconst createSubpathIsUnexpectedWarning = ({ subpathValue, subpathValueTrace, packageFileUrl }) => {\n  return {\n    code: \"EXPORTS_SUBPATH_UNEXPECTED\",\n    message: `unexpected subpath in package.json exports: value must be an object or a string.\n--- value ---\n${subpathValue}\n--- value at ---\n${subpathValueTrace.join(\".\")}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n\nconst createSubpathKeysAreMixedWarning = ({ subpathValue, subpathValueTrace, packageFileUrl }) => {\n  return {\n    code: \"EXPORTS_SUBPATH_MIXED_KEYS\",\n    message: `unexpected subpath keys in package.json exports: cannot mix relative and conditional keys.\n--- value ---\n${JSON.stringify(subpathValue, null, \"  \")}\n--- value at ---\n${subpathValueTrace.join(\".\")}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n\nconst createSubpathValueMustBeRelativeWarning = ({ value, valueTrace, packageFileUrl }) => {\n  return {\n    code: \"EXPORTS_SUBPATH_VALUE_MUST_BE_RELATIVE\",\n    message: `unexpected subpath value in package.json exports: value must be a relative to the package.\n--- value ---\n${value}\n--- value at ---\n${valueTrace.join(\".\")}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}`,\n  }\n}\n",
    "export const applyPackageManualOverride = (packageObject, packagesManualOverrides) => {\n  const { name, version } = packageObject\n  const overrideKey = Object.keys(packagesManualOverrides).find((overrideKeyCandidate) => {\n    if (name === overrideKeyCandidate) {\n      return true\n    }\n    if (`${name}@${version}` === overrideKeyCandidate) {\n      return true\n    }\n    return false\n  })\n  if (overrideKey) {\n    return composeObject(packageObject, packagesManualOverrides[overrideKey])\n  }\n  return packageObject\n}\n\nconst composeObject = (leftObject, rightObject) => {\n  const composedObject = {\n    ...leftObject,\n  }\n  Object.keys(rightObject).forEach((key) => {\n    const rightValue = rightObject[key]\n\n    if (rightValue === null || typeof rightValue !== \"object\" || key in leftObject === false) {\n      composedObject[key] = rightValue\n    } else {\n      const leftValue = leftObject[key]\n      if (leftValue === null || typeof leftValue !== \"object\") {\n        composedObject[key] = rightValue\n      } else {\n        composedObject[key] = composeObject(leftValue, rightValue)\n      }\n    }\n  })\n  return composedObject\n}\n",
    "import { readFile, urlToFileSystemPath } from \"@jsenv/util\"\nimport { applyPackageManualOverride } from \"./applyPackageManualOverride.js\"\n\nexport const PACKAGE_NOT_FOUND = {}\nexport const PACKAGE_WITH_SYNTAX_ERROR = {}\n\nexport const readPackageFile = async (packageFileUrl, packagesManualOverrides) => {\n  try {\n    const packageObject = await readFile(packageFileUrl, { as: \"json\" })\n    return applyPackageManualOverride(packageObject, packagesManualOverrides)\n  } catch (e) {\n    if (e.code === \"ENOENT\") {\n      return PACKAGE_NOT_FOUND\n    }\n\n    if (e.name === \"SyntaxError\") {\n      console.error(formatPackageSyntaxErrorLog({ syntaxError: e, packageFileUrl }))\n      return PACKAGE_WITH_SYNTAX_ERROR\n    }\n\n    throw e\n  }\n}\n\nconst formatPackageSyntaxErrorLog = ({ syntaxError, packageFileUrl }) => {\n  return `\nerror while parsing package.json.\n--- syntax error message ---\n${syntaxError.message}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}\n`\n}\n",
    "import { firstOperationMatching } from \"@jsenv/cancellation\"\nimport { urlToRelativeUrl, resolveUrl } from \"@jsenv/util\"\nimport { memoizeAsyncFunctionByUrl } from \"../memoizeAsyncFunction.js\"\nimport { readPackageFile, PACKAGE_NOT_FOUND, PACKAGE_WITH_SYNTAX_ERROR } from \"./readPackageFile.js\"\n\nexport const createFindNodeModulePackage = (packagesManualOverrides) => {\n  const readPackageFileMemoized = memoizeAsyncFunctionByUrl((packageFileUrl) => {\n    return readPackageFile(packageFileUrl, packagesManualOverrides)\n  })\n\n  return ({ projectDirectoryUrl, packageFileUrl, dependencyName }) => {\n    const nodeModuleCandidates = getNodeModuleCandidates(packageFileUrl, projectDirectoryUrl)\n\n    return firstOperationMatching({\n      array: nodeModuleCandidates,\n      start: async (nodeModuleCandidate) => {\n        const packageFileUrlCandidate = `${projectDirectoryUrl}${nodeModuleCandidate}${dependencyName}/package.json`\n        const packageObjectCandidate = await readPackageFileMemoized(packageFileUrlCandidate)\n        return {\n          packageFileUrl: packageFileUrlCandidate,\n          packageJsonObject: packageObjectCandidate,\n          syntaxError: packageObjectCandidate === PACKAGE_WITH_SYNTAX_ERROR,\n        }\n      },\n      predicate: ({ packageJsonObject }) => {\n        return packageJsonObject !== PACKAGE_NOT_FOUND\n      },\n    })\n  }\n}\n\nconst getNodeModuleCandidates = (fileUrl, projectDirectoryUrl) => {\n  const fileDirectoryUrl = resolveUrl(\"./\", fileUrl)\n\n  if (fileDirectoryUrl === projectDirectoryUrl) {\n    return [`node_modules/`]\n  }\n\n  const fileDirectoryRelativeUrl = urlToRelativeUrl(fileDirectoryUrl, projectDirectoryUrl)\n  const candidates = []\n  const relativeNodeModuleDirectoryArray = fileDirectoryRelativeUrl.split(\"node_modules/\")\n  // remove the first empty string\n  relativeNodeModuleDirectoryArray.shift()\n\n  let i = relativeNodeModuleDirectoryArray.length\n  while (i--) {\n    candidates.push(\n      `node_modules/${relativeNodeModuleDirectoryArray\n        .slice(0, i + 1)\n        .join(\"node_modules/\")}node_modules/`,\n    )\n  }\n\n  return [...candidates, \"node_modules/\"]\n}\n",
    "import { createDetailedMessage } from \"@jsenv/logger\"\nimport { resolveUrl, urlToRelativeUrl, urlToFileSystemPath } from \"@jsenv/util\"\n\nimport { createPackageNameMustBeAStringWarning } from \"../warnings.js\"\n\nimport { optimizeImportMap } from \"../optimizeImportMap.js\"\nimport { resolvePackageMain } from \"./resolvePackageMain.js\"\nimport { visitPackageImportMap } from \"./visitPackageImportMap.js\"\nimport { visitPackageImports } from \"./visitPackageImports.js\"\nimport { visitPackageExports } from \"./visitPackageExports.js\"\nimport { createFindNodeModulePackage } from \"./node-module-resolution.js\"\n\nexport const getImportMapFromPackageFiles = async ({\n  // nothing is actually listening for this cancellationToken for now\n  // it's not very important but it would be better to register on it\n  // an stops what we are doing if asked to do so\n  // cancellationToken = createCancellationTokenForProcess(),\n  logger,\n  warn,\n  projectDirectoryUrl,\n  projectPackageFileUrl,\n  projectPackageObject,\n  projectPackageDevDependenciesIncluded = process.env.NODE_ENV !== \"production\",\n  packageConditions = [\"import\", \"browser\"],\n  packagesManualOverrides = {},\n  packageIncludedPredicate = () => true,\n}) => {\n  const findNodeModulePackage = createFindNodeModulePackage(packagesManualOverrides)\n\n  const imports = {}\n  const scopes = {}\n  const addMapping = ({ scope, from, to }) => {\n    if (scope) {\n      // when a package says './' maps to './'\n      // we must add something to say if we are already inside the package\n      // no need to ensure leading slash are scoped to the package\n      if (from === \"./\" && to === scope) {\n        addMapping({\n          scope,\n          from: scope,\n          to: scope,\n        })\n        const packageName = scope.slice(scope.lastIndexOf(\"node_modules/\") + `node_modules/`.length)\n        addMapping({\n          scope,\n          from: packageName,\n          to: scope,\n        })\n      }\n\n      scopes[scope] = {\n        ...(scopes[scope] || {}),\n        [from]: to,\n      }\n    } else {\n      // we could think it's useless to remap from with to\n      // however it can be used to ensure a weaker remapping\n      // does not win over this specific file or folder\n      if (from === to) {\n        /**\n         * however remapping '/' to '/' is truly useless\n         * moreover it would make wrapImportMap create something like\n         * {\n         *   imports: {\n         *     \"/\": \"/.dist/best/\"\n         *   }\n         * }\n         * that would append the wrapped folder twice\n         * */\n        if (from === \"/\") return\n      }\n      imports[from] = to\n    }\n  }\n\n  const seen = {}\n  const markPackageAsSeen = (packageFileUrl, importerPackageFileUrl) => {\n    if (packageFileUrl in seen) {\n      seen[packageFileUrl].push(importerPackageFileUrl)\n    } else {\n      seen[packageFileUrl] = [importerPackageFileUrl]\n    }\n  }\n  const packageIsSeen = (packageFileUrl, importerPackageFileUrl) => {\n    return packageFileUrl in seen && seen[packageFileUrl].includes(importerPackageFileUrl)\n  }\n\n  const visit = async ({\n    packageFileUrl,\n    packageName,\n    packageJsonObject,\n    importerPackageFileUrl,\n    importerPackageJsonObject,\n    includeDevDependencies,\n  }) => {\n    if (!packageIncludedPredicate({ packageName, packageFileUrl, packageJsonObject })) {\n      return\n    }\n\n    await visitDependencies({\n      packageFileUrl,\n      packageJsonObject,\n      includeDevDependencies,\n    })\n    await visitPackage({\n      packageFileUrl,\n      packageName,\n      packageJsonObject,\n      importerPackageFileUrl,\n      importerPackageJsonObject,\n    })\n  }\n\n  const visitPackage = async ({\n    packageFileUrl,\n    packageName,\n    packageJsonObject,\n    importerPackageFileUrl,\n  }) => {\n    const packageInfo = computePackageInfo({\n      packageFileUrl,\n      packageName,\n      importerPackageFileUrl,\n    })\n\n    const {\n      importerIsRoot,\n      importerRelativeUrl,\n      packageIsRoot,\n      packageDirectoryRelativeUrl,\n      // packageDirectoryUrl,\n      // packageDirectoryUrlExpected,\n    } = packageInfo\n\n    const addImportMapForPackage = (importMap) => {\n      if (packageIsRoot) {\n        const { imports = {}, scopes = {} } = importMap\n        Object.keys(imports).forEach((from) => {\n          addMapping({\n            from,\n            to: imports[from],\n          })\n        })\n        Object.keys(scopes).forEach((scope) => {\n          const scopeMappings = scopes[scope]\n          Object.keys(scopeMappings).forEach((key) => {\n            addMapping({\n              scope,\n              from: key,\n              to: scopeMappings[key],\n            })\n          })\n        })\n        return\n      }\n\n      const { imports = {}, scopes = {} } = importMap\n      const scope = `./${packageDirectoryRelativeUrl}`\n      Object.keys(imports).forEach((from) => {\n        const to = imports[from]\n        const toMoved = moveMappingValue(to, packageFileUrl, projectDirectoryUrl)\n        addMapping({\n          scope,\n          from,\n          to: toMoved,\n        })\n      })\n      Object.keys(scopes).forEach((scope) => {\n        const scopeMappings = scopes[scope]\n        const scopeMoved = moveMappingValue(scope, packageFileUrl, projectDirectoryUrl)\n        Object.keys(scopeMappings).forEach((key) => {\n          const to = scopeMappings[key]\n          const toMoved = moveMappingValue(to, packageFileUrl, projectDirectoryUrl)\n          addMapping({\n            scope: scopeMoved,\n            from: key,\n            to: toMoved,\n          })\n        })\n      })\n    }\n\n    const addMappingsForPackageAndImporter = (mappings) => {\n      if (packageIsRoot) {\n        Object.keys(mappings).forEach((from) => {\n          const to = mappings[from]\n          addMapping({\n            from,\n            to,\n          })\n        })\n        return\n      }\n\n      if (importerIsRoot) {\n        // own package mappings available to himself\n        Object.keys(mappings).forEach((from) => {\n          const to = mappings[from]\n          addMapping({\n            scope: `./${packageDirectoryRelativeUrl}`,\n            from,\n            to,\n          })\n          addMapping({ from, to })\n        })\n\n        // if importer is root no need to make package mappings available to the importer\n        // because they are already on top level mappings\n        return\n      }\n\n      Object.keys(mappings).forEach((from) => {\n        const to = mappings[from]\n        // own package exports available to himself\n        addMapping({\n          scope: `./${packageDirectoryRelativeUrl}`,\n          from,\n          to,\n        })\n        // now make package exports available to the importer\n        // here if the importer is himself we could do stuff\n        // we should even handle the case earlier to prevent top level remapping\n        addMapping({\n          scope: `./${importerRelativeUrl}`,\n          from,\n          to,\n        })\n      })\n    }\n\n    // https://nodejs.org/docs/latest-v15.x/api/packages.html#packages_name\n    addImportMapForPackage({\n      imports: {\n        [`${packageName}/`]: `./`,\n      },\n    })\n\n    const importsFromPackageField = await visitPackageImportMap({\n      warn,\n      packageFileUrl,\n      packageJsonObject,\n      projectDirectoryUrl,\n    })\n    addImportMapForPackage(importsFromPackageField)\n\n    if (\"imports\" in packageJsonObject) {\n      const mappingsFromPackageExports = {}\n      const packageImports = visitPackageImports({\n        warn,\n        packageFileUrl,\n        packageJsonObject,\n        packageName,\n        projectDirectoryUrl,\n        packageConditions,\n      })\n      Object.keys(packageImports).forEach((from) => {\n        const to = packageImports[from]\n        mappingsFromPackageExports[from] = to\n      })\n      addImportMapForPackage({\n        imports: mappingsFromPackageExports,\n      })\n    }\n\n    if (\"exports\" in packageJsonObject) {\n      const mappingsFromPackageExports = {}\n      const packageExports = visitPackageExports({\n        warn,\n        packageFileUrl,\n        packageJsonObject,\n        packageName,\n        projectDirectoryUrl,\n        packageConditions,\n      })\n      Object.keys(packageExports).forEach((from) => {\n        const to = packageExports[from]\n        if (from.indexOf(\"*\") === -1) {\n          mappingsFromPackageExports[from] = to\n          return\n        }\n\n        if (\n          from.endsWith(\"/*\") &&\n          to.endsWith(\"/*\") &&\n          // ensure ends with '*' AND there is only one '*' occurence\n          to.indexOf(\"*\") === to.length - 1\n        ) {\n          const fromWithouTrailingStar = from.slice(0, -1)\n          const toWithoutTrailingStar = to.slice(0, -1)\n          mappingsFromPackageExports[fromWithouTrailingStar] = toWithoutTrailingStar\n          return\n        }\n\n        logger.debug(\n          createExportsWildcardIgnoredWarning({\n            key: from,\n            value: to,\n            packageFileUrl,\n          }),\n        )\n      })\n      addMappingsForPackageAndImporter(mappingsFromPackageExports)\n    } else {\n      // no \"exports\" field means any file can be imported\n      // -> generated a mapping to allow this\n      const packageDirectoryRelativeUrl = urlToRelativeUrl(\n        resolveUrl(\"./\", packageFileUrl),\n        projectDirectoryUrl,\n      )\n      addMappingsForPackageAndImporter({\n        [`${packageName}/`]: `./${packageDirectoryRelativeUrl}`,\n      })\n\n      // visit \"main\" only if there is no \"exports\"\n      // https://nodejs.org/docs/latest-v16.x/api/packages.html#packages_main\n      await visitPackageMain({\n        packageFileUrl,\n        packageName,\n        packageJsonObject,\n        packageInfo,\n      })\n    }\n  }\n\n  const visitPackageMain = async ({\n    packageFileUrl,\n    packageName,\n    packageJsonObject,\n    packageInfo: {\n      importerIsRoot,\n      importerRelativeUrl,\n      packageDirectoryUrl,\n      packageDirectoryUrlExpected,\n    },\n  }) => {\n    const mainFileUrl = await resolvePackageMain({\n      warn,\n      packageConditions,\n      packageFileUrl,\n      packageJsonObject,\n    })\n\n    // it's possible to have no main\n    // like { main: \"\" } in package.json\n    // or a main that does not lead to an actual file\n    if (mainFileUrl === null) {\n      return\n    }\n\n    const mainFileRelativeUrl = urlToRelativeUrl(mainFileUrl, projectDirectoryUrl)\n    const from = packageName\n    const to = `./${mainFileRelativeUrl}`\n\n    if (importerIsRoot) {\n      addMapping({ from, to })\n    } else {\n      addMapping({\n        scope: `./${importerRelativeUrl}`,\n        from,\n        to,\n      })\n    }\n    if (packageDirectoryUrl !== packageDirectoryUrlExpected) {\n      addMapping({\n        scope: `./${importerRelativeUrl}`,\n        from,\n        to,\n      })\n    }\n  }\n\n  const visitDependencies = async ({\n    packageFileUrl,\n    packageJsonObject,\n    includeDevDependencies,\n  }) => {\n    const dependencyMap = packageDependenciesFromPackageObject(packageJsonObject, {\n      includeDevDependencies,\n    })\n\n    await Promise.all(\n      Object.keys(dependencyMap).map(async (dependencyName) => {\n        const dependencyInfo = dependencyMap[dependencyName]\n        await visitDependency({\n          packageFileUrl,\n          packageJsonObject,\n          dependencyName,\n          dependencyInfo,\n        })\n      }),\n    )\n  }\n\n  const visitDependency = async ({\n    packageFileUrl,\n    packageJsonObject,\n    dependencyName,\n    dependencyInfo,\n  }) => {\n    const dependencyData = await findDependency({\n      packageFileUrl,\n      dependencyName,\n    })\n    if (!dependencyData) {\n      const cannotFindPackageWarning = createCannotFindPackageWarning({\n        dependencyName,\n        dependencyInfo,\n        packageFileUrl,\n      })\n      if (dependencyInfo.isOptional) {\n        logger.debug(cannotFindPackageWarning.message)\n      } else {\n        warn(cannotFindPackageWarning)\n      }\n\n      return\n    }\n    if (dependencyData.syntaxError) {\n      return\n    }\n\n    const {\n      packageFileUrl: dependencyPackageFileUrl,\n      packageJsonObject: dependencyPackageJsonObject,\n    } = dependencyData\n\n    if (packageIsSeen(dependencyPackageFileUrl, packageFileUrl)) {\n      return\n    }\n    markPackageAsSeen(dependencyPackageFileUrl, packageFileUrl)\n    await visit({\n      packageFileUrl: dependencyPackageFileUrl,\n      packageName: dependencyName,\n      packageJsonObject: dependencyPackageJsonObject,\n      importerPackageFileUrl: packageFileUrl,\n      importerPackageJsonObject: packageJsonObject,\n    })\n  }\n\n  const computePackageInfo = ({ packageFileUrl, packageName, importerPackageFileUrl }) => {\n    const importerIsRoot = importerPackageFileUrl === projectPackageFileUrl\n\n    const importerPackageDirectoryUrl = resolveUrl(\"./\", importerPackageFileUrl)\n\n    const importerRelativeUrl = urlToRelativeUrl(importerPackageDirectoryUrl, projectDirectoryUrl)\n\n    const packageIsRoot = packageFileUrl === projectPackageFileUrl\n\n    const packageDirectoryUrl = resolveUrl(\"./\", packageFileUrl)\n\n    const packageDirectoryUrlExpected = `${importerPackageDirectoryUrl}node_modules/${packageName}/`\n\n    const packageDirectoryRelativeUrl = urlToRelativeUrl(packageDirectoryUrl, projectDirectoryUrl)\n\n    return {\n      importerIsRoot,\n      importerRelativeUrl,\n      packageIsRoot,\n      packageDirectoryUrl,\n      packageDirectoryUrlExpected,\n      packageDirectoryRelativeUrl,\n    }\n  }\n\n  const dependenciesCache = {}\n  const findDependency = ({ packageFileUrl, dependencyName }) => {\n    if (packageFileUrl in dependenciesCache === false) {\n      dependenciesCache[packageFileUrl] = {}\n    }\n    if (dependencyName in dependenciesCache[packageFileUrl]) {\n      return dependenciesCache[packageFileUrl][dependencyName]\n    }\n    const dependencyPromise = findNodeModulePackage({\n      projectDirectoryUrl,\n      packageFileUrl,\n      dependencyName,\n    })\n    dependenciesCache[packageFileUrl][dependencyName] = dependencyPromise\n    return dependencyPromise\n  }\n\n  const importerPackageFileUrl = projectPackageFileUrl\n  markPackageAsSeen(projectPackageFileUrl, importerPackageFileUrl)\n\n  const packageName = projectPackageObject.name\n  if (typeof packageName !== \"string\") {\n    warn(\n      createPackageNameMustBeAStringWarning({\n        packageName,\n        packageFileUrl: projectPackageFileUrl,\n      }),\n    )\n    return {}\n  }\n\n  await visit({\n    packageFileUrl: projectPackageFileUrl,\n    packageName: projectPackageObject.name,\n    packageJsonObject: projectPackageObject,\n    importerPackageFileUrl,\n    importerPackageJsonObject: null,\n    includeDevDependencies: projectPackageDevDependenciesIncluded,\n  })\n\n  return optimizeImportMap({ imports, scopes })\n}\n\nconst packageDependenciesFromPackageObject = (packageObject, { includeDevDependencies }) => {\n  const packageDependencies = {}\n\n  const { dependencies = {} } = packageObject\n  // https://npm.github.io/using-pkgs-docs/package-json/types/optionaldependencies.html\n  const { optionalDependencies = {} } = packageObject\n  Object.keys(dependencies).forEach((dependencyName) => {\n    packageDependencies[dependencyName] = {\n      type: \"dependency\",\n      isOptional: dependencyName in optionalDependencies,\n      versionPattern: dependencies[dependencyName],\n    }\n  })\n\n  const { peerDependencies = {} } = packageObject\n  const { peerDependenciesMeta = {} } = packageObject\n  Object.keys(peerDependencies).forEach((dependencyName) => {\n    packageDependencies[dependencyName] = {\n      type: \"peerDependency\",\n      versionPattern: peerDependencies[dependencyName],\n      isOptional:\n        dependencyName in peerDependenciesMeta && peerDependenciesMeta[dependencyName].optional,\n    }\n  })\n\n  if (includeDevDependencies) {\n    const { devDependencies = {} } = packageObject\n    Object.keys(devDependencies).forEach((dependencyName) => {\n      if (!packageDependencies.hasOwnProperty(dependencyName)) {\n        packageDependencies[dependencyName] = {\n          type: \"devDependency\",\n          versionPattern: devDependencies[dependencyName],\n        }\n      }\n    })\n  }\n\n  return packageDependencies\n}\n\nconst moveMappingValue = (address, from, to) => {\n  const url = resolveUrl(address, from)\n  const relativeUrl = urlToRelativeUrl(url, to)\n  if (relativeUrl.startsWith(\"../\")) {\n    return relativeUrl\n  }\n  if (relativeUrl.startsWith(\"./\")) {\n    return relativeUrl\n  }\n  if (/^[a-zA-Z]{2,}:/.test(relativeUrl)) {\n    // has sheme\n    return relativeUrl\n  }\n  return `./${relativeUrl}`\n}\n\nconst createExportsWildcardIgnoredWarning = ({ key, value, packageFileUrl }) => {\n  return {\n    code: \"EXPORTS_WILDCARD\",\n    message: `Ignoring export using \"*\" because it is not supported by importmap.\n--- key ---\n${key}\n--- value ---\n${value}\n--- package.json path ---\n${urlToFileSystemPath(packageFileUrl)}\n--- see also ---\nhttps://github.com/WICG/import-maps/issues/232`,\n  }\n}\n\nconst createCannotFindPackageWarning = ({ dependencyName, dependencyInfo, packageFileUrl }) => {\n  const dependencyIsOptional = dependencyInfo.isOptional\n  const dependencyType = dependencyInfo.type\n  const dependencyVersionPattern = dependencyInfo.versionPattern\n  return {\n    code: \"CANNOT_FIND_PACKAGE\",\n    message: createDetailedMessage(\n      dependencyIsOptional\n        ? `cannot find an optional ${dependencyType}.`\n        : `cannot find a ${dependencyType}.`,\n      {\n        [dependencyType]: `${dependencyName}@${dependencyVersionPattern}`,\n        \"required by\": urlToFileSystemPath(packageFileUrl),\n      },\n    ),\n  }\n}\n",
    "import { composeTwoImportMaps, sortImportMap } from \"@jsenv/import-map\"\nimport { createLogger, createDetailedMessage } from \"@jsenv/logger\"\nimport { assertAndNormalizeDirectoryUrl, resolveUrl, readFile } from \"@jsenv/util\"\n\nimport { getImportMapFromJsFiles } from \"./internal/from-js/getImportMapFromJsFiles.js\"\nimport { getImportMapFromPackageFiles } from \"./internal/from-package/getImportMapFromPackageFiles.js\"\n\nexport const getImportMapFromProjectFiles = async ({\n  logLevel,\n  projectDirectoryUrl,\n  runtime = \"browser\",\n  moduleFormat = \"esm\",\n  dev = false,\n  jsFilesParsing = true,\n  jsFilesParsingOptions = {},\n  initialImportMap = {},\n\n  projectPackageDevDependenciesIncluded = dev,\n  treeshakeMappings = !dev,\n\n  packageConditions = [],\n  packageConditionDevelopment = dev,\n  packageConditionFromModuleFormat = packageConditionsFromModuleFormat[moduleFormat],\n  packageConditionFromRuntime = packageConditionsFromRuntime[runtime],\n\n  magicExtensions = [\".js\", \".jsx\", \".ts\", \".tsx\", \".node\", \".json\"],\n  onWarn = (warning, warn) => {\n    warn(warning)\n  },\n  packagesManualOverrides,\n  ...rest\n}) => {\n  packageConditions = [\n    ...(packageConditionDevelopment ? [\"development\"] : [\"production\"]),\n    ...(packageConditionFromModuleFormat ? [packageConditionFromModuleFormat] : []),\n    ...(packageConditionFromRuntime ? [packageConditionFromRuntime] : []),\n    ...packageConditions,\n  ]\n\n  const logger = createLogger({ logLevel })\n  const warn = wrapWarnToWarnOnce((warning) => {\n    onWarn(warning, () => {\n      logger.warn(`\\n${warning.message}\\n`)\n    })\n  })\n\n  projectDirectoryUrl = assertAndNormalizeDirectoryUrl(projectDirectoryUrl)\n\n  const projectPackageFileUrl = resolveUrl(\"./package.json\", projectDirectoryUrl)\n  let projectPackageObject\n  try {\n    projectPackageObject = await readFile(projectPackageFileUrl, { as: \"json\" })\n  } catch (e) {\n    if (e.code === \"ENOENT\") {\n      warn({\n        code: \"PROJECT_PACKAGE_FILE_NOT_FOUND\",\n        message: createDetailedMessage(`Cannot find project package.json file.`, {\n          \"package.json url\": projectPackageFileUrl,\n        }),\n      })\n      return initialImportMap\n    }\n    throw e\n  }\n\n  // At this point, importmap is relative to the project directory url\n  let importMapFromPackageFiles = await getImportMapFromPackageFiles({\n    logger,\n    warn,\n    projectDirectoryUrl,\n    projectPackageFileUrl,\n    projectPackageObject,\n    packageConditions,\n    projectPackageDevDependenciesIncluded,\n    packagesManualOverrides,\n    ...rest,\n  })\n  importMapFromPackageFiles = sortImportMap(\n    composeTwoImportMaps(initialImportMap, importMapFromPackageFiles),\n  )\n  if (!jsFilesParsing) {\n    return importMapFromPackageFiles\n  }\n\n  let importMapFromJsFiles = await getImportMapFromJsFiles({\n    logger,\n    warn,\n    projectDirectoryUrl,\n    importMap: importMapFromPackageFiles,\n    magicExtensions,\n    runtime,\n    treeshakeMappings,\n    jsFilesParsingOptions,\n  })\n  importMapFromJsFiles = sortImportMap(importMapFromJsFiles)\n  return importMapFromJsFiles\n}\n\nconst wrapWarnToWarnOnce = (warn) => {\n  const warnings = []\n  return (warning) => {\n    const alreadyWarned = warnings.some((warningCandidate) => {\n      return JSON.stringify(warningCandidate) === JSON.stringify(warning)\n    })\n    if (alreadyWarned) {\n      return\n    }\n\n    if (warnings.length > 1000) {\n      warnings.shift()\n    }\n    warnings.push(warning)\n    warn(warning)\n  }\n}\n\nconst packageConditionsFromRuntime = {\n  browser: \"browser\",\n  node: \"node\",\n}\n\nconst packageConditionsFromModuleFormat = {\n  esm: \"import\",\n  cjs: \"require\",\n}\n",
    "import { assertAndNormalizeDirectoryUrl, resolveUrl, readFile } from \"@jsenv/util\"\nimport { moveImportMap, sortImportMap } from \"@jsenv/import-map\"\n\nexport const getImportMapFromFile = async ({ projectDirectoryUrl, importMapFileRelativeUrl }) => {\n  projectDirectoryUrl = assertAndNormalizeDirectoryUrl(projectDirectoryUrl)\n\n  const importmapFileUrl = resolveUrl(importMapFileRelativeUrl, projectDirectoryUrl)\n  const importmap = await readFile(importmapFileUrl, { as: \"json\" })\n\n  // ensure the importmap is now relative to the project directory url\n  // we do that because writeImportMapFile expect all importmap\n  // to be relative to the projectDirectoryUrl\n  const importmapFakeRootUrl = resolveUrl(\"whatever.importmap\", projectDirectoryUrl)\n  const importmapRelativeToProject = moveImportMap(\n    importmap,\n    importmapFileUrl,\n    importmapFakeRootUrl,\n  )\n\n  return sortImportMap(importmapRelativeToProject)\n}\n",
    "export const importMapToVsCodeConfigPaths = ({ imports = {} }) => {\n  const paths = {}\n\n  Object.keys(imports).forEach((importKey) => {\n    const importValue = imports[importKey]\n\n    let key\n    if (importKey.endsWith(\"/\")) {\n      key = `${importKey}*`\n    } else {\n      key = importKey\n    }\n\n    const importValueArray = typeof importValue === \"string\" ? [importValue] : importValue\n    const candidatesForPath = importValueArray.map((importValue) => {\n      if (importValue.endsWith(\"/\")) {\n        return `${importValue}*`\n      }\n      return importValue\n    })\n\n    if (key in paths) {\n      paths[key] = [...paths[key], ...candidatesForPath]\n    } else {\n      paths[key] = candidatesForPath\n    }\n  })\n\n  return paths\n}\n",
    "import {\n  resolveUrl,\n  urlToFileSystemPath,\n  assertAndNormalizeDirectoryUrl,\n  writeFile,\n  readFile,\n} from \"@jsenv/util\"\nimport { composeTwoImportMaps } from \"@jsenv/import-map\"\nimport { importMapToVsCodeConfigPaths } from \"./internal/importMapToVsCodeConfigPaths.js\"\n\nexport const writeImportMapFile = async (\n  importMapInputs = [],\n  {\n    projectDirectoryUrl,\n\n    importMapFile = true, // in case someone wants the importmap but not write it on filesystem\n    importMapFileRelativeUrl = \"./import-map.importmap\",\n    importMapFileLog = true,\n\n    jsConfigFile = false, // not yet documented, makes vscode aware of the import remapping\n    jsConfigFileLog = true,\n    jsConfigLeadingSlash = false,\n  },\n) => {\n  projectDirectoryUrl = assertAndNormalizeDirectoryUrl(projectDirectoryUrl)\n\n  if (importMapInputs.length === 0) {\n    console.warn(`importMapInputs is empty, the generated importmap will be empty`)\n  }\n\n  const importMaps = await Promise.all(importMapInputs)\n\n  const importMap = importMaps.reduce((previous, current) => {\n    return composeTwoImportMaps(previous, current)\n  }, {})\n\n  if (importMapFile) {\n    const importMapFileUrl = resolveUrl(importMapFileRelativeUrl, projectDirectoryUrl)\n    await writeFile(importMapFileUrl, JSON.stringify(importMap, null, \"  \"))\n    if (importMapFileLog) {\n      console.info(`-> ${urlToFileSystemPath(importMapFileUrl)}`)\n    }\n  }\n  if (jsConfigFile) {\n    const jsConfigFileUrl = resolveUrl(\"./jsconfig.json\", projectDirectoryUrl)\n    const jsConfigCurrent = (await readCurrentJsConfig(jsConfigFileUrl)) || { compilerOptions: {} }\n    const jsConfig = {\n      ...jsConfigDefault,\n      ...jsConfigCurrent,\n      compilerOptions: {\n        ...jsConfigDefault.compilerOptions,\n        ...jsConfigCurrent.compilerOptions,\n        paths: {\n          ...(jsConfigLeadingSlash ? { \"/*\": [\"./*\"] } : {}),\n          ...importMapToVsCodeConfigPaths(importMap),\n        },\n      },\n    }\n    await writeFile(jsConfigFileUrl, JSON.stringify(jsConfig, null, \"  \"))\n    if (jsConfigFileLog) {\n      console.info(`-> ${urlToFileSystemPath(jsConfigFileUrl)}`)\n    }\n  }\n\n  return importMap\n}\n\nconst readCurrentJsConfig = async (jsConfigFileUrl) => {\n  try {\n    const currentJSConfig = await readFile(jsConfigFileUrl, { as: \"json\" })\n    return currentJSConfig\n  } catch (e) {\n    return null\n  }\n}\n\nconst jsConfigDefault = {\n  compilerOptions: {\n    baseUrl: \".\",\n    paths: {},\n  },\n}\n"
  ],
  "names": [
    "memoizeAsyncFunctionByUrl",
    "fn",
    "cache",
    "memoizeAsyncFunction",
    "getMemoryEntryFromArguments",
    "url",
    "get",
    "set",
    "promise",
    "delete",
    "memoizeAsyncFunctionBySpecifierAndImporter",
    "importerCache",
    "specifier",
    "importer",
    "specifierCacheForImporter",
    "memoized",
    "args",
    "memoryEntry",
    "promiseFromMemory",
    "resolve",
    "reject",
    "createControllablePromise",
    "value",
    "error",
    "e",
    "isInMemory",
    "Boolean",
    "Promise",
    "res",
    "rej",
    "filenameContainsBackSlashes",
    "__filename",
    "indexOf",
    "replace",
    "require",
    "createRequire",
    "parser",
    "traverse",
    "parseSpecifiersFromFile",
    "fileUrl",
    "fileContent",
    "jsFilesParsingOptions",
    "undefined",
    "readFile",
    "as",
    "fileExtension",
    "urlToExtension",
    "jsx",
    "includes",
    "typescript",
    "flow",
    "ast",
    "parse",
    "sourceType",
    "sourceFilename",
    "urlToFileSystemPath",
    "plugins",
    "ranges",
    "specifiers",
    "addSpecifier",
    "path",
    "type",
    "node",
    "line",
    "loc",
    "start",
    "column",
    "default",
    "CallExpression",
    "callee",
    "arguments",
    "ExportAllDeclaration",
    "ExportNamedDeclaration",
    "source",
    "ImportDeclaration",
    "showSource",
    "message",
    "showSourceLocation",
    "red",
    "grey",
    "ansiResetSequence",
    "numberOfSurroundingLinesToShow",
    "lineMaxLength",
    "color",
    "markColor",
    "asideColor",
    "colorMark",
    "string",
    "colorAside",
    "mark",
    "aside",
    "lines",
    "split",
    "lineRange",
    "end",
    "moveLineRangeUp",
    "moveLineRangeDown",
    "lineRangeWithinLines",
    "linesToShow",
    "slice",
    "endLineNumber",
    "lineNumberMaxWidth",
    "String",
    "length",
    "columnRange",
    "Math",
    "floor",
    "ceil",
    "map",
    "lineSource",
    "index",
    "lineNumber",
    "isMainLine",
    "lineSourceTruncated",
    "applyColumnRange",
    "lineNumberWidth",
    "lineNumberRightSpacing",
    "repeat",
    "asideSource",
    "lineFormatted",
    "lineSourceUntilColumn",
    "spacing",
    "stringToSpaces",
    "mainLineFormatted",
    "join",
    "TypeError",
    "Error",
    "prefix",
    "suffix",
    "lastIndex",
    "startTruncated",
    "endTruncated",
    "from",
    "to",
    "result",
    "number",
    "resolveFile",
    "magicExtensions",
    "fileStat",
    "readFileSystemNodeStat",
    "nullIfNotFound",
    "isFile",
    "isDirectory",
    "indexFileSuffix",
    "endsWith",
    "indexFileUrl",
    "extensionLeadingToAFile",
    "findExtensionLeadingToFile",
    "extension",
    "urlDirectoryUrl",
    "resolveUrl",
    "urlFilename",
    "urlToFilename",
    "extensionLeadingToFile",
    "firstOperationMatching",
    "array",
    "extensionCandidate",
    "urlCandidate",
    "stats",
    "predicate",
    "createPackageNameMustBeAStringWarning",
    "packageName",
    "packageFileUrl",
    "code",
    "BARE_SPECIFIER_ERROR",
    "getImportMapFromJsFiles",
    "logger",
    "warn",
    "projectDirectoryUrl",
    "importMap",
    "runtime",
    "treeshakeMappings",
    "projectPackageFileUrl",
    "imports",
    "scopes",
    "addMapping",
    "scope",
    "topLevelMappingsUsed",
    "scopedMappingsUsed",
    "markMappingAsUsed",
    "push",
    "importMapNormalized",
    "normalizeImportMap",
    "trackAndResolveImport",
    "resolveImport",
    "defaultExtension",
    "onImportMapping",
    "urlToRelativeUrl",
    "startsWith",
    "createBareSpecifierError",
    "resolveFileSystemUrl",
    "importedBy",
    "isSpecifierForNodeCoreModule",
    "gotBareSpecifierError",
    "fileUrlOnFileSystem",
    "magicExtensionWithImporterExtension",
    "createFileNotFoundWarning",
    "needsAutoMapping",
    "packageDirectoryUrl",
    "packageDirectoryUrlFromUrl",
    "autoMapping",
    "closestPackageObject",
    "containsWildcard",
    "Object",
    "keys",
    "exports",
    "some",
    "key",
    "autoMappingWarning",
    "formatAutoMappingSpecifierWarning",
    "closestPackageDirectoryUrl",
    "debug",
    "visitFile",
    "dependencies",
    "all",
    "specifierInfo",
    "dependencyUrlOnFileSystem",
    "dependenciesToVisit",
    "filter",
    "dependency",
    "projectPackageObject",
    "projectPackageName",
    "name",
    "projectMainFileUrlOnFileSystem",
    "importsUsed",
    "forEach",
    "scopesUsed",
    "mappingsUsed",
    "scopedMappings",
    "sortImportMap",
    "composeTwoImportMaps",
    "relativeUrl",
    "lastNodeModulesDirectoryStartIndex",
    "lastIndexOf",
    "lastNodeModulesDirectoryEndIndex",
    "beforeNodeModulesLastDirectory",
    "afterLastNodeModulesDirectory",
    "remainingDirectories",
    "importerExtension",
    "magicExtensionsWithoutImporterExtension",
    "ext",
    "createDetailedMessage",
    "decideAutoMappingSuggestion",
    "importmap",
    "packageImportmapFileUrl",
    "mappingToImportmapString",
    "mappingToExportsFieldString",
    "JSON",
    "stringify",
    "scopeUrl",
    "toUrl",
    "optimizeImportMap",
    "scopesOptimized",
    "scopeMappings",
    "scopeMappingsOptimized",
    "mappingKey",
    "topLevelMappingValue",
    "mappingValue",
    "resolvePackageMain",
    "packageConditions",
    "packageJsonObject",
    "resolveMainFile",
    "packageMainFieldName",
    "packageMainFieldValue",
    "module",
    "browser",
    "main",
    "mainFileRelativeUrl",
    "mainFileUrlFirstCandidate",
    "createPackageMainFileMustBeRelativeWarning",
    "mainFileUrl",
    "createPackageMainFileNotFoundWarning",
    "importedIn",
    "visitPackageImportMap",
    "packageImportmap",
    "importmapFileUrl",
    "moveImportMap",
    "createPackageImportMapNotFoundWarning",
    "createPackageImportMapUnexpectedWarning",
    "specifierIsRelative",
    "test",
    "visitPackageImports",
    "packageImports",
    "importsSubpaths",
    "onImportsSubpath",
    "trace",
    "createSubpathValueMustBeRelativeWarning",
    "valueTrace",
    "keyNormalized",
    "valueNormalized",
    "conditions",
    "visitSubpathValue",
    "subpathValue",
    "subpathValueTrace",
    "handleString",
    "handleObject",
    "handleRemaining",
    "firstBareKey",
    "reverse",
    "find",
    "followConditionBranch",
    "conditionTrace",
    "bareKeys",
    "conditionalKeys",
    "availableKey",
    "createSubpathKeysAreMixedWarning",
    "leadsToSomething",
    "keyCandidate",
    "valueCandidate",
    "createSubpathIsUnexpectedWarning",
    "visitPackageExports",
    "packageExports",
    "exportsSubpaths",
    "packageDirectoryRelativeUrl",
    "onExportsSubpath",
    "specifierToSource",
    "addressToDestination",
    "handleFalse",
    "firstRelativeKey",
    "relativeKeys",
    "Array",
    "isArray",
    "exportsObjectFromExportsArray",
    "exportsArray",
    "exportsObject",
    "exportValue",
    "assign",
    "address",
    "applyPackageManualOverride",
    "packageObject",
    "packagesManualOverrides",
    "version",
    "overrideKey",
    "overrideKeyCandidate",
    "composeObject",
    "leftObject",
    "rightObject",
    "composedObject",
    "rightValue",
    "leftValue",
    "PACKAGE_NOT_FOUND",
    "PACKAGE_WITH_SYNTAX_ERROR",
    "readPackageFile",
    "console",
    "formatPackageSyntaxErrorLog",
    "syntaxError",
    "createFindNodeModulePackage",
    "readPackageFileMemoized",
    "dependencyName",
    "nodeModuleCandidates",
    "getNodeModuleCandidates",
    "nodeModuleCandidate",
    "packageFileUrlCandidate",
    "packageObjectCandidate",
    "fileDirectoryUrl",
    "fileDirectoryRelativeUrl",
    "candidates",
    "relativeNodeModuleDirectoryArray",
    "shift",
    "i",
    "getImportMapFromPackageFiles",
    "projectPackageDevDependenciesIncluded",
    "process",
    "env",
    "NODE_ENV",
    "packageIncludedPredicate",
    "findNodeModulePackage",
    "seen",
    "markPackageAsSeen",
    "importerPackageFileUrl",
    "packageIsSeen",
    "visit",
    "importerPackageJsonObject",
    "includeDevDependencies",
    "visitDependencies",
    "visitPackage",
    "packageInfo",
    "computePackageInfo",
    "importerIsRoot",
    "importerRelativeUrl",
    "packageIsRoot",
    "addImportMapForPackage",
    "toMoved",
    "moveMappingValue",
    "scopeMoved",
    "addMappingsForPackageAndImporter",
    "mappings",
    "importsFromPackageField",
    "mappingsFromPackageExports",
    "fromWithouTrailingStar",
    "toWithoutTrailingStar",
    "createExportsWildcardIgnoredWarning",
    "visitPackageMain",
    "packageDirectoryUrlExpected",
    "dependencyMap",
    "packageDependenciesFromPackageObject",
    "dependencyInfo",
    "visitDependency",
    "dependencyData",
    "findDependency",
    "cannotFindPackageWarning",
    "createCannotFindPackageWarning",
    "isOptional",
    "dependencyPackageFileUrl",
    "dependencyPackageJsonObject",
    "importerPackageDirectoryUrl",
    "dependenciesCache",
    "dependencyPromise",
    "packageDependencies",
    "optionalDependencies",
    "versionPattern",
    "peerDependencies",
    "peerDependenciesMeta",
    "optional",
    "devDependencies",
    "hasOwnProperty",
    "dependencyIsOptional",
    "dependencyType",
    "dependencyVersionPattern",
    "getImportMapFromProjectFiles",
    "logLevel",
    "moduleFormat",
    "dev",
    "jsFilesParsing",
    "initialImportMap",
    "packageConditionDevelopment",
    "packageConditionFromModuleFormat",
    "packageConditionsFromModuleFormat",
    "packageConditionFromRuntime",
    "packageConditionsFromRuntime",
    "onWarn",
    "warning",
    "rest",
    "createLogger",
    "wrapWarnToWarnOnce",
    "assertAndNormalizeDirectoryUrl",
    "importMapFromPackageFiles",
    "importMapFromJsFiles",
    "warnings",
    "alreadyWarned",
    "warningCandidate",
    "esm",
    "cjs",
    "getImportMapFromFile",
    "importMapFileRelativeUrl",
    "importmapFakeRootUrl",
    "importmapRelativeToProject",
    "importMapToVsCodeConfigPaths",
    "paths",
    "importKey",
    "importValue",
    "importValueArray",
    "candidatesForPath",
    "writeImportMapFile",
    "importMapInputs",
    "importMapFile",
    "importMapFileLog",
    "jsConfigFile",
    "jsConfigFileLog",
    "jsConfigLeadingSlash",
    "importMaps",
    "reduce",
    "previous",
    "current",
    "importMapFileUrl",
    "writeFile",
    "info",
    "jsConfigFileUrl",
    "jsConfigCurrent",
    "readCurrentJsConfig",
    "compilerOptions",
    "jsConfig",
    "jsConfigDefault",
    "currentJSConfig",
    "baseUrl"
  ],
  "mappings": "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"
}