import { remark } from "remark"; import html from "remark-html"; import fs from "fs"; import path from "path"; import matter from "gray-matter"; export async function getPostData(slug) { const fullPath = path.join("posts", `${slug}.mdx`); const fileContents = fs.readFileSync(fullPath, "utf8"); // Use gray-matter to parse the post metadata section const matterResult = matter(fileContents); // Use remark to convert markdown into HTML string const processedContent = await remark() .use(html) .process(matterResult.content); const contentHtml = processedContent.toString(); // Combine the data with the id and contentHtml return { slug, content: contentHtml, ...matterResult.data, }; } export async function getSortedPosts() { const allPosts = getAllPostIDs() let Posts = [] for (const Post of allPosts) { Posts.push(await getPostData(Post.params.slug)) } return Posts } export function getAllPostIDs() { const n = fs.readdirSync("posts/"); return n.map((f) => { return { params: { slug: f.replace(/\.mdx$/, ""), }, }; }); }