boltdocs 2.8.3 → 2.9.0
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/bin/boltdocs.js +7 -6
- package/dist/{banner-MynZD_Ox.d.cts → banner-C_xkGxzI.d.cts} +1 -1
- package/dist/{banner-3N4Jd_L9.d.ts → banner-D2NddBfF.d.ts} +1 -1
- package/dist/cache-C2PiGyg8.cjs +6 -0
- package/dist/cache-DFW4R3S0.mjs +6 -0
- package/dist/chunk-Ds5LZdWN.cjs +6 -0
- package/dist/client/index.cjs +693 -488
- package/dist/client/index.d.cts +74 -8
- package/dist/client/index.d.ts +74 -8
- package/dist/client/index.js +692 -489
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +4 -4
- package/dist/client/primitives.d.cts +1 -1
- package/dist/client/primitives.d.ts +1 -1
- package/dist/client/primitives.js +4 -4
- package/dist/client/theme/neutral.css +5 -3
- package/dist/client/theme/reset.css +19 -0
- package/dist/{docs-layout-CwCq42Zt.cjs → docs-layout-3TpAt6MB.cjs} +302 -248
- package/dist/{docs-layout-Dn6S5g59.js → docs-layout-6FQ8__ok.js} +303 -249
- package/dist/doctor-BY1tSmQd.mjs +34 -0
- package/dist/{doctor-DyNUVe96.cjs → doctor-Bknon8f5.cjs} +1 -1
- package/dist/doctor-DcFLi4t1.cjs +34 -0
- package/dist/{doctor-aN_leTbh.mjs → doctor-wsPTzt8Y.mjs} +1 -1
- package/dist/{generator-CC2yHzhZ.cjs → generator-BEIF6MOx.cjs} +2 -2
- package/dist/{generator-BHCrLU6h.mjs → generator-DILs0EFN.mjs} +1 -1
- package/dist/handler-B31cxNw0.mjs +6 -0
- package/dist/handler-DfhH9D1b.mjs +28 -0
- package/dist/handler-Djy0HfsI.cjs +28 -0
- package/dist/{icons-dev-DvJ-hh9x.cjs → icons-dev-BryEFkJu.cjs} +96 -7
- package/dist/{icons-dev-Oju24Wjp.js → icons-dev-kJyGWNeg.js} +79 -8
- package/dist/{image-Ch4-GxdO.cjs → image-B9YA_oQ_.cjs} +24 -10
- package/dist/{image-Do8V9PCW.js → image-CjYu9Eml.js} +24 -10
- package/dist/{mdx-5oeCOFhH.js → mdx-Cy_c2zio.js} +116 -33
- package/dist/{mdx-BGM7LjW5.cjs → mdx-WXjAMS8Y.cjs} +121 -32
- package/dist/{meta-loader-Cv9O0Pzl.cjs → meta-loader-D0V6oOQt.cjs} +1 -1
- package/dist/node/cli-entry.cjs +3 -3
- package/dist/node/cli-entry.mjs +3 -3
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +368 -24
- package/dist/node/index.d.mts +369 -24
- package/dist/node/index.mjs +1 -1
- package/dist/node/routes/worker.cjs +1 -1
- package/dist/node/routes/worker.mjs +1 -1
- package/dist/node-DV-EPtMU.mjs +160 -0
- package/dist/node-vOVNRABe.cjs +160 -0
- package/dist/{package-CHxJV4Jy.mjs → package-BK_82QLX.mjs} +1 -1
- package/dist/{package-B_SoaGeu.cjs → package-OxKE0p6j.cjs} +1 -1
- package/dist/{parser-B7-6PyQz.cjs → parser-C2Pw18LY.cjs} +1 -1
- package/dist/{parser-BzB-zCkF.cjs → parser-DJoEF96Y.cjs} +1 -1
- package/dist/{parser-D0PVghVt.mjs → parser-DScG_PTs.mjs} +1 -1
- package/dist/routes--LYHSHT7.cjs +6 -0
- package/dist/routes-BAsfsn_e.mjs +6 -0
- package/dist/routes-C6Kr2HFN.cjs +6 -0
- package/dist/routes-CKgGAy8P.mjs +6 -0
- package/dist/{search-dialog-BXVoecTx.cjs → search-dialog-BhXg05Ri.cjs} +1 -1
- package/dist/{search-dialog-BYhOov4S.cjs → search-dialog-BsAiQgnx.cjs} +2 -2
- package/dist/{search-dialog-C09riYmx.js → search-dialog-CaOO1Q4i.js} +2 -2
- package/dist/{search-dialog-CUeAfy-8.cjs → search-dialog-CzwvKoLW.cjs} +1 -1
- package/dist/{search-dialog-DHc_8FFX.js → search-dialog-DRNJsxOv.js} +1 -1
- package/dist/{search-dialog-D8gLkhUV.js → search-dialog-DaR66wl0.js} +1 -1
- package/dist/shiki-adapter-CUtj-xKv.cjs +6 -0
- package/dist/shiki-adapter-EZptJAmW.mjs +6 -0
- package/dist/shiki-adapter-F-P-lDon.mjs +6 -0
- package/dist/shiki-adapter-PQBl32AN.cjs +6 -0
- package/dist/{sidebar-Dlkgbxs6.d.cts → sidebar-BtJyWHy4.d.cts} +43 -4
- package/dist/{sidebar-DNq4_ZAa.d.ts → sidebar-C4fuRYYS.d.ts} +43 -4
- package/dist/{utils-BYITg7T5.mjs → utils-DC4Wq-S2.mjs} +1 -1
- package/dist/{utils-Cjmx1hhk.cjs → utils-wHud9ny5.cjs} +1 -1
- package/dist/worker-pool-BS1LX67P.cjs +6 -0
- package/dist/worker-pool-DRv8ef4z.mjs +6 -0
- package/package.json +7 -3
- package/src/shared/types.ts +36 -3
- package/dist/cache-BMUyNiiA.mjs +0 -6
- package/dist/cache-CKm45d2w.cjs +0 -6
- package/dist/chunk-CU-zTemE.cjs +0 -6
- package/dist/doctor-BArviV8X.cjs +0 -28
- package/dist/doctor-CgLA7_Uv.mjs +0 -28
- package/dist/node-MsTvOgJN.mjs +0 -159
- package/dist/node-h9HmhAFB.cjs +0 -159
- package/dist/routes-BW6Dif_K.mjs +0 -6
- package/dist/routes-DJNJ-rTt.cjs +0 -6
- package/dist/routes-DiYC4nD2.cjs +0 -6
- package/dist/routes-ERSGuFQK.mjs +0 -6
- package/dist/worker-pool-CtqklOXq.cjs +0 -6
- package/dist/worker-pool-k0DY6k8T.mjs +0 -6
- /package/dist/{meta-loader-DzwDFtdT.mjs → meta-loader-By22EnYa.mjs} +0 -0
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
const require_icons_dev = require('./icons-dev-
|
|
7
|
-
const require_image = require('./image-
|
|
6
|
+
const require_icons_dev = require('./icons-dev-BryEFkJu.cjs');
|
|
7
|
+
const require_image = require('./image-B9YA_oQ_.cjs');
|
|
8
8
|
let react = require("react");
|
|
9
9
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
10
|
let react_aria_components = require("react-aria-components");
|
|
@@ -248,12 +248,66 @@ const copyToClipboard = async (text) => {
|
|
|
248
248
|
|
|
249
249
|
//#endregion
|
|
250
250
|
//#region src/client/components/mdx/use-code-block.ts
|
|
251
|
+
const langIconMap = {
|
|
252
|
+
ts: require_icons_dev.TypeScript,
|
|
253
|
+
tsx: require_icons_dev.React,
|
|
254
|
+
js: require_icons_dev.JavaScript,
|
|
255
|
+
jsx: require_icons_dev.React,
|
|
256
|
+
json: require_icons_dev.Json,
|
|
257
|
+
css: require_icons_dev.Css,
|
|
258
|
+
html: require_icons_dev.BracketsOrange,
|
|
259
|
+
md: require_icons_dev.Markdown,
|
|
260
|
+
mdx: require_icons_dev.Markdown,
|
|
261
|
+
bash: require_icons_dev.Shell,
|
|
262
|
+
sh: require_icons_dev.Shell,
|
|
263
|
+
yaml: require_icons_dev.Yaml,
|
|
264
|
+
yml: require_icons_dev.Yaml,
|
|
265
|
+
rs: require_icons_dev.Rust,
|
|
266
|
+
rust: require_icons_dev.Rust,
|
|
267
|
+
toml: require_icons_dev.BracketsRed,
|
|
268
|
+
csv: require_icons_dev.Csv
|
|
269
|
+
};
|
|
251
270
|
function useCodeBlock(props) {
|
|
252
271
|
const [copied, setCopied] = (0, react.useState)(false);
|
|
253
272
|
const [isExpanded, setIsExpanded] = (0, react.useState)(false);
|
|
254
273
|
const [isExpandable, setIsExpandable] = (0, react.useState)(false);
|
|
255
274
|
const preRef = (0, react.useRef)(null);
|
|
256
275
|
const timerRef = (0, react.useRef)(null);
|
|
276
|
+
const [rated, setRated] = (0, react.useState)(null);
|
|
277
|
+
const customConfig = require_icons_dev.useConfig().integrations?.feedback?.custom;
|
|
278
|
+
const showCodeBlockFeedback = !!(customConfig?.enabled && !props.plain);
|
|
279
|
+
const lang = props.lang || props["data-lang"] || "";
|
|
280
|
+
const isHighlighted = props["data-highlighted"] === "true" || typeof props.className === "string" && props.className.includes("shiki");
|
|
281
|
+
const rawHighlightedHtml = props.highlightedHtml || props["data-highlighted-html"];
|
|
282
|
+
const effectiveHighlightedHtml = typeof rawHighlightedHtml === "string" ? rawHighlightedHtml.replace(/<span class="line">\s*(?:<span[^>]*>\s*<\/span>)?\s*<\/span>\s*(<\/code>\s*<\/pre>)/g, "$1") : rawHighlightedHtml;
|
|
283
|
+
const effectiveTitle = props.title || props["data-title"];
|
|
284
|
+
const handleRate = (0, react.useCallback)(async (type) => {
|
|
285
|
+
if (rated) return;
|
|
286
|
+
setRated(type);
|
|
287
|
+
try {
|
|
288
|
+
const code = preRef.current?.textContent ?? "";
|
|
289
|
+
const snippet = code.trim().slice(0, 100) + (code.length > 100 ? "..." : "");
|
|
290
|
+
const blockId = `Code Block (${lang || "plain"}): \`${snippet}\``;
|
|
291
|
+
const endpoint = customConfig?.endpoint || "/api/feedback";
|
|
292
|
+
await fetch(endpoint, {
|
|
293
|
+
method: "POST",
|
|
294
|
+
headers: { "Content-Type": "application/json" },
|
|
295
|
+
body: JSON.stringify({
|
|
296
|
+
rating: type === "up" ? "good" : "bad",
|
|
297
|
+
comment: `Rated code block: ${type === "up" ? "Helpful" : "Unhelpful"}`,
|
|
298
|
+
path: window.location.pathname,
|
|
299
|
+
title: document.title,
|
|
300
|
+
blockId
|
|
301
|
+
})
|
|
302
|
+
});
|
|
303
|
+
} catch (err) {
|
|
304
|
+
console.error("Failed to submit code block feedback:", err);
|
|
305
|
+
}
|
|
306
|
+
}, [
|
|
307
|
+
rated,
|
|
308
|
+
lang,
|
|
309
|
+
customConfig?.endpoint
|
|
310
|
+
]);
|
|
257
311
|
(0, react.useEffect)(() => {
|
|
258
312
|
return () => {
|
|
259
313
|
if (timerRef.current) clearTimeout(timerRef.current);
|
|
@@ -272,6 +326,7 @@ function useCodeBlock(props) {
|
|
|
272
326
|
const lines = (preRef.current?.textContent ?? "").trim().split("\n").length;
|
|
273
327
|
setIsExpandable(lines > 6);
|
|
274
328
|
}, [props.children, props.highlightedHtml]);
|
|
329
|
+
const LangIcon = langIconMap[lang] || require_icons_dev.File;
|
|
275
330
|
return {
|
|
276
331
|
copied,
|
|
277
332
|
isExpanded,
|
|
@@ -279,31 +334,20 @@ function useCodeBlock(props) {
|
|
|
279
334
|
isExpandable,
|
|
280
335
|
preRef,
|
|
281
336
|
handleCopy,
|
|
282
|
-
shouldTruncate: isExpandable && !isExpanded
|
|
337
|
+
shouldTruncate: isExpandable && !isExpanded,
|
|
338
|
+
isHighlighted,
|
|
339
|
+
effectiveHighlightedHtml,
|
|
340
|
+
effectiveTitle,
|
|
341
|
+
lang,
|
|
342
|
+
showCodeBlockFeedback,
|
|
343
|
+
rated,
|
|
344
|
+
handleRate,
|
|
345
|
+
LangIcon
|
|
283
346
|
};
|
|
284
347
|
}
|
|
285
348
|
|
|
286
349
|
//#endregion
|
|
287
350
|
//#region src/client/components/mdx/code-block.tsx
|
|
288
|
-
const langIconMap = {
|
|
289
|
-
ts: require_icons_dev.TypeScript,
|
|
290
|
-
tsx: require_icons_dev.React,
|
|
291
|
-
js: require_icons_dev.JavaScript,
|
|
292
|
-
jsx: require_icons_dev.React,
|
|
293
|
-
json: require_icons_dev.Json,
|
|
294
|
-
css: require_icons_dev.Css,
|
|
295
|
-
html: require_icons_dev.BracketsOrange,
|
|
296
|
-
md: require_icons_dev.Markdown,
|
|
297
|
-
mdx: require_icons_dev.Markdown,
|
|
298
|
-
bash: require_icons_dev.Shell,
|
|
299
|
-
sh: require_icons_dev.Shell,
|
|
300
|
-
yaml: require_icons_dev.Yaml,
|
|
301
|
-
yml: require_icons_dev.Yaml,
|
|
302
|
-
rs: require_icons_dev.Rust,
|
|
303
|
-
rust: require_icons_dev.Rust,
|
|
304
|
-
toml: require_icons_dev.BracketsRed,
|
|
305
|
-
csv: require_icons_dev.Csv
|
|
306
|
-
};
|
|
307
351
|
const CopyButton = ({ copied, handleCopy }) => {
|
|
308
352
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_image.Tooltip, {
|
|
309
353
|
content: copied ? "Copied!" : "Copy code",
|
|
@@ -315,16 +359,52 @@ const CopyButton = ({ copied, handleCopy }) => {
|
|
|
315
359
|
})
|
|
316
360
|
});
|
|
317
361
|
};
|
|
362
|
+
const CodeBlockFeedback = ({ rated, onRate }) => {
|
|
363
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
364
|
+
className: "flex items-center gap-0.5 border-r border-subtle pr-1.5 mr-1",
|
|
365
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_image.Tooltip, {
|
|
366
|
+
content: rated === "up" ? "Helpful!" : "This code is helpful",
|
|
367
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_aria_components.Button, {
|
|
368
|
+
onPress: () => onRate("up"),
|
|
369
|
+
disabled: rated !== null,
|
|
370
|
+
className: require_icons_dev.cn("grid place-items-center size-8 bg-transparent outline-none cursor-pointer transition-all duration-200 hover:scale-110 active:scale-95 [&>svg]:size-4 [&>svg]:stroke-2 z-10", rated === "up" ? "text-emerald-500 dark:text-emerald-400" : rated === "down" ? "opacity-30 cursor-not-allowed text-muted" : "text-muted hover:text-body"),
|
|
371
|
+
"aria-label": "Mark as helpful",
|
|
372
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
373
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
374
|
+
viewBox: "0 0 24 24",
|
|
375
|
+
fill: "none",
|
|
376
|
+
stroke: "currentColor",
|
|
377
|
+
strokeWidth: "2",
|
|
378
|
+
strokeLinecap: "round",
|
|
379
|
+
strokeLinejoin: "round",
|
|
380
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3" })
|
|
381
|
+
})
|
|
382
|
+
})
|
|
383
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_image.Tooltip, {
|
|
384
|
+
content: rated === "down" ? "Unhelpful" : "This code is unhelpful",
|
|
385
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_aria_components.Button, {
|
|
386
|
+
onPress: () => onRate("down"),
|
|
387
|
+
disabled: rated !== null,
|
|
388
|
+
className: require_icons_dev.cn("grid place-items-center size-8 bg-transparent outline-none cursor-pointer transition-all duration-200 hover:scale-110 active:scale-95 [&>svg]:size-4 [&>svg]:stroke-2 z-10", rated === "down" ? "text-rose-500 dark:text-rose-400" : rated === "up" ? "opacity-30 cursor-not-allowed text-muted" : "text-muted hover:text-body"),
|
|
389
|
+
"aria-label": "Mark as unhelpful",
|
|
390
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
391
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
392
|
+
viewBox: "0 0 24 24",
|
|
393
|
+
fill: "none",
|
|
394
|
+
stroke: "currentColor",
|
|
395
|
+
strokeWidth: "2",
|
|
396
|
+
strokeLinecap: "round",
|
|
397
|
+
strokeLinejoin: "round",
|
|
398
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h3a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2h-3" })
|
|
399
|
+
})
|
|
400
|
+
})
|
|
401
|
+
})]
|
|
402
|
+
});
|
|
403
|
+
};
|
|
318
404
|
function CodeBlock(props) {
|
|
319
405
|
const { children, hideCopy = false, highlightedHtml, "data-highlighted-html": dataHighlightedHtml, title, "data-title": dataTitle, "data-lang": dataLang, plain = false, lineNumbers, showLineNumbers, wordWrap, "word-wrap": wordWrapHyphen, metastring, ...rest } = props;
|
|
320
406
|
const { className: shikiClassName, ...cleanRest } = rest;
|
|
321
|
-
const
|
|
322
|
-
const rawHighlightedHtml = highlightedHtml || dataHighlightedHtml;
|
|
323
|
-
const effectiveHighlightedHtml = typeof rawHighlightedHtml === "string" ? rawHighlightedHtml.replace(/<span class="line">\s*(?:<span[^>]*>\s*<\/span>)?\s*<\/span>\s*(<\/code>\s*<\/pre>)/g, "$1") : rawHighlightedHtml;
|
|
324
|
-
const effectiveTitle = title || dataTitle;
|
|
325
|
-
const lang = props.lang || dataLang || "";
|
|
326
|
-
const { copied, isExpanded, setIsExpanded, isExpandable, preRef, handleCopy, shouldTruncate } = useCodeBlock(props);
|
|
327
|
-
const LangIcon = langIconMap[lang];
|
|
407
|
+
const { copied, isExpanded, setIsExpanded, isExpandable, preRef, handleCopy, shouldTruncate, isHighlighted, effectiveHighlightedHtml, effectiveTitle, showCodeBlockFeedback, rated, handleRate, LangIcon } = useCodeBlock(props);
|
|
328
408
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_image.CodeBlock, {
|
|
329
409
|
plain,
|
|
330
410
|
className: props.className,
|
|
@@ -333,12 +413,15 @@ function CodeBlock(props) {
|
|
|
333
413
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_image.CodeBlockGroup, { children: effectiveTitle && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [LangIcon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LangIcon, { size: 14 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons_dev.File, {
|
|
334
414
|
size: 14,
|
|
335
415
|
className: "opacity-60"
|
|
336
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: effectiveTitle })] }) }), /* @__PURE__ */ (0, react_jsx_runtime.
|
|
416
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: effectiveTitle })] }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
337
417
|
className: "flex items-center gap-1",
|
|
338
|
-
children:
|
|
418
|
+
children: [showCodeBlockFeedback && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CodeBlockFeedback, {
|
|
419
|
+
rated,
|
|
420
|
+
onRate: handleRate
|
|
421
|
+
}), !hideCopy && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyButton, {
|
|
339
422
|
copied,
|
|
340
423
|
handleCopy
|
|
341
|
-
})
|
|
424
|
+
})]
|
|
342
425
|
})]
|
|
343
426
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_image.CodeBlockContent, {
|
|
344
427
|
shouldTruncate,
|
|
@@ -532,4 +615,10 @@ Object.defineProperty(exports, 'mdx_components_default', {
|
|
|
532
615
|
get: function () {
|
|
533
616
|
return mdx_components_default;
|
|
534
617
|
}
|
|
618
|
+
});
|
|
619
|
+
Object.defineProperty(exports, 'useCodeBlock', {
|
|
620
|
+
enumerable: true,
|
|
621
|
+
get: function () {
|
|
622
|
+
return useCodeBlock;
|
|
623
|
+
}
|
|
535
624
|
});
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
const e=require(`./chunk-
|
|
6
|
+
const e=require(`./chunk-Ds5LZdWN.cjs`);let t=require(`node:path`);t=e.n(t);let n=require(`fdir`),r=require(`@bdocs/dui`),i=require(`node:fs/promises`);i=e.n(i);async function a(e){let a={};try{let o=(await new n.fdir().withFullPaths().filter(e=>e.endsWith(`meta.json`)).crawl(e).withPromise()).filter(e=>{let n=t.default.basename(e);return n===`meta.json`||n===`_meta.json`}),s=await Promise.allSettled(o.map(async n=>{let r=await i.default.readFile(n,`utf-8`),a=t.default.relative(e,t.default.dirname(n)).replace(/\\/g,`/`);return{key:a===``?`.`:a,content:JSON.parse(r)}}));for(let e of s)e.status===`fulfilled`?a[e.value.key]=e.value.content:(0,r.warn)(`Failed to read meta.json:`,e.reason)}catch(e){(0,r.error)(`Error loading directory metadata:`,e)}return a}exports.loadDirectoryMeta=a;
|
package/dist/node/cli-entry.cjs
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* Copyright (c) 2026 Jesus Alcala
|
|
5
5
|
* Licensed under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
const e=require(`../chunk-
|
|
8
|
-
`+(0,
|
|
9
|
-
`),
|
|
7
|
+
const e=require(`../chunk-Ds5LZdWN.cjs`),t=require(`../cache-C2PiGyg8.cjs`),n=require(`../doctor-DcFLi4t1.cjs`),r=require(`../node-vOVNRABe.cjs`);let i=require(`node:path`);i=e.n(i);let a=require(`node:fs`);a=e.n(a);let o=require(`vite`),s=require(`@bdocs/dui`),c=require(`node:fs/promises`);c=e.n(c);let l=require(`@bdocs/ssg/node`),u=require(`cac`);u=e.n(u);function d(e){let t=e;for(;t&&t!==i.default.dirname(t);){if(a.default.existsSync(i.default.join(t,`.git`))||a.default.existsSync(i.default.join(t,`pnpm-workspace.yaml`)))return t;t=i.default.dirname(t)}t=e;let n=e;for(;t&&t!==i.default.dirname(t);)a.default.existsSync(i.default.join(t,`package.json`))&&(n=t),t=i.default.dirname(t);return n}let f=d(process.cwd());function p(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=i.default.resolve(f,t),r=i.default.relative(f,n),a=r.startsWith(`..`)||i.default.isAbsolute(r),o=n.split(i.default.sep),s=o.some(e=>e.startsWith(`.env`)),c=o.some((e,t)=>{if(e===`node_modules`){let e=o[t+1];return!e||!e.startsWith(`.`)}return!1});if(a||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function m(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function h(){let e=a.default.writeFile;a.default.writeFile=((t,...n)=>{try{p(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(a.default,t,...n)});let t=a.default.writeFileSync;a.default.writeFileSync=(e,...n)=>(p(e),t.call(a.default,e,...n));let n=a.default.rm;a.default.rm=((e,...t)=>{try{p(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(a.default,e,...t)});let r=a.default.rmSync;a.default.rmSync=(e,...t)=>(p(e),r.call(a.default,e,...t));let i=a.default.unlink;a.default.unlink=((e,...t)=>{try{p(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(a.default,e,...t)});let o=a.default.unlinkSync;a.default.unlinkSync=(e,...t)=>(p(e),o.call(a.default,e,...t));let s=a.default.mkdir;a.default.mkdir=((e,...t)=>{try{p(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return s.call(a.default,e,...t)});let l=a.default.mkdirSync;a.default.mkdirSync=(e,...t)=>(p(e),l.call(a.default,e,...t));let u=a.default.rmdir;a.default.rmdir=((e,...t)=>{try{p(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return u.call(a.default,e,...t)});let d=a.default.rmdirSync;a.default.rmdirSync=(e,...t)=>(p(e),d.call(a.default,e,...t));let f=a.default.appendFile;a.default.appendFile=((e,...t)=>{try{p(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return f.call(a.default,e,...t)});let h=a.default.appendFileSync;a.default.appendFileSync=(e,...t)=>(p(e),h.call(a.default,e,...t));let g=a.default.copyFile;a.default.copyFile=((e,t,...n)=>{try{p(e),p(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return g.call(a.default,e,t,...n)});let _=a.default.copyFileSync;a.default.copyFileSync=(e,t,...n)=>(p(e),p(t),_.call(a.default,e,t,...n));let v=a.default.rename;a.default.rename=((e,t,...n)=>{try{p(e),p(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return v.call(a.default,e,t,...n)});let y=a.default.renameSync;a.default.renameSync=(e,t,...n)=>(p(e),p(t),y.call(a.default,e,t,...n));let b=a.default.createWriteStream;a.default.createWriteStream=(e,...t)=>(p(e),b.call(a.default,e,...t));let x=a.default.open;a.default.open=((e,t,...n)=>{if(m(typeof t==`function`?void 0:t))try{p(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return x.call(a.default,e,t,...n)});let S=a.default.openSync;a.default.openSync=(e,t,...n)=>(m(t)&&p(e),S.call(a.default,e,t,...n));let C=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(p(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(p(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(p(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(p(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(p(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(p(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(p(t),p(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(p(t),p(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(m(n)&&p(t),l.call(e,t,n,...r)))};C(a.default.promises),C(c.default)}let g=!1;async function _(e=process.cwd(),t={}){if(g)return;g=!0,n.d();let a;try{a=await n.h(i.default.resolve(e,`docs`),e),r.w(a,e)}catch{}try{let i=await r.n(e,`development`,a);i.logLevel=`warn`,i.clearScreen=!1,t.port!==void 0&&(i.server=i.server||{},i.server.port=Number(t.port)),t.host!==void 0&&(i.server=i.server||{},i.server.host=t.host),t.force&&(i.optimizeDeps=i.optimizeDeps||{},i.optimizeDeps.force=!0);let o=await(0,l.createServer)(i);await o.listen();let s=o.resolvedUrls;console.log(n.f(s?.local?.[0]??`http://localhost:${t.port??5173}`,s?.network?.[0]??null)),o.bindCLIShortcuts({print:!1})}catch(e){(0,s.error)(`Failed to start dev server:`,e),process.exit(1)}}async function v(e=process.cwd()){n.d();try{let n=await r.C().run({root:e,timing:{}});n.success||((0,s.error)(`Build failed at step "${n.failedStep}":`,n.error),await t.a(),process.exit(1)),console.log((0,s.double)([`SSG build completed in ${(Math.round(n.timing.total)/1e3).toFixed(1)}s`,``,`${s.colors.cyan(`boltdocs`)} documentation is ready at ${s.colors.green(`dist/`)}`])),await t.a(),process.exit(0)}catch(e){(0,s.error)(`Build failed:`,e),await t.a(),process.exit(1)}}async function y(e=process.cwd(),t={}){try{let i=await r.n(e,`production`);i.logLevel=`warn`,i.clearScreen=!1,t.port!==void 0&&(i.preview=i.preview||{},i.preview.port=Number(t.port)),t.host!==void 0&&(i.preview=i.preview||{},i.preview.host=t.host);let a=(await(0,o.preview)(i)).resolvedUrls;console.log(n.p(a?.local?.[0]??`http://localhost:${t.port??4173}`,a?.network?.[0]??null))}catch(e){(0,s.error)(`Failed to start preview server:`,e),process.exit(1)}}function b(e){let t=[];if(!a.default.existsSync(e))return t;try{let n=a.default.readdirSync(e);for(let r of n){let n=i.default.join(e,r);a.default.statSync(n).isDirectory()?r!==`node_modules`&&r!==`.git`&&r!==`dist`&&r!==`coverage`&&t.push(...b(n)):/\.(js|mjs|cjs|ts|tsx|jsx)$/.test(r)&&t.push(n)}}catch{}return t}async function x(e=process.cwd()){(0,s.info)(`Starting static security audit of Boltdocs plugins...`);let t;try{t=await n.h(i.default.resolve(e,`docs`),e)}catch(e){(0,s.error)(`Failed to load Boltdocs configuration for audit:`,e),process.exit(1)}let r=t.plugins||[];if(r.length===0){(0,s.success)(`No plugins configured. Nothing to audit.`);return}let o=[];for(let t of r){if(!t.name)continue;let n=null;try{let{createRequire:r}=await import(`node:module`),a=r(i.default.resolve(e,`package.json`)).resolve(`${t.name}/package.json`);n=i.default.dirname(a)}catch{let r=i.default.resolve(e,`node_modules`,t.name);a.default.existsSync(r)&&(n=r)}if(!n){o.push({name:s.colors.cyan(t.name),status:s.colors.red(`❓ Unresolved`),details:`Could not locate plugin files in node_modules.`});continue}let r=b(n),c=[];for(let e of r)try{let t=a.default.readFileSync(e,`utf-8`);t.includes(`fetch(`)&&c.push(`fetch`),t.includes(`axios`)&&c.push(`axios`),t.includes(`http.request`)&&c.push(`http.request`),t.includes(`https.request`)&&c.push(`https.request`),t.includes(`process.env`)&&c.push(`process.env`)}catch{}let l=Array.from(new Set(c));l.length>0?o.push({name:s.colors.cyan(t.name),status:s.colors.yellow(`⚠️ Warning`),details:`Contains network/env accesses: ${s.colors.bold(l.join(`, `))}. Ensure you trust the author.`}):o.push({name:s.colors.cyan(t.name),status:s.colors.green(`✅ Clean`),details:`No external network calls or env accesses detected.`})}let c=[`Plugin`,`Status`,`Audit Notes`],l=o.map(e=>[e.name,e.status,e.details]);console.log(`
|
|
8
|
+
`+(0,s.table)(c,l)+`
|
|
9
|
+
`),o.some(e=>e.status.includes(`Warning`))?(0,s.warn)(`⚠️ One or more plugins have security warnings. Review the flags above.`):(0,s.success)(`✓ All plugins passed the static security check!`)}const{emitWarning:S}=process;process.emitWarning=function(e,...t){if(!(e&&typeof e==`object`&&e.code===`DEP0205`)&&!(typeof e==`string`&&t.includes(`DEP0205`)))return Reflect.apply(S,process,[e,...t])},h(),(0,s.configure)({prefix:`boltdocs`});const C=(0,u.default)(`boltdocs`);C.command(`dev [root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(_),C.command(`[root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(_),C.command(`build [root]`,`Build for production`).action(v),C.command(`preview [root]`,`Preview production build`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).action(y),C.command(`audit [root]`,`Audit configured plugins for security warnings`).action(x),C.command(`doctor [root]`,`Check the health of your documentation`).option(`--fix`,`Automatically fix broken internal links and sync translations`).option(`--check-external`,`Verify external links (slower)`).option(`--init`,`Initialize doctor.json with default configuration`).option(`--budget`,`Check build performance against configured budgets`).action(async(e,t)=>{let{doctorAction:n}=await Promise.resolve().then(()=>require(`../doctor-Bknon8f5.cjs`));await n(e,t)}),C.command(`generate-changelog <file>`,`Generate changelog documentation from CHANGELOG.md`).option(`-o, --output <path>`,`Output folder (default: docs/changelog)`,{default:`docs/changelog`}).option(`-t, --title <text>`,`Title for changelog pages`,{default:`Changelog`}).option(`--infer-tab`,`Infer tab from folder name (default: true)`,{default:!0}).option(`-l, --limit <number>`,`Limit number of versions to generate`).action(async(e,t)=>{let{generateChangelog:n}=await Promise.resolve().then(()=>require(`../generator-BEIF6MOx.cjs`));await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),C.help(),C.version(`2.0.0`),C.parse();
|
package/dist/node/cli-entry.mjs
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* Copyright (c) 2026 Jesus Alcala
|
|
5
5
|
* Licensed under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
import{
|
|
8
|
-
`+
|
|
9
|
-
`),r.some(e=>e.status.includes(`Warning`))?
|
|
7
|
+
import{E as e,T as t,n}from"../node-DV-EPtMU.mjs";import{a as r}from"../cache-DFW4R3S0.mjs";import{d as i,f as a,h as o,p as s}from"../doctor-BY1tSmQd.mjs";import c from"node:path";import l from"node:fs";import{preview as u}from"vite";import{colors as d,configure as f,double as p,error as m,info as h,success as g,table as _,warn as v}from"@bdocs/dui";import y from"node:fs/promises";import{createServer as b}from"@bdocs/ssg/node";import x from"cac";function S(e){let t=e;for(;t&&t!==c.dirname(t);){if(l.existsSync(c.join(t,`.git`))||l.existsSync(c.join(t,`pnpm-workspace.yaml`)))return t;t=c.dirname(t)}t=e;let n=e;for(;t&&t!==c.dirname(t);)l.existsSync(c.join(t,`package.json`))&&(n=t),t=c.dirname(t);return n}let C=S(process.cwd());function w(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=c.resolve(C,t),r=c.relative(C,n),i=r.startsWith(`..`)||c.isAbsolute(r),a=n.split(c.sep),o=a.some(e=>e.startsWith(`.env`)),s=a.some((e,t)=>{if(e===`node_modules`){let e=a[t+1];return!e||!e.startsWith(`.`)}return!1});if(i||o||s)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function T(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function E(){let e=l.writeFile;l.writeFile=((t,...n)=>{try{w(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(l,t,...n)});let t=l.writeFileSync;l.writeFileSync=(e,...n)=>(w(e),t.call(l,e,...n));let n=l.rm;l.rm=((e,...t)=>{try{w(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(l,e,...t)});let r=l.rmSync;l.rmSync=(e,...t)=>(w(e),r.call(l,e,...t));let i=l.unlink;l.unlink=((e,...t)=>{try{w(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(l,e,...t)});let a=l.unlinkSync;l.unlinkSync=(e,...t)=>(w(e),a.call(l,e,...t));let o=l.mkdir;l.mkdir=((e,...t)=>{try{w(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return o.call(l,e,...t)});let s=l.mkdirSync;l.mkdirSync=(e,...t)=>(w(e),s.call(l,e,...t));let c=l.rmdir;l.rmdir=((e,...t)=>{try{w(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return c.call(l,e,...t)});let u=l.rmdirSync;l.rmdirSync=(e,...t)=>(w(e),u.call(l,e,...t));let d=l.appendFile;l.appendFile=((e,...t)=>{try{w(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return d.call(l,e,...t)});let f=l.appendFileSync;l.appendFileSync=(e,...t)=>(w(e),f.call(l,e,...t));let p=l.copyFile;l.copyFile=((e,t,...n)=>{try{w(e),w(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return p.call(l,e,t,...n)});let m=l.copyFileSync;l.copyFileSync=(e,t,...n)=>(w(e),w(t),m.call(l,e,t,...n));let h=l.rename;l.rename=((e,t,...n)=>{try{w(e),w(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return h.call(l,e,t,...n)});let g=l.renameSync;l.renameSync=(e,t,...n)=>(w(e),w(t),g.call(l,e,t,...n));let _=l.createWriteStream;l.createWriteStream=(e,...t)=>(w(e),_.call(l,e,...t));let v=l.open;l.open=((e,t,...n)=>{if(T(typeof t==`function`?void 0:t))try{w(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return v.call(l,e,t,...n)});let b=l.openSync;l.openSync=(e,t,...n)=>(T(t)&&w(e),b.call(l,e,t,...n));let x=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(w(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(w(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(w(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(w(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(w(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(w(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(w(t),w(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(w(t),w(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(T(n)&&w(t),l.call(e,t,n,...r)))};x(l.promises),x(y)}let D=!1;async function O(t=process.cwd(),r={}){if(D)return;D=!0,i();let s;try{s=await o(c.resolve(t,`docs`),t),e(s,t)}catch{}try{let e=await n(t,`development`,s);e.logLevel=`warn`,e.clearScreen=!1,r.port!==void 0&&(e.server=e.server||{},e.server.port=Number(r.port)),r.host!==void 0&&(e.server=e.server||{},e.server.host=r.host),r.force&&(e.optimizeDeps=e.optimizeDeps||{},e.optimizeDeps.force=!0);let i=await b(e);await i.listen();let o=i.resolvedUrls;console.log(a(o?.local?.[0]??`http://localhost:${r.port??5173}`,o?.network?.[0]??null)),i.bindCLIShortcuts({print:!1})}catch(e){m(`Failed to start dev server:`,e),process.exit(1)}}async function k(e=process.cwd()){i();try{let n=await t().run({root:e,timing:{}});n.success||(m(`Build failed at step "${n.failedStep}":`,n.error),await r(),process.exit(1)),console.log(p([`SSG build completed in ${(Math.round(n.timing.total)/1e3).toFixed(1)}s`,``,`${d.cyan(`boltdocs`)} documentation is ready at ${d.green(`dist/`)}`])),await r(),process.exit(0)}catch(e){m(`Build failed:`,e),await r(),process.exit(1)}}async function A(e=process.cwd(),t={}){try{let r=await n(e,`production`);r.logLevel=`warn`,r.clearScreen=!1,t.port!==void 0&&(r.preview=r.preview||{},r.preview.port=Number(t.port)),t.host!==void 0&&(r.preview=r.preview||{},r.preview.host=t.host);let i=(await u(r)).resolvedUrls;console.log(s(i?.local?.[0]??`http://localhost:${t.port??4173}`,i?.network?.[0]??null))}catch(e){m(`Failed to start preview server:`,e),process.exit(1)}}function j(e){let t=[];if(!l.existsSync(e))return t;try{let n=l.readdirSync(e);for(let r of n){let n=c.join(e,r);l.statSync(n).isDirectory()?r!==`node_modules`&&r!==`.git`&&r!==`dist`&&r!==`coverage`&&t.push(...j(n)):/\.(js|mjs|cjs|ts|tsx|jsx)$/.test(r)&&t.push(n)}}catch{}return t}async function M(e=process.cwd()){h(`Starting static security audit of Boltdocs plugins...`);let t;try{t=await o(c.resolve(e,`docs`),e)}catch(e){m(`Failed to load Boltdocs configuration for audit:`,e),process.exit(1)}let n=t.plugins||[];if(n.length===0){g(`No plugins configured. Nothing to audit.`);return}let r=[];for(let t of n){if(!t.name)continue;let n=null;try{let{createRequire:r}=await import(`node:module`),i=r(c.resolve(e,`package.json`)).resolve(`${t.name}/package.json`);n=c.dirname(i)}catch{let r=c.resolve(e,`node_modules`,t.name);l.existsSync(r)&&(n=r)}if(!n){r.push({name:d.cyan(t.name),status:d.red(`❓ Unresolved`),details:`Could not locate plugin files in node_modules.`});continue}let i=j(n),a=[];for(let e of i)try{let t=l.readFileSync(e,`utf-8`);t.includes(`fetch(`)&&a.push(`fetch`),t.includes(`axios`)&&a.push(`axios`),t.includes(`http.request`)&&a.push(`http.request`),t.includes(`https.request`)&&a.push(`https.request`),t.includes(`process.env`)&&a.push(`process.env`)}catch{}let o=Array.from(new Set(a));o.length>0?r.push({name:d.cyan(t.name),status:d.yellow(`⚠️ Warning`),details:`Contains network/env accesses: ${d.bold(o.join(`, `))}. Ensure you trust the author.`}):r.push({name:d.cyan(t.name),status:d.green(`✅ Clean`),details:`No external network calls or env accesses detected.`})}let i=[`Plugin`,`Status`,`Audit Notes`],a=r.map(e=>[e.name,e.status,e.details]);console.log(`
|
|
8
|
+
`+_(i,a)+`
|
|
9
|
+
`),r.some(e=>e.status.includes(`Warning`))?v(`⚠️ One or more plugins have security warnings. Review the flags above.`):g(`✓ All plugins passed the static security check!`)}const{emitWarning:N}=process;process.emitWarning=function(e,...t){if(!(e&&typeof e==`object`&&e.code===`DEP0205`)&&!(typeof e==`string`&&t.includes(`DEP0205`)))return Reflect.apply(N,process,[e,...t])},E(),f({prefix:`boltdocs`});const P=x(`boltdocs`);P.command(`dev [root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(O),P.command(`[root]`,`Start development server`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).option(`--force`,`Force Vite to re-optimize dependencies`).action(O),P.command(`build [root]`,`Build for production`).action(k),P.command(`preview [root]`,`Preview production build`).option(`--port <port>`,`Port to listen on`).option(`--host [host]`,`Host to bind to`).action(A),P.command(`audit [root]`,`Audit configured plugins for security warnings`).action(M),P.command(`doctor [root]`,`Check the health of your documentation`).option(`--fix`,`Automatically fix broken internal links and sync translations`).option(`--check-external`,`Verify external links (slower)`).option(`--init`,`Initialize doctor.json with default configuration`).option(`--budget`,`Check build performance against configured budgets`).action(async(e,t)=>{let{doctorAction:n}=await import(`../doctor-wsPTzt8Y.mjs`);await n(e,t)}),P.command(`generate-changelog <file>`,`Generate changelog documentation from CHANGELOG.md`).option(`-o, --output <path>`,`Output folder (default: docs/changelog)`,{default:`docs/changelog`}).option(`-t, --title <text>`,`Title for changelog pages`,{default:`Changelog`}).option(`--infer-tab`,`Infer tab from folder name (default: true)`,{default:!0}).option(`-l, --limit <number>`,`Limit number of versions to generate`).action(async(e,t)=>{let{generateChangelog:n}=await import(`../generator-DILs0EFN.mjs`);await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),P.help(),P.version(`2.0.0`),P.parse();export{};
|
package/dist/node/index.cjs
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../chunk-
|
|
6
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../chunk-Ds5LZdWN.cjs`);const e=require(`../utils-wHud9ny5.cjs`),t=require(`../cache-C2PiGyg8.cjs`),n=require(`../doctor-DcFLi4t1.cjs`),r=require(`../node-vOVNRABe.cjs`),i=require(`../shiki-adapter-CUtj-xKv.cjs`),a=require(`../handler-Djy0HfsI.cjs`);let o=require(`unist-util-visit`);exports.AssetCache=t.n,exports.BoltdocsPluginStore=r.E,exports.EXIT=o.EXIT,exports.MDX_NODES=i.o,exports.PluginCompatibilityError=r.D,exports.PluginError=r.O,exports.PluginHookError=r.k,exports.PluginLifecycleManager=r.S,exports.PluginValidationError=r.A,exports.SKIP=o.SKIP,exports.addNodeClass=r.l,exports.createMdxAttribute=r.u,exports.createMdxElement=r.d,exports.createPlugin=r.c,exports.createRehypeElement=r.f,exports.createViteConfig=r.n,exports.default=r.t,exports.defineConfig=n.g,exports.flushCache=t.a,exports.generateEntryCode=r.s,exports.getNodeProperty=r.p,exports.handleAwsFeedback=r.r,exports.handleFeedback=a.t,exports.handleNetlifyFeedback=r.a,exports.handleVercelFeedback=r.o,exports.handleWebFeedback=r.i,exports.hasNodeClass=r.m,exports.normalizePath=e.u,exports.parseMetaString=i.r,exports.removeNodeClass=r.h,exports.resolveConfig=n.h,exports.sanitizeFilename=e.f,exports.setNodeProperty=r.g,exports.validatePlugins=r.T,exports.visitMdxElements=r._,exports.visitNodes=r.v,exports.visitRehypeElements=r.y,exports.visitRemarkHeadings=r.b,exports.visitRemarkLinks=r.x;
|