@@ -0,0 +1,69 @@
1+const fs = require("fs");
2+const path = require("path");
3+const matter = require("gray-matter");
4+const toml = require("@iarna/toml");
8+ toml: toml.parse.bind(toml),
16+function buildSearchIndex(dir) {
17+ const dirName = dir.split("/").slice(-1).join("");
20+ title: dirName.charAt(0).toUpperCase() + dirName.slice(1),
25+ metadata = matter(fs.readFileSync(path.join(dir, "_index.md")), options);
28+ const children = fs.readdirSync(dir, { withFileTypes: true });
29+ const pages = children.filter((f) => f.isFile() && f.name !== "_index.md");
30+ const subdirs = children.filter((f) => f.isDirectory());
33+ ...pages.map((page) => {
34+ const { data: pageData, content: pageContent } = matter(
35+ fs.readFileSync(path.join(dir, page.name)),
39+ title: pageData.title,
41+ slug: page.name.replace(/.md$/, ""),
42+ content: pageContent,
43+ parent: metadata.data.title,
49+ subdirs.map((subdir) => [
51+ buildSearchIndex(path.join(dir, subdir.name)),
56+buildSearchIndex(path.join(process.cwd(), "content"));
58+const fileContents = `export const index = ${JSON.stringify(index)}`;
61+ fs.readdirSync("cache");
63+ fs.mkdirSync("cache");
66+fs.writeFile("cache/data.js", fileContents, function (err) {
67+ if (err) return console.error(err);
68+ console.log("Site index created.");