@@ -2,6 +2,7 @@ const fs = require("fs");
2const path = require("path");
2const path = require("path");
3const matter = require("gray-matter");
3const matter = require("gray-matter");
4const toml = require("@iarna/toml");
4const toml = require("@iarna/toml");
5+const markdoc = require("@markdoc/markdoc");
6const options = {
7const options = {
@@ -37,6 +38,8 @@ function buildSearchIndex(dir) {
37 fs.readFileSync(path.join(dir, page.name)),
38 fs.readFileSync(path.join(dir, page.name)),
41+ const parsed = markdoc.parse(pageContent);
42+ const transform = markdoc.transform(parsed);
41 title: pageData.title,
44 title: pageData.title,
42 base: page.name,
45 base: page.name,
@@ -46,6 +49,11 @@ function buildSearchIndex(dir) {
46 page.name.replace(/.md$/, "")
49 page.name.replace(/.md$/, "")
48 content: pageData.description || "",
51 content: pageData.description || "",
52+ headings: transform.children
53+ .filter((e) => e.name === "h2" || e.name === "h3")
54+ .map((e) => e.children)
56+ .filter((e) => typeof e === "string"),
49 parent: metadata.data.title,
57 parent: metadata.data.title,