UNPKG

cdn-resolve

Version:

Resolves import paths to their CDN equivalents

61 lines (59 loc) 2.57 kB
const require_parse = require('./parse-CDYH5MAa.cjs'); //#region src/esm.ts /** * Builds the URL for esm.sh * * @param {string} module - The module name. * @param {ESMOptions?} options - options for building the URL. * @returns {URL | undefined} URL for the ESM, or undefined if an error occurs. */ function buildESMUrl(module$1, options) { try { const pkg = require_parse.parsePackage(module$1); const url = new URL(`${options?.external === true ? "*" : ""}${pkg.full}`, "https://esm.sh/"); if (options?.deps) url.searchParams.append("deps", options.deps.join(",")); if (options?.alias) url.searchParams.append("alias", Object.entries(options.alias).map(([key, value]) => `${key}:${value}`).join(",")); if (options?.treeShake) url.searchParams.append("exports", options.treeShake.join(",")); if (options?.bundle) url.searchParams.append("bundle", options.bundle); if (options?.dev) url.searchParams.append("dev", "true"); if (options?.esbuild) { if (options.esbuild.target) url.searchParams.append("target", options.esbuild.target); if (options.esbuild.conditions) url.searchParams.append("conditions", options.esbuild.conditions.join(",")); if (options.esbuild.keepNames) url.searchParams.append("keep-names", "true"); if (options.esbuild.ignoreAnnotations) url.searchParams.append("ignore-annotations", "true"); } if (options?.worker) url.searchParams.append("worker", "true"); if (options?.css) url.searchParams.append("css", "true"); if (options?.wasm) url.searchParams.append("module", "true"); if (options?.external && Array.isArray(options.external)) url.searchParams.append("external", options.external.join(",")); if (options?.pin) url.searchParams.append("pin", options.pin); if (options?.noDts) url.searchParams.append("no-dts", "true"); if (options?.raw) url.searchParams.append("raw", "true"); return url; } catch { return; } } /** * Resolves the ESM types for a given URL. * * @param {URL | string} url - The URL or string representation of the URL. * @returns {Promise<string | null>} A promise that resolves to a string representing the ESM types, or null if not found. */ async function resolveESMTypes(url) { if (url instanceof URL) url = url.toString(); return (await fetch(url).then((res) => res.headers)).get("x-typescript-types"); } //#endregion Object.defineProperty(exports, 'buildESMUrl', { enumerable: true, get: function () { return buildESMUrl; } }); Object.defineProperty(exports, 'resolveESMTypes', { enumerable: true, get: function () { return resolveESMTypes; } });