mirror of
https://github.com/andwati/personal-website.git
synced 2026-10-22 04:24:27 +00:00
52 lines
1.0 KiB
TypeScript
52 lines
1.0 KiB
TypeScript
import path from "path";
|
|
import fs from "fs";
|
|
import { getMdxContent, MaybeContent } from "./mdx";
|
|
|
|
export interface DeepDive {
|
|
title: string;
|
|
image: string;
|
|
description: string;
|
|
links: {
|
|
label: string;
|
|
href: string;
|
|
}[];
|
|
}
|
|
|
|
export function getDeepDives(): DeepDive[] {
|
|
return JSON.parse(
|
|
fs.readFileSync(
|
|
path.join(process.cwd(), "content", "deep-dives", "index.json"),
|
|
"utf8"
|
|
)
|
|
);
|
|
}
|
|
|
|
export interface Post {
|
|
title: string;
|
|
description: string;
|
|
image: string;
|
|
date: string;
|
|
url: string;
|
|
external: boolean;
|
|
source: string;
|
|
}
|
|
|
|
export function getAllPostData(): Post[] {
|
|
return JSON.parse(
|
|
fs.readFileSync(
|
|
path.join(process.cwd(), "content", "writing", "index.json"),
|
|
"utf8"
|
|
)
|
|
);
|
|
}
|
|
|
|
export function getAllSlugs(): string[] {
|
|
const data = getAllPostData();
|
|
|
|
return data.filter((item) => !item.external).map((item) => item.url);
|
|
}
|
|
|
|
export async function getPost(slug: string): Promise<MaybeContent<Post>> {
|
|
return getMdxContent<Post>("writing", `${slug}.mdx`);
|
|
}
|