@jsenv/import-map
Version:
Helpers to implement importmaps.
247 lines • 52.2 kB
Source Map (JSON)
{
"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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