boltdocs 2.9.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/boltdocs.js +2 -1
- package/dist/{adapters-uGz-UKQa.cjs → adapters-C5AWWGfb.cjs} +1 -1
- package/dist/{adapters-HVuXENAe.mjs → adapters-DEXNIv3x.mjs} +1 -1
- package/dist/{banner-D2NddBfF.d.ts → banner-CfdalYLL.d.ts} +1 -1
- package/dist/{banner-C_xkGxzI.d.cts → banner-DNSkgUsO.d.cts} +1 -1
- package/dist/{cache-B19MLTpN.cjs → cache-DETwlACe.cjs} +1 -1
- package/dist/{cache-CfhOTR3Q.mjs → cache-SF59enb3.mjs} +1 -1
- package/dist/client/index.cjs +126 -24
- package/dist/client/index.d.cts +4 -3
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.js +125 -24
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +2 -2
- package/dist/client/primitives.d.cts +10 -8
- package/dist/client/primitives.d.ts +10 -8
- package/dist/client/primitives.js +2 -2
- package/dist/config-B5uVv5q4.cjs +7 -0
- package/dist/config-D3_zDkHh.mjs +7 -0
- package/dist/{config-CnmfjOE4.cjs → config-JGkMJoJQ.cjs} +1 -1
- package/dist/csp-gaZ51xzq.mjs +6 -0
- package/dist/doctor-3MheVMwd.mjs +7 -0
- package/dist/{parser-CHsNUEhU.cjs → doctor-BR1B2Mkz.cjs} +1 -1
- package/dist/doctor-DQxLM202.cjs +7 -0
- package/dist/handler-Btd4t_67.mjs +28 -0
- package/dist/{headers-DuCAOgYX.cjs → headers-BXKxiPUv.cjs} +1 -1
- package/dist/headers-CXyf0auY.mjs +6 -0
- package/dist/{image-BCDyLHyD.js → image-C9md50h2.js} +14 -6
- package/dist/{image-DWdmichO.cjs → image-CR6UlaI5.cjs} +14 -6
- package/dist/{mdx-9QJoSITt.cjs → mdx-DJBg5DuL.cjs} +10 -23
- package/dist/{mdx-DFbspTP9.js → mdx-DhyMkc35.js} +10 -23
- package/dist/node/cli-entry.cjs +3 -3
- package/dist/node/cli-entry.mjs +3 -3
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +40 -19
- package/dist/node/index.d.mts +41 -20
- package/dist/node/index.mjs +1 -1
- package/dist/node-BUAMwxuS.cjs +105 -0
- package/dist/node-Clh72alT.mjs +105 -0
- package/dist/{package-Di7alQGe.mjs → package-1GvyLw7z.mjs} +1 -1
- package/dist/{package-BlYktJR3.cjs → package-3jQEMIvy.cjs} +1 -1
- package/dist/pages-external-BYa4JSda.mjs +6 -0
- package/dist/pages-external-CX2uyW95.cjs +6 -0
- package/dist/parser-CNIPHx4s.cjs +8 -0
- package/dist/parser-D0QHIQsi.mjs +8 -0
- package/dist/plugin-D9gURy-9.mjs +68 -0
- package/dist/plugin-N3zGyZXw.cjs +68 -0
- package/dist/rolldown-runtime-fkIsjY3S.mjs +6 -0
- package/dist/routes-BajCwrvX.cjs +6 -0
- package/dist/routes-CyrnmVuG.mjs +6 -0
- package/dist/routes-D6Tuu7Fs.cjs +6 -0
- package/dist/{search-dialog-DRNJsxOv.js → search-dialog-CQneRo8T.js} +1 -1
- package/dist/{search-dialog-BsAiQgnx.cjs → search-dialog-CwNh8lIN.cjs} +27 -30
- package/dist/{search-dialog-BhXg05Ri.cjs → search-dialog-D4rplZMv.cjs} +1 -0
- package/dist/{search-dialog-DaR66wl0.js → search-dialog-DaeSPvEo.js} +1 -0
- package/dist/{search-dialog-CaOO1Q4i.js → search-dialog-DoGobmuG.js} +28 -31
- package/dist/{search-dialog-CzwvKoLW.cjs → search-dialog-cHJoKjts.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-BB71nVsG.cjs → shiki-adapter-CGTmrR6S.cjs} +1 -1
- package/dist/shiki-adapter-CXEGRnjr.mjs +6 -0
- package/dist/{doctor-BL6c8x2Q.cjs → shiki-adapter-Mr8_oT_9.cjs} +1 -1
- package/dist/{sidebar-BtJyWHy4.d.cts → sidebar-7gIifpBX.d.cts} +21 -4
- package/dist/{sidebar-C4fuRYYS.d.ts → sidebar-BAKgJ-Er.d.ts} +21 -4
- package/dist/types-generator-DVOnRVKU.mjs +26 -0
- package/dist/{utils-DexBrwiP.mjs → utils-B3xYMrpK.mjs} +1 -1
- package/dist/{utils-BWy_8ASj.cjs → utils-Bz1tG9Dg.cjs} +1 -1
- package/package.json +2 -1
- package/src/shared/types.ts +22 -3
- package/dist/config-BCqkPkjC.mjs +0 -7
- package/dist/config-BPWGa2W3.mjs +0 -6
- package/dist/config-D7ERJhqe.cjs +0 -7
- package/dist/csp-DtM6q2gZ.mjs +0 -6
- package/dist/doctor-A17UhTRn.cjs +0 -7
- package/dist/doctor-Bc-Tx_md.mjs +0 -7
- package/dist/handler-CyIBbZdb.mjs +0 -28
- package/dist/handler-eNNcucnf.mjs +0 -6
- package/dist/headers-DK0Hw7iB.mjs +0 -6
- package/dist/node/routes/worker.cjs +0 -6
- package/dist/node/routes/worker.d.cts +0 -2
- package/dist/node/routes/worker.d.mts +0 -2
- package/dist/node/routes/worker.mjs +0 -6
- package/dist/node-JQ6C-CBi.mjs +0 -105
- package/dist/node-cZgna618.cjs +0 -105
- package/dist/parser-CLtGv_XH.cjs +0 -6
- package/dist/parser-Ww0eOqs7.mjs +0 -6
- package/dist/plugin-BCCYSeId.cjs +0 -61
- package/dist/plugin-Bu75gPjx.mjs +0 -61
- package/dist/routes-B2joDAlC.cjs +0 -6
- package/dist/routes-CyKj3dzf.cjs +0 -6
- package/dist/routes-DMBny9t9.mjs +0 -6
- package/dist/routes-DZjS8QSV.mjs +0 -6
- package/dist/shiki-adapter-CL-IQwKI.cjs +0 -6
- package/dist/shiki-adapter-CxTLkjew.mjs +0 -6
- package/dist/shiki-adapter-rQ087Lx3.mjs +0 -6
- package/dist/types-generator-BRyf4o9F.mjs +0 -26
- package/dist/types-generator-Cu2jQP-V.mjs +0 -6
- package/dist/worker-pool-CgOMozUz.cjs +0 -6
- package/dist/worker-pool-v6tW2MDQ.mjs +0 -6
- /package/dist/{csp-DbbF3R9Q.cjs → csp-CBysWlAf.cjs} +0 -0
- /package/dist/{generator-BaSvGlxR.mjs → generator-CcOBN5vI.mjs} +0 -0
- /package/dist/{generator-DsajVrDx.cjs → generator-DtUU3Cfk.cjs} +0 -0
- /package/dist/{handler-1LRMYeI4.cjs → handler-Dzf4dSnV.cjs} +0 -0
- /package/dist/{index-ZqgZUvwp.d.mts → index-CdJv4ocW.d.mts} +0 -0
- /package/dist/{meta-loader-CD3Yptr5.mjs → meta-loader-C4Hu9RN9.mjs} +0 -0
- /package/dist/{meta-loader-CjphwtS7.cjs → meta-loader-C9MKjAs0.cjs} +0 -0
- /package/dist/{types-generator-BqNKCbrx.cjs → types-generator-CYcHkDzZ.cjs} +0 -0
package/dist/node/index.d.cts
CHANGED
|
@@ -152,6 +152,13 @@ interface BoltdocsSecurityConfig {
|
|
|
152
152
|
enableCSP?: boolean;
|
|
153
153
|
customHeaders?: Record<string, string>;
|
|
154
154
|
}
|
|
155
|
+
interface BoltdocsVerificationConfig {
|
|
156
|
+
google?: string;
|
|
157
|
+
bing?: string;
|
|
158
|
+
yandex?: string;
|
|
159
|
+
pinterest?: string;
|
|
160
|
+
facebook?: string;
|
|
161
|
+
}
|
|
155
162
|
/**
|
|
156
163
|
* Configuration for SEO.
|
|
157
164
|
*/
|
|
@@ -161,6 +168,7 @@ interface BoltdocsSeoConfig {
|
|
|
161
168
|
thumbnails?: {
|
|
162
169
|
background?: string;
|
|
163
170
|
};
|
|
171
|
+
verification?: BoltdocsVerificationConfig;
|
|
164
172
|
}
|
|
165
173
|
/**
|
|
166
174
|
* Configuration for Google Analytics 4 (GA4).
|
|
@@ -222,10 +230,19 @@ interface BoltdocsCustomFeedbackConfig {
|
|
|
222
230
|
categorySlug?: string;
|
|
223
231
|
endpoint?: string;
|
|
224
232
|
}
|
|
233
|
+
interface BoltdocsVercelConfig {
|
|
234
|
+
analytics?: boolean;
|
|
235
|
+
speedInsights?: boolean;
|
|
236
|
+
}
|
|
225
237
|
interface BoltdocsIntegrationsConfig {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
238
|
+
analytics?: {
|
|
239
|
+
ga4?: BoltdocsGA4Config;
|
|
240
|
+
vercel?: BoltdocsVercelConfig;
|
|
241
|
+
gtm?: BoltdocsGTMConfig;
|
|
242
|
+
};
|
|
243
|
+
search?: {
|
|
244
|
+
algolia?: BoltdocsAlgoliaConfig;
|
|
245
|
+
};
|
|
229
246
|
feedback?: {
|
|
230
247
|
giscus?: BoltdocsGiscusConfig;
|
|
231
248
|
custom?: BoltdocsCustomFeedbackConfig;
|
|
@@ -395,25 +412,23 @@ interface RouteMeta {
|
|
|
395
412
|
slugParts?: string[];
|
|
396
413
|
}
|
|
397
414
|
//#endregion
|
|
398
|
-
//#region src/node/
|
|
415
|
+
//#region src/node/routes/index.d.ts
|
|
399
416
|
/**
|
|
400
|
-
*
|
|
417
|
+
* Invalidates the global route metadata and clears local state.
|
|
401
418
|
*/
|
|
402
|
-
declare
|
|
403
|
-
private readonly assetsDir;
|
|
404
|
-
private hashMap;
|
|
405
|
-
constructor(root?: string);
|
|
406
|
-
getFileHash(filePath: string): Promise<string>;
|
|
407
|
-
get(sourcePath: string, cacheKey: string): Promise<string | null>;
|
|
408
|
-
set(sourcePath: string, cacheKey: string, content: Buffer | string, sourceHash: string): void;
|
|
409
|
-
private getCachedPath;
|
|
410
|
-
clear(): void;
|
|
411
|
-
flush(): Promise<void>;
|
|
412
|
-
}
|
|
419
|
+
declare function invalidateRouteCache(): void;
|
|
413
420
|
/**
|
|
414
|
-
*
|
|
421
|
+
* Generates the entire route map for the documentation site.
|
|
422
|
+
*
|
|
423
|
+
* Automatically handles versioning and i18n routing, including fallback
|
|
424
|
+
* generation for missing translations.
|
|
425
|
+
*
|
|
426
|
+
* @param docsDir - The root documentation directory
|
|
427
|
+
* @param config - The Boltdocs configuration
|
|
428
|
+
* @param basePath - The base URL path for the routes (default: '/docs')
|
|
429
|
+
* @returns A promise resolving to an array of RouteMeta objects
|
|
415
430
|
*/
|
|
416
|
-
declare function
|
|
431
|
+
declare function generateRoutes(docsDir: string, config?: BoltdocsConfig, basePath?: string, forceScan?: boolean): Promise<RouteMeta[]>;
|
|
417
432
|
//#endregion
|
|
418
433
|
//#region src/node/plugins/plugin-types.d.ts
|
|
419
434
|
interface PluginContext {
|
|
@@ -759,6 +774,12 @@ declare function normalizePath(p: string): string;
|
|
|
759
774
|
*/
|
|
760
775
|
declare function sanitizeFilename(name: string): string;
|
|
761
776
|
//#endregion
|
|
777
|
+
//#region src/node/cache.d.ts
|
|
778
|
+
/**
|
|
779
|
+
* Flushes all pending background cache operations.
|
|
780
|
+
*/
|
|
781
|
+
declare function flushCache(): Promise<void>;
|
|
782
|
+
//#endregion
|
|
762
783
|
//#region src/node/index.d.ts
|
|
763
784
|
declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
|
|
764
785
|
/**
|
|
@@ -767,4 +788,4 @@ declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
|
|
|
767
788
|
*/
|
|
768
789
|
declare function createViteConfig(root: string, mode?: 'development' | 'production', preResolvedConfig?: BoltdocsConfig): Promise<InlineConfig>;
|
|
769
790
|
//#endregion
|
|
770
|
-
export {
|
|
791
|
+
export { 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, generateRoutes, getNodeProperty, handleAwsFeedback, handleFeedback, handleNetlifyFeedback, handleVercelFeedback, handleWebFeedback, hasNodeClass, invalidateRouteCache, normalizePath, parseMetaString, removeNodeClass, resolveConfig, sanitizeFilename, setNodeProperty, validatePlugins, visitMdxElements, visitNodes, visitRehypeElements, visitRemarkHeadings, visitRemarkLinks };
|
package/dist/node/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { i as handleVercelFeedback, n as handleWebFeedback, r as handleNetlifyFeedback, t as handleAwsFeedback } from "../index-
|
|
2
|
+
import { i as handleVercelFeedback, n as handleWebFeedback, r as handleNetlifyFeedback, t as handleAwsFeedback } from "../index-CdJv4ocW.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { EXIT, SKIP } from "unist-util-visit";
|
|
5
5
|
import { InlineConfig, Plugin } from "vite";
|
|
@@ -153,6 +153,13 @@ interface BoltdocsSecurityConfig {
|
|
|
153
153
|
enableCSP?: boolean;
|
|
154
154
|
customHeaders?: Record<string, string>;
|
|
155
155
|
}
|
|
156
|
+
interface BoltdocsVerificationConfig {
|
|
157
|
+
google?: string;
|
|
158
|
+
bing?: string;
|
|
159
|
+
yandex?: string;
|
|
160
|
+
pinterest?: string;
|
|
161
|
+
facebook?: string;
|
|
162
|
+
}
|
|
156
163
|
/**
|
|
157
164
|
* Configuration for SEO.
|
|
158
165
|
*/
|
|
@@ -162,6 +169,7 @@ interface BoltdocsSeoConfig {
|
|
|
162
169
|
thumbnails?: {
|
|
163
170
|
background?: string;
|
|
164
171
|
};
|
|
172
|
+
verification?: BoltdocsVerificationConfig;
|
|
165
173
|
}
|
|
166
174
|
/**
|
|
167
175
|
* Configuration for Google Analytics 4 (GA4).
|
|
@@ -223,10 +231,19 @@ interface BoltdocsCustomFeedbackConfig {
|
|
|
223
231
|
categorySlug?: string;
|
|
224
232
|
endpoint?: string;
|
|
225
233
|
}
|
|
234
|
+
interface BoltdocsVercelConfig {
|
|
235
|
+
analytics?: boolean;
|
|
236
|
+
speedInsights?: boolean;
|
|
237
|
+
}
|
|
226
238
|
interface BoltdocsIntegrationsConfig {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
239
|
+
analytics?: {
|
|
240
|
+
ga4?: BoltdocsGA4Config;
|
|
241
|
+
vercel?: BoltdocsVercelConfig;
|
|
242
|
+
gtm?: BoltdocsGTMConfig;
|
|
243
|
+
};
|
|
244
|
+
search?: {
|
|
245
|
+
algolia?: BoltdocsAlgoliaConfig;
|
|
246
|
+
};
|
|
230
247
|
feedback?: {
|
|
231
248
|
giscus?: BoltdocsGiscusConfig;
|
|
232
249
|
custom?: BoltdocsCustomFeedbackConfig;
|
|
@@ -396,25 +413,23 @@ interface RouteMeta {
|
|
|
396
413
|
slugParts?: string[];
|
|
397
414
|
}
|
|
398
415
|
//#endregion
|
|
399
|
-
//#region src/node/
|
|
416
|
+
//#region src/node/routes/index.d.ts
|
|
400
417
|
/**
|
|
401
|
-
*
|
|
418
|
+
* Invalidates the global route metadata and clears local state.
|
|
402
419
|
*/
|
|
403
|
-
declare
|
|
404
|
-
private readonly assetsDir;
|
|
405
|
-
private hashMap;
|
|
406
|
-
constructor(root?: string);
|
|
407
|
-
getFileHash(filePath: string): Promise<string>;
|
|
408
|
-
get(sourcePath: string, cacheKey: string): Promise<string | null>;
|
|
409
|
-
set(sourcePath: string, cacheKey: string, content: Buffer | string, sourceHash: string): void;
|
|
410
|
-
private getCachedPath;
|
|
411
|
-
clear(): void;
|
|
412
|
-
flush(): Promise<void>;
|
|
413
|
-
}
|
|
420
|
+
declare function invalidateRouteCache(): void;
|
|
414
421
|
/**
|
|
415
|
-
*
|
|
422
|
+
* Generates the entire route map for the documentation site.
|
|
423
|
+
*
|
|
424
|
+
* Automatically handles versioning and i18n routing, including fallback
|
|
425
|
+
* generation for missing translations.
|
|
426
|
+
*
|
|
427
|
+
* @param docsDir - The root documentation directory
|
|
428
|
+
* @param config - The Boltdocs configuration
|
|
429
|
+
* @param basePath - The base URL path for the routes (default: '/docs')
|
|
430
|
+
* @returns A promise resolving to an array of RouteMeta objects
|
|
416
431
|
*/
|
|
417
|
-
declare function
|
|
432
|
+
declare function generateRoutes(docsDir: string, config?: BoltdocsConfig, basePath?: string, forceScan?: boolean): Promise<RouteMeta[]>;
|
|
418
433
|
//#endregion
|
|
419
434
|
//#region src/node/plugins/plugin-types.d.ts
|
|
420
435
|
interface PluginContext {
|
|
@@ -760,6 +775,12 @@ declare function normalizePath(p: string): string;
|
|
|
760
775
|
*/
|
|
761
776
|
declare function sanitizeFilename(name: string): string;
|
|
762
777
|
//#endregion
|
|
778
|
+
//#region src/node/cache.d.ts
|
|
779
|
+
/**
|
|
780
|
+
* Flushes all pending background cache operations.
|
|
781
|
+
*/
|
|
782
|
+
declare function flushCache(): Promise<void>;
|
|
783
|
+
//#endregion
|
|
763
784
|
//#region src/node/index.d.ts
|
|
764
785
|
declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
|
|
765
786
|
/**
|
|
@@ -768,4 +789,4 @@ declare function boltdocs(options?: BoltdocsPluginOptions): Promise<Plugin[]>;
|
|
|
768
789
|
*/
|
|
769
790
|
declare function createViteConfig(root: string, mode?: 'development' | 'production', preResolvedConfig?: BoltdocsConfig): Promise<InlineConfig>;
|
|
770
791
|
//#endregion
|
|
771
|
-
export {
|
|
792
|
+
export { 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, generateRoutes, getNodeProperty, handleAwsFeedback, handleFeedback, handleNetlifyFeedback, handleVercelFeedback, handleWebFeedback, hasNodeClass, invalidateRouteCache, 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{
|
|
6
|
+
import{f as e,u as t}from"../utils-B3xYMrpK.mjs";import{C as n,D as r,E as i,O as a,T as o,_ as s,a as c,c as l,d as u,f as d,g as f,h as p,i as m,k as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C,u as w,v as T,w as E,y as D}from"../node-Clh72alT.mjs";import{i as O}from"../cache-SF59enb3.mjs";import{r as k,t as A}from"../routes-CyrnmVuG.mjs";import{a as j,r as M}from"../config-D3_zDkHh.mjs";import{n as N,o as P}from"../shiki-adapter-CXEGRnjr.mjs";import{t as F}from"../handler-Btd4t_67.mjs";import{i as I,n as L,r as R,t as z}from"../adapters-DEXNIv3x.mjs";export{E as BoltdocsPluginStore,m as EXIT,P as MDX_NODES,o as PluginCompatibilityError,i as PluginError,r as PluginHookError,D as PluginLifecycleManager,a as PluginValidationError,c as SKIP,y as addNodeClass,S as createMdxAttribute,l as createMdxElement,x as createPlugin,g as createRehypeElement,v as createViteConfig,C as default,j as defineConfig,O as flushCache,h as generateEntryCode,A as generateRoutes,w as getNodeProperty,z as handleAwsFeedback,F as handleFeedback,R as handleNetlifyFeedback,I as handleVercelFeedback,L as handleWebFeedback,u as hasNodeClass,k as invalidateRouteCache,t as normalizePath,N as parseMetaString,d as removeNodeClass,M as resolveConfig,e as sanitizeFilename,b as setNodeProperty,n as validatePlugins,_ as visitMdxElements,p as visitNodes,f as visitRehypeElements,s as visitRemarkHeadings,T as visitRemarkLinks};
|
|
@@ -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-Bz1tG9Dg.cjs`),n=require(`./routes-D6Tuu7Fs.cjs`),r=require(`./pages-external-CX2uyW95.cjs`),i=require(`./config-B5uVv5q4.cjs`),a=require(`./types-generator-CYcHkDzZ.cjs`),o=require(`./shiki-adapter-CGTmrR6S.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(`node:module`),p=require(`@bdocs/ssg/node`),m=require(`unist-util-visit`);function h(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 g=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},_=class extends g{constructor(e,t){super(e,`Validation failed: ${t}`)}},v=class extends g{constructor(e,t){super(e,`Compatibility error: ${t}`)}},y=class extends g{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},b=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 x=i.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 S(e,t){let n=[],r=new Set;for(let i of e){let e=x.safeParse(i);if(!e.success)throw new _(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 _(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!d.default.satisfies(t,a.boltdocsVersion))throw new v(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 _(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`);if(s.default.isAbsolute(t))throw new _(a.name,`Component '${e}' has an invalid path: absolute paths are not allowed.`)}n.push(a)}return n}function C(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{n=(0,f.createRequire)(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 w=class{name=`ConfigResolve`;async execute(e){e.config=await i.n(`docs`,e.root),C(e.config,e.root),e.viteConfig=await Q(e.root,`production`)}};function T(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 E=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`),r=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await n.t(t,e.config,r)],e.ssgRoutes=T(e.routes)}};const D=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 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,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`]=n.title),!c[`og:description`]&&n.description&&(c[`og:description`]=n.description);let l=D.safeParse(c);return l.success||(0,u.warn)(`[SEOValidate] Validation issues on route "${n.path}":`,l.error.message),n.title||(0,u.warn)(`[SEOValidate] Route "${n.path}" is missing a title.`),{...n,seo:c}}),e.ssgRoutes=T(e.routes)}},k=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);let o=r.t(t,e.config);for(let e of o)n.includes(e)||n.push(e);a.t(e.config,t,e.root,n),a.r(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}await(0,p.build)({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:s.default.resolve(e.root,`.boltdocs/build`)},e.viteConfig),e.outDir=e.viteConfig.build?.outDir||`dist`}};function j(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 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(`
|
|
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 N=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=s.default.resolve(e.root,e.outDir);t&&c.default.writeFileSync(s.default.join(n,`sitemap.xml`),t,`utf-8`);let r=M(e.config);c.default.writeFileSync(s.default.join(n,`robots.txt`),r,`utf-8`)}};function P(){return new F().addStep(new w).addStep(new E).addStep(new O).addStep(new k).addStep(new A).addStep(new N)}var F=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}}},I=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new b,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new F;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 y(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 y(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 L(e,t,n){e&&(0,m.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 R(e,t,n){L(e,o.o.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function z(e,t,n){let r=Array.isArray(t)?t:[t],i=[o.o.JSX_FLOW_ELEMENT,o.o.JSX_TEXT_ELEMENT];L(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function B(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function V(e,t){return e?.data?.hProperties?.[t]}function H(e,t){return typeof t==`object`&&t?{type:o.o.JSX_ATTRIBUTE,name:e,value:t}:{type:o.o.JSX_ATTRIBUTE,name:e,value:String(t)}}function U(e,t={},n=[]){return{type:o.o.ELEMENT,tagName:e,properties:t,children:n}}function W(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>H(e,t));return{type:r?o.o.JSX_FLOW_ELEMENT:o.o.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function G(e,t){e&&(0,m.visit)(e,o.o.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function K(e,t){e&&(0,m.visit)(e,o.o.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function q(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 J(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 Y(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 X(e){return e}async function Z(e){let{resolveConfig:t}=await Promise.resolve().then(()=>require(`./config-JGkMJoJQ.cjs`)),{generateRoutes:n,getExternalRoutePaths:r}=await Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),{generateProjectTypes:i,writeLinkTree:a}=await Promise.resolve().then(()=>require(`./types-generator-CYcHkDzZ.cjs`)).then(e=>e.n),{boltdocsPlugin:o}=await Promise.resolve().then(()=>require(`./plugin-N3zGyZXw.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 Q(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:c},{getCSPHeader:l},{resolveConfig:u},{generateRoutes:d,getExternalRoutePaths:f},{generateProjectTypes:p,writeLinkTree:m},{normalizePath:h}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),Promise.resolve().then(()=>require(`./plugin-N3zGyZXw.cjs`)),Promise.resolve().then(()=>require(`./headers-BXKxiPUv.cjs`)).then(e=>e.n),Promise.resolve().then(()=>require(`./csp-CBysWlAf.cjs`)).then(e=>e.t),Promise.resolve().then(()=>require(`./config-JGkMJoJQ.cjs`)),Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),Promise.resolve().then(()=>require(`./types-generator-CYcHkDzZ.cjs`)).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),g=r.default,_=i.default,v=n||await u(`docs`,e),y=(await d(`docs`,v)).map(e=>e.path),b=(v.base||`/docs`).replace(/\/$/,``);y.includes(b)||y.push(b);let x=f(`docs`,v);for(let e of x)y.includes(e)||y.push(e);p(v,`docs`,e,y),m(y);let S=t===`production`,C=S?{...c}:{};return v.security?.enableCSP&&(C[`Content-Security-Policy`]=l(v)),{root:e,mode:t,oxc:{jsx:{development:!S,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(),_(),...a({docsDir:`docs`,root:e},v)],resolve:{alias:[{find:`boltdocs/entry`,replacement:h(s.default.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:h(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:h(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`,...v.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{watch:{ignored:[`**/.boltdocs/**`,...Array.isArray(v.vite?.server?.watch?.ignored)?v.vite.server.watch.ignored:v.vite?.server?.watch?.ignored?[v.vite.server.watch.ignored]:[]]},headers:{...C,...v.vite?.server?.headers},...v.vite?.server},preview:{headers:{...C,...v.vite?.preview?.headers},...v.vite?.preview},...v.vite}}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return T}});
|
|
@@ -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-B3xYMrpK.mjs";import{t as n}from"./routes-CyrnmVuG.mjs";import{t as r}from"./pages-external-BYa4JSda.mjs";import{i,r as a}from"./config-D3_zDkHh.mjs";import{r as o,t as s}from"./types-generator-DVOnRVKU.mjs";import{o as c}from"./shiki-adapter-CXEGRnjr.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";function x(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 S=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},C=class extends S{constructor(e,t){super(e,`Validation failed: ${t}`)}},w=class extends S{constructor(e,t){super(e,`Compatibility error: ${t}`)}},T=class extends S{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},E=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 D=i.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 O(e,t){let n=[],r=new Set;for(let i of e){let e=D.safeParse(i);if(!e.success)throw new C(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 C(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!g.satisfies(t,a.boltdocsVersion))throw new w(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 C(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`);if(u.isAbsolute(t))throw new C(a.name,`Component '${e}' has an invalid path: absolute paths are not allowed.`)}n.push(a)}return n}function k(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{n=l(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 A=class{name=`ConfigResolve`;async execute(e){e.config=await a(`docs`,e.root),k(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`),r=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await n(t,e.config,r)],e.ssgRoutes=j(e.routes)}};const ee=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 N=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,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`]=n.title),!c[`og:description`]&&n.description&&(c[`og:description`]=n.description);let l=ee.safeParse(c);return l.success||h(`[SEOValidate] Validation issues on route "${n.path}":`,l.error.message),n.title||h(`[SEOValidate] Route "${n.path}" is missing a title.`),{...n,seo:c}}),e.ssgRoutes=j(e.routes)}},P=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),i=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(i)||n.push(i);let a=r(t,e.config);for(let e of a)n.includes(e)||n.push(e);s(e.config,t,e.root,n),o(n)}},F=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 I(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 L(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 R=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=I(e.ssgRoutes,e.config),n=u.resolve(e.root,e.outDir);t&&d.writeFileSync(u.join(n,`sitemap.xml`),t,`utf-8`);let r=L(e.config);d.writeFileSync(u.join(n,`robots.txt`),r,`utf-8`)}};function z(){return new B().addStep(new A).addStep(new M).addStep(new N).addStep(new P).addStep(new F).addStep(new R)}var B=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}}},V=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new E,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new B;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 T(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 T(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 H(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 U(e,t,n){H(e,c.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function W(e,t,n){let r=Array.isArray(t)?t:[t],i=[c.JSX_FLOW_ELEMENT,c.JSX_TEXT_ELEMENT];H(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function G(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function K(e,t){return e?.data?.hProperties?.[t]}function q(e,t){return typeof t==`object`&&t?{type:c.JSX_ATTRIBUTE,name:e,value:t}:{type:c.JSX_ATTRIBUTE,name:e,value:String(t)}}function J(e,t={},n=[]){return{type:c.ELEMENT,tagName:e,properties:t,children:n}}function Y(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>q(e,t));return{type:r?c.JSX_FLOW_ELEMENT:c.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function X(e,t){e&&b(e,c.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Z(e,t){e&&b(e,c.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Q(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 te(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 ne(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 re(e){return e}async function ie(e){let{resolveConfig:t}=await import(`./config-D3_zDkHh.mjs`).then(e=>e.n),{generateRoutes:n,getExternalRoutePaths:r}=await import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),{generateProjectTypes:i,writeLinkTree:a}=await import(`./types-generator-DVOnRVKU.mjs`).then(e=>e.n),{boltdocsPlugin:o}=await import(`./plugin-D9gURy-9.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){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:s},{getCSPHeader:c},{resolveConfig:l},{generateRoutes:d,getExternalRoutePaths:f},{generateProjectTypes:p,writeLinkTree:m},{normalizePath:h}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),import(`./plugin-D9gURy-9.mjs`),import(`./headers-CXyf0auY.mjs`).then(e=>e.n),import(`./csp-gaZ51xzq.mjs`).then(e=>e.t),import(`./config-D3_zDkHh.mjs`).then(e=>e.n),import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),import(`./types-generator-DVOnRVKU.mjs`).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),g=r.default,_=i.default,v=n||await l(`docs`,e),y=(await d(`docs`,v)).map(e=>e.path),b=(v.base||`/docs`).replace(/\/$/,``);y.includes(b)||y.push(b);let x=f(`docs`,v);for(let e of x)y.includes(e)||y.push(e);p(v,`docs`,e,y),m(y);let S=t===`production`,C=S?{...s}:{};return v.security?.enableCSP&&(C[`Content-Security-Policy`]=c(v)),{root:e,mode:t,oxc:{jsx:{development:!S,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(),_(),...a({docsDir:`docs`,root:e},v)],resolve:{alias:[{find:`boltdocs/entry`,replacement:h(u.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:h(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:h(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`,...v.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{watch:{ignored:[`**/.boltdocs/**`,...Array.isArray(v.vite?.server?.watch?.ignored)?v.vite.server.watch.ignored:v.vite?.server?.watch?.ignored?[v.vite.server.watch.ignored]:[]]},headers:{...C,...v.vite?.server?.headers},...v.vite?.server},preview:{headers:{...C,...v.vite?.preview?.headers},...v.vite?.preview},...v.vite}}export{O as C,T as D,S as E,C as O,k as S,w as T,X as _,y as a,z as b,Y as c,ne as d,te as f,U as g,H as h,v as i,x as k,J as l,W as m,$ as n,Q as o,G as p,re as r,q as s,ie as t,K as u,Z as v,E as w,j as x,V as y};
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
var e=`
|
|
6
|
+
var e=`3.0.0`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
|
|
@@ -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:path";import t from"node:fs";function n(n,r){let i=[`tsx`,`ts`,`jsx`,`js`],a=e.resolve(n,`pages-external`),o=i.map(t=>e.resolve(a,`index.${t}`)).find(e=>t.existsSync(e));if(!o)return[];let s=t.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}export{n as t};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
+
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
const e=require(`./chunk-Ds5LZdWN.cjs`);let t=require(`node:path`);t=e.n(t);let n=require(`node:fs`);n=e.n(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-Ds5LZdWN.cjs`),t=require(`./utils-Bz1tG9Dg.cjs`),n=require(`./errors-Dx6JHoKE.cjs`),r=require(`./cache-DETwlACe.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.v.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=null,w=()=>(C||=p(x,b.description),C),T=_(b),E=g(b),D=i.default.basename(S.relativePath),O=t.h(D),k=S.remainingParts.map(e=>t.h(e)).slice(0,-1),A=/^index\.mdx?$/.test(O),j=b.sidebarPosition??t.i(D),M=k.join(`/`),N={route:{path:S.finalPath,componentPath:e,filePath:S.relativePath,title:T.title||t.h(i.default.basename(u,i.default.extname(u))),get description(){return w().description},sidebarPosition:j,get headings(){return w().headings},locale:S.locale,version:S.version,badge:T.badge,icon:b.icon?String(b.icon):void 0,tab:S.inferredTab,subRouteGroup:S.subRouteGroup,slugParts:k,get _content(){return 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:E,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:M||void 0,isGroupIndex:A,inferredTab:S.inferredTab,inferredCollection:S.collection,groupMeta:A?{title:b.groupTitle||T.title||(k.length>0?t.t(k[k.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,N),N}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}async function b(e,a,s,c,l){let u=e.replace(/\\/g,`/`),d=s.replace(/\\/g,`/`),f=y(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:v}=t.g(`---
|
|
7
|
+
`+a.rawMatter+`
|
|
8
|
+
---`),b=o(p,m,c,l,v.permalink),x=_(v),S=g(v),C=i.default.basename(b.relativePath),w=t.h(C),T=b.remainingParts.map(e=>t.h(e)).slice(0,-1),E=/^index\.mdx?$/.test(w),D=v.sidebarPosition??t.i(C),O=T.join(`/`),k=v.description?t.p(String(v.description)).trim():a.description,A={route:{path:b.finalPath,componentPath:e,filePath:b.relativePath,title:x.title||t.h(i.default.basename(u,i.default.extname(u))),description:k,sidebarPosition:D,headings:a.headings,locale:b.locale,version:b.version,badge:x.badge,icon:v.icon?String(v.icon):void 0,tab:b.inferredTab,subRouteGroup:b.subRouteGroup,slugParts:T,_content:a.plainText,_rawContent:a.content,date:v.date,lastUpdated:v.lastUpdated,category:v.category,order:v.order,sidebarLabel:v.sidebarLabel,sidebarHidden:v.sidebarHidden||v.hidden,seo:S,frontmatter:v,collection:b.collection,tags:v.tags,author:v.author,draft:v.draft,excerpt:v.excerpt,coverImage:v.coverImage||v.cover},relativeDir:b.collection?void 0:O||void 0,isGroupIndex:E,inferredTab:b.inferredTab,inferredCollection:b.collection,groupMeta:E?{title:v.groupTitle||x.title||(T.length>0?t.t(T[T.length-1]):``),position:v.groupPosition??v.sidebarPosition??(b.remainingParts.length>1?t.i(b.remainingParts[b.remainingParts.length-2]):void 0),icon:v.icon?String(v.icon):void 0}:void 0,inferredGroupPosition:b.remainingParts.length>1?t.i(b.remainingParts[b.remainingParts.length-2]):void 0};return await r.t.set(e,A),A}exports.parseDocFile=v,exports.parseDocFileWithNative=b;
|
|
@@ -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-B3xYMrpK.mjs";import{n as u,t as d}from"./errors-C0Hx15Ag.mjs";import{t as f}from"./cache-SF59enb3.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}}async function D(e,n,a,o){let s=await f.get(e);if(s)return s;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!==`.`&&!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,D=()=>(w||=S(x,b.description),w),k=E(b),A=T(b),j=p.basename(C.relativePath),M=r(j),N=C.remainingParts.map(e=>r(e)).slice(0,-1),P=/^index\.mdx?$/.test(M),F=b.sidebarPosition??i(j),I=N.join(`/`),L={route:{path:C.finalPath,componentPath:e,filePath:C.relativePath,title:k.title||r(p.basename(d,p.extname(d))),get description(){return D().description},sidebarPosition:F,get headings(){return D().headings},locale:C.locale,version:C.version,badge:k.badge,icon:b.icon?String(b.icon):void 0,tab:C.inferredTab,subRouteGroup:C.subRouteGroup,slugParts:N,get _content(){return D().plainText},_rawContent:x,date:b.date,lastUpdated:b.lastUpdated,category:b.category,order:b.order,sidebarLabel:b.sidebarLabel,sidebarHidden:b.sidebarHidden||b.hidden,seo:A,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:I||void 0,isGroupIndex:P,inferredTab:C.inferredTab,inferredCollection:C.collection,groupMeta:P?{title:b.groupTitle||k.title||(N.length>0?c(N[N.length-1]):``),position:b.groupPosition??b.sidebarPosition??(C.remainingParts.length>1?i(C.remainingParts[C.remainingParts.length-2]):void 0),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,L),L}function O(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 k(e,t,a,o,d){let m=e.replace(/\\/g,`/`),g=a.replace(/\\/g,`/`),_=O(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),D=p.basename(S.relativePath),k=r(D),A=S.remainingParts.map(e=>r(e)).slice(0,-1),j=/^index\.mdx?$/.test(k),M=x.sidebarPosition??i(D),N=A.join(`/`),P=x.description?s(String(x.description)).trim():t.description,F={route:{path:S.finalPath,componentPath:e,filePath:S.relativePath,title:C.title||r(p.basename(m,p.extname(m))),description:P,sidebarPosition:M,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:A,_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:x.author,draft:x.draft,excerpt:x.excerpt,coverImage:x.coverImage||x.cover},relativeDir:S.collection?void 0:N||void 0,isGroupIndex:j,inferredTab:S.inferredTab,inferredCollection:S.collection,groupMeta:j?{title:x.groupTitle||C.title||(A.length>0?c(A[A.length-1]):``),position:x.groupPosition??x.sidebarPosition??(S.remainingParts.length>1?i(S.remainingParts[S.remainingParts.length-2]):void 0),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,F),F}export{D as parseDocFile,k as parseDocFileWithNative};
|