import fs from 'fs'; import clientPromise from '@/lib/mddb'; import { GetStaticProps } from 'next'; import Layout from '../components/_shared/Layout'; import ReactMarkdown from 'react-markdown'; import { formatDate } from '@/utils/formatDate'; import rehypeRaw from "rehype-raw"; import matter from 'gray-matter' export default function Page({ source, meta }) { return (
{meta.title && (

{meta.title}

)} {meta.date && (

)}
{source}
); } export const getStaticProps: GetStaticProps = async ({ params }) => { const urlPath = params?.slug ? (params.slug as string[]).join('/') : '/'; const mddb = await clientPromise; const dbFile = await mddb.getFileByUrl(urlPath); let source = fs.readFileSync(dbFile.file_path, { encoding: 'utf-8' }); let {content } = matter(source); return { props: { source: content, meta: dbFile.metadata, }, }; }; export async function getStaticPaths() { const mddb = await clientPromise; let allDocuments = await mddb.getFiles({ extensions: ['md', 'mdx'] }); const paths = allDocuments .filter((page) => page.metadata?.isDraft !== true) .filter((page) => !page.file_path.startsWith('content/stories/')) .map((page) => { const parts = page.url_path!.split('/'); return { params: { slug: parts } }; }); return { paths, fallback: false, }; }