import glob from 'fast-glob'; interface BlogPost { title: string; description: string; author: string; date: string; } export interface BlogPostWithSlug extends BlogPost { slug: string; } async function importBlogPost(filename: string): Promise { let { article } = (await import(`../app/blog/${filename}`)) as { default: React.ComponentType; article: BlogPost; }; return { slug: filename.replace(/(\/page)?\.mdx$/, ''), ...article, }; } export async function getAllBlogPosts() { let articleFilenames = await glob('*/page.mdx', { cwd: './src/app/blog', }); const posts = await Promise.all(articleFilenames.map(importBlogPost)); return posts.sort((a, z) => +new Date(z.date) - +new Date(a.date)); }