UNPKG

astro

Version:

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

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