UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

44 lines (43 loc) 1.89 kB
import fs from "node:fs"; import { createResolver } from "astro-integration-kit"; const { resolve } = createResolver(import.meta.url); const buildDefaultOnlyVirtual = (mod) => `export default ${JSON.stringify(mod)};`; const buildNamedMultiExportVirtual = (items) => Object.entries(items).map(([key, val]) => `export const ${key} = ${JSON.stringify(val)};`).join("\n"); const buildVirtualConfig = (options) => fs.readFileSync(resolve("./stubs/config.stub.js"), "utf-8").replace(/\$\$options\$\$/g, JSON.stringify(options)); const buildLoggerVirtual = (verbose) => fs.readFileSync(resolve("./stubs/logger.stub.js"), "utf-8").replace(/\$\$verbose\$\$/g, verbose.toString()); const VirtualModuleBuilder = (resolve2) => { const dynamicVirtual = (items) => items.map((item) => `export * from ${JSON.stringify(resolve2(item))};`).join("\n"); const ambientScripts = (items) => items.map((item) => `import '${resolve2(item)}';`).join("\n"); const namedVirtual = ({ namedExport, path, exportDefault }) => ` import { ${namedExport} } from ${JSON.stringify(resolve2(path))}; export { ${namedExport} }; ${exportDefault ? `export default ${namedExport};` : ""} `; const astroComponentVirtual = (items) => Object.entries(items).map(([key, val]) => `export { default as ${key} } from ${JSON.stringify(resolve2(val))}`).join("\n"); const dynamicWithAstroVirtual = ({ dynamicExports, astroComponents }) => [dynamicVirtual(dynamicExports), astroComponentVirtual(astroComponents)].join("\n"); return { dynamicVirtual, ambientScripts, namedVirtual, astroComponentVirtual, dynamicWithAstroVirtual, buildDefaultOnlyVirtual, buildLoggerVirtual, buildNamedMultiExportVirtual, buildVirtualConfig }; }; export { VirtualModuleBuilder, buildDefaultOnlyVirtual, buildLoggerVirtual, buildNamedMultiExportVirtual, buildVirtualConfig };