@dogsbay/format-mkdocs 0.2.0-beta.127 → 0.2.0-beta.129
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/importer.js +3 -1
- package/dist/loader.d.ts +1 -1
- package/dist/loader.js +27 -6
- package/package.json +6 -6
package/dist/importer.js
CHANGED
|
@@ -75,7 +75,9 @@ export async function importMkdocsProject(sourceDir, opts = {}) {
|
|
|
75
75
|
const parseOpts = {
|
|
76
76
|
collapse: false,
|
|
77
77
|
youtubeEmbed: true,
|
|
78
|
-
diagrams
|
|
78
|
+
// `content.diagrams` (false, true, "mermaid-cli" or "pele"); it was always true here, so
|
|
79
|
+
// `content.diagrams: false` did not reach MkDocs sources
|
|
80
|
+
diagrams: opts.diagrams ?? true,
|
|
79
81
|
};
|
|
80
82
|
// Detect mkdocstrings autodoc config
|
|
81
83
|
const mkdocstringsConfig = extractMkdocstringsConfig(config.raw, sourceDir);
|
package/dist/loader.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export declare function parseMkdocsMarkdown(source: string, md: MarkdownIt, opti
|
|
|
33
33
|
collapse?: boolean;
|
|
34
34
|
env?: Record<string, unknown>;
|
|
35
35
|
youtubeEmbed?: boolean;
|
|
36
|
-
diagrams?: boolean;
|
|
36
|
+
diagrams?: boolean | "mermaid-cli" | "pele";
|
|
37
37
|
autodoc?: {
|
|
38
38
|
sourceRoot: string;
|
|
39
39
|
globalOptions?: Record<string, unknown>;
|
package/dist/loader.js
CHANGED
|
@@ -37,9 +37,10 @@ export async function parseMkdocsMarkdown(source, md, options) {
|
|
|
37
37
|
if (options?.youtubeEmbed) {
|
|
38
38
|
liftYouTubeEmbeds(tree);
|
|
39
39
|
}
|
|
40
|
-
// Render diagram code blocks (mermaid etc.) to SVG (opt-in)
|
|
40
|
+
// Render diagram code blocks (mermaid etc.) to SVG (opt-in): mmdc, or Pele
|
|
41
|
+
// (`content.diagrams: pele`, plans/pele-diagrams.md)
|
|
41
42
|
if (options?.diagrams) {
|
|
42
|
-
await renderDiagrams(tree);
|
|
43
|
+
await renderDiagrams(tree, options.diagrams === "pele" ? "pele" : "mermaid-cli");
|
|
43
44
|
}
|
|
44
45
|
// Convert api-params HTML comments into structured TreeNodes
|
|
45
46
|
convertApiParams(tree, md);
|
|
@@ -182,14 +183,31 @@ const DIAGRAM_LANGS = new Set(["mermaid"]);
|
|
|
182
183
|
* into { type: "diagram", props: { lang: "mermaid", code: "...", svg: "..." } }.
|
|
183
184
|
* Source code is preserved for round-trip export and search.
|
|
184
185
|
*/
|
|
185
|
-
async function renderDiagrams(nodes) {
|
|
186
|
+
async function renderDiagrams(nodes, engine) {
|
|
186
187
|
let renderMermaidSvg;
|
|
188
|
+
const failed = [];
|
|
187
189
|
try {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
+
if (engine === "pele") {
|
|
191
|
+
// format-dogsbay-md's Pele renderer: one per page, so a repeated diagram gets its own ids
|
|
192
|
+
const { renderPeleSvg, diagramId } = await import("@dogsbay/format-dogsbay-md");
|
|
193
|
+
const seen = new Map();
|
|
194
|
+
renderMermaidSvg = async (code) => {
|
|
195
|
+
const base = diagramId(code);
|
|
196
|
+
const n = (seen.get(base) ?? 0) + 1;
|
|
197
|
+
seen.set(base, n);
|
|
198
|
+
const r = await renderPeleSvg(code, n === 1 ? base : `${base}-${n}`);
|
|
199
|
+
if ("error" in r)
|
|
200
|
+
failed.push(r.error);
|
|
201
|
+
return "svg" in r ? r.svg : null;
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const mod = await import("./renderers/mermaid.js");
|
|
206
|
+
renderMermaidSvg = mod.renderMermaidSvg;
|
|
207
|
+
}
|
|
190
208
|
}
|
|
191
209
|
catch (e) {
|
|
192
|
-
console.warn("[diagrams] could not load
|
|
210
|
+
console.warn("[diagrams] could not load the diagram renderer:", e);
|
|
193
211
|
return;
|
|
194
212
|
}
|
|
195
213
|
async function walk(nodes) {
|
|
@@ -217,6 +235,9 @@ async function renderDiagrams(nodes) {
|
|
|
217
235
|
}
|
|
218
236
|
}
|
|
219
237
|
await walk(nodes);
|
|
238
|
+
if (failed.length > 0) {
|
|
239
|
+
console.warn(`[diagrams] Pele could not draw ${failed.length} diagram(s), left as code blocks: ${failed[0].split("\n")[0].slice(0, 160)}`);
|
|
240
|
+
}
|
|
220
241
|
}
|
|
221
242
|
/**
|
|
222
243
|
* Extract heading info for table of contents.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dogsbay/format-mkdocs",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.129",
|
|
4
4
|
"description": "MkDocs format plugin for Dogsbay — import/export MkDocs projects via TreeNode[]",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,8 +38,7 @@
|
|
|
38
38
|
"markdown-it": "^14.1.0",
|
|
39
39
|
"tsx": "^4.23.1",
|
|
40
40
|
"typescript": "^5.9.3",
|
|
41
|
-
"vitest": "^4.1.10"
|
|
42
|
-
"@dogsbay/format-dogsbay-md": "0.2.0-beta.127"
|
|
41
|
+
"vitest": "^4.1.10"
|
|
43
42
|
},
|
|
44
43
|
"license": "MIT",
|
|
45
44
|
"dependencies": {
|
|
@@ -47,9 +46,10 @@
|
|
|
47
46
|
"markdown-it-deflist": "^3.0.1",
|
|
48
47
|
"nunjucks": "^3.2.4",
|
|
49
48
|
"yaml": "^2.9.0",
|
|
50
|
-
"@dogsbay/autodoc-python": "0.2.0-beta.
|
|
51
|
-
"@dogsbay/
|
|
52
|
-
"@dogsbay/serialize-core": "0.2.0-beta.
|
|
49
|
+
"@dogsbay/autodoc-python": "0.2.0-beta.129",
|
|
50
|
+
"@dogsbay/format-dogsbay-md": "0.2.0-beta.129",
|
|
51
|
+
"@dogsbay/serialize-core": "0.2.0-beta.129",
|
|
52
|
+
"@dogsbay/types": "0.2.0-beta.129"
|
|
53
53
|
},
|
|
54
54
|
"repository": {
|
|
55
55
|
"type": "git",
|