{
  "version": 3,
  "file": "jsenv_importmap.cjs",
  "sources": [
    "../../src/internal/assertImportMap.js",
    "../../src/internal/hasScheme.js",
    "../../src/internal/urlToScheme.js",
    "../../src/internal/urlToPathname.js",
    "../../src/internal/urlToOrigin.js",
    "../../src/internal/pathnameToParentPathname.js",
    "../../src/resolveUrl.js",
    "../../src/internal/tryUrlResolution.js",
    "../../src/resolveSpecifier.js",
    "../../src/applyImportMap.js",
    "../../src/composeTwoImportMaps.js",
    "../../src/internal/getCommonPathname.js",
    "../../src/internal/urlToRelativeUrl.js",
    "../../src/moveImportMap.js",
    "../../src/sortImportMap.js",
    "../../src/normalizeImportMap.js",
    "../../src/internal/pathnameToExtension.js",
    "../../src/resolveImport.js"
  ],
  "sourcesContent": [
    "export const assertImportMap = (value) => {\n  if (value === null) {\n    throw new TypeError(`an importMap must be an object, got null`)\n  }\n\n  const type = typeof value\n  if (type !== \"object\") {\n    throw new TypeError(`an importMap must be an object, received ${value}`)\n  }\n\n  if (Array.isArray(value)) {\n    throw new TypeError(`an importMap must be an object, received array ${value}`)\n  }\n}\n",
    "export const hasScheme = (string) => {\n  return /^[a-zA-Z]{2,}:/.test(string)\n}\n",
    "export const urlToScheme = (urlString) => {\n  const colonIndex = urlString.indexOf(\":\")\n  if (colonIndex === -1) return \"\"\n  return urlString.slice(0, colonIndex)\n}\n",
    "import { urlToScheme } from \"./urlToScheme.js\"\n\nexport const urlToPathname = (urlString) => {\n  return ressourceToPathname(urlToRessource(urlString))\n}\n\nconst urlToRessource = (urlString) => {\n  const scheme = urlToScheme(urlString)\n\n  if (scheme === \"file\") {\n    return urlString.slice(\"file://\".length)\n  }\n\n  if (scheme === \"https\" || scheme === \"http\") {\n    // remove origin\n    const afterProtocol = urlString.slice(scheme.length + \"://\".length)\n    const pathnameSlashIndex = afterProtocol.indexOf(\"/\", \"://\".length)\n    return afterProtocol.slice(pathnameSlashIndex)\n  }\n\n  return urlString.slice(scheme.length + 1)\n}\n\nconst ressourceToPathname = (ressource) => {\n  const searchSeparatorIndex = ressource.indexOf(\"?\")\n  return searchSeparatorIndex === -1 ? ressource : ressource.slice(0, searchSeparatorIndex)\n}\n",
    "import { urlToScheme } from \"./urlToScheme.js\"\n\nexport const urlToOrigin = (urlString) => {\n  const scheme = urlToScheme(urlString)\n\n  if (scheme === \"file\") {\n    return \"file://\"\n  }\n\n  if (scheme === \"http\" || scheme === \"https\") {\n    const secondProtocolSlashIndex = scheme.length + \"://\".length\n    const pathnameSlashIndex = urlString.indexOf(\"/\", secondProtocolSlashIndex)\n\n    if (pathnameSlashIndex === -1) return urlString\n    return urlString.slice(0, pathnameSlashIndex)\n  }\n\n  return urlString.slice(0, scheme.length + 1)\n}\n",
    "export const pathnameToParentPathname = (pathname) => {\n  const slashLastIndex = pathname.lastIndexOf(\"/\")\n  if (slashLastIndex === -1) {\n    return \"/\"\n  }\n\n  return pathname.slice(0, slashLastIndex + 1)\n}\n",
    "// could be useful: https://url.spec.whatwg.org/#url-miscellaneous\n\nimport { urlToScheme } from \"./internal/urlToScheme.js\"\nimport { urlToPathname } from \"./internal/urlToPathname.js\"\nimport { urlToOrigin } from \"./internal/urlToOrigin.js\"\nimport { pathnameToParentPathname } from \"./internal/pathnameToParentPathname.js\"\nimport { hasScheme } from \"./internal/hasScheme.js\"\n\nexport const resolveUrl = (specifier, baseUrl) => {\n  if (baseUrl) {\n    if (typeof baseUrl !== \"string\") {\n      throw new TypeError(writeBaseUrlMustBeAString({ baseUrl, specifier }))\n    }\n    if (!hasScheme(baseUrl)) {\n      throw new Error(writeBaseUrlMustBeAbsolute({ baseUrl, specifier }))\n    }\n  }\n\n  if (hasScheme(specifier)) {\n    return specifier\n  }\n\n  if (!baseUrl) {\n    throw new Error(writeBaseUrlRequired({ baseUrl, specifier }))\n  }\n\n  // scheme relative\n  if (specifier.slice(0, 2) === \"//\") {\n    return `${urlToScheme(baseUrl)}:${specifier}`\n  }\n\n  // origin relative\n  if (specifier[0] === \"/\") {\n    return `${urlToOrigin(baseUrl)}${specifier}`\n  }\n\n  const baseOrigin = urlToOrigin(baseUrl)\n  const basePathname = urlToPathname(baseUrl)\n\n  if (specifier === \".\") {\n    const baseDirectoryPathname = pathnameToParentPathname(basePathname)\n    return `${baseOrigin}${baseDirectoryPathname}`\n  }\n\n  // pathname relative inside\n  if (specifier.slice(0, 2) === \"./\") {\n    const baseDirectoryPathname = pathnameToParentPathname(basePathname)\n    return `${baseOrigin}${baseDirectoryPathname}${specifier.slice(2)}`\n  }\n\n  // pathname relative outside\n  if (specifier.slice(0, 3) === \"../\") {\n    let unresolvedPathname = specifier\n    const importerFolders = basePathname.split(\"/\")\n    importerFolders.pop()\n\n    while (unresolvedPathname.slice(0, 3) === \"../\") {\n      unresolvedPathname = unresolvedPathname.slice(3)\n      // when there is no folder left to resolved\n      // we just ignore '../'\n      if (importerFolders.length) {\n        importerFolders.pop()\n      }\n    }\n\n    const resolvedPathname = `${importerFolders.join(\"/\")}/${unresolvedPathname}`\n    return `${baseOrigin}${resolvedPathname}`\n  }\n\n  // bare\n  if (basePathname === \"\") {\n    return `${baseOrigin}/${specifier}`\n  }\n  if (basePathname[basePathname.length] === \"/\") {\n    return `${baseOrigin}${basePathname}${specifier}`\n  }\n  return `${baseOrigin}${pathnameToParentPathname(basePathname)}${specifier}`\n}\n\nconst writeBaseUrlMustBeAString = ({ baseUrl, specifier }) => `baseUrl must be a string.\n--- base url ---\n${baseUrl}\n--- specifier ---\n${specifier}`\n\nconst writeBaseUrlMustBeAbsolute = ({ baseUrl, specifier }) => `baseUrl must be absolute.\n--- base url ---\n${baseUrl}\n--- specifier ---\n${specifier}`\n\nconst writeBaseUrlRequired = ({\n  baseUrl,\n  specifier,\n}) => `baseUrl required to resolve relative specifier.\n--- base url ---\n${baseUrl}\n--- specifier ---\n${specifier}`\n",
    "import { hasScheme } from \"./hasScheme.js\"\nimport { resolveUrl } from \"../resolveUrl.js\"\n\nexport const tryUrlResolution = (string, url) => {\n  const result = resolveUrl(string, url)\n  return hasScheme(result) ? result : null\n}\n",
    "import { hasScheme } from \"./internal/hasScheme.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\n\nexport const resolveSpecifier = (specifier, importer) => {\n  if (\n    specifier === \".\" ||\n    specifier[0] === \"/\" ||\n    specifier.startsWith(\"./\") ||\n    specifier.startsWith(\"../\")\n  ) {\n    return resolveUrl(specifier, importer)\n  }\n\n  if (hasScheme(specifier)) {\n    return specifier\n  }\n\n  return null\n}\n",
    "import { createDetailedMessage } from \"@jsenv/logger\"\nimport { assertImportMap } from \"./internal/assertImportMap.js\"\nimport { hasScheme } from \"./internal/hasScheme.js\"\nimport { tryUrlResolution } from \"./internal/tryUrlResolution.js\"\nimport { resolveSpecifier } from \"./resolveSpecifier.js\"\n\nexport const applyImportMap = ({\n  importMap,\n  specifier,\n  importer,\n  createBareSpecifierError = ({ specifier, importer }) => {\n    return new Error(createDetailedMessage(`Unmapped bare specifier.`, { specifier, importer }))\n  },\n  onImportMapping = () => {},\n}) => {\n  assertImportMap(importMap)\n  if (typeof specifier !== \"string\") {\n    throw new TypeError(\n      createDetailedMessage(\"specifier must be a string.\", {\n        specifier,\n        importer,\n      }),\n    )\n  }\n  if (importer) {\n    if (typeof importer !== \"string\") {\n      throw new TypeError(\n        createDetailedMessage(\"importer must be a string.\", {\n          importer,\n          specifier,\n        }),\n      )\n    }\n    if (!hasScheme(importer)) {\n      throw new Error(\n        createDetailedMessage(`importer must be an absolute url.`, {\n          importer,\n          specifier,\n        }),\n      )\n    }\n  }\n\n  const specifierUrl = resolveSpecifier(specifier, importer)\n  const specifierNormalized = specifierUrl || specifier\n\n  const { scopes } = importMap\n  if (scopes && importer) {\n    const scopeSpecifierMatching = Object.keys(scopes).find((scopeSpecifier) => {\n      return scopeSpecifier === importer || specifierIsPrefixOf(scopeSpecifier, importer)\n    })\n    if (scopeSpecifierMatching) {\n      const scopeMappings = scopes[scopeSpecifierMatching]\n      const mappingFromScopes = applyMappings(\n        scopeMappings,\n        specifierNormalized,\n        scopeSpecifierMatching,\n        onImportMapping,\n      )\n      if (mappingFromScopes !== null) {\n        return mappingFromScopes\n      }\n    }\n  }\n\n  const { imports } = importMap\n  if (imports) {\n    const mappingFromImports = applyMappings(\n      imports,\n      specifierNormalized,\n      undefined,\n      onImportMapping,\n    )\n    if (mappingFromImports !== null) {\n      return mappingFromImports\n    }\n  }\n\n  if (specifierUrl) {\n    return specifierUrl\n  }\n\n  throw createBareSpecifierError({ specifier, importer })\n}\n\nconst applyMappings = (mappings, specifierNormalized, scope, onImportMapping) => {\n  const specifierCandidates = Object.keys(mappings)\n\n  let i = 0\n  while (i < specifierCandidates.length) {\n    const specifierCandidate = specifierCandidates[i]\n    i++\n    if (specifierCandidate === specifierNormalized) {\n      const address = mappings[specifierCandidate]\n      onImportMapping({\n        scope,\n        from: specifierCandidate,\n        to: address,\n        before: specifierNormalized,\n        after: address,\n      })\n      return address\n    }\n    if (specifierIsPrefixOf(specifierCandidate, specifierNormalized)) {\n      const address = mappings[specifierCandidate]\n      const afterSpecifier = specifierNormalized.slice(specifierCandidate.length)\n      const addressFinal = tryUrlResolution(afterSpecifier, address)\n      onImportMapping({\n        scope,\n        from: specifierCandidate,\n        to: address,\n        before: specifierNormalized,\n        after: addressFinal,\n      })\n      return addressFinal\n    }\n  }\n\n  return null\n}\n\nconst specifierIsPrefixOf = (specifierHref, href) => {\n  return specifierHref[specifierHref.length - 1] === \"/\" && href.startsWith(specifierHref)\n}\n",
    "// https://github.com/systemjs/systemjs/blob/89391f92dfeac33919b0223bbf834a1f4eea5750/src/common.js#L136\nimport { assertImportMap } from \"./internal/assertImportMap.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\n\nexport const composeTwoImportMaps = (leftImportMap, rightImportMap) => {\n  assertImportMap(leftImportMap)\n  assertImportMap(rightImportMap)\n\n  const importMap = {}\n\n  const leftImports = leftImportMap.imports\n  const rightImports = rightImportMap.imports\n  const leftHasImports = Boolean(leftImports)\n  const rightHasImports = Boolean(rightImports)\n  if (leftHasImports && rightHasImports) {\n    importMap.imports = composeTwoMappings(leftImports, rightImports)\n  } else if (leftHasImports) {\n    importMap.imports = { ...leftImports }\n  } else if (rightHasImports) {\n    importMap.imports = { ...rightImports }\n  }\n\n  const leftScopes = leftImportMap.scopes\n  const rightScopes = rightImportMap.scopes\n  const leftHasScopes = Boolean(leftScopes)\n  const rightHasScopes = Boolean(rightScopes)\n  if (leftHasScopes && rightHasScopes) {\n    importMap.scopes = composeTwoScopes(leftScopes, rightScopes, importMap.imports || {})\n  } else if (leftHasScopes) {\n    importMap.scopes = { ...leftScopes }\n  } else if (rightHasScopes) {\n    importMap.scopes = { ...rightScopes }\n  }\n\n  return importMap\n}\n\nconst composeTwoMappings = (leftMappings, rightMappings) => {\n  const mappings = {}\n\n  Object.keys(leftMappings).forEach((leftSpecifier) => {\n    if (objectHasKey(rightMappings, leftSpecifier)) {\n      // will be overidden\n      return\n    }\n    const leftAddress = leftMappings[leftSpecifier]\n    const rightSpecifier = Object.keys(rightMappings).find((rightSpecifier) => {\n      return compareAddressAndSpecifier(leftAddress, rightSpecifier)\n    })\n    mappings[leftSpecifier] = rightSpecifier ? rightMappings[rightSpecifier] : leftAddress\n  })\n\n  Object.keys(rightMappings).forEach((rightSpecifier) => {\n    mappings[rightSpecifier] = rightMappings[rightSpecifier]\n  })\n\n  return mappings\n}\n\nconst objectHasKey = (object, key) => Object.prototype.hasOwnProperty.call(object, key)\n\nconst compareAddressAndSpecifier = (address, specifier) => {\n  const addressUrl = resolveUrl(address, \"file:///\")\n  const specifierUrl = resolveUrl(specifier, \"file:///\")\n  return addressUrl === specifierUrl\n}\n\nconst composeTwoScopes = (leftScopes, rightScopes, imports) => {\n  const scopes = {}\n\n  Object.keys(leftScopes).forEach((leftScopeKey) => {\n    if (objectHasKey(rightScopes, leftScopeKey)) {\n      // will be merged\n      scopes[leftScopeKey] = leftScopes[leftScopeKey]\n      return\n    }\n    const topLevelSpecifier = Object.keys(imports).find((topLevelSpecifierCandidate) => {\n      return compareAddressAndSpecifier(leftScopeKey, topLevelSpecifierCandidate)\n    })\n    if (topLevelSpecifier) {\n      scopes[imports[topLevelSpecifier]] = leftScopes[leftScopeKey]\n    } else {\n      scopes[leftScopeKey] = leftScopes[leftScopeKey]\n    }\n  })\n\n  Object.keys(rightScopes).forEach((rightScopeKey) => {\n    if (objectHasKey(scopes, rightScopeKey)) {\n      scopes[rightScopeKey] = composeTwoMappings(scopes[rightScopeKey], rightScopes[rightScopeKey])\n    } else {\n      scopes[rightScopeKey] = {\n        ...rightScopes[rightScopeKey],\n      }\n    }\n  })\n\n  return scopes\n}\n",
    "export const getCommonPathname = (pathname, otherPathname) => {\n  const firstDifferentCharacterIndex = findFirstDifferentCharacterIndex(pathname, otherPathname)\n\n  // pathname and otherpathname are exactly the same\n  if (firstDifferentCharacterIndex === -1) {\n    return pathname\n  }\n\n  const commonString = pathname.slice(0, firstDifferentCharacterIndex + 1)\n\n  // the first different char is at firstDifferentCharacterIndex\n  if (pathname.charAt(firstDifferentCharacterIndex) === \"/\") {\n    return commonString\n  }\n\n  if (otherPathname.charAt(firstDifferentCharacterIndex) === \"/\") {\n    return commonString\n  }\n\n  const firstDifferentSlashIndex = commonString.lastIndexOf(\"/\")\n  return pathname.slice(0, firstDifferentSlashIndex + 1)\n}\n\nconst findFirstDifferentCharacterIndex = (string, otherString) => {\n  const maxCommonLength = Math.min(string.length, otherString.length)\n  let i = 0\n  while (i < maxCommonLength) {\n    const char = string.charAt(i)\n    const otherChar = otherString.charAt(i)\n    if (char !== otherChar) {\n      return i\n    }\n    i++\n  }\n  if (string.length === otherString.length) {\n    return -1\n  }\n  // they differ at maxCommonLength\n  return maxCommonLength\n}\n",
    "import { getCommonPathname } from \"./getCommonPathname.js\"\nimport { pathnameToParentPathname } from \"./pathnameToParentPathname.js\"\n\nexport const urlToRelativeUrl = (urlArg, baseUrlArg) => {\n  const url = new URL(urlArg)\n  const baseUrl = new URL(baseUrlArg)\n\n  if (url.protocol !== baseUrl.protocol) {\n    return urlArg\n  }\n\n  if (url.username !== baseUrl.username || url.password !== baseUrl.password) {\n    return urlArg.slice(url.protocol.length)\n  }\n\n  if (url.host !== baseUrl.host) {\n    return urlArg.slice(url.protocol.length)\n  }\n\n  const { pathname, hash, search } = url\n  if (pathname === \"/\") {\n    return baseUrl.pathname.slice(1)\n  }\n\n  const { pathname: basePathname } = baseUrl\n\n  const commonPathname = getCommonPathname(pathname, basePathname)\n  if (!commonPathname) {\n    return urlArg\n  }\n\n  const specificPathname = pathname.slice(commonPathname.length)\n  const baseSpecificPathname = basePathname.slice(commonPathname.length)\n  if (baseSpecificPathname.includes(\"/\")) {\n    const baseSpecificParentPathname = pathnameToParentPathname(baseSpecificPathname)\n    const relativeDirectoriesNotation = baseSpecificParentPathname.replace(/.*?\\//g, \"../\")\n    return `${relativeDirectoriesNotation}${specificPathname}${search}${hash}`\n  }\n  return `${specificPathname}${search}${hash}`\n}\n",
    "import { assertImportMap } from \"./internal/assertImportMap.js\"\nimport { urlToRelativeUrl } from \"./internal/urlToRelativeUrl.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { resolveSpecifier } from \"./resolveSpecifier.js\"\nimport { hasScheme } from \"./internal/hasScheme.js\"\n\nexport const moveImportMap = (importMap, fromUrl, toUrl) => {\n  assertImportMap(importMap)\n\n  const makeRelativeTo = (value, type) => {\n    let url\n    if (type === \"specifier\") {\n      url = resolveSpecifier(value, fromUrl)\n      if (!url) {\n        // bare specifier\n        return value\n      }\n    } else {\n      url = resolveUrl(value, fromUrl)\n    }\n\n    const relativeUrl = urlToRelativeUrl(url, toUrl)\n    if (relativeUrl.startsWith(\"../\")) {\n      return relativeUrl\n    }\n    if (relativeUrl.startsWith(\"./\")) {\n      return relativeUrl\n    }\n    if (hasScheme(relativeUrl)) {\n      return relativeUrl\n    }\n    return `./${relativeUrl}`\n  }\n\n  const importMapRelative = {}\n  const { imports } = importMap\n  if (imports) {\n    importMapRelative.imports = makeMappingsRelativeTo(imports, makeRelativeTo) || imports\n  }\n\n  const { scopes } = importMap\n  if (scopes) {\n    importMapRelative.scopes = makeScopesRelativeTo(scopes, makeRelativeTo) || scopes\n  }\n\n  // nothing changed\n  if (importMapRelative.imports === imports && importMapRelative.scopes === scopes) {\n    return importMap\n  }\n  return importMapRelative\n}\n\nconst makeMappingsRelativeTo = (mappings, makeRelativeTo) => {\n  const mappingsTransformed = {}\n  const mappingsRemaining = {}\n  let transformed = false\n  Object.keys(mappings).forEach((specifier) => {\n    const address = mappings[specifier]\n    const specifierRelative = makeRelativeTo(specifier, \"specifier\")\n    const addressRelative = makeRelativeTo(address, \"address\")\n\n    if (specifierRelative) {\n      transformed = true\n      mappingsTransformed[specifierRelative] = addressRelative || address\n    } else if (addressRelative) {\n      transformed = true\n      mappingsTransformed[specifier] = addressRelative\n    } else {\n      mappingsRemaining[specifier] = address\n    }\n  })\n  return transformed ? { ...mappingsTransformed, ...mappingsRemaining } : null\n}\n\nconst makeScopesRelativeTo = (scopes, makeRelativeTo) => {\n  const scopesTransformed = {}\n  const scopesRemaining = {}\n  let transformed = false\n  Object.keys(scopes).forEach((scopeSpecifier) => {\n    const scopeMappings = scopes[scopeSpecifier]\n    const scopeSpecifierRelative = makeRelativeTo(scopeSpecifier, \"address\")\n    const scopeMappingsRelative = makeMappingsRelativeTo(scopeMappings, makeRelativeTo)\n\n    if (scopeSpecifierRelative) {\n      transformed = true\n      scopesTransformed[scopeSpecifierRelative] = scopeMappingsRelative || scopeMappings\n    } else if (scopeMappingsRelative) {\n      transformed = true\n      scopesTransformed[scopeSpecifier] = scopeMappingsRelative\n    } else {\n      scopesRemaining[scopeSpecifier] = scopeMappingsRelative\n    }\n  })\n  return transformed ? { ...scopesTransformed, ...scopesRemaining } : null\n}\n",
    "import { assertImportMap } from \"./internal/assertImportMap.js\"\n\nexport const sortImportMap = (importMap) => {\n  assertImportMap(importMap)\n\n  const { imports, scopes } = importMap\n\n  return {\n    ...(imports ? { imports: sortImports(imports) } : {}),\n    ...(scopes ? { scopes: sortScopes(scopes) } : {}),\n  }\n}\n\nexport const sortImports = (imports) => {\n  const mappingsSorted = {}\n\n  Object.keys(imports)\n    .sort(compareLengthOrLocaleCompare)\n    .forEach((name) => {\n      mappingsSorted[name] = imports[name]\n    })\n\n  return mappingsSorted\n}\n\nexport const sortScopes = (scopes) => {\n  const scopesSorted = {}\n\n  Object.keys(scopes)\n    .sort(compareLengthOrLocaleCompare)\n    .forEach((scopeSpecifier) => {\n      scopesSorted[scopeSpecifier] = sortImports(scopes[scopeSpecifier])\n    })\n\n  return scopesSorted\n}\n\nconst compareLengthOrLocaleCompare = (a, b) => {\n  return b.length - a.length || a.localeCompare(b)\n}\n",
    "import { assertImportMap } from \"./internal/assertImportMap.js\"\nimport { tryUrlResolution } from \"./internal/tryUrlResolution.js\"\nimport { resolveSpecifier } from \"./resolveSpecifier.js\"\nimport { sortImports, sortScopes } from \"./sortImportMap.js\"\n\nexport const normalizeImportMap = (importMap, baseUrl) => {\n  assertImportMap(importMap)\n\n  if (!isStringOrUrl(baseUrl)) {\n    throw new TypeError(formulateBaseUrlMustBeStringOrUrl({ baseUrl }))\n  }\n\n  const { imports, scopes } = importMap\n\n  return {\n    imports: imports ? normalizeMappings(imports, baseUrl) : undefined,\n    scopes: scopes ? normalizeScopes(scopes, baseUrl) : undefined,\n  }\n}\n\nconst isStringOrUrl = (value) => {\n  if (typeof value === \"string\") {\n    return true\n  }\n\n  if (typeof URL === \"function\" && value instanceof URL) {\n    return true\n  }\n\n  return false\n}\n\nconst normalizeMappings = (mappings, baseUrl) => {\n  const mappingsNormalized = {}\n\n  Object.keys(mappings).forEach((specifier) => {\n    const address = mappings[specifier]\n\n    if (typeof address !== \"string\") {\n      console.warn(\n        formulateAddressMustBeAString({\n          address,\n          specifier,\n        }),\n      )\n      return\n    }\n\n    const specifierResolved = resolveSpecifier(specifier, baseUrl) || specifier\n\n    const addressUrl = tryUrlResolution(address, baseUrl)\n    if (addressUrl === null) {\n      console.warn(\n        formulateAdressResolutionFailed({\n          address,\n          baseUrl,\n          specifier,\n        }),\n      )\n      return\n    }\n\n    if (specifier.endsWith(\"/\") && !addressUrl.endsWith(\"/\")) {\n      console.warn(\n        formulateAddressUrlRequiresTrailingSlash({\n          addressUrl,\n          address,\n          specifier,\n        }),\n      )\n      return\n    }\n    mappingsNormalized[specifierResolved] = addressUrl\n  })\n\n  return sortImports(mappingsNormalized)\n}\n\nconst normalizeScopes = (scopes, baseUrl) => {\n  const scopesNormalized = {}\n\n  Object.keys(scopes).forEach((scopeSpecifier) => {\n    const scopeMappings = scopes[scopeSpecifier]\n    const scopeUrl = tryUrlResolution(scopeSpecifier, baseUrl)\n    if (scopeUrl === null) {\n      console.warn(\n        formulateScopeResolutionFailed({\n          scope: scopeSpecifier,\n          baseUrl,\n        }),\n      )\n      return\n    }\n    const scopeValueNormalized = normalizeMappings(scopeMappings, baseUrl)\n    scopesNormalized[scopeUrl] = scopeValueNormalized\n  })\n\n  return sortScopes(scopesNormalized)\n}\n\nconst formulateBaseUrlMustBeStringOrUrl = ({ baseUrl }) => `baseUrl must be a string or an url.\n--- base url ---\n${baseUrl}`\n\nconst formulateAddressMustBeAString = ({ specifier, address }) => `Address must be a string.\n--- address ---\n${address}\n--- specifier ---\n${specifier}`\n\nconst formulateAdressResolutionFailed = ({\n  address,\n  baseUrl,\n  specifier,\n}) => `Address url resolution failed.\n--- address ---\n${address}\n--- base url ---\n${baseUrl}\n--- specifier ---\n${specifier}`\n\nconst formulateAddressUrlRequiresTrailingSlash = ({\n  addressURL,\n  address,\n  specifier,\n}) => `Address must end with /.\n--- address url ---\n${addressURL}\n--- address ---\n${address}\n--- specifier ---\n${specifier}`\n\nconst formulateScopeResolutionFailed = ({ scope, baseUrl }) => `Scope url resolution failed.\n--- scope ---\n${scope}\n--- base url ---\n${baseUrl}`\n",
    "export const pathnameToExtension = (pathname) => {\n  const slashLastIndex = pathname.lastIndexOf(\"/\")\n  if (slashLastIndex !== -1) {\n    pathname = pathname.slice(slashLastIndex + 1)\n  }\n\n  const dotLastIndex = pathname.lastIndexOf(\".\")\n  if (dotLastIndex === -1) return \"\"\n  // if (dotLastIndex === pathname.length - 1) return \"\"\n  return pathname.slice(dotLastIndex)\n}\n",
    "import { urlToPathname } from \"./internal/urlToPathname.js\"\nimport { pathnameToExtension } from \"./internal/pathnameToExtension.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { applyImportMap } from \"./applyImportMap.js\"\n\nexport const resolveImport = ({\n  specifier,\n  importer,\n  importMap,\n  defaultExtension = true,\n  createBareSpecifierError,\n  onImportMapping = () => {},\n}) => {\n  return applyDefaultExtension({\n    url: importMap\n      ? applyImportMap({\n          importMap,\n          specifier,\n          importer,\n          createBareSpecifierError,\n          onImportMapping,\n        })\n      : resolveUrl(specifier, importer),\n    importer,\n    defaultExtension,\n  })\n}\n\nconst applyDefaultExtension = ({ url, importer, defaultExtension }) => {\n  if (urlToPathname(url).endsWith(\"/\")) {\n    return url\n  }\n\n  if (typeof defaultExtension === \"string\") {\n    const extension = pathnameToExtension(url)\n    if (extension === \"\") {\n      return `${url}${defaultExtension}`\n    }\n    return url\n  }\n\n  if (defaultExtension === true) {\n    const extension = pathnameToExtension(url)\n    if (extension === \"\" && importer) {\n      const importerPathname = urlToPathname(importer)\n      const importerExtension = pathnameToExtension(importerPathname)\n      return `${url}${importerExtension}`\n    }\n  }\n  return url\n}\n"
  ],
  "names": [
    "assertImportMap",
    "value",
    "TypeError",
    "type",
    "Array",
    "isArray",
    "hasScheme",
    "string",
    "test",
    "urlToScheme",
    "urlString",
    "colonIndex",
    "indexOf",
    "slice",
    "urlToPathname",
    "ressourceToPathname",
    "urlToRessource",
    "scheme",
    "length",
    "afterProtocol",
    "pathnameSlashIndex",
    "ressource",
    "searchSeparatorIndex",
    "urlToOrigin",
    "secondProtocolSlashIndex",
    "pathnameToParentPathname",
    "pathname",
    "slashLastIndex",
    "lastIndexOf",
    "resolveUrl",
    "specifier",
    "baseUrl",
    "writeBaseUrlMustBeAString",
    "Error",
    "writeBaseUrlMustBeAbsolute",
    "writeBaseUrlRequired",
    "baseOrigin",
    "basePathname",
    "baseDirectoryPathname",
    "unresolvedPathname",
    "importerFolders",
    "split",
    "pop",
    "resolvedPathname",
    "join",
    "tryUrlResolution",
    "url",
    "result",
    "resolveSpecifier",
    "importer",
    "startsWith",
    "applyImportMap",
    "importMap",
    "createBareSpecifierError",
    "createDetailedMessage",
    "onImportMapping",
    "specifierUrl",
    "specifierNormalized",
    "scopes",
    "scopeSpecifierMatching",
    "Object",
    "keys",
    "find",
    "scopeSpecifier",
    "specifierIsPrefixOf",
    "scopeMappings",
    "mappingFromScopes",
    "applyMappings",
    "imports",
    "mappingFromImports",
    "undefined",
    "mappings",
    "scope",
    "specifierCandidates",
    "i",
    "specifierCandidate",
    "address",
    "from",
    "to",
    "before",
    "after",
    "afterSpecifier",
    "addressFinal",
    "specifierHref",
    "href",
    "composeTwoImportMaps",
    "leftImportMap",
    "rightImportMap",
    "leftImports",
    "rightImports",
    "leftHasImports",
    "Boolean",
    "rightHasImports",
    "composeTwoMappings",
    "leftScopes",
    "rightScopes",
    "leftHasScopes",
    "rightHasScopes",
    "composeTwoScopes",
    "leftMappings",
    "rightMappings",
    "forEach",
    "leftSpecifier",
    "objectHasKey",
    "leftAddress",
    "rightSpecifier",
    "compareAddressAndSpecifier",
    "object",
    "key",
    "prototype",
    "hasOwnProperty",
    "call",
    "addressUrl",
    "leftScopeKey",
    "topLevelSpecifier",
    "topLevelSpecifierCandidate",
    "rightScopeKey",
    "getCommonPathname",
    "otherPathname",
    "firstDifferentCharacterIndex",
    "findFirstDifferentCharacterIndex",
    "commonString",
    "charAt",
    "firstDifferentSlashIndex",
    "otherString",
    "maxCommonLength",
    "Math",
    "min",
    "char",
    "otherChar",
    "urlToRelativeUrl",
    "urlArg",
    "baseUrlArg",
    "URL",
    "protocol",
    "username",
    "password",
    "host",
    "hash",
    "search",
    "commonPathname",
    "specificPathname",
    "baseSpecificPathname",
    "includes",
    "baseSpecificParentPathname",
    "relativeDirectoriesNotation",
    "replace",
    "moveImportMap",
    "fromUrl",
    "toUrl",
    "makeRelativeTo",
    "relativeUrl",
    "importMapRelative",
    "makeMappingsRelativeTo",
    "makeScopesRelativeTo",
    "mappingsTransformed",
    "mappingsRemaining",
    "transformed",
    "specifierRelative",
    "addressRelative",
    "scopesTransformed",
    "scopesRemaining",
    "scopeSpecifierRelative",
    "scopeMappingsRelative",
    "sortImportMap",
    "sortImports",
    "sortScopes",
    "mappingsSorted",
    "sort",
    "compareLengthOrLocaleCompare",
    "name",
    "scopesSorted",
    "a",
    "b",
    "localeCompare",
    "normalizeImportMap",
    "isStringOrUrl",
    "formulateBaseUrlMustBeStringOrUrl",
    "normalizeMappings",
    "normalizeScopes",
    "mappingsNormalized",
    "console",
    "warn",
    "formulateAddressMustBeAString",
    "specifierResolved",
    "formulateAdressResolutionFailed",
    "endsWith",
    "formulateAddressUrlRequiresTrailingSlash",
    "scopesNormalized",
    "scopeUrl",
    "formulateScopeResolutionFailed",
    "scopeValueNormalized",
    "addressURL",
    "pathnameToExtension",
    "dotLastIndex",
    "resolveImport",
    "defaultExtension",
    "applyDefaultExtension",
    "extension",
    "importerPathname",
    "importerExtension"
  ],
  "mappings": "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"
}