mirror of
https://github.com/trushildhokiya/allininx-2.git
synced 2025-06-07 22:02:17 +00:00
58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
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,
|
|
};
|
|
}
|