@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
JavaScript
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
};