Spaces:
Runtime error
Runtime error
import fs from "fs"; | |
import path from "path"; | |
import matter from "gray-matter"; | |
// Define the types for the data | |
export interface SlugData { | |
id: string; | |
date: string; | |
[key: string]: string; | |
} | |
const postsDirectory = path.join(process.cwd(), "posts"); | |
export function getSortedPostsData(): SlugData[] { | |
const fileNames = fs.readdirSync(postsDirectory); | |
const allPostsData: SlugData[] = fileNames.map((fileName) => { | |
const id = fileName.replace(/\.mdx$/, ""); | |
const fullPath = path.join(postsDirectory, fileName); | |
const fileContents = fs.readFileSync(fullPath, "utf8"); | |
const matterResult = matter(fileContents); | |
return { | |
id, | |
date: matterResult.data.date as string, | |
...matterResult.data, | |
}; | |
}); | |
return allPostsData.sort((a, b) => { | |
if (a.date < b.date) { | |
return 1; | |
} else { | |
return -1; | |
} | |
}); | |
} | |
export interface PostData { | |
slug: string; | |
content: string; | |
[key: string]: string; | |
} | |
export function getPostData(slug: string): PostData { | |
const fullPath = path.join(postsDirectory, `${slug}.mdx`); | |
const fileContents = fs.readFileSync(fullPath, "utf8"); | |
const matterResult = matter(fileContents); | |
return { | |
slug, | |
...matterResult.data, | |
content: matterResult.content, | |
}; | |
} | |