import { existsSync, promises as fs } from 'fs'; import path from 'path'; import parse from '../lib/markdown'; import DataRichDocument from '../components/DataRichDocument'; import clientPromise from '../lib/mddb'; export const getStaticPaths = async () => { const contentDir = path.join(process.cwd(), '/content/'); const contentFolders = await fs.readdir(contentDir, 'utf8'); const paths = contentFolders.map((folder: string) => folder === 'index.md' ? { params: { path: [] } } : { params: { path: [folder] } } ); return { paths, fallback: false, }; }; export const getStaticProps = async (context) => { let pathToFile = 'index.md'; if (context.params.path) { pathToFile = context.params.path.join('/') + '/index.md'; } let datasets = []; const mddbFileExists = existsSync('markdown.db'); if (mddbFileExists) { const mddb = await clientPromise; const datasetsFiles = await mddb.getFiles({ extensions: ['md', 'mdx'], }); datasets = datasetsFiles .filter((dataset) => dataset.url_path !== '/') .map((dataset) => ({ _id: dataset._id, url_path: dataset.url_path, file_path: dataset.file_path, metadata: dataset.metadata, })); } const indexFile = path.join(process.cwd(), '/content/' + pathToFile); const readme = await fs.readFile(indexFile, 'utf8'); let { mdxSource, frontMatter } = await parse(readme, '.mdx', { datasets }); return { props: { mdxSource, frontMatter: JSON.stringify(frontMatter), }, }; }; export default function DatasetPage({ mdxSource, frontMatter }) { frontMatter = JSON.parse(frontMatter); return (
Author: {frontMatter.author}
)} {frontMatter.description && (Description: {frontMatter.description}
)} {frontMatter.modified && (Modified: {new Date(frontMatter.modified).toLocaleDateString("en-US")}
)} {frontMatter.files && (| File | Format |
|---|---|
| {fileName} | {fileName[0].split('.').slice(-1)[0].toUpperCase()} |