UNPKG

importly

Version:
44 lines 1.58 kB
import { ImportlyGenerationError } from "../errors.js"; export const prepareCloudGenerator = (linker) => ({ manifests, semver }) => { const mostRooty = {}; for (const manifest of manifests) { const already = mostRooty[manifest.label]; mostRooty[manifest.label] = !already || manifest.parents.length < already.parents.length ? manifest : already; } const importmap = { imports: {}, scopes: {}, }; for (const { label, version, entry } of Object.values(mostRooty)) { const link = linker(label, applySemverPreference(semver, version)); importmap.imports[label + "/"] = link + "/"; if (entry) importmap.imports[label] = connectEntryToLink(link, entry); } return importmap; }; function applySemverPreference(semver, version) { if (semver === "^") semver = "major"; if (semver === "~") semver = "minor"; if (semver === "") semver = "exact"; if (version.startsWith("^") || version.startsWith("~")) version = version.slice(1); switch (semver) { case "major": return "^" + version; case "minor": return "~" + version; case "exact": return version; default: throw new ImportlyGenerationError(`invalid semver option "${semver}" (must be "major", "minor", or "exact")`); } } function connectEntryToLink(link, entry) { if (entry.startsWith("./")) entry = entry.slice(2); return link + "/" + entry; } //# sourceMappingURL=prepare-cloud-generator.js.map