Refine Tabularium into a readable light documentation workspace
Verify and deploy Tabularium / verify-and-deploy (push) Successful in 4m26s

This commit is contained in:
2026-10-27 15:55:59 +08:00
parent 5c48dec887
commit 75debc0068
29 changed files with 2116 additions and 54 deletions
+11 -9
View File
@@ -4,22 +4,24 @@ import path from "node:path";
const directory = path.resolve(process.cwd(), "../../content/docs");
const validSlug = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
export type DocLink = { slug: string; title: string };
export type DocLink = { slug: string; title: string; searchText: string };
export type Doc = DocLink & { content: string };
export async function readDoc(slug: string): Promise<Doc> {
if (!validSlug.test(slug)) throw new Error("Invalid document slug");
const content = await fs.readFile(path.join(directory, `${slug}.md`), "utf8");
const title = content.match(/^# (.+)$/m)?.[1]?.trim() ?? slug;
return { slug, title, content };
return { slug, title, content, searchText: content };
}
export async function listDocs(): Promise<DocLink[]> {
const files = (await fs.readdir(directory)).filter((file) =>
file.endsWith(".md") && validSlug.test(file.slice(0, -3)),
).sort();
return Promise.all(files.map(async (file) => {
const { slug, title } = await readDoc(file.slice(0, -3));
return { slug, title };
}));
const files = (await fs.readdir(directory))
.filter((file) => file.endsWith(".md") && validSlug.test(file.slice(0, -3)))
.sort();
return Promise.all(
files.map(async (file) => {
const { slug, title, searchText } = await readDoc(file.slice(0, -3));
return { slug, title, searchText };
}),
);
}