UNPKG

@jspm/generator

Version:

Package Import Map Generation Tool

37 lines (35 loc) 1.29 kB
import { JspmError } from "../common/err.js"; import { importedFrom } from "../common/url.js"; import { fetchVersions } from "./jspm.js"; // @ts-ignore import { SemverRange } from "sver"; const cdnUrl = "https://cdn.skypack.dev/"; export async function pkgToUrl(pkg) { return `${cdnUrl}${pkg.name}@${pkg.version}/`; } const exactPkgRegEx = /^((?:@[^/\\%@]+\/)?[^./\\%@][^/\\%@]*)@([^\/]+)(\/.*)?$/; export function parseUrlPkg(url) { if (!url.startsWith(cdnUrl)) return; const [, name, version] = url.slice(cdnUrl.length).match(exactPkgRegEx) || []; if (!name || !version) return; return { registry: "npm", name, version }; } export async function resolveLatestTarget(target, layer, parentUrl) { const { registry, name, range, unstable } = target; const versions = await fetchVersions.call(this, name); const semverRange = new SemverRange(String(range) || "*", unstable); const version = semverRange.bestMatch(versions, unstable); if (version) { return { registry, name, version: version.toString() }; } throw new JspmError(`Unable to resolve ${registry}:${name}@${range} to a valid version${importedFrom(parentUrl)}`); } //# sourceMappingURL=skypack.js.map