@docubook/core 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-HZJLRYAI.js +45 -0
- package/dist/chunk-HZJLRYAI.js.map +1 -0
- package/dist/index.d.ts +118 -11
- package/dist/index.js +514 -7
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +12 -10
- package/dist/utils.js +16 -38
- package/dist/utils.js.map +1 -1
- package/package.json +5 -3
- package/dist/__tests__/compile.test.d.ts +0 -2
- package/dist/__tests__/compile.test.d.ts.map +0 -1
- package/dist/__tests__/compile.test.js +0 -122
- package/dist/__tests__/compile.test.js.map +0 -1
- package/dist/__tests__/content.test.d.ts +0 -2
- package/dist/__tests__/content.test.d.ts.map +0 -1
- package/dist/__tests__/content.test.js +0 -109
- package/dist/__tests__/content.test.js.map +0 -1
- package/dist/__tests__/extract.test.d.ts +0 -2
- package/dist/__tests__/extract.test.d.ts.map +0 -1
- package/dist/__tests__/extract.test.js +0 -95
- package/dist/__tests__/extract.test.js.map +0 -1
- package/dist/__tests__/plugins/handleCodeExpandable.test.d.ts +0 -2
- package/dist/__tests__/plugins/handleCodeExpandable.test.d.ts.map +0 -1
- package/dist/__tests__/plugins/handleCodeExpandable.test.js +0 -191
- package/dist/__tests__/plugins/handleCodeExpandable.test.js.map +0 -1
- package/dist/__tests__/plugins/handleCodeTitles.test.d.ts +0 -2
- package/dist/__tests__/plugins/handleCodeTitles.test.d.ts.map +0 -1
- package/dist/__tests__/plugins/handleCodeTitles.test.js +0 -99
- package/dist/__tests__/plugins/handleCodeTitles.test.js.map +0 -1
- package/dist/compile.d.ts +0 -28
- package/dist/compile.d.ts.map +0 -1
- package/dist/compile.js +0 -90
- package/dist/compile.js.map +0 -1
- package/dist/content.d.ts +0 -52
- package/dist/content.d.ts.map +0 -1
- package/dist/content.js +0 -102
- package/dist/content.js.map +0 -1
- package/dist/extract.d.ts +0 -13
- package/dist/extract.d.ts.map +0 -1
- package/dist/extract.js +0 -96
- package/dist/extract.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/plugins/handleCodeExpandable.d.ts +0 -4
- package/dist/plugins/handleCodeExpandable.d.ts.map +0 -1
- package/dist/plugins/handleCodeExpandable.js +0 -174
- package/dist/plugins/handleCodeExpandable.js.map +0 -1
- package/dist/plugins/handleCodeTitles.d.ts +0 -3
- package/dist/plugins/handleCodeTitles.d.ts.map +0 -1
- package/dist/plugins/handleCodeTitles.js +0 -38
- package/dist/plugins/handleCodeTitles.js.map +0 -1
- package/dist/plugins/rehypeMermaid.d.ts +0 -11
- package/dist/plugins/rehypeMermaid.d.ts.map +0 -1
- package/dist/plugins/rehypeMermaid.js +0 -34
- package/dist/plugins/rehypeMermaid.js.map +0 -1
- package/dist/types.d.ts +0 -12
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { handleCodeExpandableRemark, handleCodeExpandable, } from "../../plugins/handleCodeExpandable";
|
|
3
|
-
function codeNode(overrides = {}) {
|
|
4
|
-
return {
|
|
5
|
-
type: "code",
|
|
6
|
-
value: "line1\nline2\nline3",
|
|
7
|
-
...overrides,
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
function remarkTree(nodes) {
|
|
11
|
-
return { type: "root", children: nodes };
|
|
12
|
-
}
|
|
13
|
-
describe("handleCodeExpandableRemark", () => {
|
|
14
|
-
it("sets data-expandable and line count when meta includes Expandable", () => {
|
|
15
|
-
const node = codeNode({ meta: "Expandable", lang: "ts" });
|
|
16
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
17
|
-
expect(node.data?.hProperties?.["data-expandable"]).toBe("true");
|
|
18
|
-
expect(node.data?.hProperties?.["data-expandable-lines"]).toBe("3");
|
|
19
|
-
});
|
|
20
|
-
it("appends dbLang and dbTitle from lang:title format", () => {
|
|
21
|
-
const node = codeNode({ meta: "Expandable", lang: "typescript:app.ts" });
|
|
22
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
23
|
-
expect(node.data?.hProperties?.["data-language"]).toBe("typescript");
|
|
24
|
-
expect(node.data?.hProperties?.["data-title"]).toBe("app.ts");
|
|
25
|
-
expect(node.meta).toContain("dbLang(typescript)");
|
|
26
|
-
expect(node.meta).toContain("dbTitle(app.ts)");
|
|
27
|
-
});
|
|
28
|
-
it("does not duplicate dbLang/dbTitle if already present", () => {
|
|
29
|
-
const node = codeNode({
|
|
30
|
-
meta: "Expandable dbLang(ts) dbTitle(x.ts)",
|
|
31
|
-
lang: "ts:x.ts",
|
|
32
|
-
});
|
|
33
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
34
|
-
const matches = node.meta.match(/dbLang/g);
|
|
35
|
-
expect(matches?.length).toBe(1);
|
|
36
|
-
});
|
|
37
|
-
it("skips nodes without Expandable in meta", () => {
|
|
38
|
-
const node = codeNode({ meta: "highlight", lang: "js" });
|
|
39
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
40
|
-
expect(node.data).toBeUndefined();
|
|
41
|
-
});
|
|
42
|
-
it("skips nodes without meta", () => {
|
|
43
|
-
const node = codeNode({ lang: "js" });
|
|
44
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
45
|
-
expect(node.data).toBeUndefined();
|
|
46
|
-
});
|
|
47
|
-
it("adds mdx-expandable-meta class", () => {
|
|
48
|
-
const node = codeNode({ meta: "Expandable", lang: "py" });
|
|
49
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
50
|
-
const classes = node.data?.hProperties?.className;
|
|
51
|
-
expect(classes).toContain("mdx-expandable-meta");
|
|
52
|
-
});
|
|
53
|
-
it("counts lines correctly with leading/trailing newlines", () => {
|
|
54
|
-
const node = codeNode({ meta: "Expandable", lang: "ts", value: "\na\nb\n" });
|
|
55
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
56
|
-
expect(node.data?.hProperties?.["data-expandable-lines"]).toBe("2");
|
|
57
|
-
});
|
|
58
|
-
it("handles empty code value", () => {
|
|
59
|
-
const node = codeNode({ meta: "Expandable", lang: "ts", value: "" });
|
|
60
|
-
handleCodeExpandableRemark()(remarkTree([node]));
|
|
61
|
-
expect(node.data?.hProperties?.["data-expandable-lines"]).toBe("0");
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
// --- Rehype plugin tests ---
|
|
65
|
-
function preNode(codeProps = {}, preProps = {}) {
|
|
66
|
-
return {
|
|
67
|
-
type: "element",
|
|
68
|
-
tagName: "pre",
|
|
69
|
-
properties: { ...preProps },
|
|
70
|
-
children: [
|
|
71
|
-
{
|
|
72
|
-
type: "element",
|
|
73
|
-
tagName: "code",
|
|
74
|
-
properties: {
|
|
75
|
-
className: ["language-ts", "mdx-expandable-meta"],
|
|
76
|
-
"data-expandable": "true",
|
|
77
|
-
"data-expandable-lines": "5",
|
|
78
|
-
...codeProps,
|
|
79
|
-
},
|
|
80
|
-
children: [{ type: "text", value: "code" }],
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
function rehypeTree(nodes) {
|
|
86
|
-
return { type: "root", children: nodes };
|
|
87
|
-
}
|
|
88
|
-
describe("handleCodeExpandable (rehype)", () => {
|
|
89
|
-
it("copies expandable metadata from code to pre", () => {
|
|
90
|
-
const pre = preNode();
|
|
91
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
92
|
-
expect(pre.properties?.["data-expandable"]).toBe("true");
|
|
93
|
-
expect(pre.properties?.["data-expandable-lines"]).toBe("5");
|
|
94
|
-
});
|
|
95
|
-
it("adds mdx-expandable-code class to pre", () => {
|
|
96
|
-
const pre = preNode();
|
|
97
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
98
|
-
const classes = pre.properties?.className;
|
|
99
|
-
expect(classes).toContain("mdx-expandable-code");
|
|
100
|
-
});
|
|
101
|
-
it("removes mdx-expandable-meta class from code element", () => {
|
|
102
|
-
const pre = preNode();
|
|
103
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
104
|
-
const code = pre.children[0];
|
|
105
|
-
const classes = code.properties?.className;
|
|
106
|
-
expect(classes).not.toContain("mdx-expandable-meta");
|
|
107
|
-
});
|
|
108
|
-
it("resolves language from code data-language property", () => {
|
|
109
|
-
const pre = preNode({ "data-language": "python" });
|
|
110
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
111
|
-
expect(pre.properties?.["data-language"]).toBe("python");
|
|
112
|
-
});
|
|
113
|
-
it("resolves language from code className language- prefix", () => {
|
|
114
|
-
const pre = preNode({ "data-language": undefined });
|
|
115
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
116
|
-
expect(pre.properties?.["data-language"]).toBe("ts");
|
|
117
|
-
});
|
|
118
|
-
it("resolves title from code data-title property", () => {
|
|
119
|
-
const pre = preNode({ "data-title": "myfile.ts" });
|
|
120
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
121
|
-
expect(pre.properties?.["data-title"]).toBe("myfile.ts");
|
|
122
|
-
});
|
|
123
|
-
it("resolves language from dbLang in code data.meta", () => {
|
|
124
|
-
const pre = {
|
|
125
|
-
type: "element",
|
|
126
|
-
tagName: "pre",
|
|
127
|
-
properties: {},
|
|
128
|
-
children: [
|
|
129
|
-
{
|
|
130
|
-
type: "element",
|
|
131
|
-
tagName: "code",
|
|
132
|
-
properties: {
|
|
133
|
-
className: ["mdx-expandable-meta"],
|
|
134
|
-
"data-expandable": "true",
|
|
135
|
-
"data-expandable-lines": "3",
|
|
136
|
-
},
|
|
137
|
-
data: { meta: "Expandable dbLang(rust) dbTitle(main.rs)" },
|
|
138
|
-
children: [],
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
};
|
|
142
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
143
|
-
expect(pre.properties?.["data-language"]).toBe("rust");
|
|
144
|
-
expect(pre.properties?.["data-title"]).toBe("main.rs");
|
|
145
|
-
});
|
|
146
|
-
it("skips non-pre elements", () => {
|
|
147
|
-
const div = {
|
|
148
|
-
type: "element",
|
|
149
|
-
tagName: "div",
|
|
150
|
-
properties: {},
|
|
151
|
-
children: [],
|
|
152
|
-
};
|
|
153
|
-
handleCodeExpandable()(rehypeTree([div]));
|
|
154
|
-
expect(div.properties?.["data-expandable"]).toBeUndefined();
|
|
155
|
-
});
|
|
156
|
-
it("skips pre without expandable code child", () => {
|
|
157
|
-
const pre = {
|
|
158
|
-
type: "element",
|
|
159
|
-
tagName: "pre",
|
|
160
|
-
properties: {},
|
|
161
|
-
children: [
|
|
162
|
-
{
|
|
163
|
-
type: "element",
|
|
164
|
-
tagName: "code",
|
|
165
|
-
properties: { className: ["language-js"] },
|
|
166
|
-
children: [],
|
|
167
|
-
},
|
|
168
|
-
],
|
|
169
|
-
};
|
|
170
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
171
|
-
expect(pre.properties?.["data-expandable"]).toBeUndefined();
|
|
172
|
-
});
|
|
173
|
-
it("handles pre with no children gracefully", () => {
|
|
174
|
-
const pre = {
|
|
175
|
-
type: "element",
|
|
176
|
-
tagName: "pre",
|
|
177
|
-
properties: {},
|
|
178
|
-
children: [],
|
|
179
|
-
};
|
|
180
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
181
|
-
expect(pre.properties?.["data-expandable"]).toBeUndefined();
|
|
182
|
-
});
|
|
183
|
-
it("handles className as string on pre", () => {
|
|
184
|
-
const pre = preNode({}, { className: "existing-class" });
|
|
185
|
-
handleCodeExpandable()(rehypeTree([pre]));
|
|
186
|
-
const classes = pre.properties?.className;
|
|
187
|
-
expect(classes).toContain("mdx-expandable-code");
|
|
188
|
-
expect(classes).toContain("existing-class");
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
//# sourceMappingURL=handleCodeExpandable.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleCodeExpandable.test.js","sourceRoot":"","sources":["../../../src/__tests__/plugins/handleCodeExpandable.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAa5C,SAAS,QAAQ,CAAC,YAA+B,EAAE;IACjD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,qBAAqB;QAC5B,GAAG,SAAS;KACD,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAqB,CAAC;AAC9D,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACzE,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,EAAE,qCAAqC;YAC3C,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,SAAqB,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7E,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,0BAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAE9B,SAAS,OAAO,CAAC,YAAqC,EAAE,EAAE,WAAoC,EAAE;IAC9F,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,EAAE,GAAG,QAAQ,EAAE;QAC3B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE;oBACV,SAAS,EAAE,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBACjD,iBAAiB,EAAE,MAAM;oBACzB,uBAAuB,EAAE,GAAG;oBAC5B,GAAG,SAAS;iBACb;gBACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC5C;SACF;KACwB,CAAC;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAqB,CAAC;AAC9D,CAAC;AAED,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,SAAqB,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAS,CAAC,CAAC,CAAgB,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAqB,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAgB;YACvB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE;wBACV,SAAS,EAAE,CAAC,qBAAqB,CAAC;wBAClC,iBAAiB,EAAE,MAAM;wBACzB,uBAAuB,EAAE,GAAG;qBAC7B;oBACD,IAAI,EAAE,EAAE,IAAI,EAAE,0CAA0C,EAAE;oBAC1D,QAAQ,EAAE,EAAE;iBACb;aACF;SACwB,CAAC;QAC5B,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAgB;YACvB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACa,CAAC;QAC5B,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAgB;YACvB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,aAAa,CAAC,EAAE;oBAC1C,QAAQ,EAAE,EAAE;iBACb;aACF;SACwB,CAAC;QAC5B,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAgB;YACvB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACa,CAAC;QAC5B,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzD,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleCodeTitles.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/plugins/handleCodeTitles.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { handleCodeTitles } from "../../plugins/handleCodeTitles";
|
|
3
|
-
function buildTree(children) {
|
|
4
|
-
return { type: "root", children };
|
|
5
|
-
}
|
|
6
|
-
function titleDiv(text) {
|
|
7
|
-
return {
|
|
8
|
-
type: "element",
|
|
9
|
-
tagName: "div",
|
|
10
|
-
properties: { className: ["rehype-code-title"] },
|
|
11
|
-
children: [{ type: "text", value: text }],
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
function preElement(props = {}) {
|
|
15
|
-
return {
|
|
16
|
-
type: "element",
|
|
17
|
-
tagName: "pre",
|
|
18
|
-
properties: { ...props },
|
|
19
|
-
children: [
|
|
20
|
-
{
|
|
21
|
-
type: "element",
|
|
22
|
-
tagName: "code",
|
|
23
|
-
properties: { className: ["language-ts"] },
|
|
24
|
-
children: [{ type: "text", value: "const x = 1" }],
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
describe("handleCodeTitles", () => {
|
|
30
|
-
it("transfers title from div to next pre element", () => {
|
|
31
|
-
const pre = preElement();
|
|
32
|
-
const tree = buildTree([titleDiv("example.ts"), pre]);
|
|
33
|
-
handleCodeTitles()(tree);
|
|
34
|
-
const el = pre;
|
|
35
|
-
expect(el.properties?.["data-title"]).toBe("example.ts");
|
|
36
|
-
expect(el.codeTitle).toBe("example.ts");
|
|
37
|
-
});
|
|
38
|
-
it("removes the title div from the tree", () => {
|
|
39
|
-
const tree = buildTree([titleDiv("app.js"), preElement()]);
|
|
40
|
-
handleCodeTitles()(tree);
|
|
41
|
-
expect(tree.children.length).toBe(1);
|
|
42
|
-
expect(tree.children[0].tagName).toBe("pre");
|
|
43
|
-
});
|
|
44
|
-
it("skips div without rehype-code-title class", () => {
|
|
45
|
-
const div = {
|
|
46
|
-
type: "element",
|
|
47
|
-
tagName: "div",
|
|
48
|
-
properties: { className: ["other"] },
|
|
49
|
-
children: [{ type: "text", value: "not a title" }],
|
|
50
|
-
};
|
|
51
|
-
const pre = preElement();
|
|
52
|
-
const tree = buildTree([div, pre]);
|
|
53
|
-
handleCodeTitles()(tree);
|
|
54
|
-
expect(tree.children.length).toBe(2);
|
|
55
|
-
expect(pre.properties?.["data-title"]).toBeUndefined();
|
|
56
|
-
});
|
|
57
|
-
it("skips when next sibling is not a pre element", () => {
|
|
58
|
-
const div = {
|
|
59
|
-
type: "element",
|
|
60
|
-
tagName: "div",
|
|
61
|
-
properties: {},
|
|
62
|
-
children: [],
|
|
63
|
-
};
|
|
64
|
-
const tree = buildTree([titleDiv("title.ts"), div]);
|
|
65
|
-
handleCodeTitles()(tree);
|
|
66
|
-
expect(tree.children.length).toBe(2);
|
|
67
|
-
});
|
|
68
|
-
it("skips text nodes between title div and pre", () => {
|
|
69
|
-
const textNode = { type: "text", value: "\n" };
|
|
70
|
-
const pre = preElement();
|
|
71
|
-
const tree = buildTree([titleDiv("file.ts"), textNode, pre]);
|
|
72
|
-
handleCodeTitles()(tree);
|
|
73
|
-
const el = pre;
|
|
74
|
-
expect(el.properties?.["data-title"]).toBe("file.ts");
|
|
75
|
-
});
|
|
76
|
-
it("handles title div with non-text child gracefully", () => {
|
|
77
|
-
const badTitleDiv = {
|
|
78
|
-
type: "element",
|
|
79
|
-
tagName: "div",
|
|
80
|
-
properties: { className: ["rehype-code-title"] },
|
|
81
|
-
children: [{ type: "element", tagName: "span", properties: {}, children: [] }],
|
|
82
|
-
};
|
|
83
|
-
const tree = buildTree([badTitleDiv, preElement()]);
|
|
84
|
-
handleCodeTitles()(tree);
|
|
85
|
-
// Should not remove the div since child is not text
|
|
86
|
-
expect(tree.children.length).toBe(2);
|
|
87
|
-
});
|
|
88
|
-
it("initializes properties on pre if missing", () => {
|
|
89
|
-
const pre = {
|
|
90
|
-
type: "element",
|
|
91
|
-
tagName: "pre",
|
|
92
|
-
children: [],
|
|
93
|
-
};
|
|
94
|
-
const tree = buildTree([titleDiv("test.js"), pre]);
|
|
95
|
-
handleCodeTitles()(tree);
|
|
96
|
-
expect(pre.properties?.["data-title"]).toBe("test.js");
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
//# sourceMappingURL=handleCodeTitles.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleCodeTitles.test.js","sourceRoot":"","sources":["../../../src/__tests__/plugins/handleCodeTitles.test.ts"],"names":[],"mappings":"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"}
|
package/dist/compile.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { compileMDX } from "next-mdx-remote/rsc";
|
|
2
|
-
import { serialize } from "next-mdx-remote/serialize";
|
|
3
|
-
import type { Node } from "unist";
|
|
4
|
-
import type { MdxCompileResult } from "./types";
|
|
5
|
-
import type { Pluggable } from "unified";
|
|
6
|
-
export { serialize };
|
|
7
|
-
export { MDXRemote } from "next-mdx-remote";
|
|
8
|
-
type CompileMdxInput = Parameters<typeof compileMDX<Record<string, unknown>>>[0];
|
|
9
|
-
type CompileMdxOptions = NonNullable<CompileMdxInput["options"]>;
|
|
10
|
-
type CompilerMdxOptions = NonNullable<CompileMdxOptions["mdxOptions"]>;
|
|
11
|
-
export type ParseMdxOptions = {
|
|
12
|
-
components?: CompileMdxInput["components"];
|
|
13
|
-
rehypePlugins?: CompilerMdxOptions["rehypePlugins"];
|
|
14
|
-
remarkPlugins?: CompilerMdxOptions["remarkPlugins"];
|
|
15
|
-
/**
|
|
16
|
-
* Whether to parse frontmatter during MDX compilation.
|
|
17
|
-
* Set to `false` when frontmatter is already extracted separately
|
|
18
|
-
* (e.g. via gray-matter) to avoid redundant parsing.
|
|
19
|
-
* Defaults to `true`.
|
|
20
|
-
*/
|
|
21
|
-
parseFrontmatter?: boolean;
|
|
22
|
-
};
|
|
23
|
-
export declare const preProcess: () => (tree: Node) => Node;
|
|
24
|
-
export declare const postProcess: () => (tree: Node) => Node;
|
|
25
|
-
export declare function createDefaultRehypePlugins(): Pluggable[];
|
|
26
|
-
export declare function createDefaultRemarkPlugins(): Pluggable[];
|
|
27
|
-
export declare function parseMdx<Frontmatter>(rawMdx: string, options?: ParseMdxOptions): Promise<MdxCompileResult<Frontmatter>>;
|
|
28
|
-
//# sourceMappingURL=compile.d.ts.map
|
package/dist/compile.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAUlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,CAAC;AAGrB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,KAAK,iBAAiB,GAAG,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;AACjE,KAAK,kBAAkB,GAAG,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;AAEvE,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C,aAAa,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD,aAAa,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACpD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,MAAM,IAAI,SA0B1C,CAAC;AAEF,eAAO,MAAM,WAAW,SAAU,MAAM,IAAI,SAiB3C,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,SAAS,EAAE,CAaxD;AAED,wBAAgB,0BAA0B,IAAI,SAAS,EAAE,CAExD;AAED,wBAAsB,QAAQ,CAAC,WAAW,EACxC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAiBxC"}
|
package/dist/compile.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { compileMDX } from "next-mdx-remote/rsc";
|
|
2
|
-
import { serialize } from "next-mdx-remote/serialize";
|
|
3
|
-
import { visit } from "unist-util-visit";
|
|
4
|
-
import remarkGfm from "remark-gfm";
|
|
5
|
-
import rehypePrism from "rehype-prism-plus";
|
|
6
|
-
import rehypeAutolinkHeadings from "rehype-autolink-headings";
|
|
7
|
-
import rehypeSlug from "rehype-slug";
|
|
8
|
-
import rehypeCodeTitles from "rehype-code-titles";
|
|
9
|
-
import { handleCodeTitles } from "./plugins/handleCodeTitles";
|
|
10
|
-
import { handleCodeExpandableRemark, handleCodeExpandable } from "./plugins/handleCodeExpandable";
|
|
11
|
-
import { rehypeMermaid } from "./plugins/rehypeMermaid";
|
|
12
|
-
// Re-export serialize for non-RSC usage
|
|
13
|
-
export { serialize };
|
|
14
|
-
// Re-export MDXRemote for client-side hydration
|
|
15
|
-
export { MDXRemote } from "next-mdx-remote";
|
|
16
|
-
export const preProcess = () => (tree) => {
|
|
17
|
-
visit(tree, (node) => {
|
|
18
|
-
const element = node;
|
|
19
|
-
if (element?.type === "element" && element?.tagName === "pre" && element.children) {
|
|
20
|
-
const [codeEl] = element.children;
|
|
21
|
-
if (codeEl.tagName !== "code" || !codeEl.children?.[0])
|
|
22
|
-
return;
|
|
23
|
-
const className = codeEl.properties?.className;
|
|
24
|
-
const classList = Array.isArray(className)
|
|
25
|
-
? className
|
|
26
|
-
: typeof className === "string"
|
|
27
|
-
? className.split(" ").filter(Boolean)
|
|
28
|
-
: [];
|
|
29
|
-
const languageClass = classList.find((item) => item.startsWith("language-"));
|
|
30
|
-
if (languageClass) {
|
|
31
|
-
element.language = languageClass.replace("language-", "").split(":")[0];
|
|
32
|
-
}
|
|
33
|
-
const textNode = codeEl.children[0];
|
|
34
|
-
if (textNode.type === "text" && textNode.value) {
|
|
35
|
-
element.raw = textNode.value;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return tree;
|
|
40
|
-
};
|
|
41
|
-
export const postProcess = () => (tree) => {
|
|
42
|
-
visit(tree, "element", (node) => {
|
|
43
|
-
const element = node;
|
|
44
|
-
if (element?.type === "element" && element?.tagName === "pre") {
|
|
45
|
-
if (element.properties && element.raw) {
|
|
46
|
-
element.properties.raw = element.raw;
|
|
47
|
-
}
|
|
48
|
-
if (element.properties && element.language && !element.properties["data-language"]) {
|
|
49
|
-
element.properties["data-language"] = element.language;
|
|
50
|
-
}
|
|
51
|
-
if (element.properties && element.codeTitle && !element.properties["data-title"]) {
|
|
52
|
-
element.properties["data-title"] = element.codeTitle;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return tree;
|
|
57
|
-
};
|
|
58
|
-
export function createDefaultRehypePlugins() {
|
|
59
|
-
return [
|
|
60
|
-
preProcess,
|
|
61
|
-
rehypeMermaid, // Transform ```mermaid before code transforms
|
|
62
|
-
rehypeCodeTitles,
|
|
63
|
-
handleCodeTitles,
|
|
64
|
-
handleCodeExpandable, // Copy expandable metadata from <code> to <pre> before prism transforms nodes.
|
|
65
|
-
rehypePrism,
|
|
66
|
-
handleCodeExpandable, // Re-apply expandable attrs after prism tokenization.
|
|
67
|
-
rehypeSlug,
|
|
68
|
-
rehypeAutolinkHeadings,
|
|
69
|
-
postProcess,
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
export function createDefaultRemarkPlugins() {
|
|
73
|
-
return [remarkGfm, handleCodeExpandableRemark];
|
|
74
|
-
}
|
|
75
|
-
export async function parseMdx(rawMdx, options = {}) {
|
|
76
|
-
const rehypePlugins = options.rehypePlugins ?? createDefaultRehypePlugins();
|
|
77
|
-
const remarkPlugins = options.remarkPlugins ?? createDefaultRemarkPlugins();
|
|
78
|
-
return await compileMDX({
|
|
79
|
-
source: rawMdx,
|
|
80
|
-
options: {
|
|
81
|
-
parseFrontmatter: options.parseFrontmatter ?? true,
|
|
82
|
-
mdxOptions: {
|
|
83
|
-
rehypePlugins,
|
|
84
|
-
remarkPlugins,
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
components: options.components,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=compile.js.map
|
package/dist/compile.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/content.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { type ParseMdxOptions } from "./compile";
|
|
2
|
-
import type { MdxCompileResult, TocItem } from "./types";
|
|
3
|
-
type CacheFn = <T extends (...args: any[]) => any>(fn: T) => T;
|
|
4
|
-
export type ReadMdxFileResult = {
|
|
5
|
-
content: string;
|
|
6
|
-
/** Relative path used for UI links (e.g. "docs/getting-started/index.mdx"). */
|
|
7
|
-
filePath: string;
|
|
8
|
-
/** Absolute path on disk — available when file was read by readMdxFileBySlug. */
|
|
9
|
-
absoluteFilePath?: string;
|
|
10
|
-
};
|
|
11
|
-
export type ParsedMdxFile<Frontmatter, T extends TocItem = TocItem> = {
|
|
12
|
-
/** Raw content with frontmatter block stripped — ready to pass to compileMDX. */
|
|
13
|
-
content: string;
|
|
14
|
-
filePath: string;
|
|
15
|
-
frontmatter: Frontmatter;
|
|
16
|
-
tocs: T[];
|
|
17
|
-
};
|
|
18
|
-
export type CompiledMdxFile<Frontmatter, T extends TocItem = TocItem> = MdxCompileResult<Frontmatter> & {
|
|
19
|
-
filePath: string;
|
|
20
|
-
tocs: T[];
|
|
21
|
-
};
|
|
22
|
-
type ReadMdxBySlugOptions = {
|
|
23
|
-
rootDir?: string;
|
|
24
|
-
docsDir?: string;
|
|
25
|
-
};
|
|
26
|
-
export declare function readMdxFileBySlug(slug: string, options?: ReadMdxBySlugOptions): Promise<ReadMdxFileResult>;
|
|
27
|
-
type ParseMdxFileOptions<T extends TocItem> = {
|
|
28
|
-
tocsExtractor?: (rawMdx: string) => T[];
|
|
29
|
-
};
|
|
30
|
-
export declare function parseMdxFile<Frontmatter, T extends TocItem = TocItem>(raw: ReadMdxFileResult, options?: ParseMdxFileOptions<T>): ParsedMdxFile<Frontmatter, T>;
|
|
31
|
-
export declare function compileParsedMdxFile<Frontmatter, T extends TocItem = TocItem>(parsed: ParsedMdxFile<Frontmatter, T>, options?: ParseMdxOptions): Promise<CompiledMdxFile<Frontmatter, T>>;
|
|
32
|
-
export type CreateMdxContentServiceOptions<Frontmatter, T extends TocItem = TocItem> = {
|
|
33
|
-
parseOptions?: ParseMdxOptions;
|
|
34
|
-
readOptions?: ReadMdxBySlugOptions;
|
|
35
|
-
tocsExtractor?: (rawMdx: string) => T[];
|
|
36
|
-
cacheFn?: CacheFn;
|
|
37
|
-
/**
|
|
38
|
-
* Optional hook to enrich or transform frontmatter after parsing.
|
|
39
|
-
* Called with the parsed frontmatter and the absolute file path.
|
|
40
|
-
* Runs at build time during static generation — ideal for injecting
|
|
41
|
-
* fallback values (e.g. git last-modified date when `date` is absent).
|
|
42
|
-
*/
|
|
43
|
-
frontmatterEnricher?: (frontmatter: Frontmatter, absoluteFilePath: string) => Frontmatter | Promise<Frontmatter>;
|
|
44
|
-
};
|
|
45
|
-
export declare function createMdxContentService<Frontmatter, T extends TocItem = TocItem>(options?: CreateMdxContentServiceOptions<Frontmatter, T>): {
|
|
46
|
-
getParsedForSlug: (slug: string) => Promise<ParsedMdxFile<Frontmatter, T>>;
|
|
47
|
-
getCompiledForSlug: (slug: string) => Promise<CompiledMdxFile<Frontmatter, T>>;
|
|
48
|
-
getFrontmatterForSlug: (slug: string) => Promise<Frontmatter>;
|
|
49
|
-
getTocsForSlug: (slug: string) => Promise<T[]>;
|
|
50
|
-
};
|
|
51
|
-
export {};
|
|
52
|
-
//# sourceMappingURL=content.d.ts.map
|
package/dist/content.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;IACpE,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,eAAe,CACzB,WAAW,EACX,CAAC,SAAS,OAAO,GAAG,OAAO,IACzB,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,CAAC,EAAE,CAAC;CACX,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CA2C5B;AAED,KAAK,mBAAmB,CAAC,CAAC,SAAS,OAAO,IAAI;IAC5C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;CACzC,CAAC;AAEF,wBAAgB,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EACnE,GAAG,EAAE,iBAAiB,EACtB,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM,GACnC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAY/B;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EACjF,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,EACrC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAc1C;AAED,MAAM,MAAM,8BAA8B,CAAC,WAAW,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;IACrF,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CACpB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,MAAM,KACrB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAC9E,OAAO,GAAE,8BAA8B,CAAC,WAAW,EAAE,CAAC,CAAM;6BAKd,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;+BAa9E,MAAM,KAAG,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;kCAMrB,MAAM,KAAG,OAAO,CAAC,WAAW,CAAC;2BAKpC,MAAM,KAAG,OAAO,CAAC,CAAC,EAAE,CAAC;EAW1D"}
|
package/dist/content.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import { promises as fs } from "fs";
|
|
3
|
-
import { extractFrontmatterWithContent, extractTocsFromRawMdx } from "./extract";
|
|
4
|
-
import { parseMdx } from "./compile";
|
|
5
|
-
export async function readMdxFileBySlug(slug, options = {}) {
|
|
6
|
-
if (!slug || slug.trim() === "") {
|
|
7
|
-
// Handle root slug as "index"
|
|
8
|
-
slug = "index";
|
|
9
|
-
}
|
|
10
|
-
const docsDir = options.docsDir ?? "docs";
|
|
11
|
-
// Keep file-system path operations ignored by Turbopack tracing.
|
|
12
|
-
// The runtime path is constrained to docsDir and slug candidates below.
|
|
13
|
-
const docsRoot = options.rootDir
|
|
14
|
-
? path.join(/*turbopackIgnore: true*/ options.rootDir, docsDir)
|
|
15
|
-
: path.join(/*turbopackIgnore: true*/ process.cwd(), docsDir);
|
|
16
|
-
// Resolve once for path-traversal guard — all candidate paths must stay
|
|
17
|
-
// escaping the docs directory, especially important with dynamicParams=true.
|
|
18
|
-
const resolvedRoot = path.resolve(/*turbopackIgnore: true*/ docsRoot);
|
|
19
|
-
const paths = [
|
|
20
|
-
path.join(/*turbopackIgnore: true*/ docsRoot, `${slug}.mdx`),
|
|
21
|
-
path.join(/*turbopackIgnore: true*/ docsRoot, slug, "index.mdx"),
|
|
22
|
-
];
|
|
23
|
-
// console.log(`Attempting to read slug: "${slug}", paths:`, paths); // Debug log
|
|
24
|
-
for (const p of paths) {
|
|
25
|
-
// Guard: reject any path that escapes the docs root.
|
|
26
|
-
const resolvedP = path.resolve(/*turbopackIgnore: true*/ p);
|
|
27
|
-
if (!resolvedP.startsWith(resolvedRoot + path.sep) && resolvedP !== resolvedRoot) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
const content = await fs.readFile(/*turbopackIgnore: true*/ p, "utf-8");
|
|
32
|
-
return {
|
|
33
|
-
content,
|
|
34
|
-
filePath: `${docsDir}/${path.relative(/*turbopackIgnore: true*/ docsRoot, p)}`,
|
|
35
|
-
absoluteFilePath: p,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
if (error.code === "ENOENT")
|
|
40
|
-
continue;
|
|
41
|
-
throw error;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
throw new Error("Could not find mdx file for the requested slug.");
|
|
45
|
-
}
|
|
46
|
-
export function parseMdxFile(raw, options = {}) {
|
|
47
|
-
const tocsExtractor = options.tocsExtractor ?? ((mdx) => extractTocsFromRawMdx(mdx));
|
|
48
|
-
// Extract frontmatter and stripped content in one gray-matter call.
|
|
49
|
-
// strippedContent is passed to compileMDX so it doesn't need to re-parse frontmatter.
|
|
50
|
-
const { frontmatter, strippedContent } = extractFrontmatterWithContent(raw.content);
|
|
51
|
-
return {
|
|
52
|
-
content: strippedContent,
|
|
53
|
-
filePath: raw.filePath,
|
|
54
|
-
frontmatter,
|
|
55
|
-
tocs: tocsExtractor(raw.content),
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export async function compileParsedMdxFile(parsed, options = {}) {
|
|
59
|
-
// Content in parsed is already stripped of frontmatter by parseMdxFile.
|
|
60
|
-
// Set parseFrontmatter:false — no re-parse needed, avoids double work.
|
|
61
|
-
const compiled = await parseMdx(parsed.content, {
|
|
62
|
-
...options,
|
|
63
|
-
parseFrontmatter: false,
|
|
64
|
-
});
|
|
65
|
-
return {
|
|
66
|
-
...compiled,
|
|
67
|
-
frontmatter: parsed.frontmatter,
|
|
68
|
-
filePath: parsed.filePath,
|
|
69
|
-
tocs: parsed.tocs,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export function createMdxContentService(options = {}) {
|
|
73
|
-
const identityCache = (fn) => fn;
|
|
74
|
-
const cacheFn = options.cacheFn ?? identityCache;
|
|
75
|
-
const getParsedForSlug = cacheFn(async (slug) => {
|
|
76
|
-
const raw = await readMdxFileBySlug(slug, options.readOptions);
|
|
77
|
-
const parsed = parseMdxFile(raw, { tocsExtractor: options.tocsExtractor });
|
|
78
|
-
if (options.frontmatterEnricher && raw.absoluteFilePath) {
|
|
79
|
-
parsed.frontmatter = await options.frontmatterEnricher(parsed.frontmatter, raw.absoluteFilePath);
|
|
80
|
-
}
|
|
81
|
-
return parsed;
|
|
82
|
-
});
|
|
83
|
-
const getCompiledForSlug = cacheFn(async (slug) => {
|
|
84
|
-
const parsed = await getParsedForSlug(slug);
|
|
85
|
-
return compileParsedMdxFile(parsed, options.parseOptions);
|
|
86
|
-
});
|
|
87
|
-
async function getFrontmatterForSlug(slug) {
|
|
88
|
-
const parsed = await getParsedForSlug(slug);
|
|
89
|
-
return parsed.frontmatter;
|
|
90
|
-
}
|
|
91
|
-
async function getTocsForSlug(slug) {
|
|
92
|
-
const parsed = await getParsedForSlug(slug);
|
|
93
|
-
return parsed.tocs;
|
|
94
|
-
}
|
|
95
|
-
return {
|
|
96
|
-
getParsedForSlug,
|
|
97
|
-
getCompiledForSlug,
|
|
98
|
-
getFrontmatterForSlug,
|
|
99
|
-
getTocsForSlug,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=content.js.map
|
package/dist/content.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
package/dist/extract.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { TocItem } from "./types";
|
|
2
|
-
export declare function sluggify(text: string): string;
|
|
3
|
-
export declare function extractTocsFromRawMdx(rawMdx: string): TocItem[];
|
|
4
|
-
export declare function extractFrontmatter<Frontmatter>(content: string): Frontmatter;
|
|
5
|
-
/**
|
|
6
|
-
* Extract frontmatter and return both the parsed data and the content
|
|
7
|
-
* with the frontmatter block stripped. Avoids a second parse by compileMDX.
|
|
8
|
-
*/
|
|
9
|
-
export declare function extractFrontmatterWithContent<Frontmatter>(content: string): {
|
|
10
|
-
frontmatter: Frontmatter;
|
|
11
|
-
strippedContent: string;
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=extract.d.ts.map
|
package/dist/extract.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C;AAyBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAmD/D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAO5E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG;IAC3E,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAQA"}
|