import { promises as fs } from 'fs'; import path from 'path'; interface PostMetadata { name: string; } interface Post { directory: string; path: string; meta: PostMetadata; } export type { PostMetadata, Post }; async function getMetadata(postPath : string) : Promise { const metaPath = path.join(postPath, 'meta.json'); const postMetadata = await fs.readFile(metaPath, 'utf8'); return JSON.parse(postMetadata) as PostMetadata; } async function getPosts() : Promise { const postsDirectory = path.join(process.cwd(), 'posts'); const directories = await fs.readdir(postsDirectory); const posts = directories.map(async (directory) => { const postPath = path.join(postsDirectory, directory); const meta = await getMetadata(postPath); return { directory, path: postPath, meta }; }); return await Promise.all(posts); } async function getMarkdown(post : Post) : Promise { const markdownPath = path.join(post.path, 'main.md'); const markdown = await fs.readFile(markdownPath, 'utf8'); return markdown; } export { getPosts, getMetadata, };