boltdocs 3.0.2 → 3.2.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/README.md +2 -18
- package/dist/{adapters-DEXNIv3x.mjs → adapters-ByYY44Zy.mjs} +1 -1
- package/dist/{adapters-C5AWWGfb.cjs → adapters-DvmtpdSF.cjs} +1 -1
- package/dist/{banner-CfdalYLL.d.ts → banner-BMop1KLF.d.ts} +2 -2
- package/dist/{banner-DNSkgUsO.d.cts → banner-CVD0GugR.d.cts} +2 -2
- package/dist/cache-CO4Dy2uQ.cjs +6 -0
- package/dist/cache-Dk53iOo6.mjs +6 -0
- package/dist/chunk-BFSpntXv.mjs +6 -0
- package/dist/{chunk-Ds5LZdWN.cjs → chunk-D1Md3oWO.cjs} +1 -1
- package/dist/client/index.cjs +433 -272
- package/dist/client/index.d.cts +129 -18
- package/dist/client/index.d.ts +129 -18
- package/dist/client/index.js +337 -178
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.d.cts +1 -1
- package/dist/client/mdx.d.ts +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +7 -7
- package/dist/client/primitives.d.cts +5 -22
- package/dist/client/primitives.d.ts +5 -22
- package/dist/client/primitives.js +4 -4
- package/dist/client/theme/neutral.css +1 -3
- package/dist/client/theme/reset.css +31 -4
- package/dist/config-BpzaPsJj.d.cts +781 -0
- package/dist/config-CCXp3aXO.mjs +7 -0
- package/dist/{config-JGkMJoJQ.cjs → config-CMd4XoFq.cjs} +1 -1
- package/dist/config-DlGoEM9D.cjs +7 -0
- package/dist/config-xtS0ZkMm.d.mts +781 -0
- package/dist/{csp-CBysWlAf.cjs → csp-CRp_3U7a.cjs} +1 -1
- package/dist/csp-oTC2ygvF.mjs +6 -0
- package/dist/{docs-layout-6FQ8__ok.js → docs-layout-BdtZ9z6s.js} +9 -28
- package/dist/{docs-layout-3TpAt6MB.cjs → docs-layout-CFWI15Id.cjs} +69 -88
- package/dist/{doctor-BR1B2Mkz.cjs → doctor-BBtmNJE0.cjs} +1 -1
- package/dist/doctor-Bv16QSrI.cjs +7 -0
- package/dist/doctor-DOAbSaiL.mjs +7 -0
- package/dist/{generator-DtUU3Cfk.cjs → generator-COepVWGi.cjs} +1 -1
- package/dist/{handler-Btd4t_67.mjs → handler-DzQae4eA.mjs} +1 -1
- package/dist/{handler-Dzf4dSnV.cjs → handler-XX7cLTqe.cjs} +1 -1
- package/dist/headers-Ddwek8K7.mjs +6 -0
- package/dist/{headers-BXKxiPUv.cjs → headers-dg4SDrjY.cjs} +1 -1
- package/dist/{image-C9md50h2.js → image-Bz87fCla.js} +2 -2
- package/dist/{image-CR6UlaI5.cjs → image-C4TlpMHn.cjs} +18 -18
- package/dist/link-2PzgTnaP.js +673 -0
- package/dist/{icons-dev-BryEFkJu.cjs → link-D1Gjkb-2.cjs} +8 -353
- package/dist/{mdx-DhyMkc35.js → mdx-BuO6a1f7.js} +199 -40
- package/dist/{mdx-DJBg5DuL.cjs → mdx-CD-tSjRG.cjs} +237 -72
- package/dist/{meta-loader-C9MKjAs0.cjs → meta-loader-Dq1zcFnh.cjs} +1 -1
- package/dist/node/cache.cjs +6 -0
- package/dist/node/cache.d.cts +84 -0
- package/dist/node/cache.d.mts +84 -0
- package/dist/node/cache.mjs +6 -0
- package/dist/node/cli-entry.cjs +6 -6
- package/dist/node/cli-entry.mjs +9 -9
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +27 -638
- package/dist/node/index.d.mts +27 -640
- package/dist/node/index.mjs +1 -1
- package/dist/node/mdx/shiki-adapter.cjs +6 -0
- package/dist/node/mdx/shiki-adapter.d.cts +51 -0
- package/dist/node/mdx/shiki-adapter.d.mts +51 -0
- package/dist/node/mdx/shiki-adapter.mjs +6 -0
- package/dist/node-BXtqM1uH.mjs +6 -0
- package/dist/node-BlVk4EVg.cjs +104 -0
- package/dist/node-DOf4zhWc.mjs +104 -0
- package/dist/node-aD1eisrR.cjs +6 -0
- package/dist/{package-CEDhVAfO.cjs → package-BcISI5-P.cjs} +1 -1
- package/dist/{package-_dCCKVvG.mjs → package-CCYEAYeA.mjs} +1 -1
- package/dist/{pages-external-CX2uyW95.cjs → pages-external-XkYIs-d5.cjs} +1 -1
- package/dist/parser-DCiEWkSk.cjs +8 -0
- package/dist/parser-qk9FIHJ7.mjs +8 -0
- package/dist/plugin-C95kvu6h.mjs +73 -0
- package/dist/plugin-DM3u2bVj.cjs +73 -0
- package/dist/routes-BW6zsk7Z.mjs +6 -0
- package/dist/routes-BgoIB5wb.cjs +6 -0
- package/dist/{routes-BajCwrvX.cjs → routes-CORVxc02.cjs} +1 -1
- package/dist/{search-dialog-D4rplZMv.cjs → search-dialog-B1NERUNx.cjs} +101 -55
- package/dist/{search-dialog-Cx7aGW3U.cjs → search-dialog-BRFno7HD.cjs} +8 -8
- package/dist/{search-dialog-DDopgbKM.js → search-dialog-BmxHiKwt.js} +2 -2
- package/dist/{search-dialog-BNdRV60O.js → search-dialog-D6TvjcuV.js} +1 -1
- package/dist/{search-dialog-DaeSPvEo.js → search-dialog-DFnlx8LO.js} +44 -4
- package/dist/{search-dialog-CW1f6dn6.cjs → search-dialog-DHqwjJuG.cjs} +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/shiki-adapter-CoQ6jyJ4.cjs +6 -0
- package/dist/shiki-adapter-D-aKw7PP.mjs +6 -0
- package/dist/sidebar-COTaMHR-.d.ts +1100 -0
- package/dist/sidebar-CrEdJuHX.d.cts +1100 -0
- package/dist/{types-generator-CYcHkDzZ.cjs → types-generator-BXhv7Ill.cjs} +1 -1
- package/dist/types-generator-bDPvUztF.mjs +26 -0
- package/dist/utils-Crm9oPcV.mjs +7 -0
- package/dist/utils-D6Xtj0FZ.cjs +7 -0
- package/package.json +26 -12
- package/src/shared/types.ts +532 -23
- package/dist/cache-DETwlACe.cjs +0 -6
- package/dist/cache-SF59enb3.mjs +0 -6
- package/dist/config-B5uVv5q4.cjs +0 -7
- package/dist/config-D3_zDkHh.mjs +0 -7
- package/dist/csp-gaZ51xzq.mjs +0 -6
- package/dist/doctor-3MheVMwd.mjs +0 -7
- package/dist/doctor-DQxLM202.cjs +0 -7
- package/dist/headers-CXyf0auY.mjs +0 -6
- package/dist/icons-dev-kJyGWNeg.js +0 -916
- package/dist/node-B9JSyEIU.mjs +0 -105
- package/dist/node-Cedquois.cjs +0 -105
- package/dist/parser-CNIPHx4s.cjs +0 -8
- package/dist/parser-D0QHIQsi.mjs +0 -8
- package/dist/plugin-WYNORxp1.cjs +0 -68
- package/dist/plugin-YWNVRpws.mjs +0 -68
- package/dist/rolldown-runtime-fkIsjY3S.mjs +0 -6
- package/dist/routes-CyrnmVuG.mjs +0 -6
- package/dist/routes-D6Tuu7Fs.cjs +0 -6
- package/dist/shiki-adapter-CGTmrR6S.cjs +0 -6
- package/dist/shiki-adapter-CXEGRnjr.mjs +0 -6
- package/dist/shiki-adapter-Mr8_oT_9.cjs +0 -6
- package/dist/sidebar-7gIifpBX.d.cts +0 -615
- package/dist/sidebar-BAKgJ-Er.d.ts +0 -615
- package/dist/types-generator-DVOnRVKU.mjs +0 -26
- package/dist/utils-B3xYMrpK.mjs +0 -7
- package/dist/utils-Bz1tG9Dg.cjs +0 -7
- /package/dist/{errors-C0Hx15Ag.mjs → errors-0zGHRLue.mjs} +0 -0
- /package/dist/{errors-Dx6JHoKE.cjs → errors-vKw8CkiX.cjs} +0 -0
- /package/dist/{index-CdJv4ocW.d.mts → index-1KsTDq4o.d.mts} +0 -0
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{
|
|
6
|
+
import{_ as e,b as t,g as n,h as r,i,m as a,n as o,r as s,t as c,v as l,y as u}from"../node-DOf4zhWc.mjs";import{f as d,u as f}from"../utils-Crm9oPcV.mjs";import{flushCache as p}from"./cache.mjs";import{r as m,t as h}from"../routes-BW6zsk7Z.mjs";import{a as g,r as _}from"../config-CCXp3aXO.mjs";import{t as v}from"../handler-DzQae4eA.mjs";import{i as y,n as b,r as x,t as S}from"../adapters-ByYY44Zy.mjs";export*from"@bdocs/unist-utils";export{r as BoltdocsPluginStore,n as PluginCompatibilityError,e as PluginError,l as PluginHookError,i as PluginLifecycleManager,u as PluginValidationError,s as createPlugin,o as createViteConfig,c as default,g as defineConfig,p as flushCache,t as generateEntryCode,h as generateRoutes,S as handleAwsFeedback,v as handleFeedback,x as handleNetlifyFeedback,y as handleVercelFeedback,b as handleWebFeedback,m as invalidateRouteCache,f as normalizePath,_ as resolveConfig,d as sanitizeFilename,a as validatePlugins};
|
|
@@ -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
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../shiki-adapter-CoQ6jyJ4.cjs`);exports.ShikiAdapter=e.t,exports.getShikiAdapter=e.n,exports.parseMetaString=e.r;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
import { p as ShikiTheme, r as BoltdocsConfig } from "../../config-BpzaPsJj.cjs";
|
|
3
|
+
import * as _$shiki from "shiki";
|
|
4
|
+
import { CodeToHastOptions } from "shiki";
|
|
5
|
+
|
|
6
|
+
//#region src/node/mdx/shiki-adapter.d.ts
|
|
7
|
+
interface ParsedMeta {
|
|
8
|
+
title?: string;
|
|
9
|
+
lineNumbers?: boolean;
|
|
10
|
+
wordWrap?: boolean;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parses a meta string into a structured ParsedMeta object.
|
|
15
|
+
*/
|
|
16
|
+
declare function parseMetaString(metaStr: string): ParsedMeta;
|
|
17
|
+
/**
|
|
18
|
+
* Unified Shiki Adapter for Boltdocs.
|
|
19
|
+
* Centralizes theme resolution, transformer configuration, and rendering logic.
|
|
20
|
+
*/
|
|
21
|
+
declare class ShikiAdapter {
|
|
22
|
+
private config;
|
|
23
|
+
constructor(config?: BoltdocsConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Resolves the code theme from Boltdocs configuration.
|
|
26
|
+
*/
|
|
27
|
+
getTheme(): ShikiTheme | {
|
|
28
|
+
light: ShikiTheme;
|
|
29
|
+
dark: ShikiTheme;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Creates a Shiki highlighter instance with the configured themes.
|
|
33
|
+
*/
|
|
34
|
+
getHighlighter(): Promise<_$shiki.HighlighterCore>;
|
|
35
|
+
/**
|
|
36
|
+
* Assembles Shiki options including transformers for a specific code block.
|
|
37
|
+
*/
|
|
38
|
+
getOptions(lang: string, meta: string | ParsedMeta): CodeToHastOptions;
|
|
39
|
+
/**
|
|
40
|
+
* Renders code to HTML using the Boltdocs Shiki pipeline.
|
|
41
|
+
* Safely handles highlighter exceptions by falling back to escaped pre.
|
|
42
|
+
*/
|
|
43
|
+
render(code: string, lang: string, meta: string | ParsedMeta): Promise<string>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns a cached ShikiAdapter instance.
|
|
47
|
+
* Recreates only if the relevant codeTheme configuration values change deeply.
|
|
48
|
+
*/
|
|
49
|
+
declare function getShikiAdapter(config?: BoltdocsConfig): ShikiAdapter;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { ParsedMeta, ShikiAdapter, getShikiAdapter, parseMetaString };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
import { p as ShikiTheme, r as BoltdocsConfig } from "../../config-xtS0ZkMm.mjs";
|
|
3
|
+
import * as _$shiki from "shiki";
|
|
4
|
+
import { CodeToHastOptions } from "shiki";
|
|
5
|
+
|
|
6
|
+
//#region src/node/mdx/shiki-adapter.d.ts
|
|
7
|
+
interface ParsedMeta {
|
|
8
|
+
title?: string;
|
|
9
|
+
lineNumbers?: boolean;
|
|
10
|
+
wordWrap?: boolean;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parses a meta string into a structured ParsedMeta object.
|
|
15
|
+
*/
|
|
16
|
+
declare function parseMetaString(metaStr: string): ParsedMeta;
|
|
17
|
+
/**
|
|
18
|
+
* Unified Shiki Adapter for Boltdocs.
|
|
19
|
+
* Centralizes theme resolution, transformer configuration, and rendering logic.
|
|
20
|
+
*/
|
|
21
|
+
declare class ShikiAdapter {
|
|
22
|
+
private config;
|
|
23
|
+
constructor(config?: BoltdocsConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Resolves the code theme from Boltdocs configuration.
|
|
26
|
+
*/
|
|
27
|
+
getTheme(): ShikiTheme | {
|
|
28
|
+
light: ShikiTheme;
|
|
29
|
+
dark: ShikiTheme;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Creates a Shiki highlighter instance with the configured themes.
|
|
33
|
+
*/
|
|
34
|
+
getHighlighter(): Promise<_$shiki.HighlighterCore>;
|
|
35
|
+
/**
|
|
36
|
+
* Assembles Shiki options including transformers for a specific code block.
|
|
37
|
+
*/
|
|
38
|
+
getOptions(lang: string, meta: string | ParsedMeta): CodeToHastOptions;
|
|
39
|
+
/**
|
|
40
|
+
* Renders code to HTML using the Boltdocs Shiki pipeline.
|
|
41
|
+
* Safely handles highlighter exceptions by falling back to escaped pre.
|
|
42
|
+
*/
|
|
43
|
+
render(code: string, lang: string, meta: string | ParsedMeta): Promise<string>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns a cached ShikiAdapter instance.
|
|
47
|
+
* Recreates only if the relevant codeTheme configuration values change deeply.
|
|
48
|
+
*/
|
|
49
|
+
declare function getShikiAdapter(config?: BoltdocsConfig): ShikiAdapter;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { ParsedMeta, ShikiAdapter, getShikiAdapter, parseMetaString };
|
|
@@ -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 e from"node:fs";import t from"node:crypto";import{defineHastPlugin as n,defineMdastPlugin as r,mdxToJs as i}from"satteri";import{transformSync as a}from"esbuild";function o(){return r({name:`boltdocs-remark-meta`,code(e,t){e.meta&&t.setProperty(e,`data`,{...e.data||{},hProperties:{...e.data?.hProperties||{},metastring:e.meta}})}})}function s(e){return e.toLowerCase().replace(/<[^>]+>/g,``).replace(/[^\w\s-]/g,``).replace(/\s+/g,`-`).trim()}function c(){return n({name:`boltdocs-rehype-slug`,element:{filter:[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],visit(e,t){let n=t.textContent(e);n&&t.setProperty(e,`id`,s(n))}}})}function l(e){let t={};if(!e)return t;/lineNumbers|showLineNumbers/.test(e)&&(t.lineNumbers=!0),/wordWrap|word-wrap/.test(e)&&(t.wordWrap=!0);let n=e.match(/title=(["'])(.*?)\1/);return n&&(t.title=n[2]),t}function u(e,t){let n=e?.className??e?.class??[],r=t?.className??t?.class??[];return[...Array.isArray(r)?r:[r],...Array.isArray(n)?n:[n]].filter(Boolean)}function d(){let e=null,t=null;return n({name:`boltdocs-rehype-shiki`,element:{filter:[`pre`],async visit(n,r){e||(e=(await import(`boltdocs/node/mdx/shiki-adapter`)).getShikiAdapter(),t=e.getHighlighter());let i=await t,a=n.children?.[0];if(!a||a.type!==`element`||a.tagName!==`code`)return;let o=(a.properties?.className??a.properties?.class??[]).find(e=>e.startsWith(`language-`)),s=o?o.slice(9):`text`;if(s===`mermaid`)return;let c=l(a.properties?.metastring??a.data?.meta??``),d=e.getOptions(s,c),f=a.children?.[0]?.value??``;try{let e=i.codeToHast(f,d),t=e.type===`root`?e.children[0]:e,r=u(n.properties,t.properties),a={},o=n.properties??{};for(let e of Object.keys(o))e===`class`||e===`className`||(a[e]=o[e]);let l=t.properties??{};for(let[e,t]of Object.entries(l))e===`class`||e===`className`||(a[e]=t);return a.className=r,a[`data-highlighted`]=`true`,a[`data-lang`]=s,c.title&&(a[`data-title`]=c.title),{type:`element`,tagName:`pre`,properties:a,children:t.children}}catch{let e={},t=n.properties??{};for(let n of Object.keys(t))n===`class`||n===`className`||(e[n]=t[n]);return e.className=[...t?.className??t?.class??[],`shiki-fallback`],e[`data-highlighted`]=`false`,e[`data-lang`]=s,c.title&&(e[`data-title`]=c.title),{type:`element`,tagName:`pre`,properties:e,children:n.children}}}}})}function f(e){if(!e)return null;if(typeof e==`object`&&`name`in e&&[`paragraph`,`heading`,`thematicBreak`,`blockquote`,`list`,`listItem`,`html`,`code`,`definition`,`text`,`emphasis`,`strong`,`inlineCode`,`break`,`link`,`image`].some(t=>t in e&&typeof e[t]==`function`))return e;let t;try{t=typeof e==`function`?e():null}catch{t=null}return typeof t==`function`?p(t):typeof e==`function`?p(e):(console.warn(`[satteri] Cannot convert remark plugin "${e?.name??`unknown`}" to Sätteri MDAST.`),null)}function p(e){return r({name:`satteri-remark-adapter`,code(t,n){try{if(!n.parent(t)||n.indexOf(t)===void 0)return;let r={type:`root`,children:[t]},i=e(r);if(i&&typeof i.then==`function`)return;if(r.children[0]!==t){let e=r.children[0];if(e)return e}}catch{}}})}function m(e,t,n,i){if(!e)return null;let a;try{a=typeof e==`function`?e(t):null}catch{return null}return typeof a==`function`?r({name:`satteri-${i}-adapter`,code(e,r){if((e.lang||``)===i)return{type:`mdxJsxFlowElement`,name:n,attributes:[{type:`mdxJsxAttribute`,name:`chart`,value:e.value||``},{type:`mdxJsxAttribute`,name:`config`,value:JSON.stringify(t)}],children:[]}}}):null}function h(e){if(!e)return null;if(typeof e==`object`&&`name`in e&&[`root`,`element`,`text`,`comment`,`doctype`,`script`,`style`,`template`].some(t=>{let n=e[t];return typeof n==`function`||typeof n==`object`&&!!n&&`visit`in n}))return e;let t;try{t=typeof e==`function`?e():e}catch{return null}return typeof t==`function`?g(t):(console.warn(`[satteri] Cannot convert rehype plugin "${(typeof t==`object`&&t?t:null)?.name??`unknown`}" to Sätteri HAST.`),null)}function g(e){return n({name:`satteri-rehype-adapter`,element:{filter:[],async visit(t,n){try{let n={type:`root`,children:[t]},r=e(n);if(r instanceof Promise&&await r,n.children[0]!==t){let e=n.children[0];if(e)return e}}catch{}}}})}function _(e){let t=[],n=[];for(let r of e?.plugins??[]){let e=r;if(e.remarkPlugins)for(let n of e.remarkPlugins)if(Array.isArray(n)){let[r,i]=n;if(e.name===`boltdocs-plugin-mermaid`){let e=m(r,i,`Mermaid`,`mermaid`);e&&t.push(e)}else{let e=f(r);e&&t.push(e)}}else{let e=f(n);e&&t.push(e)}if(e.rehypePlugins)for(let t of e.rehypePlugins)if(Array.isArray(t)){let e=h(t[0]);e&&n.push(e)}else{let e=h(t);e&&n.push(e)}}return{remarkPlugins:t,rehypePlugins:n}}var v=class{mdastPlugins;hastPlugins;cache;cacheReady=!1;fallbackCompiler=null;fallbackPromise=null;constructor(e,t){this.mdastPlugins=e,this.hastPlugins=t}async ensureCache(){return this.cacheReady||=(this.cache=new(await(import(`boltdocs/node/cache`))).TransformCache(`mdx`),!0),this.cache}async getCache(){return this.ensureCache()}async ensureFallback(){return this.fallbackCompiler?this.fallbackCompiler:this.fallbackPromise?this.fallbackPromise:(this.fallbackPromise=this.loadFallback(),this.fallbackCompiler=await this.fallbackPromise,this.fallbackCompiler)}async loadFallback(){try{let e=await import(`@mdx-js/rollup`),[t,n,r]=await Promise.all([import(`remark-gfm`).then(e=>e.default),import(`remark-frontmatter`).then(e=>e.default),import(`rehype-slug`).then(e=>e.default)]);return e.default({jsxRuntime:`automatic`,jsxImportSource:`react`,remarkPlugins:[t,n],rehypePlugins:[r]})}catch{return null}}async satteriCompile(e,n){let r=`${n}:${t.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v6-fallback`;try{let e=await(await this.getCache()).getAsync(r);if(e)return e}catch{}try{if(typeof i!=`function`)return null;let t=await i(e,{jsxRuntime:`automatic`,jsxImportSource:`react`,outputFormat:`program`,mdastPlugins:[...this.mdastPlugins],hastPlugins:[...this.hastPlugins],features:{gfm:!0,frontmatter:!0}});if(!t?.code)return null;let n=t.code;if(/<\w+/.test(n))try{let e=a(n,{loader:`jsx`,jsx:`automatic`,jsxImportSource:`react`});e?.code&&(n=e.code)}catch(e){console.error(`[boltdocs-satteri-mdx] esbuild error:`,e)}try{(await this.getCache()).set(r,n)}catch{}return n}catch{return null}}async fallbackCompile(e,t){let n=await this.ensureFallback();if(!n)return null;try{let r=await n.transform(e,t);if(r?.code)return r.code}catch{}return null}async compile(e,t){return await this.satteriCompile(e,t)||this.fallbackCompile(e,t)}async flushCache(){this.cache&&(this.cache.save(),await this.cache.flush())}};function y(e){let[t]=e.split(`?`);return t.endsWith(`.md`)||t.endsWith(`.mdx`)}function b(e){return e.includes(`function _createMdxContent`)||e.includes(`react/jsx-runtime`)||e.includes(`export default function MDXContent`)}function x(t,n){let r=S(),i=r.mdastPlugins??[],a=r.hastPlugins??[],{remarkPlugins:o,rehypePlugins:s}=_(t),c=new v([...i,...o],[...a,...s]);return{name:`vite-plugin-boltdocs-satteri-mdx`,enforce:`pre`,async load(t){if(!y(t))return null;let[r]=t.split(`?`),i;try{i=e.readFileSync(r,`utf-8`)}catch{return null}let a=n?.(),o=i;if(a)try{let e=await a.runChain(`transformSource`,{code:i,filePath:r});e?.code&&(o=e.code)}catch{}return await c.compile(o,r)??o},async transform(e,t){if(!y(t))return null;let r=e;if(!b(r)){let e=await c.compile(r,t.split(`?`)[0]);e&&(r=e)}let i=r,a=n?.();if(a)try{let e=await a.runChain(`transformMdx`,{code:r,filePath:t.split(`?`)[0]});e?.code&&(i=e.code)}catch{}return{code:i,map:null}},async buildEnd(){await c.flushCache()}}}function S(){return{name:`boltdocs-processor-satteri`,version:`0.1.0`,boltdocsVersion:`>=3.0.0`,mdastPlugins:[o()],hastPlugins:[c(),d()]}}export{x as createSatteriMdxPlugin};
|
|
@@ -0,0 +1,104 @@
|
|
|
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-D1Md3oWO.cjs`),t=require(`./utils-D6Xtj0FZ.cjs`),n=require(`./node/cache.cjs`),r=require(`./routes-BgoIB5wb.cjs`),i=require(`./pages-external-XkYIs-d5.cjs`),a=require(`./config-DlGoEM9D.cjs`),o=require(`./types-generator-BXhv7Ill.cjs`),s=require(`./handler-XX7cLTqe.cjs`),c=require(`./adapters-DvmtpdSF.cjs`);let l=require(`node:path`);l=e.r(l);let u=require(`node:fs`);u=e.r(u);let d=require(`zod`),f=require(`@bdocs/dui`);f=e.r(f);let p=require(`semver`);p=e.r(p);let m=require(`node:module`),h=require(`@bdocs/ssg/node`);function g(){return{name:`boltdocs-ssr-dirname-polyfill`,config:(e,{isSsrBuild:t})=>t?{define:{__dirname:`import.meta.dirname`}}:{}}}function _(e,n){let r=l.default.resolve(process.cwd(),`index.css`),i=u.default.existsSync(r)?`import './index.css';`:``,a=n?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],o=a.map(([e,n])=>`import { ${e} as _comp_${e} } from '${t.u(n)}';`).join(`
|
|
7
|
+
`),s=a.map(([e])=>`${e}: _comp_${e}`).join(`, `),c=l.default.basename(e.docsDir||`docs`),d=l.default.resolve(process.cwd(),e.docsDir||`docs`),f=[`tsx`,`ts`,`jsx`,`js`].map(e=>l.default.resolve(d,`pages-external/index.${e}`)).find(e=>u.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?``:`
|
|
8
|
+
if (typeof window !== 'undefined') {
|
|
9
|
+
const prefetchAll = () => {
|
|
10
|
+
const getters = Object.values(mdxModules)
|
|
11
|
+
if (getters.length === 0) return
|
|
12
|
+
let i = 0
|
|
13
|
+
const nextBatch = () => {
|
|
14
|
+
if (i >= getters.length) return
|
|
15
|
+
const batch = getters.slice(i, i + 6)
|
|
16
|
+
i += batch.length
|
|
17
|
+
Promise.allSettled(batch.map(fn => fn())).then(() => {
|
|
18
|
+
setTimeout(nextBatch, 0)
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
;(typeof requestIdleCallback === 'function' ? requestIdleCallback : function(cb) { setTimeout(cb, 500) })(nextBatch)
|
|
22
|
+
}
|
|
23
|
+
prefetchAll()
|
|
24
|
+
}
|
|
25
|
+
`;return`
|
|
26
|
+
import { ViteReactSSG, createRoutes } from 'boltdocs/client'
|
|
27
|
+
import _routes from 'virtual:boltdocs-routes.ts'
|
|
28
|
+
import _collections from 'virtual:boltdocs-collections.ts'
|
|
29
|
+
import _config from 'virtual:boltdocs-config.ts'
|
|
30
|
+
import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx'
|
|
31
|
+
${i}
|
|
32
|
+
${o}
|
|
33
|
+
${p}
|
|
34
|
+
|
|
35
|
+
const mdxModules = import.meta.glob('/${c}/**/*.{md,mdx}', ${g});
|
|
36
|
+
|
|
37
|
+
const _collLayoutMods = import.meta.glob('${`/${c}/**/layout.tsx`}', { eager: true });
|
|
38
|
+
const _collListMods = import.meta.glob('${`/${c}/**/list.tsx`}', { eager: true });
|
|
39
|
+
const _collPostMods = import.meta.glob('${`/${c}/**/post.tsx`}', { eager: true });
|
|
40
|
+
|
|
41
|
+
const _collectionLayouts = {};
|
|
42
|
+
for (const [p, mod] of Object.entries(_collLayoutMods)) {
|
|
43
|
+
const dir = p.split('/').slice(-2, -1)[0];
|
|
44
|
+
if (dir.startsWith('[') && dir.endsWith(']')) {
|
|
45
|
+
_collectionLayouts[dir.slice(1, -1)] = mod.default || mod;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const _collectionLists = {};
|
|
50
|
+
for (const [p, mod] of Object.entries(_collListMods)) {
|
|
51
|
+
const dir = p.split('/').slice(-2, -1)[0];
|
|
52
|
+
if (dir.startsWith('[') && dir.endsWith(']')) {
|
|
53
|
+
_collectionLists[dir.slice(1, -1)] = mod.default || mod;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const _collectionPosts = {};
|
|
58
|
+
for (const [p, mod] of Object.entries(_collPostMods)) {
|
|
59
|
+
const dir = p.split('/').slice(-2, -1)[0];
|
|
60
|
+
if (dir.startsWith('[') && dir.endsWith(']')) {
|
|
61
|
+
_collectionPosts[dir.slice(1, -1)] = mod.default || mod;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const createRoot = ViteReactSSG(
|
|
66
|
+
{
|
|
67
|
+
routes: createRoutes({
|
|
68
|
+
routesData: _routes,
|
|
69
|
+
collectionsData: _collections,
|
|
70
|
+
collectionLayouts: _collectionLayouts,
|
|
71
|
+
collectionLists: _collectionLists,
|
|
72
|
+
collectionPosts: _collectionPosts,
|
|
73
|
+
config: _config,
|
|
74
|
+
mdxModules,
|
|
75
|
+
${m}
|
|
76
|
+
components: { ${s}${s?`, `:``} ...(_user_mdx_components || {}) },
|
|
77
|
+
}),
|
|
78
|
+
},
|
|
79
|
+
({ isClient }) => {
|
|
80
|
+
// Boltdocs initialization hook
|
|
81
|
+
if (isClient) {
|
|
82
|
+
// Client-side initialization
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
);
|
|
86
|
+
${_}
|
|
87
|
+
`}var v=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},y=class extends v{constructor(e,t){super(e,`Validation failed: ${t}`)}},b=class extends v{constructor(e,t){super(e,`Compatibility error: ${t}`)}},x=class extends v{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},S=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 C=a.i.extend({version:d.z.string().optional(),boltdocsVersion:d.z.string().optional(),hooks:d.z.object({beforeBuild:d.z.function().optional(),afterBuild:d.z.function().optional(),beforeDev:d.z.function().optional(),afterDev:d.z.function().optional(),buildEnd:d.z.function().optional(),transformSource:d.z.function().optional(),transformMdx:d.z.function().optional(),transformHtml:d.z.function().optional()}).optional()});function w(e,t){let n=[],r=new Set;for(let i of e){let e=C.safeParse(i);if(!e.success)throw new y(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 y(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!p.default.satisfies(t,a.boltdocsVersion))throw new b(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(`..`))throw new y(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`);if(l.default.isAbsolute(t))throw new y(a.name,`Component '${e}' has an invalid path: absolute paths are not allowed.`)}n.push(a)}return n}function T(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{n=(0,m.createRequire)(l.default.resolve(t,`package.json`)).resolve(`${e.name}/package.json`)}catch{let r=l.default.resolve(t,`node_modules`,e.name,`package.json`);u.default.existsSync(r)&&(n=r)}if(n&&u.default.existsSync(n)){let t=JSON.parse(u.default.readFileSync(n,`utf-8`)).scripts||{};(t.preinstall||t.postinstall||t.install)&&(0,f.warn)(`💡 ${f.colors.yellow(f.colors.bold(`Nota de seguridad:`))} El plugin ${f.colors.cyan(e.name)} ejecuta scripts nativos al instalarse. Corre ${f.colors.bold(`boltdocs audit`)} para un análisis detallado.`)}}catch{}}var E=class{name=`ConfigResolve`;async execute(e){e.config=await a.n(`docs`,e.root),T(e.config,e.root),e.viteConfig=await $(e.root,`production`,e.config,e.turbo)}};function D(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 ee=class{name=`RouteGenerate`;async execute(e){if(!e.config)throw Error(`Config not resolved. Run ConfigResolve first.`);let t=l.default.resolve(e.root,`docs`),n=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await r.t(t,e.config,n,!1,e.turbo)],e.ssgRoutes=D(e.routes)}};const te=d.z.object({title:d.z.string().optional(),description:d.z.string().optional(),canonical:d.z.string().url().optional(),robots:d.z.string().optional(),noindex:d.z.boolean().optional(),"og:title":d.z.string().optional(),"og:description":d.z.string().optional(),"og:image":d.z.string().optional(),"og:type":d.z.string().optional(),"og:url":d.z.string().url().optional()});var ne=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(n=>{let r=n.seo||{},i=r.canonical||(t?`${t.replace(/\/$/,``)}${n.path}`:void 0),a=r[`og:url`]||i||void 0,o=e.config?.seo?.thumbnails?.background??void 0,s=r[`og:image`]||n.coverImage||o;s&&t&&!/^https?:\/\/|^\/\//.test(s)&&(s=`${t.endsWith(`/`)?t.slice(0,-1):t}${s.startsWith(`/`)?s:`/${s}`}`);let c={...r};i&&(c.canonical=i),a&&(c[`og:url`]=a),s&&(c[`og:image`]=s),!c[`og:title`]&&n.title&&(c[`og:title`]=String(n.title)),!c[`og:description`]&&n.description&&(c[`og:description`]=String(n.description));let l=te.safeParse(c);return l.success||(0,f.warn)(`[SEOValidate] Validation issues on route "${n.path}": ${l.error.message}`),n.title||(0,f.warn)(`[SEOValidate] Route "${n.path}" is missing a title.`),{...n,seo:c}}),e.ssgRoutes=D(e.routes)}},re=class{name=`TypeGenerate`;async execute(e){if(!e.config||!e.routes)throw Error(`Config or Routes not initialized.`);let t=l.default.resolve(e.root,`docs`),n=e.routes.map(e=>e.path),r=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(r)||n.push(r);let a=i.t(t,e.config);for(let e of a)n.includes(e)||n.push(e);o.t(e.config,t,e.root,n),o.r(n)}},ie=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}let n=[];await(0,h.build)({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:l.default.resolve(e.root,`.boltdocs/build`),turbo:e.turbo,onStep:e=>{n.push(e)}},e.viteConfig),e.ssgSubSteps=n,e.outDir=e.viteConfig.build?.outDir||`dist`}};function ae(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"?>
|
|
88
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
89
|
+
${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>
|
|
90
|
+
<loc>${t.r(`${r}${e.path.startsWith(`/`)?e.path:`/${e.path}`}`)}</loc>
|
|
91
|
+
<changefreq>weekly</changefreq>
|
|
92
|
+
<priority>0.7</priority>
|
|
93
|
+
</url>`).join(`
|
|
94
|
+
`)}
|
|
95
|
+
</urlset>`}function oe(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(`
|
|
96
|
+
`);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(`
|
|
97
|
+
`)+`
|
|
98
|
+
`:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
|
|
99
|
+
`)+`
|
|
100
|
+
`:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
|
|
101
|
+
|
|
102
|
+
`),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
|
|
103
|
+
`);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
|
|
104
|
+
`)}var se=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=ae(e.ssgRoutes,e.config),n=l.default.resolve(e.root,e.outDir);t&&u.default.writeFileSync(l.default.join(n,`sitemap.xml`),t,`utf-8`);let r=oe(e.config);u.default.writeFileSync(l.default.join(n,`robots.txt`),r,`utf-8`)}};function ce(){return new O().addStep(new E).addStep(new ee).addParallelSteps([new ne,new re]).addStep(new ie).addStep(new se)}var O=class{steps=[];addStep(e){return this.steps.push(e),this}addParallelSteps(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=Array.isArray(e),a=i?e:[e],o=performance.now();try{i?await Promise.all(a.map(e=>e.execute(r))):await a[0].execute(r);let e=performance.now()-o;for(let n of a){let i=r.stepDetails?.[n.name];t.push({name:n.name,duration:e,success:!0,details:i}),r.timing[n.name]=e}if(r.ssgSubSteps){for(let e of r.ssgSubSteps)t.push(e);delete r.ssgSubSteps}}catch(e){let i=performance.now()-o,s=a.find(e=>!t.some(t=>t.name===e.name&&t.success))?.name||a.map(e=>e.name).join(` | `);t.push({name:s,duration:i,success:!1,error:e instanceof Error?e:Error(String(e))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.flat().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 c=performance.now()-n;return{success:!1,failedStep:s,error:e instanceof Error?e:Error(String(e)),timing:{total:c,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}};let k=0;const A=`virtual:boltdocs-`,j=new Map,M=new Map,N=[];function le(){return new Date}function P(){return{transform(e){let t=new n.TransformCache(`plugin:${e}`);return{async get(e){return t.getAsync(e)},set(e,n){t.set(e,n)},async flush(){await t.flush()}}},routes:ue(),memory(e,t){let n=`${e}:`,r=t?.ttl,i=t?.max??100,a=new Map;function o(e){return e.expiresAt!==null&&e.expiresAt<=Date.now()}return{get(e){let t=a.get(n+e);if(t){if(o(t)){a.delete(n+e);return}return t.value}},set(e,t){let o=n+e;if(!a.has(o)&&a.size>=i){let e=a.keys().next().value;e!==void 0&&a.delete(e)}a.set(o,{value:t,expiresAt:r===void 0?null:Date.now()+r})},has(e){let t=a.get(n+e);return t?o(t)?(a.delete(n+e),!1):!0:!1}}}}}function ue(){return{get(e){return r.i.get(e)?.route??null},set(e,t){r.i.set(e,{route:t})},invalidate(e){r.i.invalidate(e)},invalidateAll(){r.i.invalidateAll()}}}function F(e){return{report(t,n,r,i){let a={id:++k,severity:t,code:n,message:r,pluginName:e,filePath:i?.filePath,routePath:i?.routePath,time:le()};if(N.push(a),N.length>256){let e=N.length-256;N.splice(0,e)}},list(){return Object.freeze([...N])},clear(){N.length=0}}}function I(e,t){return{resolveDocs(...t){return L(e,...t)},resolveAsset(...e){return L(t,...e)},safeFileURL(e){return`file://${l.default.resolve(e).replace(/\\/g,`/`)}`}}}function L(e,...n){let r=l.default.resolve(e),i=l.default.resolve(r,...n),a=l.default.relative(r,i);if(a.startsWith(`..`)||l.default.isAbsolute(a))throw Error(`[boltdocs/plugin-context] Path '${n.join(`/`)}' resolves to '${i}' which is outside the workspace boundary '${r}'.`);return t.u(i)}function R(){return{add(e,t,n){if(j.has(e))throw Error(`[boltdocs] Virtual module '${e}' is already registered. Pick a unique id (e.g. prefix it with your plugin name) so two plugins do not collide.`);if(e.startsWith(A))throw Error(`[boltdocs] Virtual module id '${e}' starts with the reserved prefix '${A}'. Use your own plugin namespace (e.g. 'virtual:my-plugin/...').`);j.set(e,{id:e,eager:n?.eager??!1,loader:t})},has(e){return j.has(e)},list(){return Object.freeze([...j.values()])}}}function z(){j.clear()}function B(){function e(e){return U.has(e)||U.set(e,new Set),U.get(e)}return{onFileEvent(t,n){e(t).add(n)},onFileAdd(t){e(`add`).add(t)},onFileChange(t){e(`change`).add(t)},onFileUnlink(t){e(`unlink`).add(t)},send(e,t){W?.(`boltdocs:plugin:${e}`,t)}}}async function V(e,t){let n=U.get(e);if(n)for(let e of n)await e(t)}let H=0;const U=new Map;let W=null;function de(e){W=e}const G=[],K=[],fe=[];function q(e){for(let t of G)e.middlewares.use(t)}async function pe(){for(let e of K)await e()}function J(){return{use(e){G.push(e)},useAt(e,t){G.push((n,r,i)=>{if(n.url?.startsWith(e))return t(n,r,i);i()})},onStart(e){K.push(e)},onEnd(e){fe.push(e)}}}function Y(){return{add(e){let t=e.name??`_unnamed_${H++}`;if(M.has(t))throw Error(`[boltdocs] Middleware '${e.name??`<unnamed>`}' is already registered.`);M.set(t,e)},remove(e){M.delete(e)},has(e){return M.has(e)},list(){return Object.freeze([...M.values()])}}}var X=class{plugins;config;store;docsDir;rootDir;routes;outDir;constructor(e,t,n,r,i,a){this.plugins=e,this.config=t,this.store=new S,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd(),this.routes=i||[],this.outDir=a||`dist`}async runHook(e,...t){let n=this.getSortedPlugins(),r=new O;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);if(a!==void 0){let e=a.__signal;if(e===`break`)break;if(e===`skip`){r=a;break}r=a}}catch(r){let i=new x(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i),n.diagnostics.report(`error`,`PLUGIN_HOOK_ERROR`,i.message)}}return r}async runMiddlewareChain(e,t){let n=this.plugins.flatMap(e=>e.middleware??[]),r=[...M.values()],i=[...n,...r],a=[...i.filter(e=>e.enforce===`pre`),...i.filter(e=>!e.enforce),...i.filter(e=>e.enforce===`post`)],o=t;for(let t of a){let n=t[e];if(!n)continue;let r=this.createGenericContext();try{let e=await n(r,o);if(e!==void 0){let t=e.__signal;if(t===`break`)break;if(t===`skip`){o=e;break}o=e}}catch(e){let n=t.name??`<unnamed>`;r.diagnostics.report(`error`,`MIDDLEWARE_ERROR`,`Middleware '${n}' threw: ${e instanceof Error?e.message:String(e)}`)}}return o}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 x(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,outDir:this.outDir,routes:this.routes,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),caches:P(),diagnostics:F(e.name),paths:I(this.docsDir,this.rootDir),virtualModules:R(),middleware:Y(),hmr:B(),server:J()}}createGenericContext(){let e=`<middleware>`;return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,outDir:this.outDir,routes:this.routes,meta:{name:e},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),caches:P(),diagnostics:F(e),paths:I(this.docsDir,this.rootDir),virtualModules:R(),middleware:Y(),hmr:B(),server:J()}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>f.info(`${t} ${e}`),warn:e=>f.warn(`${t} ${e}`),error:e=>{f.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>f.debug(`${t} ${e}`)}}};function Z(e){return e}var me=e.t({BoltdocsPluginStore:()=>S,PluginCompatibilityError:()=>b,PluginError:()=>v,PluginHookError:()=>x,PluginLifecycleManager:()=>X,PluginValidationError:()=>y,createPlugin:()=>Z,createViteConfig:()=>$,default:()=>Q,defineConfig:()=>a.a,flushCache:()=>n.flushCache,generateEntryCode:()=>_,generateRoutes:()=>r.t,handleAwsFeedback:()=>c.t,handleFeedback:()=>s.t,handleNetlifyFeedback:()=>c.r,handleVercelFeedback:()=>c.i,handleWebFeedback:()=>c.n,invalidateRouteCache:()=>r.r,normalizePath:()=>t.u,resolveConfig:()=>a.n,sanitizeFilename:()=>t.f,validatePlugins:()=>w});async function Q(e){let{resolveConfig:t}=await Promise.resolve().then(()=>require(`./config-CMd4XoFq.cjs`)),{generateRoutes:n,getExternalRoutePaths:r}=await Promise.resolve().then(()=>require(`./routes-CORVxc02.cjs`)),{generateProjectTypes:i,writeLinkTree:a}=await Promise.resolve().then(()=>require(`./types-generator-BXhv7Ill.cjs`)).then(e=>e.n),{boltdocsPlugin:o}=await Promise.resolve().then(()=>require(`./plugin-DM3u2bVj.cjs`)),s=e?.docsDir||`docs`,c=await t(s),l=(await n(s,c)).map(e=>e.path),u=(c.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u);let d=r(s,c);for(let e of d)l.includes(e)||l.push(e);return i(c,s,void 0,l),a(l),o({...e},c)}async function $(e,t=`development`,n,r){let i=r||process.env.BOLTDOCS_TURBO===`true`,[a,o,{boltdocsPlugin:s,getExternalAbsolutePaths:c},{SECURITY_HEADERS:u},{getCSPHeader:d},{resolveConfig:f},{generateRoutes:p,getExternalRoutePaths:m},{generateProjectTypes:h,writeLinkTree:_},{normalizePath:v}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),Promise.resolve().then(()=>require(`./plugin-DM3u2bVj.cjs`)),Promise.resolve().then(()=>require(`./headers-dg4SDrjY.cjs`)).then(e=>e.n),Promise.resolve().then(()=>require(`./csp-CRp_3U7a.cjs`)).then(e=>e.t),Promise.resolve().then(()=>require(`./config-CMd4XoFq.cjs`)),Promise.resolve().then(()=>require(`./routes-CORVxc02.cjs`)),Promise.resolve().then(()=>require(`./types-generator-BXhv7Ill.cjs`)).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),y=a.default,b=o.default,x=n||await f(`docs`,e),S=(await p(`docs`,x,void 0,!1,i)).map(e=>e.path),C=(x.base||`/docs`).replace(/\/$/,``);S.includes(C)||S.push(C);let w=m(`docs`,x);for(let e of w)S.includes(e)||S.push(e);h(x,`docs`,e,S),_(S);let T=t===`production`,E=T?{...u}:{};return x.security?.enableCSP&&(E[`Content-Security-Policy`]=d(x)),{root:e,mode:t,oxc:{jsx:{development:!T,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:[g(),y(),b(),...s({docsDir:`docs`,root:e,turbo:i},x)],resolve:{alias:[{find:`boltdocs/entry`,replacement:v(l.default.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:v(l.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:v(l.default.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`,`react-router-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`react-router-dom`,`@bdocs/ssg`,`jsdom`,...c()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,...x.vite?.ssr?.optimizeDeps?.include??[]]},noExternal:[]},server:{watch:{ignored:[`**/.boltdocs/**`,...x.vite?.server?.watch?.ignored??[]]},headers:{...E,...x.vite?.server?.headers},...x.vite?.server},preview:{headers:{...E,...x.vite?.preview?.headers},...x.vite?.preview},...x.vite??{}}}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return x}});
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
+
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
import"./chunk-BFSpntXv.mjs";import{r as e,u as t}from"./utils-Crm9oPcV.mjs";import{TransformCache as n}from"./node/cache.mjs";import{a as r,t as i}from"./routes-BW6zsk7Z.mjs";import{t as a}from"./pages-external-BYa4JSda.mjs";import{i as o,r as s}from"./config-CCXp3aXO.mjs";import{r as c,t as l}from"./types-generator-bDPvUztF.mjs";import"./handler-DzQae4eA.mjs";import"./adapters-ByYY44Zy.mjs";import{createRequire as u}from"node:module";import d from"node:path";import f from"node:fs";import{z as p}from"zod";import*as m from"@bdocs/dui";import{colors as h,warn as g}from"@bdocs/dui";import _ from"semver";import{build as v}from"@bdocs/ssg/node";function ee(){return{name:`boltdocs-ssr-dirname-polyfill`,config:(e,{isSsrBuild:t})=>t?{define:{__dirname:`import.meta.dirname`}}:{}}}function y(e,n){let r=d.resolve(process.cwd(),`index.css`),i=f.existsSync(r)?`import './index.css';`:``,a=n?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],o=a.map(([e,n])=>`import { ${e} as _comp_${e} } from '${t(n)}';`).join(`
|
|
7
|
+
`),s=a.map(([e])=>`${e}: _comp_${e}`).join(`, `),c=d.basename(e.docsDir||`docs`),l=d.resolve(process.cwd(),e.docsDir||`docs`),u=[`tsx`,`ts`,`jsx`,`js`].map(e=>d.resolve(l,`pages-external/index.${e}`)).find(e=>f.existsSync(e)),p=u?`import * as _external_module from '${t(u)}';`:``,m=u?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``,h=process.env.VITE_SSG===`true`,g=h?`{ eager: true }`:`{}`,_=h?``:`
|
|
8
|
+
if (typeof window !== 'undefined') {
|
|
9
|
+
const prefetchAll = () => {
|
|
10
|
+
const getters = Object.values(mdxModules)
|
|
11
|
+
if (getters.length === 0) return
|
|
12
|
+
let i = 0
|
|
13
|
+
const nextBatch = () => {
|
|
14
|
+
if (i >= getters.length) return
|
|
15
|
+
const batch = getters.slice(i, i + 6)
|
|
16
|
+
i += batch.length
|
|
17
|
+
Promise.allSettled(batch.map(fn => fn())).then(() => {
|
|
18
|
+
setTimeout(nextBatch, 0)
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
;(typeof requestIdleCallback === 'function' ? requestIdleCallback : function(cb) { setTimeout(cb, 500) })(nextBatch)
|
|
22
|
+
}
|
|
23
|
+
prefetchAll()
|
|
24
|
+
}
|
|
25
|
+
`;return`
|
|
26
|
+
import { ViteReactSSG, createRoutes } from 'boltdocs/client'
|
|
27
|
+
import _routes from 'virtual:boltdocs-routes.ts'
|
|
28
|
+
import _collections from 'virtual:boltdocs-collections.ts'
|
|
29
|
+
import _config from 'virtual:boltdocs-config.ts'
|
|
30
|
+
import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx'
|
|
31
|
+
${i}
|
|
32
|
+
${o}
|
|
33
|
+
${p}
|
|
34
|
+
|
|
35
|
+
const mdxModules = import.meta.glob('/${c}/**/*.{md,mdx}', ${g});
|
|
36
|
+
|
|
37
|
+
const _collLayoutMods = import.meta.glob('${`/${c}/**/layout.tsx`}', { eager: true });
|
|
38
|
+
const _collListMods = import.meta.glob('${`/${c}/**/list.tsx`}', { eager: true });
|
|
39
|
+
const _collPostMods = import.meta.glob('${`/${c}/**/post.tsx`}', { eager: true });
|
|
40
|
+
|
|
41
|
+
const _collectionLayouts = {};
|
|
42
|
+
for (const [p, mod] of Object.entries(_collLayoutMods)) {
|
|
43
|
+
const dir = p.split('/').slice(-2, -1)[0];
|
|
44
|
+
if (dir.startsWith('[') && dir.endsWith(']')) {
|
|
45
|
+
_collectionLayouts[dir.slice(1, -1)] = mod.default || mod;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const _collectionLists = {};
|
|
50
|
+
for (const [p, mod] of Object.entries(_collListMods)) {
|
|
51
|
+
const dir = p.split('/').slice(-2, -1)[0];
|
|
52
|
+
if (dir.startsWith('[') && dir.endsWith(']')) {
|
|
53
|
+
_collectionLists[dir.slice(1, -1)] = mod.default || mod;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const _collectionPosts = {};
|
|
58
|
+
for (const [p, mod] of Object.entries(_collPostMods)) {
|
|
59
|
+
const dir = p.split('/').slice(-2, -1)[0];
|
|
60
|
+
if (dir.startsWith('[') && dir.endsWith(']')) {
|
|
61
|
+
_collectionPosts[dir.slice(1, -1)] = mod.default || mod;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const createRoot = ViteReactSSG(
|
|
66
|
+
{
|
|
67
|
+
routes: createRoutes({
|
|
68
|
+
routesData: _routes,
|
|
69
|
+
collectionsData: _collections,
|
|
70
|
+
collectionLayouts: _collectionLayouts,
|
|
71
|
+
collectionLists: _collectionLists,
|
|
72
|
+
collectionPosts: _collectionPosts,
|
|
73
|
+
config: _config,
|
|
74
|
+
mdxModules,
|
|
75
|
+
${m}
|
|
76
|
+
components: { ${s}${s?`, `:``} ...(_user_mdx_components || {}) },
|
|
77
|
+
}),
|
|
78
|
+
},
|
|
79
|
+
({ isClient }) => {
|
|
80
|
+
// Boltdocs initialization hook
|
|
81
|
+
if (isClient) {
|
|
82
|
+
// Client-side initialization
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
);
|
|
86
|
+
${_}
|
|
87
|
+
`}var b=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},x=class extends b{constructor(e,t){super(e,`Validation failed: ${t}`)}},S=class extends b{constructor(e,t){super(e,`Compatibility error: ${t}`)}},C=class extends b{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},w=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 T=o.extend({version:p.string().optional(),boltdocsVersion:p.string().optional(),hooks:p.object({beforeBuild:p.function().optional(),afterBuild:p.function().optional(),beforeDev:p.function().optional(),afterDev:p.function().optional(),buildEnd:p.function().optional(),transformSource:p.function().optional(),transformMdx:p.function().optional(),transformHtml:p.function().optional()}).optional()});function te(e,t){let n=[],r=new Set;for(let i of e){let e=T.safeParse(i);if(!e.success)throw new x(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 x(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!_.satisfies(t,a.boltdocsVersion))throw new S(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(`..`))throw new x(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`);if(d.isAbsolute(t))throw new x(a.name,`Component '${e}' has an invalid path: absolute paths are not allowed.`)}n.push(a)}return n}function E(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{n=u(d.resolve(t,`package.json`)).resolve(`${e.name}/package.json`)}catch{let r=d.resolve(t,`node_modules`,e.name,`package.json`);f.existsSync(r)&&(n=r)}if(n&&f.existsSync(n)){let t=JSON.parse(f.readFileSync(n,`utf-8`)).scripts||{};(t.preinstall||t.postinstall||t.install)&&g(`💡 ${h.yellow(h.bold(`Nota de seguridad:`))} El plugin ${h.cyan(e.name)} ejecuta scripts nativos al instalarse. Corre ${h.bold(`boltdocs audit`)} para un análisis detallado.`)}}catch{}}var ne=class{name=`ConfigResolve`;async execute(e){e.config=await s(`docs`,e.root),E(e.config,e.root),e.viteConfig=await $(e.root,`production`,e.config,e.turbo)}};function D(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 re=class{name=`RouteGenerate`;async execute(e){if(!e.config)throw Error(`Config not resolved. Run ConfigResolve first.`);let t=d.resolve(e.root,`docs`),n=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await i(t,e.config,n,!1,e.turbo)],e.ssgRoutes=D(e.routes)}};const ie=p.object({title:p.string().optional(),description:p.string().optional(),canonical:p.string().url().optional(),robots:p.string().optional(),noindex:p.boolean().optional(),"og:title":p.string().optional(),"og:description":p.string().optional(),"og:image":p.string().optional(),"og:type":p.string().optional(),"og:url":p.string().url().optional()});var O=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(n=>{let r=n.seo||{},i=r.canonical||(t?`${t.replace(/\/$/,``)}${n.path}`:void 0),a=r[`og:url`]||i||void 0,o=e.config?.seo?.thumbnails?.background??void 0,s=r[`og:image`]||n.coverImage||o;s&&t&&!/^https?:\/\/|^\/\//.test(s)&&(s=`${t.endsWith(`/`)?t.slice(0,-1):t}${s.startsWith(`/`)?s:`/${s}`}`);let c={...r};i&&(c.canonical=i),a&&(c[`og:url`]=a),s&&(c[`og:image`]=s),!c[`og:title`]&&n.title&&(c[`og:title`]=String(n.title)),!c[`og:description`]&&n.description&&(c[`og:description`]=String(n.description));let l=ie.safeParse(c);return l.success||g(`[SEOValidate] Validation issues on route "${n.path}": ${l.error.message}`),n.title||g(`[SEOValidate] Route "${n.path}" is missing a title.`),{...n,seo:c}}),e.ssgRoutes=D(e.routes)}},k=class{name=`TypeGenerate`;async execute(e){if(!e.config||!e.routes)throw Error(`Config or Routes not initialized.`);let t=d.resolve(e.root,`docs`),n=e.routes.map(e=>e.path),r=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(r)||n.push(r);let i=a(t,e.config);for(let e of i)n.includes(e)||n.push(e);l(e.config,t,e.root,n),c(n)}},A=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}let n=[];await v({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:d.resolve(e.root,`.boltdocs/build`),turbo:e.turbo,onStep:e=>{n.push(e)}},e.viteConfig),e.ssgSubSteps=n,e.outDir=e.viteConfig.build?.outDir||`dist`}};function j(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"?>
|
|
88
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
89
|
+
${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>
|
|
90
|
+
<loc>${e(`${r}${t.path.startsWith(`/`)?t.path:`/${t.path}`}`)}</loc>
|
|
91
|
+
<changefreq>weekly</changefreq>
|
|
92
|
+
<priority>0.7</priority>
|
|
93
|
+
</url>`).join(`
|
|
94
|
+
`)}
|
|
95
|
+
</urlset>`}function M(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(`
|
|
96
|
+
`);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(`
|
|
97
|
+
`)+`
|
|
98
|
+
`:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
|
|
99
|
+
`)+`
|
|
100
|
+
`:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
|
|
101
|
+
|
|
102
|
+
`),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
|
|
103
|
+
`);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
|
|
104
|
+
`)}var ae=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=j(e.ssgRoutes,e.config),n=d.resolve(e.root,e.outDir);t&&f.writeFileSync(d.join(n,`sitemap.xml`),t,`utf-8`);let r=M(e.config);f.writeFileSync(d.join(n,`robots.txt`),r,`utf-8`)}};function oe(){return new N().addStep(new ne).addStep(new re).addParallelSteps([new O,new k]).addStep(new A).addStep(new ae)}var N=class{steps=[];addStep(e){return this.steps.push(e),this}addParallelSteps(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=Array.isArray(e),a=i?e:[e],o=performance.now();try{i?await Promise.all(a.map(e=>e.execute(r))):await a[0].execute(r);let e=performance.now()-o;for(let n of a){let i=r.stepDetails?.[n.name];t.push({name:n.name,duration:e,success:!0,details:i}),r.timing[n.name]=e}if(r.ssgSubSteps){for(let e of r.ssgSubSteps)t.push(e);delete r.ssgSubSteps}}catch(e){let i=performance.now()-o,s=a.find(e=>!t.some(t=>t.name===e.name&&t.success))?.name||a.map(e=>e.name).join(` | `);t.push({name:s,duration:i,success:!1,error:e instanceof Error?e:Error(String(e))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.flat().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 c=performance.now()-n;return{success:!1,failedStep:s,error:e instanceof Error?e:Error(String(e)),timing:{total:c,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}};let se=0;const P=`virtual:boltdocs-`,F=new Map,I=new Map,L=[];function ce(){return new Date}function R(){return{transform(e){let t=new n(`plugin:${e}`);return{async get(e){return t.getAsync(e)},set(e,n){t.set(e,n)},async flush(){await t.flush()}}},routes:z(),memory(e,t){let n=`${e}:`,r=t?.ttl,i=t?.max??100,a=new Map;function o(e){return e.expiresAt!==null&&e.expiresAt<=Date.now()}return{get(e){let t=a.get(n+e);if(t){if(o(t)){a.delete(n+e);return}return t.value}},set(e,t){let o=n+e;if(!a.has(o)&&a.size>=i){let e=a.keys().next().value;e!==void 0&&a.delete(e)}a.set(o,{value:t,expiresAt:r===void 0?null:Date.now()+r})},has(e){let t=a.get(n+e);return t?o(t)?(a.delete(n+e),!1):!0:!1}}}}}function z(){return{get(e){return r.get(e)?.route??null},set(e,t){r.set(e,{route:t})},invalidate(e){r.invalidate(e)},invalidateAll(){r.invalidateAll()}}}function B(e){return{report(t,n,r,i){let a={id:++se,severity:t,code:n,message:r,pluginName:e,filePath:i?.filePath,routePath:i?.routePath,time:ce()};if(L.push(a),L.length>256){let e=L.length-256;L.splice(0,e)}},list(){return Object.freeze([...L])},clear(){L.length=0}}}function V(e,t){return{resolveDocs(...t){return H(e,...t)},resolveAsset(...e){return H(t,...e)},safeFileURL(e){return`file://${d.resolve(e).replace(/\\/g,`/`)}`}}}function H(e,...n){let r=d.resolve(e),i=d.resolve(r,...n),a=d.relative(r,i);if(a.startsWith(`..`)||d.isAbsolute(a))throw Error(`[boltdocs/plugin-context] Path '${n.join(`/`)}' resolves to '${i}' which is outside the workspace boundary '${r}'.`);return t(i)}function U(){return{add(e,t,n){if(F.has(e))throw Error(`[boltdocs] Virtual module '${e}' is already registered. Pick a unique id (e.g. prefix it with your plugin name) so two plugins do not collide.`);if(e.startsWith(P))throw Error(`[boltdocs] Virtual module id '${e}' starts with the reserved prefix '${P}'. Use your own plugin namespace (e.g. 'virtual:my-plugin/...').`);F.set(e,{id:e,eager:n?.eager??!1,loader:t})},has(e){return F.has(e)},list(){return Object.freeze([...F.values()])}}}function W(){F.clear()}function G(){function e(e){return K.has(e)||K.set(e,new Set),K.get(e)}return{onFileEvent(t,n){e(t).add(n)},onFileAdd(t){e(`add`).add(t)},onFileChange(t){e(`change`).add(t)},onFileUnlink(t){e(`unlink`).add(t)},send(e,t){q?.(`boltdocs:plugin:${e}`,t)}}}async function le(e,t){let n=K.get(e);if(n)for(let e of n)await e(t)}let ue=0;const K=new Map;let q=null;function de(e){q=e}const J=[],Y=[],fe=[];function X(e){for(let t of J)e.middlewares.use(t)}async function pe(){for(let e of Y)await e()}function Z(){return{use(e){J.push(e)},useAt(e,t){J.push((n,r,i)=>{if(n.url?.startsWith(e))return t(n,r,i);i()})},onStart(e){Y.push(e)},onEnd(e){fe.push(e)}}}function Q(){return{add(e){let t=e.name??`_unnamed_${ue++}`;if(I.has(t))throw Error(`[boltdocs] Middleware '${e.name??`<unnamed>`}' is already registered.`);I.set(t,e)},remove(e){I.delete(e)},has(e){return I.has(e)},list(){return Object.freeze([...I.values()])}}}var me=class{plugins;config;store;docsDir;rootDir;routes;outDir;constructor(e,t,n,r,i,a){this.plugins=e,this.config=t,this.store=new w,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd(),this.routes=i||[],this.outDir=a||`dist`}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);if(a!==void 0){let e=a.__signal;if(e===`break`)break;if(e===`skip`){r=a;break}r=a}}catch(r){let i=new C(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i),n.diagnostics.report(`error`,`PLUGIN_HOOK_ERROR`,i.message)}}return r}async runMiddlewareChain(e,t){let n=this.plugins.flatMap(e=>e.middleware??[]),r=[...I.values()],i=[...n,...r],a=[...i.filter(e=>e.enforce===`pre`),...i.filter(e=>!e.enforce),...i.filter(e=>e.enforce===`post`)],o=t;for(let t of a){let n=t[e];if(!n)continue;let r=this.createGenericContext();try{let e=await n(r,o);if(e!==void 0){let t=e.__signal;if(t===`break`)break;if(t===`skip`){o=e;break}o=e}}catch(e){let n=t.name??`<unnamed>`;r.diagnostics.report(`error`,`MIDDLEWARE_ERROR`,`Middleware '${n}' threw: ${e instanceof Error?e.message:String(e)}`)}}return o}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 C(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,outDir:this.outDir,routes:this.routes,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),caches:R(),diagnostics:B(e.name),paths:V(this.docsDir,this.rootDir),virtualModules:U(),middleware:Q(),hmr:G(),server:Z()}}createGenericContext(){let e=`<middleware>`;return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,outDir:this.outDir,routes:this.routes,meta:{name:e},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),caches:R(),diagnostics:B(e),paths:V(this.docsDir,this.rootDir),virtualModules:U(),middleware:Q(),hmr:G(),server:Z()}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>m.info(`${t} ${e}`),warn:e=>m.warn(`${t} ${e}`),error:e=>{m.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>m.debug(`${t} ${e}`)}}};function he(e){return e}async function ge(e){let{resolveConfig:t}=await import(`./config-CCXp3aXO.mjs`).then(e=>e.n),{generateRoutes:n,getExternalRoutePaths:r}=await import(`./routes-BW6zsk7Z.mjs`).then(e=>e.i),{generateProjectTypes:i,writeLinkTree:a}=await import(`./types-generator-bDPvUztF.mjs`).then(e=>e.n),{boltdocsPlugin:o}=await import(`./plugin-C95kvu6h.mjs`),s=e?.docsDir||`docs`,c=await t(s),l=(await n(s,c)).map(e=>e.path),u=(c.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u);let d=r(s,c);for(let e of d)l.includes(e)||l.push(e);return i(c,s,void 0,l),a(l),o({...e},c)}async function $(e,t=`development`,n,r){let i=r||process.env.BOLTDOCS_TURBO===`true`,[a,o,{boltdocsPlugin:s,getExternalAbsolutePaths:c},{SECURITY_HEADERS:l},{getCSPHeader:u},{resolveConfig:f},{generateRoutes:p,getExternalRoutePaths:m},{generateProjectTypes:h,writeLinkTree:g},{normalizePath:_}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),import(`./plugin-C95kvu6h.mjs`),import(`./headers-Ddwek8K7.mjs`).then(e=>e.n),import(`./csp-oTC2ygvF.mjs`).then(e=>e.t),import(`./config-CCXp3aXO.mjs`).then(e=>e.n),import(`./routes-BW6zsk7Z.mjs`).then(e=>e.i),import(`./types-generator-bDPvUztF.mjs`).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),v=a.default,y=o.default,b=n||await f(`docs`,e),x=(await p(`docs`,b,void 0,!1,i)).map(e=>e.path),S=(b.base||`/docs`).replace(/\/$/,``);x.includes(S)||x.push(S);let C=m(`docs`,b);for(let e of C)x.includes(e)||x.push(e);h(b,`docs`,e,x),g(x);let w=t===`production`,T=w?{...l}:{};return b.security?.enableCSP&&(T[`Content-Security-Policy`]=u(b)),{root:e,mode:t,oxc:{jsx:{development:!w,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:[ee(),v(),y(),...s({docsDir:`docs`,root:e,turbo:i},b)],resolve:{alias:[{find:`boltdocs/entry`,replacement:_(d.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:_(d.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:_(d.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`,`react-router-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`react-router-dom`,`@bdocs/ssg`,`jsdom`,...c()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,...b.vite?.ssr?.optimizeDeps?.include??[]]},noExternal:[]},server:{watch:{ignored:[`**/.boltdocs/**`,...b.vite?.server?.watch?.ignored??[]]},headers:{...T,...b.vite?.server?.headers},...b.vite?.server},preview:{headers:{...T,...b.vite?.preview?.headers},...b.vite?.preview},...b.vite??{}}}export{b as _,X as a,y as b,pe as c,oe as d,D as f,S as g,w as h,me as i,de as l,te as m,$ as n,W as o,E as p,he as r,le as s,ge as t,F as u,C as v,x as y};
|
|
@@ -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-D1Md3oWO.cjs`);let t=require(`node:fs`);t=e.r(t);let n=require(`node:crypto`);n=e.r(n);let r=require(`satteri`),i=require(`esbuild`);function a(){return(0,r.defineMdastPlugin)({name:`boltdocs-remark-meta`,code(e,t){e.meta&&t.setProperty(e,`data`,{...e.data||{},hProperties:{...e.data?.hProperties||{},metastring:e.meta}})}})}function o(e){return e.toLowerCase().replace(/<[^>]+>/g,``).replace(/[^\w\s-]/g,``).replace(/\s+/g,`-`).trim()}function s(){return(0,r.defineHastPlugin)({name:`boltdocs-rehype-slug`,element:{filter:[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],visit(e,t){let n=t.textContent(e);n&&t.setProperty(e,`id`,o(n))}}})}function c(e){let t={};if(!e)return t;/lineNumbers|showLineNumbers/.test(e)&&(t.lineNumbers=!0),/wordWrap|word-wrap/.test(e)&&(t.wordWrap=!0);let n=e.match(/title=(["'])(.*?)\1/);return n&&(t.title=n[2]),t}function l(e,t){let n=e?.className??e?.class??[],r=t?.className??t?.class??[];return[...Array.isArray(r)?r:[r],...Array.isArray(n)?n:[n]].filter(Boolean)}function u(){let e=null,t=null;return(0,r.defineHastPlugin)({name:`boltdocs-rehype-shiki`,element:{filter:[`pre`],async visit(n,r){e||(e=(await import(`boltdocs/node/mdx/shiki-adapter`)).getShikiAdapter(),t=e.getHighlighter());let i=await t,a=n.children?.[0];if(!a||a.type!==`element`||a.tagName!==`code`)return;let o=(a.properties?.className??a.properties?.class??[]).find(e=>e.startsWith(`language-`)),s=o?o.slice(9):`text`;if(s===`mermaid`)return;let u=c(a.properties?.metastring??a.data?.meta??``),d=e.getOptions(s,u),f=a.children?.[0]?.value??``;try{let e=i.codeToHast(f,d),t=e.type===`root`?e.children[0]:e,r=l(n.properties,t.properties),a={},o=n.properties??{};for(let e of Object.keys(o))e===`class`||e===`className`||(a[e]=o[e]);let c=t.properties??{};for(let[e,t]of Object.entries(c))e===`class`||e===`className`||(a[e]=t);return a.className=r,a[`data-highlighted`]=`true`,a[`data-lang`]=s,u.title&&(a[`data-title`]=u.title),{type:`element`,tagName:`pre`,properties:a,children:t.children}}catch{let e={},t=n.properties??{};for(let n of Object.keys(t))n===`class`||n===`className`||(e[n]=t[n]);return e.className=[...t?.className??t?.class??[],`shiki-fallback`],e[`data-highlighted`]=`false`,e[`data-lang`]=s,u.title&&(e[`data-title`]=u.title),{type:`element`,tagName:`pre`,properties:e,children:n.children}}}}})}function d(e){if(!e)return null;if(typeof e==`object`&&`name`in e&&[`paragraph`,`heading`,`thematicBreak`,`blockquote`,`list`,`listItem`,`html`,`code`,`definition`,`text`,`emphasis`,`strong`,`inlineCode`,`break`,`link`,`image`].some(t=>t in e&&typeof e[t]==`function`))return e;let t;try{t=typeof e==`function`?e():null}catch{t=null}return typeof t==`function`?f(t):typeof e==`function`?f(e):(console.warn(`[satteri] Cannot convert remark plugin "${e?.name??`unknown`}" to Sätteri MDAST.`),null)}function f(e){return(0,r.defineMdastPlugin)({name:`satteri-remark-adapter`,code(t,n){try{if(!n.parent(t)||n.indexOf(t)===void 0)return;let r={type:`root`,children:[t]},i=e(r);if(i&&typeof i.then==`function`)return;if(r.children[0]!==t){let e=r.children[0];if(e)return e}}catch{}}})}function p(e,t,n,i){if(!e)return null;let a;try{a=typeof e==`function`?e(t):null}catch{return null}return typeof a==`function`?(0,r.defineMdastPlugin)({name:`satteri-${i}-adapter`,code(e,r){if((e.lang||``)===i)return{type:`mdxJsxFlowElement`,name:n,attributes:[{type:`mdxJsxAttribute`,name:`chart`,value:e.value||``},{type:`mdxJsxAttribute`,name:`config`,value:JSON.stringify(t)}],children:[]}}}):null}function m(e){if(!e)return null;if(typeof e==`object`&&`name`in e&&[`root`,`element`,`text`,`comment`,`doctype`,`script`,`style`,`template`].some(t=>{let n=e[t];return typeof n==`function`||typeof n==`object`&&!!n&&`visit`in n}))return e;let t;try{t=typeof e==`function`?e():e}catch{return null}return typeof t==`function`?h(t):(console.warn(`[satteri] Cannot convert rehype plugin "${(typeof t==`object`&&t?t:null)?.name??`unknown`}" to Sätteri HAST.`),null)}function h(e){return(0,r.defineHastPlugin)({name:`satteri-rehype-adapter`,element:{filter:[],async visit(t,n){try{let n={type:`root`,children:[t]},r=e(n);if(r instanceof Promise&&await r,n.children[0]!==t){let e=n.children[0];if(e)return e}}catch{}}}})}function g(e){let t=[],n=[];for(let r of e?.plugins??[]){let e=r;if(e.remarkPlugins)for(let n of e.remarkPlugins)if(Array.isArray(n)){let[r,i]=n;if(e.name===`boltdocs-plugin-mermaid`){let e=p(r,i,`Mermaid`,`mermaid`);e&&t.push(e)}else{let e=d(r);e&&t.push(e)}}else{let e=d(n);e&&t.push(e)}if(e.rehypePlugins)for(let t of e.rehypePlugins)if(Array.isArray(t)){let e=m(t[0]);e&&n.push(e)}else{let e=m(t);e&&n.push(e)}}return{remarkPlugins:t,rehypePlugins:n}}var _=class{mdastPlugins;hastPlugins;cache;cacheReady=!1;fallbackCompiler=null;fallbackPromise=null;constructor(e,t){this.mdastPlugins=e,this.hastPlugins=t}async ensureCache(){return this.cacheReady||=(this.cache=new(await(import(`boltdocs/node/cache`))).TransformCache(`mdx`),!0),this.cache}async getCache(){return this.ensureCache()}async ensureFallback(){return this.fallbackCompiler?this.fallbackCompiler:this.fallbackPromise?this.fallbackPromise:(this.fallbackPromise=this.loadFallback(),this.fallbackCompiler=await this.fallbackPromise,this.fallbackCompiler)}async loadFallback(){try{let e=await import(`@mdx-js/rollup`),[t,n,r]=await Promise.all([import(`remark-gfm`).then(e=>e.default),import(`remark-frontmatter`).then(e=>e.default),import(`rehype-slug`).then(e=>e.default)]);return e.default({jsxRuntime:`automatic`,jsxImportSource:`react`,remarkPlugins:[t,n],rehypePlugins:[r]})}catch{return null}}async satteriCompile(e,t){let a=`${t}:${n.default.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v6-fallback`;try{let e=await(await this.getCache()).getAsync(a);if(e)return e}catch{}try{if(typeof r.mdxToJs!=`function`)return null;let t=await(0,r.mdxToJs)(e,{jsxRuntime:`automatic`,jsxImportSource:`react`,outputFormat:`program`,mdastPlugins:[...this.mdastPlugins],hastPlugins:[...this.hastPlugins],features:{gfm:!0,frontmatter:!0}});if(!t?.code)return null;let n=t.code;if(/<\w+/.test(n))try{let e=(0,i.transformSync)(n,{loader:`jsx`,jsx:`automatic`,jsxImportSource:`react`});e?.code&&(n=e.code)}catch(e){console.error(`[boltdocs-satteri-mdx] esbuild error:`,e)}try{(await this.getCache()).set(a,n)}catch{}return n}catch{return null}}async fallbackCompile(e,t){let n=await this.ensureFallback();if(!n)return null;try{let r=await n.transform(e,t);if(r?.code)return r.code}catch{}return null}async compile(e,t){return await this.satteriCompile(e,t)||this.fallbackCompile(e,t)}async flushCache(){this.cache&&(this.cache.save(),await this.cache.flush())}};function v(e){let[t]=e.split(`?`);return t.endsWith(`.md`)||t.endsWith(`.mdx`)}function y(e){return e.includes(`function _createMdxContent`)||e.includes(`react/jsx-runtime`)||e.includes(`export default function MDXContent`)}function b(e,n){let r=x(),i=r.mdastPlugins??[],a=r.hastPlugins??[],{remarkPlugins:o,rehypePlugins:s}=g(e),c=new _([...i,...o],[...a,...s]);return{name:`vite-plugin-boltdocs-satteri-mdx`,enforce:`pre`,async load(e){if(!v(e))return null;let[r]=e.split(`?`),i;try{i=t.default.readFileSync(r,`utf-8`)}catch{return null}let a=n?.(),o=i;if(a)try{let e=await a.runChain(`transformSource`,{code:i,filePath:r});e?.code&&(o=e.code)}catch{}return await c.compile(o,r)??o},async transform(e,t){if(!v(t))return null;let r=e;if(!y(r)){let e=await c.compile(r,t.split(`?`)[0]);e&&(r=e)}let i=r,a=n?.();if(a)try{let e=await a.runChain(`transformMdx`,{code:r,filePath:t.split(`?`)[0]});e?.code&&(i=e.code)}catch{}return{code:i,map:null}},async buildEnd(){await c.flushCache()}}}function x(){return{name:`boltdocs-processor-satteri`,version:`0.1.0`,boltdocsVersion:`>=3.0.0`,mdastPlugins:[a()],hastPlugins:[s(),u()]}}exports.createSatteriMdxPlugin=b;
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
var e=`3.
|
|
6
|
+
var e=`3.2.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
|
-
const e=require(`./chunk-
|
|
6
|
+
const e=require(`./chunk-D1Md3oWO.cjs`);let t=require(`node:path`);t=e.r(t);let n=require(`node:fs`);n=e.r(n);function r(e,r){let i=[`tsx`,`ts`,`jsx`,`js`],a=t.default.resolve(e,`pages-external`),o=i.map(e=>t.default.resolve(a,`index.${e}`)).find(e=>n.default.existsSync(e));if(!o)return[];let s=n.default.readFileSync(o,`utf-8`).match(/export\s+const\s+pages\s*=\s*\{([\s\S]*?)\}\s*(?:;|$)/);if(!s)return[];let c=[],l=/(['"])(.+?)\1\s*:/g,u;for(;(u=l.exec(s[1]))!==null;){let e=u[2],t=e.startsWith(`/`)?e:`/${e}`;if(c.push(t),r?.i18n){let e=Object.keys(r.i18n.locales);for(let n of e){let e=t===`/`?`/${n}`:`/${n}${t}`;c.includes(e)||c.push(e)}}}return c}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
|
|
@@ -0,0 +1,8 @@
|
|
|
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-D1Md3oWO.cjs`),t=require(`./utils-D6Xtj0FZ.cjs`),n=require(`./errors-vKw8CkiX.cjs`),r=require(`./cache-CO4Dy2uQ.cjs`);let i=require(`node:path`);i=e.r(i);let a=require(`github-slugger`);a=e.r(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}}function v(e,n){if(e.groupPosition!==void 0)return e.groupPosition;if(e.sidebarPosition!==void 0)return e.sidebarPosition;if(n.remainingParts.length<=1)return;let r=t.i(n.remainingParts[n.remainingParts.length-2]);return r===void 0?void 0:Number(r)}async function y(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=b(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 y=i.default.relative(h,m).replace(/\\/g,`/`);if(y.startsWith(`../`)||y!==`.`&&!t.v.test(y))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:x,content:S}=await t.d(e),C=o(m,h,s,c,x.permalink),w=null,T=()=>(w||=p(S,x.description),w),E=_(x),D=g(x),O=i.default.basename(C.relativePath),k=t.h(O),A=C.remainingParts.map(e=>t.h(e)).slice(0,-1),j=/^index\.mdx?$/.test(k),M=x.sidebarPosition??t.i(O),N=A.join(`/`),P={route:{path:C.finalPath,componentPath:e,filePath:C.relativePath,title:E.title||t.h(i.default.basename(u,i.default.extname(u))),get description(){return T().description},sidebarPosition:M,get headings(){return T().headings},locale:C.locale,version:C.version,badge:E.badge,icon:x.icon?String(x.icon):void 0,tab:C.inferredTab,subRouteGroup:C.subRouteGroup,slugParts:A,get _content(){return T().plainText},_rawContent:S,date:x.date,lastUpdated:x.lastUpdated,category:x.category,order:x.order,sidebarLabel:x.sidebarLabel,sidebarHidden:x.sidebarHidden||x.hidden,seo:D,frontmatter:x,collection:C.collection,tags:x.tags,author:typeof x.author==`string`?x.author:x.author?.name,draft:x.draft,excerpt:x.excerpt,coverImage:x.coverImage||x.cover},relativeDir:C.collection?void 0:N||void 0,isGroupIndex:j,inferredTab:C.inferredTab,inferredCollection:C.collection,groupMeta:j?{title:x.groupTitle||E.title||(A.length>0?t.t(A[A.length-1]):``),position:v(x,C),icon:x.icon?String(x.icon):void 0}:void 0,inferredGroupPosition:C.remainingParts.length>1?t.i(C.remainingParts[C.remainingParts.length-2]):void 0};return await r.t.set(e,P),P}function b(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}async function x(e,a,s,c,l){let u=e.replace(/\\/g,`/`),d=s.replace(/\\/g,`/`),f=b(u),p=i.default.resolve(f),m=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)};p=e(f),m=e(d)}let h=i.default.relative(m,p).replace(/\\/g,`/`);if(h.startsWith(`../`)||h!==`.`&&!t.v.test(h))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:y}=t.g(`---
|
|
7
|
+
`+a.rawMatter+`
|
|
8
|
+
---`),x=o(p,m,c,l,y.permalink),S=_(y),C=g(y),w=i.default.basename(x.relativePath),T=t.h(w),E=x.remainingParts.map(e=>t.h(e)).slice(0,-1),D=/^index\.mdx?$/.test(T),O=y.sidebarPosition??t.i(w),k=E.join(`/`),A=y.description?t.p(String(y.description)).trim():a.description,j={route:{path:x.finalPath,componentPath:e,filePath:x.relativePath,title:S.title||t.h(i.default.basename(u,i.default.extname(u))),description:A,sidebarPosition:O,headings:a.headings,locale:x.locale,version:x.version,badge:S.badge,icon:y.icon?String(y.icon):void 0,tab:x.inferredTab,subRouteGroup:x.subRouteGroup,slugParts:E,_content:a.plainText,_rawContent:a.content,date:y.date,lastUpdated:y.lastUpdated,category:y.category,order:y.order,sidebarLabel:y.sidebarLabel,sidebarHidden:y.sidebarHidden||y.hidden,seo:C,frontmatter:y,collection:x.collection,tags:y.tags,author:typeof y.author==`string`?y.author:y.author?.name,draft:y.draft,excerpt:y.excerpt,coverImage:y.coverImage||y.cover},relativeDir:x.collection?void 0:k||void 0,isGroupIndex:D,inferredTab:x.inferredTab,inferredCollection:x.collection,groupMeta:D?{title:y.groupTitle||S.title||(E.length>0?t.t(E[E.length-1]):``),position:v(y,x),icon:y.icon?String(y.icon):void 0}:void 0,inferredGroupPosition:x.remainingParts.length>1?t.i(x.remainingParts[x.remainingParts.length-2]):void 0};return await r.t.set(e,j),j}exports.parseDocFile=y,exports.parseDocFileWithNative=x;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
+
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
import{a as e,d as t,g as n,h as r,i,l as a,m as o,p as s,t as c,v as l}from"./utils-Crm9oPcV.mjs";import{n as u,t as d}from"./errors-0zGHRLue.mjs";import{t as f}from"./cache-Dk53iOo6.mjs";import p from"node:path";import m from"github-slugger";function h(t,n,i,a,o){let s=p.relative(n,t).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=>r(e)).join(`/`),g=o?o.startsWith(`/`)?o:`/${o}`:e(h||`index.md`),_=[f?`/${f}`:i,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=s(t[2].replace(_,`$1`).replace(v,``).trim()).trim(),a=n.slug(i);r.push({level:e,text:i,id:a})}let i=o(e.replace(b,``).replace(x,``).replace(y,` `)).trim(),a=t?s(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?s(String(e.title)):void 0,badge:e.badge?s(String(e.badge)):void 0,description:e.description?s(String(e.description)):void 0}}function D(e,t){if(e.groupPosition!==void 0)return e.groupPosition;if(e.sidebarPosition!==void 0)return e.sidebarPosition;if(t.remainingParts.length<=1)return;let n=i(t.remainingParts[t.remainingParts.length-2]);return n===void 0?void 0:Number(n)}async function O(e,n,a,o){let s=await f.get(e);if(s)return s;let d=e.replace(/\\/g,`/`),m=n.replace(/\\/g,`/`),g=k(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!==`.`&&!l.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 t(e),C=h(_,v,a,o,b.permalink),w=null,O=()=>(w||=S(x,b.description),w),A=E(b),j=T(b),M=p.basename(C.relativePath),N=r(M),P=C.remainingParts.map(e=>r(e)).slice(0,-1),F=/^index\.mdx?$/.test(N),I=b.sidebarPosition??i(M),L=P.join(`/`),R={route:{path:C.finalPath,componentPath:e,filePath:C.relativePath,title:A.title||r(p.basename(d,p.extname(d))),get description(){return O().description},sidebarPosition:I,get headings(){return O().headings},locale:C.locale,version:C.version,badge:A.badge,icon:b.icon?String(b.icon):void 0,tab:C.inferredTab,subRouteGroup:C.subRouteGroup,slugParts:P,get _content(){return O().plainText},_rawContent:x,date:b.date,lastUpdated:b.lastUpdated,category:b.category,order:b.order,sidebarLabel:b.sidebarLabel,sidebarHidden:b.sidebarHidden||b.hidden,seo:j,frontmatter:b,collection:C.collection,tags:b.tags,author:typeof b.author==`string`?b.author:b.author?.name,draft:b.draft,excerpt:b.excerpt,coverImage:b.coverImage||b.cover},relativeDir:C.collection?void 0:L||void 0,isGroupIndex:F,inferredTab:C.inferredTab,inferredCollection:C.collection,groupMeta:F?{title:b.groupTitle||A.title||(P.length>0?c(P[P.length-1]):``),position:D(b,C),icon:b.icon?String(b.icon):void 0}:void 0,inferredGroupPosition:C.remainingParts.length>1?i(C.remainingParts[C.remainingParts.length-2]):void 0};return await f.set(e,R),R}function k(e){let t;try{t=decodeURIComponent(e)}catch{throw a(`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}async function A(e,t,a,o,d){let m=e.replace(/\\/g,`/`),g=a.replace(/\\/g,`/`),_=k(m),v=p.resolve(_),y=p.resolve(g);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)};v=e(_),y=e(g)}let b=p.relative(y,v).replace(/\\/g,`/`);if(b.startsWith(`../`)||b!==`.`&&!l.test(b))throw new u(`Security breach: File is outside of docs directory, contains null bytes, or invalid path characters: ${p.basename(_)}`);let{data:x}=n(`---
|
|
7
|
+
`+t.rawMatter+`
|
|
8
|
+
---`),S=h(v,y,o,d,x.permalink),C=E(x),w=T(x),O=p.basename(S.relativePath),A=r(O),j=S.remainingParts.map(e=>r(e)).slice(0,-1),M=/^index\.mdx?$/.test(A),N=x.sidebarPosition??i(O),P=j.join(`/`),F=x.description?s(String(x.description)).trim():t.description,I={route:{path:S.finalPath,componentPath:e,filePath:S.relativePath,title:C.title||r(p.basename(m,p.extname(m))),description:F,sidebarPosition:N,headings:t.headings,locale:S.locale,version:S.version,badge:C.badge,icon:x.icon?String(x.icon):void 0,tab:S.inferredTab,subRouteGroup:S.subRouteGroup,slugParts:j,_content:t.plainText,_rawContent:t.content,date:x.date,lastUpdated:x.lastUpdated,category:x.category,order:x.order,sidebarLabel:x.sidebarLabel,sidebarHidden:x.sidebarHidden||x.hidden,seo:w,frontmatter:x,collection:S.collection,tags:x.tags,author:typeof x.author==`string`?x.author:x.author?.name,draft:x.draft,excerpt:x.excerpt,coverImage:x.coverImage||x.cover},relativeDir:S.collection?void 0:P||void 0,isGroupIndex:M,inferredTab:S.inferredTab,inferredCollection:S.collection,groupMeta:M?{title:x.groupTitle||C.title||(j.length>0?c(j[j.length-1]):``),position:D(x,S),icon:x.icon?String(x.icon):void 0}:void 0,inferredGroupPosition:S.remainingParts.length>1?i(S.remainingParts[S.remainingParts.length-2]):void 0};return await f.set(e,I),I}export{O as parseDocFile,A as parseDocFileWithNative};
|