UNPKG

@oberoncms/core

Version:

OberonCMS is a cloud deployable CMS written in typescript based on the Puck visual editor

47 lines (46 loc) 1.28 kB
import { once } from "events"; import { mkdir } from "fs/promises"; import { createWriteStream } from "fs"; import { walkAsyncStep } from "walkjs"; async function exportTailwindClasses({ getAllPages, getPageData }) { console.log("Exporting Tailwind classes"); const pagesPromise = getAllPages(); await mkdir(".oberon", { recursive: true }); const outFile = createWriteStream(".oberon/tailwind.classes"); let matchedFields = 0; const walkPage = async ({ key }) => { const data = await getPageData(key); for await (const node of walkAsyncStep(data)) { if (node.key !== "className" || !node.val) { continue; } matchedFields++; if (!outFile.write(`${node.val} `)) { await once(outFile, "drain"); } } }; const results = await Promise.allSettled((await pagesPromise).map(walkPage)); outFile.write("\n"); outFile.end(); await once(outFile, "finish"); for (const result of results) { if (result.status === "rejected") { throw result.reason; } } if (!results.length) { console.log("No pages in database"); return; } console.log( `Successfully exported tailwind classes from ${matchedFields} fields in ${results.length} pages` ); } export { exportTailwindClasses };