UNPKG

astro

Version:

Astro is a modern site builder with web best practices, performance, and DX front-of-mind.

65 lines (64 loc) 1.77 kB
import { getAssetsPrefix } from "../../assets/utils/getAssetsPrefix.js"; import { fileExtension, joinPaths, prependForwardSlash, slash } from "../../core/path.js"; function createAssetLink(href, base, assetsPrefix, queryParams) { let url = ""; if (assetsPrefix) { const pf = getAssetsPrefix(fileExtension(href), assetsPrefix); url = joinPaths(pf, slash(href)); } else if (base) { url = prependForwardSlash(joinPaths(base, slash(href))); } else { url = href; } if (queryParams) { url += "?" + queryParams.toString(); } return url; } function createStylesheetElement(stylesheet, base, assetsPrefix, queryParams) { if (stylesheet.type === "inline") { return { props: {}, children: stylesheet.content }; } else { return { props: { rel: "stylesheet", href: createAssetLink(stylesheet.src, base, assetsPrefix, queryParams) }, children: "" }; } } function createStylesheetElementSet(stylesheets, base, assetsPrefix, queryParams) { return new Set( stylesheets.map((s) => createStylesheetElement(s, base, assetsPrefix, queryParams)) ); } function createModuleScriptElement(script, base, assetsPrefix, queryParams) { if (script.type === "external") { return createModuleScriptElementWithSrc(script.value, base, assetsPrefix, queryParams); } else { return { props: { type: "module" }, children: script.value }; } } function createModuleScriptElementWithSrc(src, base, assetsPrefix, queryParams) { return { props: { type: "module", src: createAssetLink(src, base, assetsPrefix, queryParams) }, children: "" }; } export { createAssetLink, createModuleScriptElement, createStylesheetElementSet };