import { readFile, readdir } from "node:fs/promises";
import { join, relative } from "node:path";
async function syncMarkdownFolder(root: string, productId: string, apiKey: string) {
const names = await readdir(root);
const pages = [];
for (const name of names) {
if (!name.endsWith(".md")) continue;
const path = join(root, name);
const content = await readFile(path, "utf8");
const slug = relative(root, path).replace(/\.md$/, "");
pages.push({
slug,
title: slug.replace(/-/g, " "),
content,
});
}
const results = [];
for (let index = 0; index < pages.length; index += 25) {
const batch = pages.slice(index, index + 25);
const response = await fetch("https://app.promptingco.com/api/v1/site/pages", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": apiKey,
"Idempotency-Key": `markdown-sync-${index}-${Date.now()}`,
},
body: JSON.stringify({ productId, pages: batch }),
});
results.push(await response.json());
}
return results;
}