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.
Files changed (87) hide show
  1. package/bin/boltdocs.js +7 -6
  2. package/dist/{banner-MynZD_Ox.d.cts → banner-C_xkGxzI.d.cts} +1 -1
  3. package/dist/{banner-3N4Jd_L9.d.ts → banner-D2NddBfF.d.ts} +1 -1
  4. package/dist/cache-C2PiGyg8.cjs +6 -0
  5. package/dist/cache-DFW4R3S0.mjs +6 -0
  6. package/dist/chunk-Ds5LZdWN.cjs +6 -0
  7. package/dist/client/index.cjs +693 -488
  8. package/dist/client/index.d.cts +74 -8
  9. package/dist/client/index.d.ts +74 -8
  10. package/dist/client/index.js +692 -489
  11. package/dist/client/mdx.cjs +1 -1
  12. package/dist/client/mdx.js +1 -1
  13. package/dist/client/primitives.cjs +4 -4
  14. package/dist/client/primitives.d.cts +1 -1
  15. package/dist/client/primitives.d.ts +1 -1
  16. package/dist/client/primitives.js +4 -4
  17. package/dist/client/theme/neutral.css +5 -3
  18. package/dist/client/theme/reset.css +19 -0
  19. package/dist/{docs-layout-CwCq42Zt.cjs → docs-layout-3TpAt6MB.cjs} +302 -248
  20. package/dist/{docs-layout-Dn6S5g59.js → docs-layout-6FQ8__ok.js} +303 -249
  21. package/dist/doctor-BY1tSmQd.mjs +34 -0
  22. package/dist/{doctor-DyNUVe96.cjs → doctor-Bknon8f5.cjs} +1 -1
  23. package/dist/doctor-DcFLi4t1.cjs +34 -0
  24. package/dist/{doctor-aN_leTbh.mjs → doctor-wsPTzt8Y.mjs} +1 -1
  25. package/dist/{generator-CC2yHzhZ.cjs → generator-BEIF6MOx.cjs} +2 -2
  26. package/dist/{generator-BHCrLU6h.mjs → generator-DILs0EFN.mjs} +1 -1
  27. package/dist/handler-B31cxNw0.mjs +6 -0
  28. package/dist/handler-DfhH9D1b.mjs +28 -0
  29. package/dist/handler-Djy0HfsI.cjs +28 -0
  30. package/dist/{icons-dev-DvJ-hh9x.cjs → icons-dev-BryEFkJu.cjs} +96 -7
  31. package/dist/{icons-dev-Oju24Wjp.js → icons-dev-kJyGWNeg.js} +79 -8
  32. package/dist/{image-Ch4-GxdO.cjs → image-B9YA_oQ_.cjs} +24 -10
  33. package/dist/{image-Do8V9PCW.js → image-CjYu9Eml.js} +24 -10
  34. package/dist/{mdx-5oeCOFhH.js → mdx-Cy_c2zio.js} +116 -33
  35. package/dist/{mdx-BGM7LjW5.cjs → mdx-WXjAMS8Y.cjs} +121 -32
  36. package/dist/{meta-loader-Cv9O0Pzl.cjs → meta-loader-D0V6oOQt.cjs} +1 -1
  37. package/dist/node/cli-entry.cjs +3 -3
  38. package/dist/node/cli-entry.mjs +3 -3
  39. package/dist/node/index.cjs +1 -1
  40. package/dist/node/index.d.cts +368 -24
  41. package/dist/node/index.d.mts +369 -24
  42. package/dist/node/index.mjs +1 -1
  43. package/dist/node/routes/worker.cjs +1 -1
  44. package/dist/node/routes/worker.mjs +1 -1
  45. package/dist/node-DV-EPtMU.mjs +160 -0
  46. package/dist/node-vOVNRABe.cjs +160 -0
  47. package/dist/{package-CHxJV4Jy.mjs → package-BK_82QLX.mjs} +1 -1
  48. package/dist/{package-B_SoaGeu.cjs → package-OxKE0p6j.cjs} +1 -1
  49. package/dist/{parser-B7-6PyQz.cjs → parser-C2Pw18LY.cjs} +1 -1
  50. package/dist/{parser-BzB-zCkF.cjs → parser-DJoEF96Y.cjs} +1 -1
  51. package/dist/{parser-D0PVghVt.mjs → parser-DScG_PTs.mjs} +1 -1
  52. package/dist/routes--LYHSHT7.cjs +6 -0
  53. package/dist/routes-BAsfsn_e.mjs +6 -0
  54. package/dist/routes-C6Kr2HFN.cjs +6 -0
  55. package/dist/routes-CKgGAy8P.mjs +6 -0
  56. package/dist/{search-dialog-BXVoecTx.cjs → search-dialog-BhXg05Ri.cjs} +1 -1
  57. package/dist/{search-dialog-BYhOov4S.cjs → search-dialog-BsAiQgnx.cjs} +2 -2
  58. package/dist/{search-dialog-C09riYmx.js → search-dialog-CaOO1Q4i.js} +2 -2
  59. package/dist/{search-dialog-CUeAfy-8.cjs → search-dialog-CzwvKoLW.cjs} +1 -1
  60. package/dist/{search-dialog-DHc_8FFX.js → search-dialog-DRNJsxOv.js} +1 -1
  61. package/dist/{search-dialog-D8gLkhUV.js → search-dialog-DaR66wl0.js} +1 -1
  62. package/dist/shiki-adapter-CUtj-xKv.cjs +6 -0
  63. package/dist/shiki-adapter-EZptJAmW.mjs +6 -0
  64. package/dist/shiki-adapter-F-P-lDon.mjs +6 -0
  65. package/dist/shiki-adapter-PQBl32AN.cjs +6 -0
  66. package/dist/{sidebar-Dlkgbxs6.d.cts → sidebar-BtJyWHy4.d.cts} +43 -4
  67. package/dist/{sidebar-DNq4_ZAa.d.ts → sidebar-C4fuRYYS.d.ts} +43 -4
  68. package/dist/{utils-BYITg7T5.mjs → utils-DC4Wq-S2.mjs} +1 -1
  69. package/dist/{utils-Cjmx1hhk.cjs → utils-wHud9ny5.cjs} +1 -1
  70. package/dist/worker-pool-BS1LX67P.cjs +6 -0
  71. package/dist/worker-pool-DRv8ef4z.mjs +6 -0
  72. package/package.json +7 -3
  73. package/src/shared/types.ts +36 -3
  74. package/dist/cache-BMUyNiiA.mjs +0 -6
  75. package/dist/cache-CKm45d2w.cjs +0 -6
  76. package/dist/chunk-CU-zTemE.cjs +0 -6
  77. package/dist/doctor-BArviV8X.cjs +0 -28
  78. package/dist/doctor-CgLA7_Uv.mjs +0 -28
  79. package/dist/node-MsTvOgJN.mjs +0 -159
  80. package/dist/node-h9HmhAFB.cjs +0 -159
  81. package/dist/routes-BW6Dif_K.mjs +0 -6
  82. package/dist/routes-DJNJ-rTt.cjs +0 -6
  83. package/dist/routes-DiYC4nD2.cjs +0 -6
  84. package/dist/routes-ERSGuFQK.mjs +0 -6
  85. package/dist/worker-pool-CtqklOXq.cjs +0 -6
  86. package/dist/worker-pool-k0DY6k8T.mjs +0 -6
  87. /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-DvJ-hh9x.cjs');
7
- const require_image = require('./image-Ch4-GxdO.cjs');
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 isHighlighted = props["data-highlighted"] === "true" || typeof shikiClassName === "string" && shikiClassName.includes("shiki");
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.jsx)("div", {
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: !hideCopy && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyButton, {
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-CU-zTemE.cjs`);let t=require(`node:path`);t=e.t(t);let n=require(`fdir`),r=require(`@bdocs/dui`),i=require(`node:fs/promises`);i=e.t(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;
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;
@@ -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-CU-zTemE.cjs`),t=require(`../doctor-BArviV8X.cjs`),n=require(`../node-h9HmhAFB.cjs`);let r=require(`vite`),i=require(`node:path`);i=e.t(i);let a=require(`node:fs`);a=e.t(a);let o=require(`@bdocs/dui`),s=require(`node:fs/promises`);s=e.t(s);let c=require(`@bdocs/ssg/node`),l=require(`cac`);l=e.t(l);function u(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 d=u(process.cwd());function f(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(d,t),r=i.default.relative(d,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 p(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function m(){let e=a.default.writeFile;a.default.writeFile=function(t,...n){try{f(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=function(e,...n){return f(e),t.call(a.default,e,...n)};let n=a.default.rm;a.default.rm=function(e,...t){try{f(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=function(e,...t){return f(e),r.call(a.default,e,...t)};let i=a.default.unlink;a.default.unlink=function(e,...t){try{f(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=function(e,...t){return f(e),o.call(a.default,e,...t)};let c=a.default.mkdir;a.default.mkdir=function(e,...t){try{f(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return c.call(a.default,e,...t)};let l=a.default.mkdirSync;a.default.mkdirSync=function(e,...t){return f(e),l.call(a.default,e,...t)};let u=a.default.rmdir;a.default.rmdir=function(e,...t){try{f(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=function(e,...t){return f(e),d.call(a.default,e,...t)};let m=a.default.appendFile;a.default.appendFile=function(e,...t){try{f(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return m.call(a.default,e,...t)};let h=a.default.appendFileSync;a.default.appendFileSync=function(e,...t){return f(e),h.call(a.default,e,...t)};let g=a.default.copyFile;a.default.copyFile=function(e,t,...n){try{f(e),f(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=function(e,t,...n){return f(e),f(t),_.call(a.default,e,t,...n)};let v=a.default.rename;a.default.rename=function(e,t,...n){try{f(e),f(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=function(e,t,...n){return f(e),f(t),y.call(a.default,e,t,...n)};let b=a.default.createWriteStream;a.default.createWriteStream=function(e,...t){return f(e),b.call(a.default,e,...t)};let x=a.default.open;a.default.open=function(e,t,...n){if(p(typeof t==`function`?void 0:t))try{f(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=function(e,t,...n){return p(t)&&f(e),S.call(a.default,e,t,...n)};let C=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async function(n,...r){return f(n),t.call(e,n,...r)});let n=e.rm;n&&(e.rm=async function(t,...r){return f(t),n.call(e,t,...r)});let r=e.mkdir;r&&(e.mkdir=async function(t,...n){return f(t),r.call(e,t,...n)});let i=e.rmdir;i&&(e.rmdir=async function(t,...n){return f(t),i.call(e,t,...n)});let a=e.unlink;a&&(e.unlink=async function(t,...n){return f(t),a.call(e,t,...n)});let o=e.appendFile;o&&(e.appendFile=async function(t,...n){return f(t),o.call(e,t,...n)});let s=e.copyFile;s&&(e.copyFile=async function(t,n,...r){return f(t),f(n),s.call(e,t,n,...r)});let c=e.rename;c&&(e.rename=async function(t,n,...r){return f(t),f(n),c.call(e,t,n,...r)});let l=e.open;l&&(e.open=async function(t,n,...r){return p(n)&&f(t),l.call(e,t,n,...r)})};C(a.default.promises),C(s.default)}let h=!1;async function g(e=process.cwd()){if(!h){h=!0,t.d();try{n.S(await t.p(i.default.resolve(e,`docs`),e),e)}catch{}try{let t=await n.n(e,`development`);t.logLevel=`warn`,t.clearScreen=!1;let r=await(0,c.createServer)(t);await r.listen();let i=r.resolvedUrls;console.log((0,o.devServer)(i?.local?.[0]??`http://localhost:5173`,i?.network?.[0]??null)),r.bindCLIShortcuts({print:!1})}catch(e){(0,o.error)(`Failed to start dev server:`,e),process.exit(1)}}}async function _(e=process.cwd()){t.d();try{let t=await n.x().run({root:e,timing:{}});t.success||((0,o.error)(`Build failed at step "${t.failedStep}":`,t.error),process.exit(1)),(0,o.success)(`SSG build completed successfully in ${Math.round(t.timing.total)}ms!`),process.exit(0)}catch(e){(0,o.error)(`Build failed:`,e),process.exit(1)}}async function v(e=process.cwd()){try{let t=await createViteConfig(e,`production`);t.logLevel=`warn`,t.clearScreen=!1;let n=await(0,r.preview)(t),i=n.resolvedUrls;console.log(n(i?.local?.[0]??`http://localhost:4173`,i?.network?.[0]??null))}catch(e){(0,o.error)(`Failed to start preview server:`,e),process.exit(1)}}function y(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(...y(n)):/\.(js|mjs|cjs|ts|tsx|jsx)$/.test(r)&&t.push(n)}}catch{}return t}async function b(e=process.cwd()){(0,o.info)(`Starting static security audit of Boltdocs plugins...`);let n;try{n=await t.p(i.default.resolve(e,`docs`),e)}catch(e){(0,o.error)(`Failed to load Boltdocs configuration for audit:`,e),process.exit(1)}let r=n.plugins||[];if(r.length===0){(0,o.success)(`No plugins configured. Nothing to audit.`);return}let s=[];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){s.push({name:o.colors.cyan(t.name),status:o.colors.red(`❓ Unresolved`),details:`Could not locate plugin files in node_modules.`});continue}let r=y(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?s.push({name:o.colors.cyan(t.name),status:o.colors.yellow(`⚠️ Warning`),details:`Contains network/env accesses: ${o.colors.bold(l.join(`, `))}. Ensure you trust the author.`}):s.push({name:o.colors.cyan(t.name),status:o.colors.green(`✅ Clean`),details:`No external network calls or env accesses detected.`})}let c=[`Plugin`,`Status`,`Audit Notes`],l=s.map(e=>[e.name,e.status,e.details]);console.log(`
8
- `+(0,o.table)(c,l)+`
9
- `),s.some(e=>e.status.includes(`Warning`))?(0,o.warn)(`⚠️ One or more plugins have security warnings. Review the flags above.`):(0,o.success)(`✓ All plugins passed the static security check!`)}process.noDeprecation=!0,m(),(0,o.configure)({prefix:`boltdocs`,devServerTitle:`boltdocs dev server`,previewServerTitle:`boltdocs preview server`,updateCommand:`pnpm add boltdocs@latest`});const x=(0,l.default)(`boltdocs`);x.command(`dev [root]`,`Start development server`).action(g),x.command(`[root]`,`Start development server`).action(g),x.command(`build [root]`,`Build for production`).action(_),x.command(`preview [root]`,`Preview production build`).action(v),x.command(`audit [root]`,`Audit configured plugins for security warnings`).action(b),x.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-DyNUVe96.cjs`));await n(e,t)}),x.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-CC2yHzhZ.cjs`));await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),x.help(),x.version(`2.0.0`),x.parse();
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();
@@ -4,6 +4,6 @@
4
4
  * Copyright (c) 2026 Jesus Alcala
5
5
  * Licensed under the MIT License.
6
6
  */
7
- import{C as e,n as t,w as n}from"../node-MsTvOgJN.mjs";import{d as r,p as i}from"../doctor-CgLA7_Uv.mjs";import{preview as a}from"vite";import o from"node:path";import s from"node:fs";import{colors as c,configure as l,devServer as u,error as d,info as f,success as p,table as m,warn as h}from"@bdocs/dui";import g from"node:fs/promises";import{createServer as _}from"@bdocs/ssg/node";import v from"cac";function y(e){let t=e;for(;t&&t!==o.dirname(t);){if(s.existsSync(o.join(t,`.git`))||s.existsSync(o.join(t,`pnpm-workspace.yaml`)))return t;t=o.dirname(t)}t=e;let n=e;for(;t&&t!==o.dirname(t);)s.existsSync(o.join(t,`package.json`))&&(n=t),t=o.dirname(t);return n}let b=y(process.cwd());function x(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=o.resolve(b,t),r=o.relative(b,n),i=r.startsWith(`..`)||o.isAbsolute(r),a=n.split(o.sep),s=a.some(e=>e.startsWith(`.env`)),c=a.some((e,t)=>{if(e===`node_modules`){let e=a[t+1];return!e||!e.startsWith(`.`)}return!1});if(i||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 S(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function C(){let e=s.writeFile;s.writeFile=function(t,...n){try{x(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(s,t,...n)};let t=s.writeFileSync;s.writeFileSync=function(e,...n){return x(e),t.call(s,e,...n)};let n=s.rm;s.rm=function(e,...t){try{x(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(s,e,...t)};let r=s.rmSync;s.rmSync=function(e,...t){return x(e),r.call(s,e,...t)};let i=s.unlink;s.unlink=function(e,...t){try{x(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(s,e,...t)};let a=s.unlinkSync;s.unlinkSync=function(e,...t){return x(e),a.call(s,e,...t)};let o=s.mkdir;s.mkdir=function(e,...t){try{x(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return o.call(s,e,...t)};let c=s.mkdirSync;s.mkdirSync=function(e,...t){return x(e),c.call(s,e,...t)};let l=s.rmdir;s.rmdir=function(e,...t){try{x(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return l.call(s,e,...t)};let u=s.rmdirSync;s.rmdirSync=function(e,...t){return x(e),u.call(s,e,...t)};let d=s.appendFile;s.appendFile=function(e,...t){try{x(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return d.call(s,e,...t)};let f=s.appendFileSync;s.appendFileSync=function(e,...t){return x(e),f.call(s,e,...t)};let p=s.copyFile;s.copyFile=function(e,t,...n){try{x(e),x(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return p.call(s,e,t,...n)};let m=s.copyFileSync;s.copyFileSync=function(e,t,...n){return x(e),x(t),m.call(s,e,t,...n)};let h=s.rename;s.rename=function(e,t,...n){try{x(e),x(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return h.call(s,e,t,...n)};let _=s.renameSync;s.renameSync=function(e,t,...n){return x(e),x(t),_.call(s,e,t,...n)};let v=s.createWriteStream;s.createWriteStream=function(e,...t){return x(e),v.call(s,e,...t)};let y=s.open;s.open=function(e,t,...n){if(S(typeof t==`function`?void 0:t))try{x(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 y.call(s,e,t,...n)};let b=s.openSync;s.openSync=function(e,t,...n){return S(t)&&x(e),b.call(s,e,t,...n)};let C=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async function(n,...r){return x(n),t.call(e,n,...r)});let n=e.rm;n&&(e.rm=async function(t,...r){return x(t),n.call(e,t,...r)});let r=e.mkdir;r&&(e.mkdir=async function(t,...n){return x(t),r.call(e,t,...n)});let i=e.rmdir;i&&(e.rmdir=async function(t,...n){return x(t),i.call(e,t,...n)});let a=e.unlink;a&&(e.unlink=async function(t,...n){return x(t),a.call(e,t,...n)});let o=e.appendFile;o&&(e.appendFile=async function(t,...n){return x(t),o.call(e,t,...n)});let s=e.copyFile;s&&(e.copyFile=async function(t,n,...r){return x(t),x(n),s.call(e,t,n,...r)});let c=e.rename;c&&(e.rename=async function(t,n,...r){return x(t),x(n),c.call(e,t,n,...r)});let l=e.open;l&&(e.open=async function(t,n,...r){return S(n)&&x(t),l.call(e,t,n,...r)})};C(s.promises),C(g)}let w=!1;async function T(e=process.cwd()){if(!w){w=!0,r();try{n(await i(o.resolve(e,`docs`),e),e)}catch{}try{let n=await t(e,`development`);n.logLevel=`warn`,n.clearScreen=!1;let r=await _(n);await r.listen();let i=r.resolvedUrls;console.log(u(i?.local?.[0]??`http://localhost:5173`,i?.network?.[0]??null)),r.bindCLIShortcuts({print:!1})}catch(e){d(`Failed to start dev server:`,e),process.exit(1)}}}async function E(t=process.cwd()){r();try{let n=await e().run({root:t,timing:{}});n.success||(d(`Build failed at step "${n.failedStep}":`,n.error),process.exit(1)),p(`SSG build completed successfully in ${Math.round(n.timing.total)}ms!`),process.exit(0)}catch(e){d(`Build failed:`,e),process.exit(1)}}async function D(e=process.cwd()){try{let t=await createViteConfig(e,`production`);t.logLevel=`warn`,t.clearScreen=!1;let n=await a(t),r=n.resolvedUrls;console.log(n(r?.local?.[0]??`http://localhost:4173`,r?.network?.[0]??null))}catch(e){d(`Failed to start preview server:`,e),process.exit(1)}}function O(e){let t=[];if(!s.existsSync(e))return t;try{let n=s.readdirSync(e);for(let r of n){let n=o.join(e,r);s.statSync(n).isDirectory()?r!==`node_modules`&&r!==`.git`&&r!==`dist`&&r!==`coverage`&&t.push(...O(n)):/\.(js|mjs|cjs|ts|tsx|jsx)$/.test(r)&&t.push(n)}}catch{}return t}async function k(e=process.cwd()){f(`Starting static security audit of Boltdocs plugins...`);let t;try{t=await i(o.resolve(e,`docs`),e)}catch(e){d(`Failed to load Boltdocs configuration for audit:`,e),process.exit(1)}let n=t.plugins||[];if(n.length===0){p(`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(o.resolve(e,`package.json`)).resolve(`${t.name}/package.json`);n=o.dirname(i)}catch{let r=o.resolve(e,`node_modules`,t.name);s.existsSync(r)&&(n=r)}if(!n){r.push({name:c.cyan(t.name),status:c.red(`❓ Unresolved`),details:`Could not locate plugin files in node_modules.`});continue}let i=O(n),a=[];for(let e of i)try{let t=s.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 l=Array.from(new Set(a));l.length>0?r.push({name:c.cyan(t.name),status:c.yellow(`⚠️ Warning`),details:`Contains network/env accesses: ${c.bold(l.join(`, `))}. Ensure you trust the author.`}):r.push({name:c.cyan(t.name),status:c.green(`✅ Clean`),details:`No external network calls or env accesses detected.`})}let a=[`Plugin`,`Status`,`Audit Notes`],l=r.map(e=>[e.name,e.status,e.details]);console.log(`
8
- `+m(a,l)+`
9
- `),r.some(e=>e.status.includes(`Warning`))?h(`⚠️ One or more plugins have security warnings. Review the flags above.`):p(`✓ All plugins passed the static security check!`)}process.noDeprecation=!0,C(),l({prefix:`boltdocs`,devServerTitle:`boltdocs dev server`,previewServerTitle:`boltdocs preview server`,updateCommand:`pnpm add boltdocs@latest`});const A=v(`boltdocs`);A.command(`dev [root]`,`Start development server`).action(T),A.command(`[root]`,`Start development server`).action(T),A.command(`build [root]`,`Build for production`).action(E),A.command(`preview [root]`,`Preview production build`).action(D),A.command(`audit [root]`,`Audit configured plugins for security warnings`).action(k),A.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-aN_leTbh.mjs`);await n(e,t)}),A.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-BHCrLU6h.mjs`);await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),A.help(),A.version(`2.0.0`),A.parse();export{};
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{};
@@ -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-CU-zTemE.cjs`);const e=require(`../utils-Cjmx1hhk.cjs`),t=require(`../doctor-BArviV8X.cjs`),n=require(`../node-h9HmhAFB.cjs`);let r=require(`unist-util-visit`);exports.BoltdocsPluginStore=n.w,exports.EXIT=r.EXIT,exports.MDX_NODES=n.y,exports.PluginCompatibilityError=n.T,exports.PluginError=n.E,exports.PluginHookError=n.D,exports.PluginLifecycleManager=n.b,exports.PluginValidationError=n.O,exports.SKIP=r.SKIP,exports.addNodeClass=n.a,exports.createMdxAttribute=n.o,exports.createMdxElement=n.s,exports.createPlugin=n.i,exports.createRehypeElement=n.c,exports.createViteConfig=n.n,exports.default=n.t,exports.defineConfig=t.m,exports.generateEntryCode=n.r,exports.getNodeProperty=n.l,exports.hasNodeClass=n.u,exports.normalizePath=e.u,exports.parseMetaString=n.v,exports.removeNodeClass=n.d,exports.resolveConfig=t.p,exports.sanitizeFilename=e.f,exports.setNodeProperty=n.f,exports.validatePlugins=n.C,exports.visitMdxElements=n.p,exports.visitNodes=n.m,exports.visitRehypeElements=n.h,exports.visitRemarkHeadings=n.g,exports.visitRemarkLinks=n._;
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;