UNPKG

@jsenv/plugin-transpilation

Version:
42 lines (38 loc) 1.07 kB
import { urlToFileSystemPath } from "@jsenv/urls"; export const applyCssTranspilation = async ({ input, inputUrl, runtimeCompat, }) => { // https://lightningcss.dev/docs.html const { transform } = await import("lightningcss"); const targets = runtimeCompatToTargets(runtimeCompat); const { code, map } = transform({ filename: urlToFileSystemPath(inputUrl), code: Buffer.from(input), targets, minify: false, drafts: { nesting: true, customMedia: true, }, }); return { content: String(code), sourcemap: map }; }; const runtimeCompatToTargets = (runtimeCompat) => { const targets = {}; ["chrome", "firefox", "ie", "opera", "safari"].forEach((runtimeName) => { const version = runtimeCompat[runtimeName]; if (version) { targets[runtimeName] = versionToBits(version); } }); return targets; }; const versionToBits = (version) => { const [major, minor = 0, patch = 0] = version .split("-")[0] .split(".") .map((v) => parseInt(v, 10)); return (major << 16) | (minor << 8) | patch; };