boltdocs 2.9.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/{cache-C2PiGyg8.cjs → cache-B19MLTpN.cjs} +1 -1
  2. package/dist/{cache-DFW4R3S0.mjs → cache-CfhOTR3Q.mjs} +1 -1
  3. package/dist/config-BqZUYono.cjs +7 -0
  4. package/dist/config-DBKBEj3j.mjs +7 -0
  5. package/dist/config-GPVEdeon.mjs +6 -0
  6. package/dist/config-kIQOJHXC.cjs +6 -0
  7. package/dist/csp-CBysWlAf.cjs +6 -0
  8. package/dist/csp-RJyh0nHV.mjs +6 -0
  9. package/dist/doctor-C19DsI1e.mjs +7 -0
  10. package/dist/{parser-DJoEF96Y.cjs → doctor-D8fl3Sbg.cjs} +1 -1
  11. package/dist/doctor-DzEgMMRo.cjs +7 -0
  12. package/dist/errors-C0Hx15Ag.mjs +6 -0
  13. package/dist/errors-Dx6JHoKE.cjs +6 -0
  14. package/dist/{doctor-wsPTzt8Y.mjs → handler-eNNcucnf.mjs} +1 -1
  15. package/dist/headers-BJ4jJAhU.cjs +6 -0
  16. package/dist/headers-HD_qTVVW.mjs +6 -0
  17. package/dist/{meta-loader-D0V6oOQt.cjs → meta-loader-C9MKjAs0.cjs} +1 -1
  18. package/dist/{meta-loader-By22EnYa.mjs → meta-loader-CxAoQthW.mjs} +1 -1
  19. package/dist/node/cli-entry.cjs +9 -3
  20. package/dist/node/cli-entry.mjs +9 -3
  21. package/dist/node/index.cjs +1 -1
  22. package/dist/node/index.d.cts +7 -7
  23. package/dist/node/index.d.mts +8 -8
  24. package/dist/node/index.mjs +1 -1
  25. package/dist/node/routes/worker.cjs +1 -1
  26. package/dist/node/routes/worker.mjs +1 -1
  27. package/dist/node-B7qbjtLl.mjs +105 -0
  28. package/dist/node-Dj3-2YYP.cjs +105 -0
  29. package/dist/package-ByXh2JHp.cjs +6 -0
  30. package/dist/{package-BK_82QLX.mjs → package-DQBAV8uo.mjs} +1 -1
  31. package/dist/{doctor-Bknon8f5.cjs → parser-B8naUXl2.cjs} +1 -1
  32. package/dist/parser-D4oEyuP-.cjs +6 -0
  33. package/dist/parser-IR9tfyGE.mjs +6 -0
  34. package/dist/plugin-BkquLpOI.mjs +61 -0
  35. package/dist/plugin-CL1LsQXk.cjs +61 -0
  36. package/dist/routes-DR13Y1em.mjs +6 -0
  37. package/dist/routes-DX8ryKjs.cjs +6 -0
  38. package/dist/{routes-C6Kr2HFN.cjs → routes-DgTQxpZi.cjs} +1 -1
  39. package/dist/{routes-CKgGAy8P.mjs → routes-TUSK5wD7.mjs} +1 -1
  40. package/dist/{shiki-adapter-CUtj-xKv.cjs → shiki-adapter-BB71nVsG.cjs} +1 -1
  41. package/dist/{handler-B31cxNw0.mjs → shiki-adapter-CL-IQwKI.cjs} +1 -1
  42. package/dist/shiki-adapter-CxTLkjew.mjs +6 -0
  43. package/dist/{shiki-adapter-F-P-lDon.mjs → shiki-adapter-rQ087Lx3.mjs} +1 -1
  44. package/dist/types-generator-BRyf4o9F.mjs +26 -0
  45. package/dist/types-generator-BqNKCbrx.cjs +26 -0
  46. package/dist/types-generator-Cu2jQP-V.mjs +6 -0
  47. package/dist/utils-BWy_8ASj.cjs +7 -0
  48. package/dist/utils-DexBrwiP.mjs +7 -0
  49. package/dist/{worker-pool-DRv8ef4z.mjs → worker-pool-C6r6V05j.mjs} +1 -1
  50. package/package.json +1 -1
  51. package/dist/doctor-BY1tSmQd.mjs +0 -34
  52. package/dist/doctor-DcFLi4t1.cjs +0 -34
  53. package/dist/node-DV-EPtMU.mjs +0 -160
  54. package/dist/node-vOVNRABe.cjs +0 -160
  55. package/dist/package-OxKE0p6j.cjs +0 -6
  56. package/dist/parser-C2Pw18LY.cjs +0 -6
  57. package/dist/parser-DScG_PTs.mjs +0 -6
  58. package/dist/routes--LYHSHT7.cjs +0 -6
  59. package/dist/routes-BAsfsn_e.mjs +0 -6
  60. package/dist/shiki-adapter-EZptJAmW.mjs +0 -6
  61. package/dist/shiki-adapter-PQBl32AN.cjs +0 -6
  62. package/dist/utils-DC4Wq-S2.mjs +0 -7
  63. package/dist/utils-wHud9ny5.cjs +0 -7
  64. /package/dist/{generator-DILs0EFN.mjs → generator-B6lrnDZ-.mjs} +0 -0
  65. /package/dist/{generator-BEIF6MOx.cjs → generator-DtUU3Cfk.cjs} +0 -0
  66. /package/dist/{handler-Djy0HfsI.cjs → handler-1LRMYeI4.cjs} +0 -0
  67. /package/dist/{handler-DfhH9D1b.mjs → handler-CyIBbZdb.mjs} +0 -0
  68. /package/dist/{worker-pool-BS1LX67P.cjs → worker-pool-m81xuM5v.cjs} +0 -0
@@ -1,6 +1,6 @@
1
1
 
2
- import { InlineConfig, Plugin } from "vite";
3
2
  import { z } from "zod";
3
+ import { InlineConfig, Plugin } from "vite";
4
4
  import { EXIT, SKIP } from "unist-util-visit";
5
5
  import { VercelRequest, VercelResponse } from "@vercel/node";
6
6
  import { HandlerEvent, HandlerResponse } from "@netlify/functions";
@@ -238,7 +238,7 @@ interface BoltdocsIntegrationsConfig {
238
238
  /**
239
239
  * The root configuration object for Boltdocs.
240
240
  */
241
- interface BoltdocsConfig$1 {
241
+ interface BoltdocsConfig {
242
242
  siteUrl?: string;
243
243
  docsDir?: string;
244
244
  base?: string;
@@ -284,7 +284,7 @@ type BoltdocsRoutePathWithFallback = BoltdocsRoutePath extends never ? string :
284
284
  *
285
285
  * @param config - The Boltdocs configuration object
286
286
  */
287
- declare function defineConfig(config: BoltdocsConfig$1): BoltdocsConfig$1;
287
+ declare function defineConfig(config: BoltdocsConfig): BoltdocsConfig;
288
288
  //#endregion
289
289
  //#region src/node/config.d.ts
290
290
  /**
@@ -295,7 +295,7 @@ declare function defineConfig(config: BoltdocsConfig$1): BoltdocsConfig$1;
295
295
  * @param root - The project root directory (defaults to process.cwd())
296
296
  * @returns The merged configuration object
297
297
  */
298
- declare function resolveConfig(docsDir: string, root?: string): Promise<BoltdocsConfig$1>;
298
+ declare function resolveConfig(docsDir: string, root?: string): Promise<BoltdocsConfig>;
299
299
  //#endregion
300
300
  //#region src/node/plugin/types.d.ts
301
301
  /**
@@ -315,7 +315,7 @@ interface BoltdocsPluginOptions {
315
315
  * @param config - The resolved Boltdocs configuration containing custom plugins and components
316
316
  * @returns A string of JavaScript code to be evaluated by the browser
317
317
  */
318
- declare function generateEntryCode(options: BoltdocsPluginOptions, config?: BoltdocsConfig$1): string;
318
+ declare function generateEntryCode(options: BoltdocsPluginOptions, config?: BoltdocsConfig): string;
319
319
  //#endregion
320
320
  //#region src/node/routes/types.d.ts
321
321
  /**
@@ -421,7 +421,7 @@ declare function flushCache(): Promise<void>;
421
421
  //#endregion
422
422
  //#region src/node/plugins/plugin-types.d.ts
423
423
  interface PluginContext {
424
- readonly config: BoltdocsConfig$1;
424
+ readonly config: BoltdocsConfig;
425
425
  readonly logger: PluginLogger;
426
426
  readonly store: PluginStore;
427
427
  readonly meta: PluginMeta;
@@ -539,7 +539,7 @@ declare class PluginLifecycleManager {
539
539
  private store;
540
540
  private docsDir;
541
541
  private rootDir;
542
- constructor(plugins: SecureBoltdocsPlugin[], config: BoltdocsConfig$1, docsDir?: string, rootDir?: string);
542
+ constructor(plugins: SecureBoltdocsPlugin[], config: BoltdocsConfig, docsDir?: string, rootDir?: string);
543
543
  runHook(hookName: keyof PluginLifecycleHooks, ...args: unknown[]): Promise<void>;
544
544
  runChain<TParams>(hookName: keyof PluginLifecycleHooks, initialParams: TParams): Promise<TParams>;
545
545
  private getSortedPlugins;
@@ -1039,4 +1039,4 @@ declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
1039
1039
  */
1040
1040
  declare function createViteConfig(root: string, mode?: 'development' | 'production', preResolvedConfig?: BoltdocsConfig): Promise<InlineConfig>;
1041
1041
  //#endregion
1042
- export { AssetCache, type BoltdocsConfig$1 as BoltdocsConfig, type BoltdocsPlugin, type BoltdocsPluginOptions, BoltdocsPluginStore, type BoltdocsThemeConfig, EXIT, MDX_NODES, NodeWithHProperties, PluginCompatibilityError, PluginContext, PluginError, PluginHookError, PluginLifecycleHooks, PluginLifecycleManager, PluginLogger, PluginMeta, PluginStore, PluginValidationError, type RouteMeta, SKIP, SecureBoltdocsPlugin, addNodeClass, createMdxAttribute, createMdxElement, createPlugin, createRehypeElement, createViteConfig, boltdocs as default, defineConfig, flushCache, generateEntryCode, getNodeProperty, handleAwsFeedback, handleFeedback, handleNetlifyFeedback, handleVercelFeedback, handleWebFeedback, hasNodeClass, normalizePath, parseMetaString, removeNodeClass, resolveConfig, sanitizeFilename, setNodeProperty, validatePlugins, visitMdxElements, visitNodes, visitRehypeElements, visitRemarkHeadings, visitRemarkLinks };
1042
+ export { AssetCache, type BoltdocsConfig, type BoltdocsPlugin, type BoltdocsPluginOptions, BoltdocsPluginStore, type BoltdocsThemeConfig, EXIT, MDX_NODES, NodeWithHProperties, PluginCompatibilityError, PluginContext, PluginError, PluginHookError, PluginLifecycleHooks, PluginLifecycleManager, PluginLogger, PluginMeta, PluginStore, PluginValidationError, type RouteMeta, SKIP, SecureBoltdocsPlugin, addNodeClass, createMdxAttribute, createMdxElement, createPlugin, createRehypeElement, createViteConfig, boltdocs as default, defineConfig, flushCache, generateEntryCode, getNodeProperty, handleAwsFeedback, handleFeedback, handleNetlifyFeedback, handleVercelFeedback, handleWebFeedback, hasNodeClass, normalizePath, parseMetaString, removeNodeClass, resolveConfig, sanitizeFilename, setNodeProperty, validatePlugins, visitMdxElements, visitNodes, visitRehypeElements, visitRemarkHeadings, visitRemarkLinks };
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- import{A as e,C as t,D as n,M as r,O as i,S as a,_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,j as h,k as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,w as D,x as O,y as k}from"../node-DV-EPtMU.mjs";import{f as A,u as j}from"../utils-DC4Wq-S2.mjs";import{a as M,n as N}from"../cache-DFW4R3S0.mjs";import{g as P,h as F}from"../doctor-BY1tSmQd.mjs";import{o as I,r as L}from"../shiki-adapter-F-P-lDon.mjs";import{t as R}from"../handler-DfhH9D1b.mjs";export{N as AssetCache,i as BoltdocsPluginStore,_ as EXIT,I as MDX_NODES,g as PluginCompatibilityError,e as PluginError,h as PluginHookError,D as PluginLifecycleManager,r as PluginValidationError,T as SKIP,u as addNodeClass,d as createMdxAttribute,x as createMdxElement,l as createPlugin,v as createRehypeElement,y as createViteConfig,w as default,P as defineConfig,M as flushCache,C as generateEntryCode,p as getNodeProperty,S as handleAwsFeedback,R as handleFeedback,s as handleNetlifyFeedback,b as handleVercelFeedback,m as handleWebFeedback,f as hasNodeClass,j as normalizePath,L as parseMetaString,o as removeNodeClass,F as resolveConfig,A as sanitizeFilename,E as setNodeProperty,n as validatePlugins,k as visitMdxElements,c as visitNodes,O as visitRehypeElements,a as visitRemarkHeadings,t as visitRemarkLinks};
6
+ import{A as e,C as t,D as n,M as r,N as i,O as a,S as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,x as O,y as k}from"../node-B7qbjtLl.mjs";import{f as A,u as j}from"../utils-DexBrwiP.mjs";import{a as M,n as N}from"../config-DBKBEj3j.mjs";import{a as P,n as F}from"../cache-CfhOTR3Q.mjs";import{o as I,r as L}from"../shiki-adapter-rQ087Lx3.mjs";import{t as R}from"../handler-CyIBbZdb.mjs";export{F as AssetCache,a as BoltdocsPluginStore,u as EXIT,I as MDX_NODES,_ as PluginCompatibilityError,e as PluginError,g as PluginHookError,t as PluginLifecycleManager,r as PluginValidationError,v as SKIP,E as addNodeClass,d as createMdxAttribute,f as createMdxElement,w as createPlugin,S as createRehypeElement,b as createViteConfig,T as default,M as defineConfig,P as flushCache,i as generateEntryCode,y as getNodeProperty,C as handleAwsFeedback,R as handleFeedback,c as handleNetlifyFeedback,x as handleVercelFeedback,h as handleWebFeedback,m as hasNodeClass,j as normalizePath,L as parseMetaString,p as removeNodeClass,N as resolveConfig,A as sanitizeFilename,s as setNodeProperty,n as validatePlugins,D as visitMdxElements,k as visitNodes,l as visitRehypeElements,O as visitRemarkHeadings,o as visitRemarkLinks};
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- require(`../../chunk-Ds5LZdWN.cjs`);const e=require(`../../parser-C2Pw18LY.cjs`);let t=require(`node:worker_threads`);if(!t.parentPort)throw Error(`This file must be run as a worker thread.`);t.parentPort.on(`message`,async n=>{if(n.type===`PARSE_FILE`)try{let r=await e.t(n.file,n.docsDir,n.basePath,n.config);t.parentPort?.postMessage({type:`SUCCESS`,file:n.file,result:r})}catch(e){t.parentPort?.postMessage({type:`ERROR`,file:n.file,error:e.message||`Unknown parsing error`})}});
6
+ require(`../../chunk-Ds5LZdWN.cjs`);const e=require(`../../parser-D4oEyuP-.cjs`);let t=require(`node:worker_threads`);if(!t.parentPort)throw Error(`This file must be run as a worker thread.`);t.parentPort.on(`message`,async n=>{if(n.type===`PARSE_FILE`)try{let r=await e.t(n.file,n.docsDir,n.basePath,n.config);t.parentPort?.postMessage({type:`SUCCESS`,file:n.file,result:r})}catch(e){t.parentPort?.postMessage({type:`ERROR`,file:n.file,error:e.message||`Unknown parsing error`})}});
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- import{n as e}from"../../parser-DScG_PTs.mjs";import{parentPort as t}from"node:worker_threads";if(!t)throw Error(`This file must be run as a worker thread.`);t.on(`message`,async n=>{if(n.type===`PARSE_FILE`)try{let r=await e(n.file,n.docsDir,n.basePath,n.config);t?.postMessage({type:`SUCCESS`,file:n.file,result:r})}catch(e){t?.postMessage({type:`ERROR`,file:n.file,error:e.message||`Unknown parsing error`})}});export{};
6
+ import{n as e}from"../../parser-IR9tfyGE.mjs";import{parentPort as t}from"node:worker_threads";if(!t)throw Error(`This file must be run as a worker thread.`);t.on(`message`,async n=>{if(n.type===`PARSE_FILE`)try{let r=await e(n.file,n.docsDir,n.basePath,n.config);t?.postMessage({type:`SUCCESS`,file:n.file,result:r})}catch(e){t?.postMessage({type:`ERROR`,file:n.file,error:e.message||`Unknown parsing error`})}});export{};
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Boltdocs - https://boltdocs.vercel.app
3
+ * Copyright (c) 2026 Jesus Alcala
4
+ * Licensed under the MIT License.
5
+ */
6
+ import{r as e,u as t}from"./utils-DexBrwiP.mjs";import{i as n,n as r}from"./config-DBKBEj3j.mjs";import{n as i,t as a}from"./types-generator-BRyf4o9F.mjs";import{t as o}from"./routes-TUSK5wD7.mjs";import{o as s}from"./shiki-adapter-rQ087Lx3.mjs";import{t as c}from"./handler-CyIBbZdb.mjs";import{createRequire as l}from"node:module";import u from"node:path";import d from"node:fs";import{z as f}from"zod";import*as p from"@bdocs/dui";import{colors as m,warn as h}from"@bdocs/dui";import g from"semver";import{build as _}from"@bdocs/ssg/node";import{EXIT as v,SKIP as y,visit as b}from"unist-util-visit";var x=Object.defineProperty,ee=(e,t)=>{let n={};for(var r in e)x(n,r,{get:e[r],enumerable:!0});return t||x(n,Symbol.toStringTag,{value:`Module`}),n},S=l(import.meta.url);function te(e,n){let r=u.resolve(process.cwd(),`index.css`),i=d.existsSync(r)?`import './index.css';`:``,a=n?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],o=a.map(([e,n])=>`import * as _comp_${e} from '${t(n)}';
7
+ const ${e} = _comp_${e}.default || _comp_${e}['${e}'] || _comp_${e};`).join(`
8
+ `),s=a.map(([e])=>e).join(`, `),c=u.basename(e.docsDir||`docs`),l=u.resolve(process.cwd(),e.docsDir||`docs`),f=[`tsx`,`ts`,`jsx`,`js`].map(e=>u.resolve(l,`pages-external/index.${e}`)).find(e=>d.existsSync(e)),p=f?`import * as _external_module from '${t(f)}';`:``,m=f?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``,h=process.env.VITE_SSG===`true`,g=h?`{ eager: true }`:`{}`,_=h?``:`
9
+ if (typeof window !== 'undefined') {
10
+ const prefetchAll = () => {
11
+ const getters = Object.values(mdxModules)
12
+ if (getters.length === 0) return
13
+ let i = 0
14
+ const nextBatch = () => {
15
+ if (i >= getters.length) return
16
+ const batch = getters.slice(i, i + 6)
17
+ i += batch.length
18
+ Promise.allSettled(batch.map(fn => fn())).then(() => {
19
+ setTimeout(nextBatch, 0)
20
+ })
21
+ }
22
+ ;(typeof requestIdleCallback === 'function' ? requestIdleCallback : function(cb) { setTimeout(cb, 500) })(nextBatch)
23
+ }
24
+ prefetchAll()
25
+ }
26
+ `;return`
27
+ import { ViteReactSSG, createRoutes } from 'boltdocs/client'
28
+ import _routes from 'virtual:boltdocs-routes.ts'
29
+ import _collections from 'virtual:boltdocs-collections.ts'
30
+ import _config from 'virtual:boltdocs-config.ts'
31
+ import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx'
32
+ ${i}
33
+ ${o}
34
+ ${p}
35
+
36
+ const mdxModules = import.meta.glob('/${c}/**/*.{md,mdx}', ${g});
37
+
38
+ const _collLayoutMods = import.meta.glob('${`/${c}/**/layout.tsx`}', { eager: true });
39
+ const _collListMods = import.meta.glob('${`/${c}/**/list.tsx`}', { eager: true });
40
+ const _collPostMods = import.meta.glob('${`/${c}/**/post.tsx`}', { eager: true });
41
+
42
+ const _collectionLayouts = {};
43
+ for (const [p, mod] of Object.entries(_collLayoutMods)) {
44
+ const dir = p.split('/').slice(-2, -1)[0];
45
+ if (dir.startsWith('[') && dir.endsWith(']')) {
46
+ _collectionLayouts[dir.slice(1, -1)] = mod.default || mod;
47
+ }
48
+ }
49
+
50
+ const _collectionLists = {};
51
+ for (const [p, mod] of Object.entries(_collListMods)) {
52
+ const dir = p.split('/').slice(-2, -1)[0];
53
+ if (dir.startsWith('[') && dir.endsWith(']')) {
54
+ _collectionLists[dir.slice(1, -1)] = mod.default || mod;
55
+ }
56
+ }
57
+
58
+ const _collectionPosts = {};
59
+ for (const [p, mod] of Object.entries(_collPostMods)) {
60
+ const dir = p.split('/').slice(-2, -1)[0];
61
+ if (dir.startsWith('[') && dir.endsWith(']')) {
62
+ _collectionPosts[dir.slice(1, -1)] = mod.default || mod;
63
+ }
64
+ }
65
+
66
+ export const createRoot = ViteReactSSG(
67
+ {
68
+ routes: createRoutes({
69
+ routesData: _routes,
70
+ collectionsData: _collections,
71
+ collectionLayouts: _collectionLayouts,
72
+ collectionLists: _collectionLists,
73
+ collectionPosts: _collectionPosts,
74
+ config: _config,
75
+ mdxModules,
76
+ ${m}
77
+ components: { ${s}${s?`, `:``} ...(_user_mdx_components || {}) },
78
+ }),
79
+ },
80
+ ({ isClient }) => {
81
+ // Boltdocs initialization hook
82
+ if (isClient) {
83
+ // Client-side initialization
84
+ }
85
+ },
86
+ );
87
+ ${_}
88
+ `}var C=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},w=class extends C{constructor(e,t){super(e,`Validation failed: ${t}`)}},T=class extends C{constructor(e,t){super(e,`Compatibility error: ${t}`)}},E=class extends C{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},D=class{data=new Map;getNamespaceKey(e,t){return`${e}:${t}`}get(e,t){let n=this.getNamespaceKey(e,t),r=this.data.get(n);if(r!==void 0)return typeof r==`object`&&r?JSON.parse(JSON.stringify(r)):r}set(e,t,n){let r=this.getNamespaceKey(e,t),i=typeof n==`object`&&n?JSON.parse(JSON.stringify(n)):n;this.data.set(r,i)}has(e,t){let n=this.getNamespaceKey(e,t);return this.data.has(n)}};const O=n.extend({version:f.string().optional(),boltdocsVersion:f.string().optional(),hooks:f.object({beforeBuild:f.function().optional(),afterBuild:f.function().optional(),beforeDev:f.function().optional(),afterDev:f.function().optional(),buildEnd:f.function().optional(),transformSource:f.function().optional(),transformMdx:f.function().optional(),transformHtml:f.function().optional()}).optional()});function k(e,t){let n=[],r=new Set;for(let i of e){let e=O.safeParse(i);if(!e.success)throw new w(i.name||`unknown`,e.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `));let a=e.data;if(r.has(a.name))throw new w(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!g.satisfies(t,a.boltdocsVersion))throw new T(a.name,`Plugin expects Boltdocs version ${a.boltdocsVersion}, but current is ${t}`);if(a.components){for(let[e,t]of Object.entries(a.components))if((t.includes(`..`)||u.isAbsolute(t))&&t.includes(`..`))throw new w(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`)}n.push(a)}return n}function A(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{let{createRequire:r}=S(`node:module`);n=r(u.resolve(t,`package.json`)).resolve(`${e.name}/package.json`)}catch{let r=u.resolve(t,`node_modules`,e.name,`package.json`);d.existsSync(r)&&(n=r)}if(n&&d.existsSync(n)){let t=JSON.parse(d.readFileSync(n,`utf-8`)).scripts||{};(t.preinstall||t.postinstall||t.install)&&h(`💡 ${m.yellow(m.bold(`Nota de seguridad:`))} El plugin ${m.cyan(e.name)} ejecuta scripts nativos al instalarse. Corre ${m.bold(`boltdocs audit`)} para un análisis detallado.`)}}catch{}}var ne=class{name=`ConfigResolve`;async execute(e){e.config=await r(`docs`,e.root),A(e.config,e.root),e.viteConfig=await $(e.root,`production`)}};function j(e){return e.map(e=>({path:e.path,filePath:e.filePath,title:e.title,description:e.description||``,sidebarPosition:e.sidebarPosition,badge:e.badge,icon:e.icon,headings:e.headings||[],_content:e._content||``,_rawContent:e._rawContent||``,locale:e.locale,version:e.version,tab:e.tab,collection:e.collection,tags:e.tags,author:e.author,draft:e.draft,excerpt:e.excerpt,coverImage:e.coverImage,group:e.group,groupTitle:e.groupTitle,groupPosition:e.groupPosition,groupIcon:e.groupIcon,subRouteGroup:e.subRouteGroup,seo:e.seo,date:e.date,lastUpdated:e.lastUpdated,category:e.category,order:e.order,sidebarLabel:e.sidebarLabel,sidebarHidden:e.sidebarHidden,frontmatter:e.frontmatter,slugParts:e.slugParts}))}var M=class{name=`RouteGenerate`;async execute(e){if(!e.config)throw Error(`Config not resolved. Run ConfigResolve first.`);let t=u.resolve(e.root,`docs`),n=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await o(t,e.config,n)],e.ssgRoutes=j(e.routes)}};const N=f.object({title:f.string().optional(),description:f.string().optional(),canonical:f.string().url().optional(),robots:f.string().optional(),noindex:f.boolean().optional(),"og:title":f.string().optional(),"og:description":f.string().optional(),"og:image":f.string().optional(),"og:type":f.string().optional(),"og:url":f.string().url().optional()});var P=class{name=`SEOValidate`;async execute(e){if(!e.routes||!e.config)throw Error(`Routes or Config not initialized.`);let t=e.config.siteUrl;e.routes=e.routes.map(e=>{let n=e.seo||{},r=n.canonical||(t?`${t.replace(/\/$/,``)}${e.path}`:void 0),i=n[`og:url`]||r||void 0,a={...n};r&&(a.canonical=r),i&&(a[`og:url`]=i),!a[`og:title`]&&e.title&&(a[`og:title`]=e.title),!a[`og:description`]&&e.description&&(a[`og:description`]=e.description);let o=N.safeParse(a);return o.success||h(`[SEOValidate] Validation issues on route "${e.path}":`,o.error.message),e.title||h(`[SEOValidate] Route "${e.path}" is missing a title.`),{...e,seo:a}}),e.ssgRoutes=j(e.routes)}},F=class{name=`TypeGenerate`;async execute(e){if(!e.config||!e.routes)throw Error(`Config or Routes not initialized.`);let t=u.resolve(e.root,`docs`),n=e.routes.map(e=>e.path),r=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(r)||n.push(r),a(e.config,t,e.root,n),i(n)}},I=class{name=`SSGBuild`;async execute(e){if(!e.routes||!e.viteConfig)throw Error(`Routes or ViteConfig not initialized.`);let t={};for(let n of e.routes)if(n.path&&n.componentPath){t[n.path]=n.componentPath;let e=n.path.replace(/\/$/,``);t[e]=n.componentPath}await _({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:u.resolve(e.root,`.boltdocs/build`)},e.viteConfig),e.outDir=e.viteConfig.build?.outDir||`dist`}};function L(t,n){let r=(n.siteUrl||``).replace(/\/$/,``);if(!r)return``;let i=n.seo?.indexing!==`all`&&n.seo?.indexing!==`public`;return`<?xml version="1.0" encoding="UTF-8"?>
89
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
90
+ ${t.filter(e=>e.seo?.noindex||typeof e.seo?.robots==`string`&&e.seo.robots.includes(`noindex`)?!1:(i&&e.seo?.index,!0)).map(t=>` <url>
91
+ <loc>${e(`${r}${t.path.startsWith(`/`)?t.path:`/${t.path}`}`)}</loc>
92
+ <changefreq>weekly</changefreq>
93
+ <priority>0.7</priority>
94
+ </url>`).join(`
95
+ `)}
96
+ </urlset>`}function R(e){let t=e.siteUrl||``,n=t?`${t.replace(/\/$/,``)}/sitemap.xml`:``;if(e.seo?.indexing!==`all`&&e.seo?.indexing!==`public`&&e.seo?.indexing)return[`User-agent: *`,`Disallow: /`].filter(Boolean).join(`
97
+ `);if(typeof e.robots==`string`)return e.robots;if(e.robots&&typeof e.robots==`object`){let t=e.robots.rules||[],r=e.robots.sitemaps||[],i=t.map(e=>{let t=`User-agent: ${e.userAgent}\n`;return e.allow&&(Array.isArray(e.allow)?t+=e.allow.map(e=>`Allow: ${e}`).join(`
98
+ `)+`
99
+ `:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
100
+ `)+`
101
+ `:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
102
+
103
+ `),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
104
+ `);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
105
+ `)}var z=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=L(e.ssgRoutes,e.config),n=u.resolve(e.root,e.outDir);t&&d.writeFileSync(u.join(n,`sitemap.xml`),t,`utf-8`);let r=R(e.config);d.writeFileSync(u.join(n,`robots.txt`),r,`utf-8`)}};function B(){return new V().addStep(new ne).addStep(new M).addStep(new P).addStep(new F).addStep(new I).addStep(new z)}var V=class{steps=[];addStep(e){return this.steps.push(e),this}async run(e){let t=[],n=performance.now(),r={...e,timing:{}};for(let e of this.steps){let i=performance.now();try{await e.execute(r);let n=performance.now()-i;t.push({name:e.name,duration:n,success:!0}),r.timing[e.name]=n}catch(a){let o=performance.now()-i;t.push({name:e.name,duration:o,success:!1,error:a instanceof Error?a:Error(String(a))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.find(t=>t.name===e.name);if(t?.rollback)try{await t.rollback(r)}catch(t){console.error(`[pipeline] rollback failed for step "${e.name}":`,t)}}let s=performance.now()-n;return{success:!1,failedStep:e.name,error:a instanceof Error?a:Error(String(a)),timing:{total:s,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}},H=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new D,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new V;for(let i of n)i.hooks?.[e]&&r.addStep(this.createStep(i,e,t));await r.run({})}async runChain(e,t){let n=this.getSortedPlugins(),r=t;for(let t of n){if(!t.hooks?.[e])continue;let n=this.createContext(t);try{let i=t.hooks[e],a=await i(n,r);a!==void 0&&(r=a)}catch(r){let i=new E(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i)}}return r}getSortedPlugins(){let e=this.plugins.filter(e=>e.enforce===`pre`),t=this.plugins.filter(e=>!e.enforce),n=this.plugins.filter(e=>e.enforce===`post`);return[...e,...t,...n]}createStep(e,t,n){return{name:`${e.name}:${String(t)}`,execute:async()=>{let r=this.createContext(e);try{let i=e.hooks[t];await i(r,...n)}catch(n){let i=new E(e.name,t,n instanceof Error?n:Error(String(n)));r.logger.error(i)}},rollback:async()=>{let t=e.hooks?.buildEnd;if(t){let n=this.createContext(e);try{await t(n)}catch{}}}}}createContext(e){return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(e,t)=>this.store.get(e,t),set:(e,t,n)=>this.store.set(e,t,n),has:(e,t)=>this.store.has(e,t)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>p.info(`${t} ${e}`),warn:e=>p.warn(`${t} ${e}`),error:e=>{p.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>p.debug(`${t} ${e}`)}}};function U(e,t,n){e&&b(e,typeof t==`function`?t:e=>Array.isArray(t)?t.includes(e.type):e.type===t,(e,t,r)=>{if(t!==void 0&&r!==void 0)return n(e,t,r)})}function W(e,t,n){U(e,s.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function G(e,t,n){let r=Array.isArray(t)?t:[t],i=[s.JSX_FLOW_ELEMENT,s.JSX_TEXT_ELEMENT];U(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function K(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function q(e,t){return e?.data?.hProperties?.[t]}function J(e,t){return typeof t==`object`&&t?{type:s.JSX_ATTRIBUTE,name:e,value:t}:{type:s.JSX_ATTRIBUTE,name:e,value:String(t)}}function Y(e,t={},n=[]){return{type:s.ELEMENT,tagName:e,properties:t,children:n}}function X(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>J(e,t));return{type:r?s.JSX_FLOW_ELEMENT:s.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function re(e,t){e&&b(e,s.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function ie(e,t){e&&b(e,s.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function ae(e,t){if(!e)return;e.properties=e.properties||{};let n=e.properties.className;Array.isArray(n)?n.includes(t)||n.push(t):typeof n==`string`?n!==t&&(e.properties.className=[n,t]):e.properties.className=[t]}function oe(e,t){if(!e||!e.properties||!e.properties.className)return;let n=e.properties.className;Array.isArray(n)?e.properties.className=n.filter(e=>e!==t):typeof n==`string`&&n===t&&delete e.properties.className}function se(e,t){if(!e||!e.properties||!e.properties.className)return!1;let n=e.properties.className;return Array.isArray(n)?n.includes(t):typeof n==`string`?n===t:!1}function ce(e){return e}const Z={"Access-Control-Allow-Origin":`*`,"Access-Control-Allow-Methods":`POST, OPTIONS`,"Access-Control-Allow-Headers":`Content-Type`,"Content-Type":`application/json`};async function le(e,t){if(Object.entries(Z).forEach(([e,n])=>{t.setHeader(e,n)}),e.method===`OPTIONS`){t.status(200).end();return}if(e.method!==`POST`){t.status(405).json({error:`Method Not Allowed`});return}try{let n=await c(e.body,process.env);t.status(200).json(n)}catch(e){let n=e instanceof Error?e.message:`Failed to submit feedback`;return t.status(500).json({error:n})}}async function ue(e,t=process.env){let n=(e,t=200)=>({statusCode:t,headers:Z,body:e?JSON.stringify(e):``});if(e.httpMethod===`OPTIONS`)return n(null,200);if(e.httpMethod!==`POST`)return n({error:`Method Not Allowed`},405);try{return n(await c(e.body?JSON.parse(e.body):{},t))}catch(e){return n({error:e instanceof Error?e.message:`Failed to submit feedback`},500)}}async function Q(e,t={}){let n=(e,t=200)=>new Response(e?JSON.stringify(e):null,{status:t,headers:Z});if(e.method===`OPTIONS`)return n(null);if(e.method!==`POST`)return n({error:`Method Not Allowed`},405);try{return n(await c(await e.json(),{...process.env,...t}))}catch(e){return n({error:e instanceof Error?e.message:`Failed to submit feedback`},500)}}async function de(e,t=process.env){let n=(e,t=200)=>({statusCode:t,headers:Z,body:e?JSON.stringify(e):``});if(e.httpMethod===`OPTIONS`)return n(null,200);if(e.httpMethod!==`POST`)return n({error:`Method Not Allowed`},405);try{return n(await c(e.body?JSON.parse(e.body):{},t))}catch(e){return n({error:e instanceof Error?e.message:`Failed to submit feedback`},500)}}async function fe(e){let{resolveConfig:t}=await import(`./config-GPVEdeon.mjs`),{generateRoutes:n}=await import(`./routes-DR13Y1em.mjs`),{generateProjectTypes:r,writeLinkTree:i}=await import(`./types-generator-Cu2jQP-V.mjs`),{boltdocsPlugin:a}=await import(`./plugin-BkquLpOI.mjs`),o=e?.docsDir||`docs`,s=await t(o),c=(await n(o,s)).map(e=>e.path),l=(s.base||`/docs`).replace(/\/$/,``);return c.includes(l)||c.push(l),r(s,o,void 0,c),i(c),a({...e},s)}async function $(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:s},{getCSPHeader:c},{resolveConfig:l},{generateRoutes:d},{generateProjectTypes:f,writeLinkTree:p},{normalizePath:m}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),import(`./plugin-BkquLpOI.mjs`),import(`./headers-HD_qTVVW.mjs`).then(e=>e.n),import(`./csp-RJyh0nHV.mjs`).then(e=>e.t),import(`./config-GPVEdeon.mjs`),import(`./routes-DR13Y1em.mjs`),import(`./types-generator-Cu2jQP-V.mjs`),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),h=r.default,g=i.default,_=n||await l(`docs`,e),v=(await d(`docs`,_)).map(e=>e.path),y=(_.base||`/docs`).replace(/\/$/,``);v.includes(y)||v.push(y),f(_,`docs`,e,v),p(v);let b=t===`production`,x=b?{...s}:{};return _.security?.enableCSP&&(x[`Content-Security-Policy`]=c(_)),{root:e,mode:t,oxc:{jsx:{development:!b,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[h(),g(),...a({docsDir:`docs`,root:e},_)],resolve:{alias:[{find:`boltdocs/entry`,replacement:m(u.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:m(u.resolve(e,`boltdocs-client.mjs`))},{find:`use-sync-external-store/shim/index.js`,replacement:`react`},{find:`use-sync-external-store/shim`,replacement:`react`},{find:`use-sync-external-store`,replacement:`react`},{find:`@`,replacement:m(u.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...o()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,..._.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{headers:{...x,..._.vite?.server?.headers},..._.vite?.server},preview:{headers:{...x,..._.vite?.preview?.headers},..._.vite?.preview},..._.vite}}export{C as A,H as C,k as D,A as E,w as M,te as N,D as O,ee as P,ie as S,j as T,K as _,ue as a,W as b,v as c,J as d,X as f,oe as g,se as h,Q as i,E as j,T as k,y as l,q as m,$ as n,le as o,Y as p,de as r,ce as s,fe as t,ae as u,G as v,B as w,re as x,U as y};
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Boltdocs - https://boltdocs.vercel.app
3
+ * Copyright (c) 2026 Jesus Alcala
4
+ * Licensed under the MIT License.
5
+ */
6
+ const e=require(`./chunk-Ds5LZdWN.cjs`),t=require(`./utils-BWy_8ASj.cjs`),n=require(`./config-BqZUYono.cjs`),r=require(`./types-generator-BqNKCbrx.cjs`),i=require(`./routes-DgTQxpZi.cjs`),a=require(`./shiki-adapter-BB71nVsG.cjs`),o=require(`./handler-1LRMYeI4.cjs`);let s=require(`node:path`);s=e.n(s);let c=require(`node:fs`);c=e.n(c);let l=require(`zod`),u=require(`@bdocs/dui`);u=e.n(u);let d=require(`semver`);d=e.n(d);let f=require(`@bdocs/ssg/node`),p=require(`unist-util-visit`);function m(e,n){let r=s.default.resolve(process.cwd(),`index.css`),i=c.default.existsSync(r)?`import './index.css';`:``,a=n?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],o=a.map(([e,n])=>`import * as _comp_${e} from '${t.u(n)}';
7
+ const ${e} = _comp_${e}.default || _comp_${e}['${e}'] || _comp_${e};`).join(`
8
+ `),l=a.map(([e])=>e).join(`, `),u=s.default.basename(e.docsDir||`docs`),d=s.default.resolve(process.cwd(),e.docsDir||`docs`),f=[`tsx`,`ts`,`jsx`,`js`].map(e=>s.default.resolve(d,`pages-external/index.${e}`)).find(e=>c.default.existsSync(e)),p=f?`import * as _external_module from '${t.u(f)}';`:``,m=f?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``,h=process.env.VITE_SSG===`true`,g=h?`{ eager: true }`:`{}`,_=h?``:`
9
+ if (typeof window !== 'undefined') {
10
+ const prefetchAll = () => {
11
+ const getters = Object.values(mdxModules)
12
+ if (getters.length === 0) return
13
+ let i = 0
14
+ const nextBatch = () => {
15
+ if (i >= getters.length) return
16
+ const batch = getters.slice(i, i + 6)
17
+ i += batch.length
18
+ Promise.allSettled(batch.map(fn => fn())).then(() => {
19
+ setTimeout(nextBatch, 0)
20
+ })
21
+ }
22
+ ;(typeof requestIdleCallback === 'function' ? requestIdleCallback : function(cb) { setTimeout(cb, 500) })(nextBatch)
23
+ }
24
+ prefetchAll()
25
+ }
26
+ `;return`
27
+ import { ViteReactSSG, createRoutes } from 'boltdocs/client'
28
+ import _routes from 'virtual:boltdocs-routes.ts'
29
+ import _collections from 'virtual:boltdocs-collections.ts'
30
+ import _config from 'virtual:boltdocs-config.ts'
31
+ import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx'
32
+ ${i}
33
+ ${o}
34
+ ${p}
35
+
36
+ const mdxModules = import.meta.glob('/${u}/**/*.{md,mdx}', ${g});
37
+
38
+ const _collLayoutMods = import.meta.glob('${`/${u}/**/layout.tsx`}', { eager: true });
39
+ const _collListMods = import.meta.glob('${`/${u}/**/list.tsx`}', { eager: true });
40
+ const _collPostMods = import.meta.glob('${`/${u}/**/post.tsx`}', { eager: true });
41
+
42
+ const _collectionLayouts = {};
43
+ for (const [p, mod] of Object.entries(_collLayoutMods)) {
44
+ const dir = p.split('/').slice(-2, -1)[0];
45
+ if (dir.startsWith('[') && dir.endsWith(']')) {
46
+ _collectionLayouts[dir.slice(1, -1)] = mod.default || mod;
47
+ }
48
+ }
49
+
50
+ const _collectionLists = {};
51
+ for (const [p, mod] of Object.entries(_collListMods)) {
52
+ const dir = p.split('/').slice(-2, -1)[0];
53
+ if (dir.startsWith('[') && dir.endsWith(']')) {
54
+ _collectionLists[dir.slice(1, -1)] = mod.default || mod;
55
+ }
56
+ }
57
+
58
+ const _collectionPosts = {};
59
+ for (const [p, mod] of Object.entries(_collPostMods)) {
60
+ const dir = p.split('/').slice(-2, -1)[0];
61
+ if (dir.startsWith('[') && dir.endsWith(']')) {
62
+ _collectionPosts[dir.slice(1, -1)] = mod.default || mod;
63
+ }
64
+ }
65
+
66
+ export const createRoot = ViteReactSSG(
67
+ {
68
+ routes: createRoutes({
69
+ routesData: _routes,
70
+ collectionsData: _collections,
71
+ collectionLayouts: _collectionLayouts,
72
+ collectionLists: _collectionLists,
73
+ collectionPosts: _collectionPosts,
74
+ config: _config,
75
+ mdxModules,
76
+ ${m}
77
+ components: { ${l}${l?`, `:``} ...(_user_mdx_components || {}) },
78
+ }),
79
+ },
80
+ ({ isClient }) => {
81
+ // Boltdocs initialization hook
82
+ if (isClient) {
83
+ // Client-side initialization
84
+ }
85
+ },
86
+ );
87
+ ${_}
88
+ `}var h=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},g=class extends h{constructor(e,t){super(e,`Validation failed: ${t}`)}},_=class extends h{constructor(e,t){super(e,`Compatibility error: ${t}`)}},v=class extends h{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},y=class{data=new Map;getNamespaceKey(e,t){return`${e}:${t}`}get(e,t){let n=this.getNamespaceKey(e,t),r=this.data.get(n);if(r!==void 0)return typeof r==`object`&&r?JSON.parse(JSON.stringify(r)):r}set(e,t,n){let r=this.getNamespaceKey(e,t),i=typeof n==`object`&&n?JSON.parse(JSON.stringify(n)):n;this.data.set(r,i)}has(e,t){let n=this.getNamespaceKey(e,t);return this.data.has(n)}};const b=n.i.extend({version:l.z.string().optional(),boltdocsVersion:l.z.string().optional(),hooks:l.z.object({beforeBuild:l.z.function().optional(),afterBuild:l.z.function().optional(),beforeDev:l.z.function().optional(),afterDev:l.z.function().optional(),buildEnd:l.z.function().optional(),transformSource:l.z.function().optional(),transformMdx:l.z.function().optional(),transformHtml:l.z.function().optional()}).optional()});function x(e,t){let n=[],r=new Set;for(let i of e){let e=b.safeParse(i);if(!e.success)throw new g(i.name||`unknown`,e.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `));let a=e.data;if(r.has(a.name))throw new g(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!d.default.satisfies(t,a.boltdocsVersion))throw new _(a.name,`Plugin expects Boltdocs version ${a.boltdocsVersion}, but current is ${t}`);if(a.components){for(let[e,t]of Object.entries(a.components))if((t.includes(`..`)||s.default.isAbsolute(t))&&t.includes(`..`))throw new g(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`)}n.push(a)}return n}function S(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{let{createRequire:r}=require(`node:module`);n=r(s.default.resolve(t,`package.json`)).resolve(`${e.name}/package.json`)}catch{let r=s.default.resolve(t,`node_modules`,e.name,`package.json`);c.default.existsSync(r)&&(n=r)}if(n&&c.default.existsSync(n)){let t=JSON.parse(c.default.readFileSync(n,`utf-8`)).scripts||{};(t.preinstall||t.postinstall||t.install)&&(0,u.warn)(`💡 ${u.colors.yellow(u.colors.bold(`Nota de seguridad:`))} El plugin ${u.colors.cyan(e.name)} ejecuta scripts nativos al instalarse. Corre ${u.colors.bold(`boltdocs audit`)} para un análisis detallado.`)}}catch{}}var C=class{name=`ConfigResolve`;async execute(e){e.config=await n.n(`docs`,e.root),S(e.config,e.root),e.viteConfig=await $(e.root,`production`)}};function w(e){return e.map(e=>({path:e.path,filePath:e.filePath,title:e.title,description:e.description||``,sidebarPosition:e.sidebarPosition,badge:e.badge,icon:e.icon,headings:e.headings||[],_content:e._content||``,_rawContent:e._rawContent||``,locale:e.locale,version:e.version,tab:e.tab,collection:e.collection,tags:e.tags,author:e.author,draft:e.draft,excerpt:e.excerpt,coverImage:e.coverImage,group:e.group,groupTitle:e.groupTitle,groupPosition:e.groupPosition,groupIcon:e.groupIcon,subRouteGroup:e.subRouteGroup,seo:e.seo,date:e.date,lastUpdated:e.lastUpdated,category:e.category,order:e.order,sidebarLabel:e.sidebarLabel,sidebarHidden:e.sidebarHidden,frontmatter:e.frontmatter,slugParts:e.slugParts}))}var T=class{name=`RouteGenerate`;async execute(e){if(!e.config)throw Error(`Config not resolved. Run ConfigResolve first.`);let t=s.default.resolve(e.root,`docs`),n=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await i.t(t,e.config,n)],e.ssgRoutes=w(e.routes)}};const E=l.z.object({title:l.z.string().optional(),description:l.z.string().optional(),canonical:l.z.string().url().optional(),robots:l.z.string().optional(),noindex:l.z.boolean().optional(),"og:title":l.z.string().optional(),"og:description":l.z.string().optional(),"og:image":l.z.string().optional(),"og:type":l.z.string().optional(),"og:url":l.z.string().url().optional()});var D=class{name=`SEOValidate`;async execute(e){if(!e.routes||!e.config)throw Error(`Routes or Config not initialized.`);let t=e.config.siteUrl;e.routes=e.routes.map(e=>{let n=e.seo||{},r=n.canonical||(t?`${t.replace(/\/$/,``)}${e.path}`:void 0),i=n[`og:url`]||r||void 0,a={...n};r&&(a.canonical=r),i&&(a[`og:url`]=i),!a[`og:title`]&&e.title&&(a[`og:title`]=e.title),!a[`og:description`]&&e.description&&(a[`og:description`]=e.description);let o=E.safeParse(a);return o.success||(0,u.warn)(`[SEOValidate] Validation issues on route "${e.path}":`,o.error.message),e.title||(0,u.warn)(`[SEOValidate] Route "${e.path}" is missing a title.`),{...e,seo:a}}),e.ssgRoutes=w(e.routes)}},O=class{name=`TypeGenerate`;async execute(e){if(!e.config||!e.routes)throw Error(`Config or Routes not initialized.`);let t=s.default.resolve(e.root,`docs`),n=e.routes.map(e=>e.path),i=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(i)||n.push(i),r.t(e.config,t,e.root,n),r.r(n)}},ee=class{name=`SSGBuild`;async execute(e){if(!e.routes||!e.viteConfig)throw Error(`Routes or ViteConfig not initialized.`);let t={};for(let n of e.routes)if(n.path&&n.componentPath){t[n.path]=n.componentPath;let e=n.path.replace(/\/$/,``);t[e]=n.componentPath}await(0,f.build)({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:s.default.resolve(e.root,`.boltdocs/build`)},e.viteConfig),e.outDir=e.viteConfig.build?.outDir||`dist`}};function k(e,n){let r=(n.siteUrl||``).replace(/\/$/,``);if(!r)return``;let i=n.seo?.indexing!==`all`&&n.seo?.indexing!==`public`;return`<?xml version="1.0" encoding="UTF-8"?>
89
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
90
+ ${e.filter(e=>e.seo?.noindex||typeof e.seo?.robots==`string`&&e.seo.robots.includes(`noindex`)?!1:(i&&e.seo?.index,!0)).map(e=>` <url>
91
+ <loc>${t.r(`${r}${e.path.startsWith(`/`)?e.path:`/${e.path}`}`)}</loc>
92
+ <changefreq>weekly</changefreq>
93
+ <priority>0.7</priority>
94
+ </url>`).join(`
95
+ `)}
96
+ </urlset>`}function A(e){let t=e.siteUrl||``,n=t?`${t.replace(/\/$/,``)}/sitemap.xml`:``;if(e.seo?.indexing!==`all`&&e.seo?.indexing!==`public`&&e.seo?.indexing)return[`User-agent: *`,`Disallow: /`].filter(Boolean).join(`
97
+ `);if(typeof e.robots==`string`)return e.robots;if(e.robots&&typeof e.robots==`object`){let t=e.robots.rules||[],r=e.robots.sitemaps||[],i=t.map(e=>{let t=`User-agent: ${e.userAgent}\n`;return e.allow&&(Array.isArray(e.allow)?t+=e.allow.map(e=>`Allow: ${e}`).join(`
98
+ `)+`
99
+ `:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
100
+ `)+`
101
+ `:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
102
+
103
+ `),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
104
+ `);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
105
+ `)}var j=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=k(e.ssgRoutes,e.config),n=s.default.resolve(e.root,e.outDir);t&&c.default.writeFileSync(s.default.join(n,`sitemap.xml`),t,`utf-8`);let r=A(e.config);c.default.writeFileSync(s.default.join(n,`robots.txt`),r,`utf-8`)}};function M(){return new N().addStep(new C).addStep(new T).addStep(new D).addStep(new O).addStep(new ee).addStep(new j)}var N=class{steps=[];addStep(e){return this.steps.push(e),this}async run(e){let t=[],n=performance.now(),r={...e,timing:{}};for(let e of this.steps){let i=performance.now();try{await e.execute(r);let n=performance.now()-i;t.push({name:e.name,duration:n,success:!0}),r.timing[e.name]=n}catch(a){let o=performance.now()-i;t.push({name:e.name,duration:o,success:!1,error:a instanceof Error?a:Error(String(a))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.find(t=>t.name===e.name);if(t?.rollback)try{await t.rollback(r)}catch(t){console.error(`[pipeline] rollback failed for step "${e.name}":`,t)}}let s=performance.now()-n;return{success:!1,failedStep:e.name,error:a instanceof Error?a:Error(String(a)),timing:{total:s,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}},P=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new y,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new N;for(let i of n)i.hooks?.[e]&&r.addStep(this.createStep(i,e,t));await r.run({})}async runChain(e,t){let n=this.getSortedPlugins(),r=t;for(let t of n){if(!t.hooks?.[e])continue;let n=this.createContext(t);try{let i=t.hooks[e],a=await i(n,r);a!==void 0&&(r=a)}catch(r){let i=new v(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i)}}return r}getSortedPlugins(){let e=this.plugins.filter(e=>e.enforce===`pre`),t=this.plugins.filter(e=>!e.enforce),n=this.plugins.filter(e=>e.enforce===`post`);return[...e,...t,...n]}createStep(e,t,n){return{name:`${e.name}:${String(t)}`,execute:async()=>{let r=this.createContext(e);try{let i=e.hooks[t];await i(r,...n)}catch(n){let i=new v(e.name,t,n instanceof Error?n:Error(String(n)));r.logger.error(i)}},rollback:async()=>{let t=e.hooks?.buildEnd;if(t){let n=this.createContext(e);try{await t(n)}catch{}}}}}createContext(e){return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(e,t)=>this.store.get(e,t),set:(e,t,n)=>this.store.set(e,t,n),has:(e,t)=>this.store.has(e,t)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>u.info(`${t} ${e}`),warn:e=>u.warn(`${t} ${e}`),error:e=>{u.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>u.debug(`${t} ${e}`)}}};function F(e,t,n){e&&(0,p.visit)(e,typeof t==`function`?t:e=>Array.isArray(t)?t.includes(e.type):e.type===t,(e,t,r)=>{if(t!==void 0&&r!==void 0)return n(e,t,r)})}function I(e,t,n){F(e,a.o.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function L(e,t,n){let r=Array.isArray(t)?t:[t],i=[a.o.JSX_FLOW_ELEMENT,a.o.JSX_TEXT_ELEMENT];F(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function R(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function z(e,t){return e?.data?.hProperties?.[t]}function B(e,t){return typeof t==`object`&&t?{type:a.o.JSX_ATTRIBUTE,name:e,value:t}:{type:a.o.JSX_ATTRIBUTE,name:e,value:String(t)}}function V(e,t={},n=[]){return{type:a.o.ELEMENT,tagName:e,properties:t,children:n}}function H(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>B(e,t));return{type:r?a.o.JSX_FLOW_ELEMENT:a.o.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function U(e,t){e&&(0,p.visit)(e,a.o.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function W(e,t){e&&(0,p.visit)(e,a.o.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function G(e,t){if(!e)return;e.properties=e.properties||{};let n=e.properties.className;Array.isArray(n)?n.includes(t)||n.push(t):typeof n==`string`?n!==t&&(e.properties.className=[n,t]):e.properties.className=[t]}function K(e,t){if(!e||!e.properties||!e.properties.className)return;let n=e.properties.className;Array.isArray(n)?e.properties.className=n.filter(e=>e!==t):typeof n==`string`&&n===t&&delete e.properties.className}function q(e,t){if(!e||!e.properties||!e.properties.className)return!1;let n=e.properties.className;return Array.isArray(n)?n.includes(t):typeof n==`string`?n===t:!1}function J(e){return e}const Y={"Access-Control-Allow-Origin":`*`,"Access-Control-Allow-Methods":`POST, OPTIONS`,"Access-Control-Allow-Headers":`Content-Type`,"Content-Type":`application/json`};async function X(e,t){if(Object.entries(Y).forEach(([e,n])=>{t.setHeader(e,n)}),e.method===`OPTIONS`){t.status(200).end();return}if(e.method!==`POST`){t.status(405).json({error:`Method Not Allowed`});return}try{let n=await o.t(e.body,process.env);t.status(200).json(n)}catch(e){let n=e instanceof Error?e.message:`Failed to submit feedback`;return t.status(500).json({error:n})}}async function Z(e,t=process.env){let n=(e,t=200)=>({statusCode:t,headers:Y,body:e?JSON.stringify(e):``});if(e.httpMethod===`OPTIONS`)return n(null,200);if(e.httpMethod!==`POST`)return n({error:`Method Not Allowed`},405);try{return n(await o.t(e.body?JSON.parse(e.body):{},t))}catch(e){return n({error:e instanceof Error?e.message:`Failed to submit feedback`},500)}}async function Q(e,t={}){let n=(e,t=200)=>new Response(e?JSON.stringify(e):null,{status:t,headers:Y});if(e.method===`OPTIONS`)return n(null);if(e.method!==`POST`)return n({error:`Method Not Allowed`},405);try{return n(await o.t(await e.json(),{...process.env,...t}))}catch(e){return n({error:e instanceof Error?e.message:`Failed to submit feedback`},500)}}async function te(e,t=process.env){let n=(e,t=200)=>({statusCode:t,headers:Y,body:e?JSON.stringify(e):``});if(e.httpMethod===`OPTIONS`)return n(null,200);if(e.httpMethod!==`POST`)return n({error:`Method Not Allowed`},405);try{return n(await o.t(e.body?JSON.parse(e.body):{},t))}catch(e){return n({error:e instanceof Error?e.message:`Failed to submit feedback`},500)}}async function ne(e){let{resolveConfig:t}=await Promise.resolve().then(()=>require(`./config-kIQOJHXC.cjs`)),{generateRoutes:n}=await Promise.resolve().then(()=>require(`./routes-DX8ryKjs.cjs`)),{generateProjectTypes:r,writeLinkTree:i}=await Promise.resolve().then(()=>require(`./types-generator-BqNKCbrx.cjs`)).then(e=>e.n),{boltdocsPlugin:a}=await Promise.resolve().then(()=>require(`./plugin-CL1LsQXk.cjs`)),o=e?.docsDir||`docs`,s=await t(o),c=(await n(o,s)).map(e=>e.path),l=(s.base||`/docs`).replace(/\/$/,``);return c.includes(l)||c.push(l),r(s,o,void 0,c),i(c),a({...e},s)}async function $(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:c},{getCSPHeader:l},{resolveConfig:u},{generateRoutes:d},{generateProjectTypes:f,writeLinkTree:p},{normalizePath:m}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),Promise.resolve().then(()=>require(`./plugin-CL1LsQXk.cjs`)),Promise.resolve().then(()=>require(`./headers-BJ4jJAhU.cjs`)).then(e=>e.n),Promise.resolve().then(()=>require(`./csp-CBysWlAf.cjs`)).then(e=>e.t),Promise.resolve().then(()=>require(`./config-kIQOJHXC.cjs`)),Promise.resolve().then(()=>require(`./routes-DX8ryKjs.cjs`)),Promise.resolve().then(()=>require(`./types-generator-BqNKCbrx.cjs`)).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),h=r.default,g=i.default,_=n||await u(`docs`,e),v=(await d(`docs`,_)).map(e=>e.path),y=(_.base||`/docs`).replace(/\/$/,``);v.includes(y)||v.push(y),f(_,`docs`,e,v),p(v);let b=t===`production`,x=b?{...c}:{};return _.security?.enableCSP&&(x[`Content-Security-Policy`]=l(_)),{root:e,mode:t,oxc:{jsx:{development:!b,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[h(),g(),...a({docsDir:`docs`,root:e},_)],resolve:{alias:[{find:`boltdocs/entry`,replacement:m(s.default.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:m(s.default.resolve(e,`boltdocs-client.mjs`))},{find:`use-sync-external-store/shim/index.js`,replacement:`react`},{find:`use-sync-external-store/shim`,replacement:`react`},{find:`use-sync-external-store`,replacement:`react`},{find:`@`,replacement:m(s.default.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...o()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,..._.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{headers:{...x,..._.vite?.server?.headers},..._.vite?.server},preview:{headers:{...x,..._.vite?.preview?.headers},..._.vite?.preview},..._.vite}}Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return U}});
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Boltdocs - https://boltdocs.vercel.app
3
+ * Copyright (c) 2026 Jesus Alcala
4
+ * Licensed under the MIT License.
5
+ */
6
+ var e=`2.9.1`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- var e=`2.9.0`;export{e as version};
6
+ var e=`2.9.1`;export{e as version};
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- const e=require(`./doctor-DcFLi4t1.cjs`);exports.doctorAction=e.t;
6
+ const e=require(`./parser-D4oEyuP-.cjs`);exports.parseDocFile=e.t;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Boltdocs - https://boltdocs.vercel.app
3
+ * Copyright (c) 2026 Jesus Alcala
4
+ * Licensed under the MIT License.
5
+ */
6
+ const e=require(`./chunk-Ds5LZdWN.cjs`),t=require(`./utils-BWy_8ASj.cjs`),n=require(`./errors-Dx6JHoKE.cjs`),r=require(`./cache-B19MLTpN.cjs`);let i=require(`node:path`);i=e.n(i);let a=require(`github-slugger`);a=e.n(a);function o(e,n,r,a,o){let s=i.default.relative(n,e).replace(/\\/g,`/`),c=s.split(`/`),l,u,d,f;if(a?.versions&&c.length>0){let e=c[0],t=a.versions.prefix||``,n=a.versions.versions.find(n=>e===t+n.path||e===n.path);n&&(u=n.path,c=c.slice(1))}if(a?.i18n&&c.length>0){let e=c[0];(Array.isArray(a.i18n.locales)?a.i18n.locales.includes(e):a.i18n.locales[e])&&(l=e,c=c.slice(1))}if(c.length>0){let e=c[0].match(/^\((.+)\)$/);e&&(d=e[1].toLowerCase(),c=c.slice(1))}if(c.length>0){let e=c[0].match(/^\[(.+)\]$/);e&&(f=e[1].toLowerCase(),c=c.slice(1))}let p=[...c],m=c.map(e=>t.h(e)).join(`/`),h=o?o.startsWith(`/`)?o:`/${o}`:t.a(m||`index.md`),g=[f?`/${f}`:r,u,l,!o&&!f?d:void 0,h].filter(Boolean).join(`/`).replace(/\/+/g,`/`).replace(/\/$/,``)||`/`;return{relativePath:s,finalPath:g.startsWith(`/`)?g:`/${g}`,remainingParts:p,locale:l,version:u,inferredTab:d,subRouteGroup:void 0,collection:f}}const s=/^(#{2,4})\s+(.+)$/gm,c=/\[([^\]]+)\]\([^)]+\)/g,l=/[_*`]/g,u=/\s+/g,d=/[[\]_*`]|#+.*$|\{[^}]+\}/gm,f=/\((?:[^)]+)\)/g;function p(e,n){let r=new a.default,i=[];for(let n of e.matchAll(s)){let e=n[1].length,a=t.p(n[2].replace(c,`$1`).replace(l,``).trim()).trim(),o=r.slug(a);i.push({level:e,text:a,id:o})}let o=t.m(e.replace(d,``).replace(f,``).replace(u,` `)).trim(),p=n?t.p(n).trim():``;return!p&&e&&(p=o.substring(0,160)),{headings:i,description:p,plainText:o}}const m=[`og:`,`twitter:`,`article:`,`music:`,`video:`,`profile:`,`book:`],h=[`noindex`,`robots`,`canonical`,`keywords`,`author`];function g(e){let t={};e.seo&&typeof e.seo==`object`&&Object.assign(t,e.seo);for(let n of Object.keys(e))(h.includes(n)||m.some(e=>n.startsWith(e)))&&(t[n]=e[n]);return e.hidden===!0&&t.noindex===void 0&&(t.noindex=!0),Object.keys(t).length>0?t:void 0}function _(e){return{title:e.title?t.p(String(e.title)):void 0,badge:e.badge?t.p(String(e.badge)):void 0,description:e.description?t.p(String(e.description)):void 0}}async function v(e,a,s,c){let l=await r.t.get(e);if(l)return l;let u=e.replace(/\\/g,`/`),d=a.replace(/\\/g,`/`),f=y(u),m=i.default.resolve(f),h=i.default.resolve(d);if(i.default.sep===`/`){let e=e=>{let t=e.replace(/\\/g,`/`);return/^[a-zA-Z]:/.test(t)&&(t=t.replace(/^[a-zA-Z]:/,``)),i.default.resolve(t)};m=e(f),h=e(d)}let v=i.default.relative(h,m).replace(/\\/g,`/`);if(v.startsWith(`../`)||v!==`.`&&!t._.test(v))throw new n.n(`Security breach: File is outside of docs directory, contains null bytes, or invalid path characters: ${i.default.basename(f)}`);let{data:b,content:x}=await t.d(e),S=o(m,h,s,c,b.permalink),C=p(x,b.description),w=_(b),T=g(b),E=i.default.basename(S.relativePath),D=t.h(E),O=S.remainingParts.map(e=>t.h(e)).slice(0,-1),k=/^index\.mdx?$/.test(D),A=b.sidebarPosition??t.i(E),j=O.join(`/`),M={route:{path:S.finalPath,componentPath:e,filePath:S.relativePath,title:w.title||t.h(i.default.basename(u,i.default.extname(u))),description:C.description,sidebarPosition:A,headings:C.headings,locale:S.locale,version:S.version,badge:w.badge,icon:b.icon?String(b.icon):void 0,tab:S.inferredTab,subRouteGroup:S.subRouteGroup,slugParts:O,_content:C.plainText,_rawContent:x,date:b.date,lastUpdated:b.lastUpdated,category:b.category,order:b.order,sidebarLabel:b.sidebarLabel,sidebarHidden:b.sidebarHidden||b.hidden,seo:T,frontmatter:b,collection:S.collection,tags:b.tags,author:b.author,draft:b.draft,excerpt:b.excerpt,coverImage:b.coverImage||b.cover},relativeDir:S.collection?void 0:j||void 0,isGroupIndex:k,inferredTab:S.inferredTab,inferredCollection:S.collection,groupMeta:k?{title:b.groupTitle||w.title||(O.length>0?t.t(O[O.length-1]):``),position:b.groupPosition??b.sidebarPosition??(S.remainingParts.length>1?t.i(S.remainingParts[S.remainingParts.length-2]):void 0),icon:b.icon?String(b.icon):void 0}:void 0,inferredGroupPosition:S.remainingParts.length>1?t.i(S.remainingParts[S.remainingParts.length-2]):void 0};return await r.t.set(e,M),M}function y(e){let r;try{r=decodeURIComponent(e)}catch{throw t.l(`SECURITY_ERROR`,`Invalid encoding in path`,{file:e}),new n.t(`Security breach: Invalid characters or encoding in path`)}if(r.length>260)throw new n.n(`Path length exceeds limit`);return r}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return v}});
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Boltdocs - https://boltdocs.vercel.app
3
+ * Copyright (c) 2026 Jesus Alcala
4
+ * Licensed under the MIT License.
5
+ */
6
+ import{P as e}from"./node-B7qbjtLl.mjs";import{_ as t,a as n,d as r,h as i,i as a,l as o,m as s,p as c,t as l}from"./utils-DexBrwiP.mjs";import{n as u,t as d}from"./errors-C0Hx15Ag.mjs";import{t as f}from"./cache-CfhOTR3Q.mjs";import p from"node:path";import m from"github-slugger";function h(e,t,r,a,o){let s=p.relative(t,e).replace(/\\/g,`/`),c=s.split(`/`),l,u,d,f;if(a?.versions&&c.length>0){let e=c[0],t=a.versions.prefix||``,n=a.versions.versions.find(n=>e===t+n.path||e===n.path);n&&(u=n.path,c=c.slice(1))}if(a?.i18n&&c.length>0){let e=c[0];(Array.isArray(a.i18n.locales)?a.i18n.locales.includes(e):a.i18n.locales[e])&&(l=e,c=c.slice(1))}if(c.length>0){let e=c[0].match(/^\((.+)\)$/);e&&(d=e[1].toLowerCase(),c=c.slice(1))}if(c.length>0){let e=c[0].match(/^\[(.+)\]$/);e&&(f=e[1].toLowerCase(),c=c.slice(1))}let m=[...c],h=c.map(e=>i(e)).join(`/`),g=o?o.startsWith(`/`)?o:`/${o}`:n(h||`index.md`),_=[f?`/${f}`:r,u,l,!o&&!f?d:void 0,g].filter(Boolean).join(`/`).replace(/\/+/g,`/`).replace(/\/$/,``)||`/`;return{relativePath:s,finalPath:_.startsWith(`/`)?_:`/${_}`,remainingParts:m,locale:l,version:u,inferredTab:d,subRouteGroup:void 0,collection:f}}const g=/^(#{2,4})\s+(.+)$/gm,_=/\[([^\]]+)\]\([^)]+\)/g,v=/[_*`]/g,y=/\s+/g,b=/[[\]_*`]|#+.*$|\{[^}]+\}/gm,x=/\((?:[^)]+)\)/g;function S(e,t){let n=new m,r=[];for(let t of e.matchAll(g)){let e=t[1].length,i=c(t[2].replace(_,`$1`).replace(v,``).trim()).trim(),a=n.slug(i);r.push({level:e,text:i,id:a})}let i=s(e.replace(b,``).replace(x,``).replace(y,` `)).trim(),a=t?c(t).trim():``;return!a&&e&&(a=i.substring(0,160)),{headings:r,description:a,plainText:i}}const C=[`og:`,`twitter:`,`article:`,`music:`,`video:`,`profile:`,`book:`],w=[`noindex`,`robots`,`canonical`,`keywords`,`author`];function T(e){let t={};e.seo&&typeof e.seo==`object`&&Object.assign(t,e.seo);for(let n of Object.keys(e))(w.includes(n)||C.some(e=>n.startsWith(e)))&&(t[n]=e[n]);return e.hidden===!0&&t.noindex===void 0&&(t.noindex=!0),Object.keys(t).length>0?t:void 0}function E(e){return{title:e.title?c(String(e.title)):void 0,badge:e.badge?c(String(e.badge)):void 0,description:e.description?c(String(e.description)):void 0}}async function D(e,n,o,s){let c=await f.get(e);if(c)return c;let d=e.replace(/\\/g,`/`),m=n.replace(/\\/g,`/`),g=O(d),_=p.resolve(g),v=p.resolve(m);if(p.sep===`/`){let e=e=>{let t=e.replace(/\\/g,`/`);return/^[a-zA-Z]:/.test(t)&&(t=t.replace(/^[a-zA-Z]:/,``)),p.resolve(t)};_=e(g),v=e(m)}let y=p.relative(v,_).replace(/\\/g,`/`);if(y.startsWith(`../`)||y!==`.`&&!t.test(y))throw new u(`Security breach: File is outside of docs directory, contains null bytes, or invalid path characters: ${p.basename(g)}`);let{data:b,content:x}=await r(e),C=h(_,v,o,s,b.permalink),w=S(x,b.description),D=E(b),k=T(b),A=p.basename(C.relativePath),j=i(A),M=C.remainingParts.map(e=>i(e)).slice(0,-1),N=/^index\.mdx?$/.test(j),P=b.sidebarPosition??a(A),F=M.join(`/`),I={route:{path:C.finalPath,componentPath:e,filePath:C.relativePath,title:D.title||i(p.basename(d,p.extname(d))),description:w.description,sidebarPosition:P,headings:w.headings,locale:C.locale,version:C.version,badge:D.badge,icon:b.icon?String(b.icon):void 0,tab:C.inferredTab,subRouteGroup:C.subRouteGroup,slugParts:M,_content:w.plainText,_rawContent:x,date:b.date,lastUpdated:b.lastUpdated,category:b.category,order:b.order,sidebarLabel:b.sidebarLabel,sidebarHidden:b.sidebarHidden||b.hidden,seo:k,frontmatter:b,collection:C.collection,tags:b.tags,author:b.author,draft:b.draft,excerpt:b.excerpt,coverImage:b.coverImage||b.cover},relativeDir:C.collection?void 0:F||void 0,isGroupIndex:N,inferredTab:C.inferredTab,inferredCollection:C.collection,groupMeta:N?{title:b.groupTitle||D.title||(M.length>0?l(M[M.length-1]):``),position:b.groupPosition??b.sidebarPosition??(C.remainingParts.length>1?a(C.remainingParts[C.remainingParts.length-2]):void 0),icon:b.icon?String(b.icon):void 0}:void 0,inferredGroupPosition:C.remainingParts.length>1?a(C.remainingParts[C.remainingParts.length-2]):void 0};return await f.set(e,I),I}function O(e){let t;try{t=decodeURIComponent(e)}catch{throw o(`SECURITY_ERROR`,`Invalid encoding in path`,{file:e}),new d(`Security breach: Invalid characters or encoding in path`)}if(t.length>260)throw new u(`Path length exceeds limit`);return t}var k=e({parseDocFile:()=>D});export{D as n,k as t};
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Boltdocs - https://boltdocs.vercel.app
3
+ * Copyright (c) 2026 Jesus Alcala
4
+ * Licensed under the MIT License.
5
+ */
6
+ import{C as e,D as t,N as n,T as r,_ as i,l as a,y as o}from"./node-B7qbjtLl.mjs";import{c as s,d as c,u as l}from"./utils-DexBrwiP.mjs";import{n as u,t as d}from"./config-DBKBEj3j.mjs";import{n as ee,t as f}from"./types-generator-BRyf4o9F.mjs";import{i as p}from"./cache-CfhOTR3Q.mjs";import{i as m,n as h,r as g,t as _}from"./routes-TUSK5wD7.mjs";import{a as v,i as y,n as te,o as b,r as ne,s as re}from"./shiki-adapter-rQ087Lx3.mjs";import{n as x}from"./doctor-C19DsI1e.mjs";import{t as ie}from"./headers-HD_qTVVW.mjs";import{n as ae}from"./csp-RJyh0nHV.mjs";import*as S from"node:module";import C from"node:path";import w from"node:fs";import{error as T}from"@bdocs/dui";import{loadEnv as oe}from"vite";import E from"node:crypto";import{fileURLToPath as se}from"node:url";import{ViteImageOptimizer as ce}from"@bdocs/plugin-image-optimizer";import le from"@mdx-js/rollup";import ue from"remark-gfm";import D from"remark-frontmatter";import O from"rehype-slug";function k(e){return`<!doctype html>
7
+ <html lang="en">
8
+ <head>
9
+ <meta charset="UTF-8" />
10
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11
+ <title>${e.theme?.title||`Boltdocs`}</title>
12
+ </head>
13
+ <body>
14
+ <div id="root"></div>
15
+ </body>
16
+ </html>`}function A(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=k(t));let n=t.theme,r=n?.title||`Boltdocs`;if(typeof r==`object`){let e=t.i18n?.defaultLocale||``;r=r[e]||Object.values(r)[0]||`Boltdocs`}let i=n?.description||``;if(typeof i==`object`){let e=t.i18n?.defaultLocale||``;i=i[e]||Object.values(i)[0]||``}let a=n?.favicon;!a&&n?.logo&&(a=typeof n.logo==`string`?n.logo:n.logo.light||n.logo.dark);let o=[a?`<link rel="icon" href="${a}">`:``,`<meta name="description" content="${i}">`,`<meta property="og:title" content="${r}">`,`<meta property="og:description" content="${i}">`,`<meta property="og:type" content="website">`,t.siteUrl?`<meta property="og:url" content="${t.siteUrl}">`:``,t.siteUrl?`<link rel="canonical" href="${t.siteUrl}">`:``,`<meta name="twitter:card" content="summary_large_image">`,`<meta name="twitter:title" content="${r}">`,`<meta name="twitter:description" content="${i}">`,`<meta name="generator" content="Boltdocs">`].filter(Boolean).join(`
17
+ `);e=e.includes(`<title>`)?e.replace(/<title>.*?<\/title>/,`<title>${r}</title>`):e.replace(`</head>`,` <title>${r}</title>\n </head>`);let s=``;if(t.integrations?.ga4){let e=t.integrations.ga4;if(process.env.NODE_ENV===`production`||e.debug){let t=e.anonymizeIp?`gtag('set', 'ip', true);`:``,n=e.sendPageView===!1?`{send_page_view: false}`:`{}`,r=e.cookieFlags?`, {'cookie_flags': '${e.cookieFlags}'}`:``;s=`
18
+ <!-- Google tag (gtag.js) - ${e.measurementId} -->
19
+ <script async src="https://www.googletagmanager.com/gtag/js?id=${e.measurementId}"><\/script>
20
+ <script>
21
+ window.dataLayer = window.dataLayer || [];
22
+ function gtag(){dataLayer.push(arguments);}
23
+ gtag('js', new Date());
24
+ ${t}
25
+ gtag('config', '${e.measurementId}', ${n}${r});
26
+ <\/script>
27
+ `}}let c=``,l=``;if(t.integrations?.gtm){let e=t.integrations.gtm;if(process.env.NODE_ENV===`production`){let t=e.dataLayerName||`dataLayer`;c=`
28
+ <!-- Google Tag Manager -->
29
+ <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
30
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
31
+ j=d.createElement(s),dl=l!='${t}'?'&l='+l:'';j.async=true;j.src=
32
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl+'${e.preview?`&gtm_preview=${e.preview}`:``}';f.parentNode.insertBefore(j,f);
33
+ })(window,document,'script','${t}','${e.tagId}');<\/script>
34
+ <!-- End Google Tag Manager -->
35
+ `,l=`
36
+ <!-- Google Tag Manager (noscript) -->
37
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${e.tagId}"
38
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
39
+ <!-- End Google Tag Manager (noscript) -->
40
+ `}}return e=e.replace(`<head>`,`<head>
41
+
42
+ <script>
43
+ (function() {
44
+ try {
45
+ var stored = localStorage.getItem("boltdocs-theme");
46
+ var isDark =
47
+ stored === "dark" ||
48
+ (stored !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
49
+ document.documentElement.classList.toggle("dark", isDark);
50
+ document.documentElement.dataset.theme = isDark ? "dark" : "light";
51
+ } catch (e) {
52
+ // Ignore localStorage errors (e.g. if cookies/storage are disabled)
53
+ }
54
+ })();
55
+ <\/script>
56
+ `),e=e.replace(`</head>`,` ${o}\n${s}${c} </head>`),l&&(e=e.replace(/<body([^>]*)>/,`<body$1>\n${l}`)),!e.includes(`src/main`)&&!e.includes(`virtual:boltdocs-entry`)&&(e=e.replace(`</body>`,` <script type="module">import "virtual:boltdocs-entry";<\/script>
57
+ </body>`)),e}const j=C.dirname(se(import.meta.url));function M(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(M):e&&typeof e==`object`?Object.values(e).flatMap(M):[]}const de=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function fe(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=M(Object.entries(n.frontmatter).filter(([e])=>!de.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}let N=null,P=null;function F(){N=null,P=null}function I(e,t,i,a){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let t=i()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?l(C.resolve(t,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?l(C.resolve(t,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(i){let o=t();if(i.includes(`boltdocs-entry.tsx`)||i===`\0virtual:boltdocs-entry`)return n(e,o);if(i.includes(`boltdocs-client.mjs`)||i===`\0virtual:boltdocs-client.ts`||i===`virtual:boltdocs-client`){let e=j,t=e;for(;e!==C.parse(e).root;){if(w.existsSync(C.join(e,`package.json`))&&JSON.parse(w.readFileSync(C.join(e,`package.json`),`utf-8`)).name===`boltdocs`){t=e;break}e=C.dirname(e)}let n=C.join(t,`src/client/index.ts`),r=C.join(t,`dist/client/index.js`);return`export * from '${l(w.existsSync(n)?n:r)}';`}if(!i.startsWith(`\0virtual:boltdocs-`))return;let s=i.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(s===`routes`){let e=r(await _(a,o));return`export default ${JSON.stringify(e,null,2)};`}if(s===`collections`){let e=r(await _(a,o)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,frontmatter:n.frontmatter}));return`export default ${JSON.stringify(t,null,2)};`}if(s===`config`){if(N===null){let{loadDirectoryMeta:e}=await import(`./meta-loader-CxAoQthW.mjs`);N=await e(a)}let e=N,t={base:o?.base,theme:o?.theme,i18n:o?.i18n,versions:o?.versions,siteUrl:o?.siteUrl,integrations:o?.integrations,plugins:o?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(s===`entry`)return n(e,o);if(s===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],t=null;for(let n of e){let e=C.resolve(a,`mdx-components.${n}`);if(w.existsSync(e)){t=e;break}}if(t){let e=l(t);return`import * as components from '${e}';
58
+ const mdxComponents = components.default || components;
59
+ export default mdxComponents;
60
+ export * from '${e}';`}return`export default {};`}if(s===`layout`){let e=[`tsx`,`jsx`],t=null;for(let n of e){let e=C.resolve(a,`layout.${n}`);if(w.existsSync(e)){t=e;break}}if(t)return`import UserLayout from '${l(t)}';
61
+ export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(s===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],t=null;for(let n of e){let e=C.resolve(a,`icons.${n}`);if(w.existsSync(e)){t=e;break}}return t?`import * as icons from '${l(t)}';\nexport default icons;`:`export default {};`}if(s===`search`){if(!P){let e=fe(await _(a,o));P=`export default ${JSON.stringify(e,null,2)};`}return P}if(s===`client`){let e=j,t=``;for(;e&&e!==C.parse(e).root;){let n=C.join(e,`src/client/index.ts`),r=C.join(e,`dist/client/index.mjs`),i=C.join(e,`client/index.ts`);if(w.existsSync(n)){t=l(n);break}if(w.existsSync(r)){t=l(r);break}if(w.existsSync(i)){t=l(i);break}e=C.dirname(e)}if(!t)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${j}`);return`export * from '${t}';`}}}}function L(e){return(t,n,r)=>{let i=e().integrations?.feedback?.custom,a=i?.endpoint||`/api/feedback`;if(!i?.enabled||t.method!==`POST`||t.url?.split(`?`)[0]!==a)return r();let o=``;t.on(`data`,e=>{o+=e}),t.on(`end`,async()=>{n.setHeader(`Content-Type`,`application/json`);try{let{handleFeedback:e}=await import(`./handler-eNNcucnf.mjs`),t=await e(JSON.parse(o),process.env,{owner:i.owner,repo:i.repo,categorySlug:i.categorySlug});n.statusCode=200,n.end(JSON.stringify(t))}catch(e){n.statusCode=500;let t=e instanceof Error?e.message:`Failed to submit feedback`;n.end(JSON.stringify({error:t}))}})}}function R(e){return(t,n,r)=>{let i=t.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(C.extname(a))return r();let o=e(),s=C.resolve(o?.root||process.cwd(),o?.build?.outDir||`dist`),c=a.replace(/\/$/,``)||`/`,l=C.join(s,c,`index.html`);c!==`/`&&w.existsSync(l)&&(t.url=`${c}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()}}const z=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function B(e,t,n){let r=process.env.NODE_ENV===`production`;e.middlewares.use(L(n)),e.middlewares.use((e,t,i)=>{r&&Object.entries(ie).forEach(([e,n])=>{t.setHeader(e,n)});let a=n();a.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,ae(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(t,r,i)=>{let a=t.url?.split(`?`)[0]||`/`,o=t.headers.accept||``,s=n();if(o.includes(`text/html`)&&!z.test(a)){let n=k(s);n=A(n,s),n=await e.transformIndexHtml(t.url||`/`,n),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(n);return}i()})}function V(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await import(`./routes-DR13Y1em.mjs`),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=32){let n=i.slice(t,t+32);await Promise.allSettled(n.map(t=>{let n=C.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},0)}const H=[`tsx`,`jsx`],U=[`tsx`,`ts`,`jsx`,`js`];function pe(e,t){let n=d.map(e=>C.resolve(process.cwd(),e)),r=H.map(e=>C.resolve(t,`layout.${e}`)),i=U.map(e=>C.resolve(t,`mdx-components.${e}`)),a=U.map(e=>C.resolve(t,`pages-external/index.${e}`)),o=U.map(e=>C.resolve(t,`icons.${e}`));e.watcher.add([...n,...i,...r,...a,...o])}const W=new Map;function G(e){let{lastUpdated:t,...n}=e;return E.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function me(e){try{let{data:t}=await c(e);return G(t)}catch{return``}}function he(e){let t=W.get(e);if(t===void 0){let n=g.getStale(e);n?.route?.frontmatter&&(t=G(n.route.frontmatter),W.set(e,t))}return t}function ge(e,t){W.set(e,t)}function _e(e){W.delete(e)}const K=[`tsx`,`ts`,`jsx`,`js`];function q(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function ve(e,t,n,r){let i=new Map,a=n.toLowerCase(),o=async(n,o)=>{try{let c=l(n);if(d.some(e=>c.endsWith(e))){e.restart();return}if(K.some(e=>c.endsWith(`mdx-components.${e}`))){f(r(),t),q(e,`mdx-components.tsx`),e.ws.send({type:`full-reload`});return}if(K.some(e=>c.endsWith(`icons.${e}`))){q(e,`icons.tsx`),e.ws.send({type:`full-reload`});return}if(c.endsWith(`layout.tsx`)||c.endsWith(`layout.jsx`)){q(e,`layout.tsx`),e.ws.send({type:`full-reload`});return}if(c.includes(`/pages-external/`)||c.includes(`\\pages-external\\`)){q(e,`entry`),e.ws.send({type:`full-reload`});return}if(!c.toLowerCase().startsWith(a))return;let u=c.endsWith(`meta.json`)||c.endsWith(`_meta.json`);if(!u&&!s(c))return;if(o===`add`||o===`unlink`||u){o===`unlink`&&_e(n),h(),F();let i=r();f(i,t),q(e,`config`),q(e,`routes`),q(e,`search`),q(e,`collections`),x(t,process.cwd(),i).catch(e=>{T(`Failed to update link tree:`,e)}),e.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:i?.theme,i18n:i?.i18n,versions:i?.versions,siteUrl:i?.siteUrl}}),e.ws.send({type:`full-reload`});return}i.has(c)&&clearTimeout(i.get(c)),i.set(c,setTimeout(async()=>{i.delete(c);try{let r=he(n),i=await me(n);if(ge(n,i),m(n),r!==void 0&&r!==i){q(e,`routes`),q(e,`search`),q(e,`collections`),e.ws.send({type:`full-reload`});return}let a=l(C.relative(t,n)),o=e.moduleGraph.getModulesByFile(c);if(o&&o.size>0)for(let t of o)e.moduleGraph.invalidateModule(t);else{e.ws.send({type:`full-reload`});return}e.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:c,relPath:a}})}catch(e){T(`HMR error processing content change:`,e)}},150))}catch(e){T(`HMR error during ${o} event:`,e)}};e.watcher.on(`add`,e=>o(e,`add`)),e.watcher.on(`unlink`,e=>o(e,`unlink`)),e.watcher.on(`change`,e=>o(e,`change`))}function ye(e){let t=e.toLowerCase();return({file:e})=>{let n=e.toLowerCase();if(n.startsWith(t)&&(s(e)||n.endsWith(`meta.json`)))return[]}}function be(e,t,n,r,i){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let a=i();await a?.runHook(`beforeDev`),x(e,process.cwd(),n()).catch(e=>{T(`Failed to generate initial link tree:`,e)}),V(r,e,n),B(r,e,n),pe(r,e),ve(r,e,t,n),await a?.runHook(`afterDev`)},hotUpdate:ye(t)}}const J=new p(`mdx`);function xe(e){let t=te(e);return async e=>{let n=await t.getHighlighter();o(e,b.ELEMENT,e=>{if(e.tagName!==`pre`)return;let r=e.children?.[0];if(!r||r.type!==b.ELEMENT||r.tagName!==`code`)return;let i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),o=i?i.slice(9):v.MDX_DEFAULT_LANG;if(o===`mermaid`)return;let s=ne(r.properties?.metastring||r.data?.meta||``),c=t.getOptions(o,s),l=r.children?.[0]?.value||``;try{let t=n.codeToHast(l,c),r=t.type===`root`?t.children[0]:t;e.children=r.children,e.properties={...e.properties,...r.properties,[y.HIGHLIGHTED]:`true`,[y.LANG]:o}}catch(t){T(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],re.FALLBACK],e.properties[y.HIGHLIGHTED]=`false`,e.properties[y.LANG]=o}return s.title&&(e.properties[y.TITLE]=s.title),a})}}function Se(){return e=>{o(e,b.CODE,e=>{e.meta&&i(e,`metastring`,e.meta)})}}let Ce=!1;function we(e,t,n=le){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[ue,D,Se,...r],rehypePlugins:[O,[xe,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Ce||=(await J.load(),!0),a.buildStart&&await a.buildStart.call(this)},async load(e,n){if(e.endsWith(`.md`)||e.endsWith(`.mdx`))try{let n=w.readFileSync(e,`utf-8`),r=t?.();return r&&(n=(await r.runChain(`transformSource`,{code:n,filePath:e})).code),n}catch{return null}return a.load?a.load.call(this,e,n):null},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${E.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await J.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),J.set(o,e),{code:e,map:null}}return c},async buildEnd(){J.save(),await J.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Y=S.createRequire(import.meta.url),Te=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],Ee=[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`];function X(e=Y){try{let e=C.join(process.cwd(),`node_modules/boltdocs/package.json`);return w.existsSync(e)?S.createRequire(w.realpathSync(e)):S.createRequire(C.join(process.cwd(),`package.json`))}catch{return e}}function Z(e,t=Y){try{let n=e.split(`/`),r=e.startsWith(`@`)?n.slice(0,2).join(`/`):n[0],i=e.startsWith(`@`)?n.slice(2).join(`/`):n.slice(1).join(`/`),a=``;try{a=t.resolve(`${r}/package.json`)}catch{let e=t.resolve(r),n=C.dirname(e);for(;n&&n!==C.dirname(n);){let e=C.join(n,`package.json`);if(w.existsSync(e)){a=e;break}n=C.dirname(n)}}if(!a)throw Error();let o=C.dirname(a),s=JSON.parse(w.readFileSync(a,`utf-8`)),c=i?`./${i}`:`.`,l=s.exports?.[c]||s.exports?.[i]||``;typeof l==`object`&&l&&(l=l.import||l.default||l.require||``),!l&&!i&&(l=s.module||s.main||`index.js`);let u=C.resolve(o,l);if(w.existsSync(u))return u}catch{}return t.resolve(e)}function Q(e=Y){let t=[],n=X(e),r=new Set([n,e]);for(let e of r){for(let n of Te)try{let r=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(n)?Z(n,e):e.resolve(n);r&&t.push(w.realpathSync(r))}catch{}for(let n of Ee)try{t.push(w.realpathSync(e.resolve(n)))}catch{}}return Array.from(new Set(t)).map(e=>l(e))}const $=S.createRequire(import.meta.url),De=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`];function Oe(n={},r){let i=C.resolve(process.cwd(),n.docsDir||`docs`),a=l(i),o=r,s,c=!1,d,p=[],m=()=>o,h=e=>{o=e},g=()=>s,v=()=>d;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(n,r){c=r.command===`build`;let a=!!(r.isSsrBuild||n.build?.ssr);if(Object.assign(process.env,oe(r.mode,n.envDir||process.cwd(),``)),!o){o=await u(i);let e=(await _(i,o)).map(e=>e.path),t=(o.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t),f(o,i,void 0,e),ee(e)}import(`./shiki-adapter-CxTLkjew.mjs`).then(({getShikiAdapter:e})=>{e(o).getHighlighter().catch(()=>{})}).catch(()=>{});let{version:s}=await import(`./package-DQBAV8uo.mjs`),l=t(o.plugins||[],s);return o.plugins=l,d=new e(l,o),p=l.flatMap(e=>e.vitePlugins||[]),c&&await d.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:c},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:Z(`react-router-dom`)},{find:`react-helmet-async`,replacement:Z(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:Z(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...a?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Q($)],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){s=e},resolveId(e,t,n){let r=De.find(t=>e===t||e.startsWith(`${t}/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,C.sep)}/`));if(r&&n?.ssr&&!C.isAbsolute(e)&&r!==`react`&&r!==`react-dom`){let t=X($),n=e;try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,t):t.resolve(e)}catch{try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,$):$.resolve(e)}catch{}}try{n=w.realpathSync(n)}catch{}return{id:n,external:!0}}return null},transformIndexHtml:{order:`pre`,handler:e=>A(e,o)},async buildEnd(){let{pool:e}=await import(`./worker-pool-C6r6V05j.mjs`);await e.terminate()},async closeBundle(){!c||s?.build?.ssr||(await d?.runHook(`afterBuild`),await d?.runHook(`buildEnd`))},configurePreviewServer(e){e.middlewares.use(L(m)),e.middlewares.use(R(g))}},I(n,m,g,i),be(i,a,m,h,v),we(o,v),ce({includePublic:!0}),...p]}export{Oe as boltdocsPlugin,X as getBaseRequire,Q as getExternalAbsolutePaths,Z as resolveEsm};