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.
- package/dist/{cache-C2PiGyg8.cjs → cache-B19MLTpN.cjs} +1 -1
- package/dist/{cache-DFW4R3S0.mjs → cache-CfhOTR3Q.mjs} +1 -1
- package/dist/config-BqZUYono.cjs +7 -0
- package/dist/config-DBKBEj3j.mjs +7 -0
- package/dist/config-GPVEdeon.mjs +6 -0
- package/dist/config-kIQOJHXC.cjs +6 -0
- package/dist/csp-CBysWlAf.cjs +6 -0
- package/dist/csp-RJyh0nHV.mjs +6 -0
- package/dist/doctor-C19DsI1e.mjs +7 -0
- package/dist/{parser-DJoEF96Y.cjs → doctor-D8fl3Sbg.cjs} +1 -1
- package/dist/doctor-DzEgMMRo.cjs +7 -0
- package/dist/errors-C0Hx15Ag.mjs +6 -0
- package/dist/errors-Dx6JHoKE.cjs +6 -0
- package/dist/{doctor-wsPTzt8Y.mjs → handler-eNNcucnf.mjs} +1 -1
- package/dist/headers-BJ4jJAhU.cjs +6 -0
- package/dist/headers-HD_qTVVW.mjs +6 -0
- package/dist/{meta-loader-D0V6oOQt.cjs → meta-loader-C9MKjAs0.cjs} +1 -1
- package/dist/{meta-loader-By22EnYa.mjs → meta-loader-CxAoQthW.mjs} +1 -1
- package/dist/node/cli-entry.cjs +9 -3
- package/dist/node/cli-entry.mjs +9 -3
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +7 -7
- package/dist/node/index.d.mts +8 -8
- package/dist/node/index.mjs +1 -1
- package/dist/node/routes/worker.cjs +1 -1
- package/dist/node/routes/worker.mjs +1 -1
- package/dist/node-B7qbjtLl.mjs +105 -0
- package/dist/node-Dj3-2YYP.cjs +105 -0
- package/dist/package-ByXh2JHp.cjs +6 -0
- package/dist/{package-BK_82QLX.mjs → package-DQBAV8uo.mjs} +1 -1
- package/dist/{doctor-Bknon8f5.cjs → parser-B8naUXl2.cjs} +1 -1
- package/dist/parser-D4oEyuP-.cjs +6 -0
- package/dist/parser-IR9tfyGE.mjs +6 -0
- package/dist/plugin-BkquLpOI.mjs +61 -0
- package/dist/plugin-CL1LsQXk.cjs +61 -0
- package/dist/routes-DR13Y1em.mjs +6 -0
- package/dist/routes-DX8ryKjs.cjs +6 -0
- package/dist/{routes-C6Kr2HFN.cjs → routes-DgTQxpZi.cjs} +1 -1
- package/dist/{routes-CKgGAy8P.mjs → routes-TUSK5wD7.mjs} +1 -1
- package/dist/{shiki-adapter-CUtj-xKv.cjs → shiki-adapter-BB71nVsG.cjs} +1 -1
- package/dist/{handler-B31cxNw0.mjs → shiki-adapter-CL-IQwKI.cjs} +1 -1
- package/dist/shiki-adapter-CxTLkjew.mjs +6 -0
- package/dist/{shiki-adapter-F-P-lDon.mjs → shiki-adapter-rQ087Lx3.mjs} +1 -1
- package/dist/types-generator-BRyf4o9F.mjs +26 -0
- package/dist/types-generator-BqNKCbrx.cjs +26 -0
- package/dist/types-generator-Cu2jQP-V.mjs +6 -0
- package/dist/utils-BWy_8ASj.cjs +7 -0
- package/dist/utils-DexBrwiP.mjs +7 -0
- package/dist/{worker-pool-DRv8ef4z.mjs → worker-pool-C6r6V05j.mjs} +1 -1
- package/package.json +1 -1
- package/dist/doctor-BY1tSmQd.mjs +0 -34
- package/dist/doctor-DcFLi4t1.cjs +0 -34
- package/dist/node-DV-EPtMU.mjs +0 -160
- package/dist/node-vOVNRABe.cjs +0 -160
- package/dist/package-OxKE0p6j.cjs +0 -6
- package/dist/parser-C2Pw18LY.cjs +0 -6
- package/dist/parser-DScG_PTs.mjs +0 -6
- package/dist/routes--LYHSHT7.cjs +0 -6
- package/dist/routes-BAsfsn_e.mjs +0 -6
- package/dist/shiki-adapter-EZptJAmW.mjs +0 -6
- package/dist/shiki-adapter-PQBl32AN.cjs +0 -6
- package/dist/utils-DC4Wq-S2.mjs +0 -7
- package/dist/utils-wHud9ny5.cjs +0 -7
- /package/dist/{generator-DILs0EFN.mjs → generator-B6lrnDZ-.mjs} +0 -0
- /package/dist/{generator-BEIF6MOx.cjs → generator-DtUU3Cfk.cjs} +0 -0
- /package/dist/{handler-Djy0HfsI.cjs → handler-1LRMYeI4.cjs} +0 -0
- /package/dist/{handler-DfhH9D1b.mjs → handler-CyIBbZdb.mjs} +0 -0
- /package/dist/{worker-pool-BS1LX67P.cjs → worker-pool-m81xuM5v.cjs} +0 -0
package/dist/node/index.d.mts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 };
|
package/dist/node/index.mjs
CHANGED
|
@@ -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,
|
|
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-
|
|
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-
|
|
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
|
+
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?`>m_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};
|