boltdocs 2.8.4 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/bin/boltdocs.js +7 -6
  2. package/dist/{banner-DFACg5Dy.d.cts → banner-C_xkGxzI.d.cts} +1 -1
  3. package/dist/{banner-BLTQUA2O.d.ts → banner-D2NddBfF.d.ts} +1 -1
  4. package/dist/cache-C2PiGyg8.cjs +6 -0
  5. package/dist/cache-DFW4R3S0.mjs +6 -0
  6. package/dist/chunk-Ds5LZdWN.cjs +6 -0
  7. package/dist/client/index.cjs +464 -279
  8. package/dist/client/index.d.cts +74 -8
  9. package/dist/client/index.d.ts +74 -8
  10. package/dist/client/index.js +463 -280
  11. package/dist/client/mdx.cjs +1 -1
  12. package/dist/client/mdx.js +1 -1
  13. package/dist/client/primitives.cjs +4 -4
  14. package/dist/client/primitives.d.cts +1 -1
  15. package/dist/client/primitives.d.ts +1 -1
  16. package/dist/client/primitives.js +4 -4
  17. package/dist/client/theme/neutral.css +5 -3
  18. package/dist/client/theme/reset.css +19 -0
  19. package/dist/{docs-layout-CVCf3xkZ.cjs → docs-layout-3TpAt6MB.cjs} +302 -238
  20. package/dist/{docs-layout-BBv6wILp.js → docs-layout-6FQ8__ok.js} +303 -239
  21. package/dist/doctor-BY1tSmQd.mjs +34 -0
  22. package/dist/{doctor-DT4jh07O.cjs → doctor-Bknon8f5.cjs} +1 -1
  23. package/dist/doctor-DcFLi4t1.cjs +34 -0
  24. package/dist/{doctor-BGPdO1Ah.mjs → doctor-wsPTzt8Y.mjs} +1 -1
  25. package/dist/{generator-CC2yHzhZ.cjs → generator-BEIF6MOx.cjs} +2 -2
  26. package/dist/{generator-BHCrLU6h.mjs → generator-DILs0EFN.mjs} +1 -1
  27. package/dist/handler-B31cxNw0.mjs +6 -0
  28. package/dist/handler-DfhH9D1b.mjs +28 -0
  29. package/dist/handler-Djy0HfsI.cjs +28 -0
  30. package/dist/{icons-dev-C8sFxeBk.cjs → icons-dev-BryEFkJu.cjs} +90 -4
  31. package/dist/{icons-dev-CFcv5Nb8.js → icons-dev-kJyGWNeg.js} +73 -5
  32. package/dist/{image-DCMxxidi.cjs → image-B9YA_oQ_.cjs} +17 -9
  33. package/dist/{image-DufDOid8.js → image-CjYu9Eml.js} +17 -9
  34. package/dist/{mdx-Bto8CvGl.js → mdx-Cy_c2zio.js} +116 -33
  35. package/dist/{mdx-BH9kHiF9.cjs → mdx-WXjAMS8Y.cjs} +121 -32
  36. package/dist/{meta-loader-Cv9O0Pzl.cjs → meta-loader-D0V6oOQt.cjs} +1 -1
  37. package/dist/node/cli-entry.cjs +3 -3
  38. package/dist/node/cli-entry.mjs +3 -3
  39. package/dist/node/index.cjs +1 -1
  40. package/dist/node/index.d.cts +368 -24
  41. package/dist/node/index.d.mts +369 -24
  42. package/dist/node/index.mjs +1 -1
  43. package/dist/node/routes/worker.cjs +1 -1
  44. package/dist/node/routes/worker.mjs +1 -1
  45. package/dist/node-DV-EPtMU.mjs +160 -0
  46. package/dist/node-vOVNRABe.cjs +160 -0
  47. package/dist/{package-DlgexgpQ.mjs → package-BK_82QLX.mjs} +1 -1
  48. package/dist/{package-CwNjt3Sd.cjs → package-OxKE0p6j.cjs} +1 -1
  49. package/dist/{parser-B7-6PyQz.cjs → parser-C2Pw18LY.cjs} +1 -1
  50. package/dist/{parser-BzB-zCkF.cjs → parser-DJoEF96Y.cjs} +1 -1
  51. package/dist/{parser-9LqyiEnB.mjs → parser-DScG_PTs.mjs} +1 -1
  52. package/dist/routes--LYHSHT7.cjs +6 -0
  53. package/dist/routes-BAsfsn_e.mjs +6 -0
  54. package/dist/routes-C6Kr2HFN.cjs +6 -0
  55. package/dist/routes-CKgGAy8P.mjs +6 -0
  56. package/dist/{search-dialog-Cvux-qSk.cjs → search-dialog-BhXg05Ri.cjs} +1 -1
  57. package/dist/{search-dialog-CmHYOt18.cjs → search-dialog-BsAiQgnx.cjs} +2 -2
  58. package/dist/{search-dialog-jHZ21G4i.js → search-dialog-CaOO1Q4i.js} +2 -2
  59. package/dist/{search-dialog-Cr7SC8Xt.cjs → search-dialog-CzwvKoLW.cjs} +1 -1
  60. package/dist/{search-dialog-DBNaG5At.js → search-dialog-DRNJsxOv.js} +1 -1
  61. package/dist/{search-dialog-e86WPpck.js → search-dialog-DaR66wl0.js} +1 -1
  62. package/dist/shiki-adapter-CUtj-xKv.cjs +6 -0
  63. package/dist/shiki-adapter-EZptJAmW.mjs +6 -0
  64. package/dist/shiki-adapter-F-P-lDon.mjs +6 -0
  65. package/dist/shiki-adapter-PQBl32AN.cjs +6 -0
  66. package/dist/{sidebar-kQBonN82.d.ts → sidebar-BtJyWHy4.d.cts} +42 -5
  67. package/dist/{sidebar---RgTmZD.d.cts → sidebar-C4fuRYYS.d.ts} +42 -5
  68. package/dist/{utils-BYITg7T5.mjs → utils-DC4Wq-S2.mjs} +1 -1
  69. package/dist/{utils-Cjmx1hhk.cjs → utils-wHud9ny5.cjs} +1 -1
  70. package/dist/worker-pool-BS1LX67P.cjs +6 -0
  71. package/dist/worker-pool-DRv8ef4z.mjs +6 -0
  72. package/package.json +6 -3
  73. package/src/shared/types.ts +36 -3
  74. package/dist/cache-BMUyNiiA.mjs +0 -6
  75. package/dist/cache-CKm45d2w.cjs +0 -6
  76. package/dist/chunk-CU-zTemE.cjs +0 -6
  77. package/dist/doctor-Dnv77Lfx.mjs +0 -28
  78. package/dist/doctor-VBPlQf7d.cjs +0 -28
  79. package/dist/node-JM9bx0mO.cjs +0 -160
  80. package/dist/node-q-Y2mdLX.mjs +0 -160
  81. package/dist/routes-3sAccArX.cjs +0 -6
  82. package/dist/routes-DZpXqq1p.mjs +0 -6
  83. package/dist/routes-DjoxNeef.mjs +0 -6
  84. package/dist/routes-DpJnb2VS.cjs +0 -6
  85. package/dist/worker-pool-DXLyeHJg.cjs +0 -6
  86. package/dist/worker-pool-Kn4F9gDq.mjs +0 -6
  87. /package/dist/{meta-loader-DzwDFtdT.mjs → meta-loader-By22EnYa.mjs} +0 -0
@@ -1,28 +0,0 @@
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-CU-zTemE.cjs`),t=require(`./utils-Cjmx1hhk.cjs`);let n=require(`vite`),r=require(`node:path`);r=e.t(r);let i=require(`fdir`),a=require(`node:fs`);a=e.t(a);let o=require(`zod`),s=require(`@bdocs/dui`);s=e.t(s);let c=require(`node:module`),l=require(`picomatch`);l=e.t(l);let u=require(`node:os`);u=e.t(u);let d=require(`node:url`),f=require(`fastest-levenshtein`);const p=o.z.object({icon:o.z.string().max(50),link:o.z.string().url()});o.z.object({text:o.z.string().max(2e3).optional()});const m=o.z.object({name:o.z.string(),enforce:o.z.enum([`pre`,`post`]).optional(),version:o.z.string().optional(),boltdocsVersion:o.z.string().optional(),remarkPlugins:o.z.array(o.z.unknown()).optional(),rehypePlugins:o.z.array(o.z.unknown()).optional(),vitePlugins:o.z.array(o.z.unknown()).optional(),components:o.z.record(o.z.string(),o.z.string()).optional(),hooks:o.z.record(o.z.string(),o.z.unknown()).optional()}),h=o.z.object({title:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]).optional(),description:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]).optional(),logo:o.z.union([o.z.string(),o.z.object({dark:o.z.string(),light:o.z.string(),alt:o.z.string().optional(),width:o.z.number().optional(),height:o.z.number().optional()})]).optional(),navbar:o.z.array(o.z.object({label:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]),href:o.z.string(),items:o.z.array(o.z.object({label:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]),href:o.z.string()})).optional()})).optional(),sidebar:o.z.record(o.z.string(),o.z.array(o.z.object({text:o.z.string(),link:o.z.string()}))).optional(),sidebarGroups:o.z.record(o.z.string(),o.z.object({title:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]).optional(),icon:o.z.string().optional()})).optional(),socialLinks:o.z.array(p).optional(),editLink:o.z.string().refine(e=>!e||e.includes(`:path`),{message:`editLink must contain ':path' placeholder if specified`}).optional(),communityHelp:o.z.string().url().optional(),version:o.z.string().max(50).optional(),githubRepo:o.z.string().max(100).optional(),favicon:o.z.string().optional(),tabs:o.z.array(o.z.object({id:o.z.string(),text:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]),icon:o.z.string().optional()})).optional(),codeTheme:o.z.union([o.z.string(),o.z.object({light:o.z.string(),dark:o.z.string()})]).optional()}),g=o.z.union([o.z.string(),o.z.object({rules:o.z.array(o.z.object({userAgent:o.z.string(),allow:o.z.union([o.z.string(),o.z.array(o.z.string())]).optional(),disallow:o.z.union([o.z.string(),o.z.array(o.z.string())]).optional()})).optional(),sitemaps:o.z.array(o.z.string().url()).optional()})]),_=o.z.object({defaultLocale:o.z.string(),locales:o.z.union([o.z.record(o.z.string(),o.z.string()),o.z.array(o.z.string())]).transform(e=>Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e),localeConfigs:o.z.record(o.z.string(),o.z.object({label:o.z.string().optional(),direction:o.z.enum([`ltr`,`rtl`]).optional(),htmlLang:o.z.string().optional(),calendar:o.z.string().optional()})).optional()}),v=o.z.object({defaultVersion:o.z.string(),prefix:o.z.string().optional(),versions:o.z.array(o.z.object({label:o.z.string(),path:o.z.string()}))}),y=o.z.object({headers:o.z.record(o.z.string(),o.z.string()).optional(),enableCSP:o.z.boolean().optional(),customHeaders:o.z.record(o.z.string(),o.z.string()).optional()}),b=o.z.object({metatags:o.z.record(o.z.string(),o.z.string()).optional(),indexing:o.z.enum([`all`,`public`]).optional(),thumbnails:o.z.object({background:o.z.string().optional()}).optional()}),x=o.z.object({measurementId:o.z.string().min(1,`Measurement ID is required for GA4`),debug:o.z.boolean().optional(),anonymizeIp:o.z.boolean().optional(),sendPageView:o.z.boolean().optional(),cookieFlags:o.z.string().optional(),autoTrack:o.z.object({pageViews:o.z.boolean().optional(),downloads:o.z.boolean().optional(),externalLinks:o.z.boolean().optional(),search:o.z.boolean().optional()}).optional()}),S=o.z.object({tagId:o.z.string().min(1,`Tag ID is required for GTM`),dataLayerName:o.z.string().optional(),preview:o.z.string().optional()}),C=o.z.object({appId:o.z.string().min(1,`Algolia App ID is required`),apiKey:o.z.string().min(1,`Algolia API Key is required`),indexName:o.z.string().min(1,`Algolia Index Name is required`)}),w=o.z.object({ga4:x.optional(),gtm:S.optional(),algolia:C.optional()}),T=o.z.object({siteUrl:o.z.string().url().optional(),docsDir:o.z.string().optional(),base:o.z.string().optional(),theme:h.optional(),i18n:_.optional(),versions:v.optional(),plugins:o.z.array(m).optional(),robots:g.optional(),security:y.optional(),seo:b.optional(),integrations:w.optional(),vite:o.z.record(o.z.string(),o.z.unknown()).optional()});function E(e,t,n=process.cwd(),i){let o=r.default.resolve(n,`.boltdocs`,`generated`);a.default.existsSync(o)||a.default.mkdirSync(o,{recursive:!0});let s=e.i18n?Object.keys(e.i18n.locales):[],c=e.versions?e.versions.versions.map(e=>e.path):[],l=s.length>0?s.map(e=>`'${e}'`).join(` | `):`string`,u=c.length>0?c.map(e=>`'${e}'`).join(` | `):`string`,d=[`tsx`,`ts`,`jsx`,`js`],f=``,p=``;for(let e of d){let i=r.default.resolve(n,t,`mdx-components.${e}`);if(a.default.existsSync(i)){let e=r.default.join(n,t,`mdx-components`),i=r.default.relative(o,e).replace(/\\/g,`/`);f=`import type * as MdxComponentsModule from '${i.startsWith(`.`)?i:`./${i}`}'\n`,p=` MdxComponents: typeof MdxComponentsModule`;break}}let m=i&&i.length>0?`\ndeclare global {
7
- namespace Boltdocs {
8
- interface RoutePaths {
9
- ${i.map(e=>` '${e}': void`).join(`
10
- `)}
11
- }
12
- }
13
- }`:``,h=`// This file is automatically generated by Boltdocs.
14
- // Do not edit this file manually.
15
-
16
- ${f}declare global {
17
- namespace Boltdocs {
18
- interface Types {
19
- Locale: ${l}
20
- Version: ${u}${p?`\n${p}`:``}
21
- }
22
- }
23
- }${m}
24
-
25
- export {}
26
- `;a.default.writeFileSync(r.default.resolve(o,`types.d.ts`),h)}function D(e,t=process.cwd()){let n=r.default.resolve(t,`.boltdocs`,`generated`);a.default.existsSync(n)||a.default.mkdirSync(n,{recursive:!0});let i={routes:Array.from(new Set(e)).sort(),timestamp:Date.now()};a.default.writeFileSync(r.default.resolve(n,`link-tree.json`),JSON.stringify(i,null,2))}function O(e){return e}const k=[`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.ts`];async function A(e,i=process.cwd()){let o=i,c={docsDir:r.default.resolve(e),theme:{title:`Boltdocs`,description:`A Vite documentation framework`,navbar:[{label:`Home`,href:`/`},{label:`Documentation`,href:`/docs`}],codeTheme:{light:`github-light`,dark:`github-dark`}}},l={};for(let e of k){let t=r.default.resolve(o,e);if(a.default.existsSync(t))try{let e=await(0,n.loadConfigFromFile)({command:`serve`,mode:`development`},t,o);if(e){l=e.config;break}}catch(t){(0,s.warn)(`Failed to load config from ${e}:`,t)}}let u={title:l.title,description:l.description,logo:l.logo,favicon:l.favicon,navbar:l.navbar,sidebar:l.sidebar,sidebarGroups:l.theme?.sidebarGroups,socialLinks:l.socialLinks,githubRepo:l.githubRepo,tabs:l.tabs,codeTheme:l.codeTheme,communityHelp:l.communityHelp,version:l.version,editLink:l.editLink,...l.theme||{}},d=Object.fromEntries(Object.entries(u).filter(([e,t])=>t!==void 0));d.navbar&&=d.navbar.map(e=>({label:e.label||e.text||``,href:e.href||e.link||e.to||``,items:e.items}));let f={docsDir:r.default.resolve(e),theme:{...c.theme,...d},i18n:l.i18n?{...l.i18n,locales:Array.isArray(l.i18n.locales)?Object.fromEntries(l.i18n.locales.map(e=>[e,e])):l.i18n.locales}:void 0,versions:l.versions,siteUrl:l.siteUrl,base:l.base,seo:l.seo,plugins:l.plugins||[],robots:l.robots,security:l.security,integrations:l.integrations,vite:l.vite},p=T.safeParse(f);if(!p.success)throw new t.v(`Invalid Boltdocs configuration:\n${p.error.issues.map(e=>` - ${e.path.join(`.`)}: ${e.message}`).join(`
27
- `)}`);return p.data}const j=(0,c.createRequire)(require(`url`).pathToFileURL(__filename).href);function M(e,t){let n=e.split(`-`)[0].split(`.`).map(Number),r=t.split(`-`)[0].split(`.`).map(Number);for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e]??0,i=r[e]??0;if(Number.isNaN(t)||Number.isNaN(i))return!1;if(t!==i)return t>i}return!1}async function ee(){try{let e=new AbortController,t=setTimeout(()=>e.abort(),2e3),n=await fetch(`https://registry.npmjs.org/boltdocs/latest`,{signal:e.signal,headers:{Accept:`application/vnd.npm.install-v1+json`}});return clearTimeout(t),n.ok?(await n.json()).version??null:null}catch{return null}}async function N(){try{let e=(0,d.fileURLToPath)(require(`url`).pathToFileURL(__filename).href),t=r.default.dirname(e);for(let e=0;e<5;e++){let e=r.default.join(t,`package.json`);if(a.default.existsSync(e)){let t=JSON.parse(a.default.readFileSync(e,`utf-8`));if(t.name===`boltdocs`)return t.version}t=r.default.dirname(t)}}catch{}try{return j(`boltdocs/package.json`).version}catch{return`0.0.0`}}async function P(){let e=``;try{e=r.default.join(u.default.homedir(),`.boltdocs`,`update-check.json`)}catch{return}let t=0;try{if(a.default.existsSync(e)){let n=JSON.parse(a.default.readFileSync(e,`utf-8`));t=Number(n.lastCheck)||0}}catch{}let n=Date.now();if(n-t<864e5)return;try{a.default.mkdirSync(r.default.dirname(e),{recursive:!0}),a.default.writeFileSync(e,JSON.stringify({lastCheck:n}),`utf-8`)}catch{}let i=await N();if(i===`0.0.0`)return;let o=await ee();o&&M(o,i)&&console.log(s.updateAvailable(i,o))}const F={$schema:`https://boltdocs.vercel.app/schemas/doctor-config.schema.json`,checks:{metadata:{enabled:!0,titleMin:10,titleMax:60,descriptionMin:50,required:[`title`,`description`],optional:[],validateDates:!1},links:{internal:!0,external:!1,timeout:1e4,concurrency:10,ignore:[]},i18n:{enabled:!0},performance:{enabled:!0,budgets:{maxJSBundleSize:`200kb`,maxCSSBundleSize:`30kb`,maxPageHTMLSize:`80kb`,maxImagesKB:500,maxBuildTime:3e4,maxFontCount:3}}},fix:{confirmChanges:!1,backupFiles:!1,backupPath:`.boltdocs/backups`},reporting:{format:`pretty`,outputFile:`.boltdocs/reports/doctor.json`,failOnError:!1,maxWarnings:-1},severity:{missingTranslation:`warning`,brokenLink:`high`,brokenAnchor:`warning`,largeFile:`warning`,orphanedPage:`low`,duplicateTitle:`low`,shortMetadata:`low`,missingMetadata:`warning`,malformedFrontmatter:`high`,invalidFrontmatter:`high`,budgetExceeded:`warning`},exclude:[]};function I(e,t){if(e==null)return t;if(typeof e==`number`)return e;let n=e.toLowerCase().match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/);if(!n)return t;let r=Number.parseFloat(n[1]),i=n[2]||`b`;return Math.round(r*({b:1,kb:1024,mb:1024*1024,gb:1024*1024*1024}[i]||1))}function L(e,t,n){return e.doctorConfig.severity[t]||n}async function R(e,t){a.default.existsSync(t)||a.default.mkdirSync(t,{recursive:!0});let n=r.default.basename(e),i=new Date().toISOString().replace(/[:.]/g,`-`),o=r.default.join(t,`${n}.${i}.bak`);a.default.copyFileSync(e,o)}const z=new Map;function B(e){let n=z.get(e);if(n)return n;let r=(async()=>{let n=await t.d(e,!1);return{raw:n.raw,data:n.data,content:n.content}})();return z.set(e,r),r}const V=new Map;function H(e){if(V.has(e))return V.get(e);let t=!1;try{t=a.default.existsSync(e)&&a.default.statSync(e).isFile()}catch{t=!1}return V.set(e,t),t}async function U(e){let t=r.default.resolve(e,`doctor.json`);if(a.default.existsSync(t))try{let e=JSON.parse(a.default.readFileSync(t,`utf-8`));return{...F,...e,checks:{...F.checks,...e.checks,metadata:{...F.checks.metadata,...e.checks?.metadata},links:{...F.checks.links,...e.checks?.links},i18n:{...F.checks.i18n,...e.checks?.i18n},performance:{...F.checks.performance,...e.checks?.performance,budgets:{...F.checks.performance?.budgets,...e.checks?.performance?.budgets}}},fix:{...F.fix,...e.fix},reporting:{...F.reporting,...e.reporting},severity:{...F.severity,...e.severity},exclude:[...F.exclude,...e.exclude||[]]}}catch(e){(0,s.warn)(`Failed to parse doctor.json: ${e}`)}return F}async function W(e,n=process.cwd(),o,s){let c=r.default.resolve(n,`.boltdocs`,`generated`);a.default.existsSync(c)||a.default.mkdirSync(c,{recursive:!0});let l=s;l||=await new i.fdir().withFullPaths().filter(e=>e.endsWith(`.md`)||e.endsWith(`.mdx`)).crawl(e).withPromise();let u=o?.base||`/docs`,d=[];for(let n=0;n<l.length;n+=100){let i=l.slice(n,n+100),a=await Promise.all(i.map(async n=>{let i=r.default.isAbsolute(n)?n:r.default.resolve(e,n),a=r.default.relative(e,i),{data:o}=await B(i),s;return s=o.permalink?o.permalink.startsWith(`/`)?o.permalink:`/${o.permalink}`:t.a(a),u===`/`?s:(u.endsWith(`/`)?u:u+`/`)+(s.startsWith(`/`)?s.substring(1):s)}));d.push(...a)}d.includes(u)||d.push(u);let f={routes:Array.from(new Set(d)).sort(),timestamp:Date.now()};return a.default.writeFileSync(r.default.resolve(c,`link-tree.json`),JSON.stringify(f,null,2)),f}function G(e,t){if(e===t)return 1;if(!e||!t)return 0;let n=e.split(`/`).filter(Boolean),r=t.split(`/`).filter(Boolean),i=n[n.length-1]||``,a=r[r.length-1]||``;if(i===a){let e=0;for(let t of n)r.includes(t)&&e++;return e>=2?.99:.9}if(i.length>3&&a.length>3&&(a.startsWith(i)||i.startsWith(a))&&Math.min(i.length,a.length)/Math.max(i.length,a.length)>.5)return .88;let o=1-(0,f.distance)(i,a)/Math.max(i.length,a.length);return o>.8?o*.95:1-(0,f.distance)(e,t)/Math.max(e.length,t.length)}const K=new Map;function q(e,t){if(K.has(e))return K.get(e);let n=e.length,r=``,i=0;for(let a of t){if(a===e)continue;let t=a.length,o=Math.max(n,t);if(o===0)continue;let s=1-Math.abs(n-t)/o;if(s<=.8&&s<=i)continue;let c=G(e,a);c>i&&(i=c,r=a)}let a={bestMatch:r,similarity:i};return K.set(e,a),a}async function J(e){let n=[];if(!e.doctorConfig.checks.metadata.enabled)return n;let{titleMin:i,titleMax:a,descriptionMin:o}=e.doctorConfig.checks.metadata,s=new Map;for(let c of e.files){let l=t.u(r.default.relative(e.docsDir,c));try{let{raw:r,data:u}=await B(c);if(r.trim().startsWith(`---`)&&r.split(`---`).length>=3&&Object.keys(u).length===0){let t=L(e,`malformedFrontmatter`,`high`);t!==`off`&&n.push({file:l,level:t,message:`Malformed frontmatter (YAML parsing failed).`,suggestion:`Check your YAML syntax for indentation or unquoted special characters.`})}let d=t.y.safeParse(u);if(!d.success){let t=L(e,`invalidFrontmatter`,`high`);if(t!==`off`)for(let e of d.error.issues)n.push({file:l,level:t,message:`Invalid frontmatter field "${e.path.join(`.`)}": ${e.message}`,suggestion:`Ensure the field follows the correct type.`})}let f=Array.from(new Set([`title`,...e.doctorConfig.checks.metadata.required]));for(let t of f)if(u[t]===void 0){let r=L(e,`missingMetadata`,`warning`);r!==`off`&&n.push({file:l,level:r,message:`Missing required frontmatter field: "${t}".`,suggestion:`Add the "${t}" field to your frontmatter.`})}if(e.doctorConfig.checks.metadata.validateDates){let t=[`date`,`lastUpdated`,...e.doctorConfig.checks.metadata.optional.filter(e=>e.toLowerCase().includes(`date`))];for(let r of t)if(u[r]&&Number.isNaN(Date.parse(String(u[r])))){let t=L(e,`invalidFrontmatter`,`high`);t!==`off`&&n.push({file:l,level:t,message:`Invalid date format in field "${r}": "${u[r]}".`,suggestion:`Use a valid ISO date format (e.g., YYYY-MM-DD).`})}}if(u.title){let t=String(u.title);if(t.length<i){let r=L(e,`shortMetadata`,`low`);r!==`off`&&n.push({file:l,level:r,message:`Title is too short (${t.length} chars).`,suggestion:`Titles should be at least ${i} characters for better SEO.`})}else if(t.length>a){let r=L(e,`shortMetadata`,`low`);r!==`off`&&n.push({file:l,level:r,message:`Title is too long (${t.length} chars).`,suggestion:`Titles should be under ${a} characters.`})}let r=s.get(t)||[];r.push(l),s.set(t,r)}if(u.description&&String(u.description).length<o){let t=L(e,`shortMetadata`,`low`);t!==`off`&&n.push({file:l,level:t,message:`Description is very short.`,suggestion:`Descriptions should ideally be at least ${o} characters.`})}}catch(t){if(t instanceof Error){let r=L(e,`malformedFrontmatter`,`high`);r!==`off`&&n.push({file:l,level:r,message:`Malformed frontmatter (YAML error): ${t.message}`,suggestion:`Check your YAML syntax for indentation or unquoted special characters.`})}}}for(let[t,r]of s.entries())if(r.length>1){let i=L(e,`duplicateTitle`,`low`);if(i!==`off`)for(let e of r)n.push({file:e,level:i,message:`Duplicate title found: "${t}"`,suggestion:`Ensure each page has a unique title. Also used in: ${r.filter(t=>t!==e).join(`, `)}`})}return n}async function Y(e){let n=[],{internal:i,external:o,ignore:c,timeout:l,concurrency:u}=e.doctorConfig.checks.links;if(!i&&!o&&!e.options.checkExternal)return n;let d=/(?:\[.*?\]\((.*?)\))|(?:href=["']([^"']+)["'])/g,f=new Set,p=5e5;for(let s of e.files){let l=t.u(r.default.relative(e.docsDir,s)),{content:u}=await B(s),m=[...(u.length>p?u.slice(0,p):u).replace(/```[\s\S]*?```/g,``).replace(/`[^`\n]*`/g,``).matchAll(d)];for(let t of m){let u=t[1]||t[2],d=!!t[1];if(!u||c.some(e=>u.includes(e)))continue;if(/^https?:\/\//i.test(u)){(o||e.options.checkExternal)&&f.add({url:u,file:s});continue}if(!i||/^(mailto|tel|#)/i.test(u))continue;let p;try{p=decodeURIComponent(u.split(`#`)[0].split(`?`)[0])}catch{p=u.split(`#`)[0].split(`?`)[0]}if(!p)continue;let m=!1,h=``;if(p.startsWith(`/`))if(e.routeIndex.has(p)||e.routeIndexWithSlash.has(p)||e.routeIndexWithoutSlash.has(p))m=!0;else{let t=e.basePrefix+(p.startsWith(`/`)?p:`/`+p);if(e.routeIndex.has(t)||e.routeIndexWithSlash.has(t))m=!1,h=t;else{let t=e.config.base!==`/`&&p.startsWith(e.config.base||`/`)?p.substring((e.config.base||`/`).length):p,n=t.startsWith(`/`)?t.substring(1):t;h=r.default.join(e.docsDir,n),m=[``,`.md`,`.mdx`,`/index.md`,`/index.mdx`].some(e=>H(h+e))}}else h=r.default.resolve(r.default.dirname(s),p),m=[``,`.md`,`.mdx`,`/index.md`,`/index.mdx`].some(e=>H(h+e));if(!m){let{bestMatch:t,similarity:r}=q(p,e.linkTree.routes),i=!1,o=e.basePrefix+(p.startsWith(`/`)?p:`/`+p);(e.routeIndex.has(o)||e.routeIndexWithSlash.has(o))&&(t=o,r=1,i=!0);let c=r>.6||i,f=r>.75&&t!==p||i,m=L(e,`brokenLink`,`high`);m!==`off`&&n.push({file:l,level:m,message:`Broken internal link: "${u}"`,suggestion:c?`Did you mean "${t}"?`:`Ensure the target exists or check for typos.`,fix:f?async()=>{let e=u.includes(`#`)?`#`+u.split(`#`)[1]:``,n=d?`(${u})`:`href="${u}"`,r=d?`(${t}${e})`:`href="${t}${e}"`,i=a.default.readFileSync(s,`utf-8`).replace(n,r);a.default.writeFileSync(s,i),z.delete(s)}:void 0})}}}if(f.size>0){(0,s.info)(s.colors.gray(`Verifying ${f.size} external links...`));let i=new Map;for(let e of f)i.has(e.url)||i.set(e.url,[]),i.get(e.url).push(e.file);let a=async e=>{try{let t=new AbortController,n=setTimeout(()=>t.abort(),l),r=await fetch(e,{method:`HEAD`,signal:t.signal,headers:{"User-Agent":`boltdocs-doctor/1.0`}});return clearTimeout(n),!r.ok&&r.status!==404?{url:e,ok:(await fetch(e,{method:`GET`,signal:t.signal,headers:{"User-Agent":`boltdocs-doctor/1.0`}})).ok}:{url:e,ok:r.ok}}catch(t){return{url:e,ok:!1,error:t.message}}},o=Array.from(i.keys()),c=[];for(let e=0;e<o.length;e+=u){let t=o.slice(e,e+u),n=await Promise.allSettled(t.map(a));c.push(...n.map(e=>e.status===`fulfilled`?e.value:{url:`unknown`,ok:!1,error:e.reason}))}for(let a of c)if(!a.ok){let o=L(e,`brokenLink`,`warning`);if(o!==`off`){let s=i.get(a.url)||[];for(let i of s)n.push({file:t.u(r.default.relative(e.docsDir,i)),level:o,message:`Broken external link: "${a.url}"`,suggestion:`Verify the URL or update it if it's permanently down. Error: ${a.error||`Status >= 400`}`})}}}return n}async function X(e){let n=[];if(!e.doctorConfig.checks.i18n.enabled||!e.config.i18n)return n;let{defaultLocale:i,locales:o}=e.config.i18n,s=Object.keys(o),c=s.filter(e=>e!==i);for(let o of e.files){let l=t.u(r.default.relative(e.docsDir,o)),u=l.split(`/`),d=u[0];if(d===i){let t=u.slice(1).join(`/`);for(let i of c){let s=r.default.join(e.docsDir,i,t);if(!H(s)){let c=L(e,`missingTranslation`,`warning`);c!==`off`&&n.push({file:l,level:c,message:`Missing translation for locale "${i}"`,suggestion:`Create a version at "${i}/${t}".`,fix:async()=>{let e=r.default.dirname(s);a.default.existsSync(e)||a.default.mkdirSync(e,{recursive:!0}),a.default.copyFileSync(o,s)}})}}}else if(s.includes(d)){let t=u.slice(1).join(`/`);if(!H(r.default.join(e.docsDir,i,t))){let r=L(e,`missingTranslation`,`low`);r!==`off`&&n.push({file:l,level:r,message:`Orphaned translation (source missing in "${i}")`,suggestion:`Remove this file or create the source at "${i}/${t}".`,fix:async()=>{a.default.unlinkSync(o)}})}}}return n}async function Z(e){let t=[];if(!e.config.theme.sidebar)return t;let n=new Set,r=e.config.theme.sidebar;for(let[i,a]of Object.entries(r))for(let r of a){if(!r.text){let n=L(e,`invalidFrontmatter`,`warning`);n!==`off`&&t.push({file:`boltdocs.config.ts`,level:n,message:`Sidebar item in group "${i}" is missing a label.`,suggestion:`Add a "text" property to the sidebar item.`})}if(r.link&&(n.add(r.link),!e.routeIndex.has(r.link))){let{bestMatch:n,similarity:i}=q(r.link,e.linkTree.routes),a=i>.6,o=L(e,`brokenLink`,`high`);o!==`off`&&t.push({file:`boltdocs.config.ts`,level:o,message:`Broken sidebar link: "${r.link}"`,suggestion:a?`Did you mean "${n}"?`:`Ensure the route exists and is correctly formatted.`})}}for(let r of e.linkTree.routes)if(!(r===`/`||r===``)&&!n.has(r)){let n=L(e,`orphanedPage`,`low`);n!==`off`&&t.push({file:`Sidebar`,level:n,message:`Orphaned page found: "${r}" is not linked in the sidebar.`,suggestion:`Consider adding it to the sidebar for better discoverability.`})}return t}async function Q(e){let t=[],n=e.doctorConfig.checks.performance;if(!n?.enabled)return t;let i=r.default.resolve(e.root,`.boltdocs`,`reports`,`performance.json`);if(!a.default.existsSync(i))return t.push({file:`(build)`,level:L(e,`budgetExceeded`,`warning`),message:"Performance metrics not found. Run `boltdocs build` first."}),t;let o;try{o=JSON.parse(a.default.readFileSync(i,`utf-8`))}catch{return t.push({file:`(build)`,level:L(e,`budgetExceeded`,`warning`),message:`Failed to parse performance metrics file.`}),t}let s=n.budgets,c=L(e,`budgetExceeded`,`warning`),l=I(s?.maxJSBundleSize,1/0),u=I(s?.maxCSSBundleSize,1/0),d=I(s?.maxPageHTMLSize,1/0),f=s?.maxImagesKB??1/0,p=s?.maxBuildTime??1/0,m=s?.maxFontCount??1/0;if(l!==1/0&&o.totalJSBundleSize>l){let e=(o.totalJSBundleSize/1024).toFixed(0),n=(l/1024).toFixed(0);t.push({file:`(build)`,level:c,message:`JS bundle size exceeds budget: ${e}kb > ${n}kb`,suggestion:`Code-split large dependencies or lazy-load route components.`})}if(u!==1/0&&o.totalCSSBundleSize>u){let e=(o.totalCSSBundleSize/1024).toFixed(0),n=(u/1024).toFixed(0);t.push({file:`(build)`,level:c,message:`CSS bundle size exceeds budget: ${e}kb > ${n}kb`,suggestion:`Remove unused styles or split CSS by route.`})}if(d!==1/0){for(let e of o.pages)if(e.htmlSize>d){let n=(e.htmlSize/1024).toFixed(0),r=(d/1024).toFixed(0);t.push({file:e.route,level:c,message:`Page HTML size exceeds budget: ${n}kb > ${r}kb`,suggestion:`Reduce the amount of inline content or split into sub-pages.`})}}let h=f*1024;if(f!==1/0&&o.totalImagesSize>h){let e=(o.totalImagesSize/1024).toFixed(0);t.push({file:`(build)`,level:c,message:`Image assets exceed budget: ${e}kb > ${f}kb`,suggestion:`Optimize images with lossy compression or use next-gen formats (webp/avif).`})}if(p!==1/0&&o.buildTime>p){let e=(o.buildTime/1e3).toFixed(1),n=(p/1e3).toFixed(1);t.push({file:`(build)`,level:c,message:`Build time exceeds budget: ${e}s > ${n}s`,suggestion:"Check for large unoptimized assets or increase `concurrency` in SSG options."})}return m!==1/0&&o.fontCount>m&&t.push({file:`(build)`,level:c,message:`Font files exceed budget: ${o.fontCount} > ${m}`,suggestion:`Reduce the number of font families or use variable fonts.`}),t}async function $(e){let t=r.default.resolve(e,`doctor.json`);if(a.default.existsSync(t)){(0,s.warn)(`"doctor.json" already exists at ${e}.`);return}try{a.default.writeFileSync(t,JSON.stringify(F,null,2)),(0,s.success)(`Created "doctor.json" with default configuration.`)}catch(e){(0,s.error)(`Failed to create "doctor.json": ${e}`)}}async function te(e=process.cwd(),t={}){if(t.init){await $(e);return}P();try{let n=await U(e),{format:o}=n.reporting,c=performance.now(),u=await A(`docs`,e),d=r.default.resolve(e,`docs`);a.default.existsSync(d)||(o===`pretty`&&(0,s.error)(`Docs dir not found at ${d}`),process.exit(1)),o===`pretty`&&console.log((0,s.double)(`✦ DOCTOR — Documentation Health Check`,[` ${s.colors.dim(`Docs dir:`)} ${d}`,` ${s.colors.dim(`Reports:`)} ${e}/.boltdocs/reports/`])),o===`pretty`&&(0,s.info)(s.colors.dim(`🔍 Discovering files and routes...`));let f=(0,l.default)(n.exclude||[]),p=await new i.fdir().withFullPaths().filter(e=>{if(!(e.endsWith(`.md`)||e.endsWith(`.mdx`)))return!1;let t=r.default.relative(d,e).replace(/\\/g,`/`),n=t.split(`/`).some(e=>e.startsWith(`_`)&&e!==`_index.md`&&e!==`_index.mdx`);return!f(t)&&!n}).crawl(d).withPromise();for(let e of p)V.set(e,!0);let m=await W(d,e,u,p),h=u.base||`/`,g=h===`/`?``:h.endsWith(`/`)?h.slice(0,-1):h,_={root:e,docsDir:d,config:u,doctorConfig:n,linkTree:m,files:p,options:t,routeIndex:new Set(m.routes),routeIndexWithSlash:new Set(m.routes.map(e=>e.endsWith(`/`)?e:e+`/`)),routeIndexWithoutSlash:new Set(m.routes.map(e=>e.endsWith(`/`)?e.slice(0,-1):e)),basePrefix:g};o===`pretty`&&(0,s.info)(s.colors.dim(`🧪 Running diagnostic checks in parallel...`));let v=[J(_),Y(_),X(_),Z(_)];t.budget&&v.push(Q(_));let[y,b,x,S,...C]=await Promise.all(v),w=t.budget?C[0]:[],T=[...y,...b,...x,...S,...w];if(o===`pretty`){let e=[{label:`Metadata checks ${y.length>0?`— ${y.length} issue${y.length===1?``:`s`}`:`— OK`}`,done:y.length===0},{label:`Link checks ${b.length>0?`— ${b.length} issue${b.length===1?``:`s`}`:`— OK`}`,done:b.length===0},{label:`i18n checks ${x.length>0?`— ${x.length} issue${x.length===1?``:`s`}`:`— OK`}`,done:x.length===0},{label:`Sidebar checks ${S.length>0?`— ${S.length} issue${S.length===1?``:`s`}`:`— OK`}`,done:S.length===0}];t.budget&&e.push({label:`Performance budget ${w.length>0?`— ${w.length} issue${w.length===1?``:`s`}`:`— OK`}`,done:w.length===0}),console.log(`\n${(0,s.tasks)(e)}`)}let E=0;if(t.fix){for(let e of T)if(e.fix){if(_.doctorConfig.fix.confirmChanges&&!await(0,s.confirm)(`Fix issue in "${e.file}": ${e.message}?`))continue;if(_.doctorConfig.fix.backupFiles){let t=r.default.resolve(_.docsDir,e.file);a.default.existsSync(t)&&await R(t,r.default.resolve(_.root,_.doctorConfig.fix.backupPath))}await e.fix(),E++}}let D=((performance.now()-c)/1e3).toFixed(2),O=T.filter(e=>e.level===`high`).length,k=T.filter(e=>e.level===`warning`).length,j=T.filter(e=>e.level===`low`).length,M={summary:{total:T.length,high:O,warning:k,low:j,fixed:E,duration:D},issues:T.map(e=>({...e,fix:void 0}))};if(n.reporting.outputFile){let t=r.default.resolve(e,n.reporting.outputFile);a.default.existsSync(r.default.dirname(t))||a.default.mkdirSync(r.default.dirname(t),{recursive:!0}),a.default.writeFileSync(t,JSON.stringify(M,null,2))}if(o===`json`)console.log(JSON.stringify(M,null,2));else if(o===`pretty`){let e=T.reduce((e,t)=>(e[t.file]||(e[t.file]=[]),e[t.file].push(t),e),{});if(T.length>0){(0,s.dividerLog)();for(let[n,r]of Object.entries(e)){let e=[];for(let n of r){let r=n.level===`high`?`❌`:n.level===`warning`?`⚠️`:`ℹ️`,i=n.level===`high`?s.colors.red:n.level===`warning`?s.colors.yellow:s.colors.blue;e.push(`${r} ${i(n.level.toUpperCase())}: ${n.message}`),n.suggestion&&e.push(` ${s.colors.dim(`💡 ${n.suggestion}`)}`),t.fix&&n.fix&&e.push(` ${s.colors.green(`✅ Fixed automatically`)}`)}console.log(`\n${(0,s.single)(`📄 ${n}`,e)}`)}(0,s.dividerLog)()}if(T.length===0)console.log((0,s.round)(`✨ Documentation Health Check`,[` Everything looks perfect!`,` Your documentation is in great shape.`,``,` ${s.colors.dim(`Scanned ${p.length} file${p.length===1?``:`s`} in ${D}s`)}`]));else{let e=[];O>0&&e.push(s.colors.red(`${O} Critical Error${O===1?``:`s`}`)),k>0&&e.push(s.colors.yellow(`${k} Warning${k===1?``:`s`}`)),j>0&&e.push(s.colors.blue(`${j} Improvement${j===1?``:`s`}`));let t=[...(0,s.bullet)(e).split(`
28
- `).map(e=>e.trimStart()),``,s.colors.dim(`Scanned ${p.length} file${p.length===1?``:`s`} in ${D}s`)];console.log(`\n${(0,s.double)(`Diagnosis Results`,t)}\n`),E>0&&(0,s.success)(`Successfully fixed ${E} issues automatically!`),O>0?(0,s.error)(`Please fix the critical errors before building for production.`):(0,s.success)(`No critical issues found. You are ready to go!`)}}n.reporting.failOnError&&O>0&&process.exit(1),n.reporting.maxWarnings!==-1&&k>n.reporting.maxWarnings&&(o===`pretty`&&(0,s.error)(`Failed: Too many warnings (${k} > ${n.reporting.maxWarnings})`),process.exit(1))}catch(e){(0,s.error)(`Doctor failed: ${e}`),process.exit(1)}}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return O}}),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 A}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return F}});
@@ -1,160 +0,0 @@
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-CU-zTemE.cjs`),t=require(`./utils-Cjmx1hhk.cjs`),n=require(`./cache-CKm45d2w.cjs`),r=require(`./routes-DpJnb2VS.cjs`),i=require(`./doctor-VBPlQf7d.cjs`);let a=require(`@vitejs/plugin-react`);a=e.t(a);let o=require(`@tailwindcss/vite`);o=e.t(o);let s=require(`vite`),c=require(`node:path`);c=e.t(c);let l=require(`node:fs`);l=e.t(l);let u=require(`zod`),d=require(`@bdocs/dui`);d=e.t(d);let f=require(`node:crypto`);f=e.t(f);let ee=require(`vite-plugin-image-optimizer`),p=require(`semver`);p=e.t(p);let m=require(`node:module`);m=e.t(m);let h=require(`@bdocs/ssg/node`),g=require(`unist-util-visit`),te=require(`shiki/engine/javascript`),_=require(`shiki/core`),v=require(`@shikijs/themes/github-light`);v=e.t(v);let y=require(`@shikijs/themes/github-dark`);y=e.t(y);let b=require(`@shikijs/themes/tokyo-night`);b=e.t(b);let x=require(`@shikijs/themes/dracula`);x=e.t(x);let S=require(`@shikijs/themes/nord`);S=e.t(S);let C=require(`@shikijs/themes/one-dark-pro`);C=e.t(C);let w=require(`@shikijs/themes/one-light`);w=e.t(w);let T=require(`@shikijs/langs/html`);T=e.t(T);let E=require(`@shikijs/langs/js`);E=e.t(E);let D=require(`@shikijs/langs/ts`);D=e.t(D);let O=require(`@shikijs/langs/tsx`);O=e.t(O);let k=require(`@shikijs/langs/css`);k=e.t(k);let ne=require(`@shikijs/langs/json`);ne=e.t(ne);let re=require(`@shikijs/langs/bash`);re=e.t(re);let ie=require(`@shikijs/langs/markdown`);ie=e.t(ie);let ae=require(`@shikijs/langs/mdx`);ae=e.t(ae);let oe=require(`@shikijs/langs/yaml`);oe=e.t(oe);let se=require(`@shikijs/langs/rust`);se=e.t(se);let ce=require(`@shikijs/langs/toml`);ce=e.t(ce);let le=require(`@shikijs/langs/csv`);le=e.t(le);let A=require(`@mdx-js/rollup`);A=e.t(A);let j=require(`remark-gfm`);j=e.t(j);let M=require(`remark-frontmatter`);M=e.t(M);let N=require(`rehype-slug`);N=e.t(N);function ue(e){return`<!doctype html>
7
- <html lang="en">
8
- <head>
9
- <meta charset="UTF-8" />
10
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11
- <title>${e.theme?.title||`Boltdocs`}</title>
12
- </head>
13
- <body>
14
- <div id="root"></div>
15
- </body>
16
- </html>`}function de(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=ue(t));let n=t.theme,r=n?.title||`Boltdocs`;if(typeof r==`object`){let e=t.i18n?.defaultLocale||``;r=r[e]||Object.values(r)[0]||`Boltdocs`}let i=n?.description||``;if(typeof i==`object`){let e=t.i18n?.defaultLocale||``;i=i[e]||Object.values(i)[0]||``}let a=n?.favicon;!a&&n?.logo&&(a=typeof n.logo==`string`?n.logo:n.logo.light||n.logo.dark);let o=[a?`<link rel="icon" href="${a}">`:``,`<meta name="description" content="${i}">`,`<meta property="og:title" content="${r}">`,`<meta property="og:description" content="${i}">`,`<meta property="og:type" content="website">`,t.siteUrl?`<meta property="og:url" content="${t.siteUrl}">`:``,t.siteUrl?`<link rel="canonical" href="${t.siteUrl}">`:``,`<meta name="twitter:card" content="summary_large_image">`,`<meta name="twitter:title" content="${r}">`,`<meta name="twitter:description" content="${i}">`,`<meta name="generator" content="Boltdocs">`].filter(Boolean).join(`
17
- `);e=e.includes(`<title>`)?e.replace(/<title>.*?<\/title>/,`<title>${r}</title>`):e.replace(`</head>`,` <title>${r}</title>\n </head>`);let s=``;if(t.integrations?.ga4){let e=t.integrations.ga4;if(process.env.NODE_ENV===`production`||e.debug){let t=e.anonymizeIp?`gtag('set', 'ip', true);`:``,n=e.sendPageView===!1?`{send_page_view: false}`:`{}`,r=e.cookieFlags?`, {'cookie_flags': '${e.cookieFlags}'}`:``;s=`
18
- <!-- Google tag (gtag.js) - ${e.measurementId} -->
19
- <script async src="https://www.googletagmanager.com/gtag/js?id=${e.measurementId}"><\/script>
20
- <script>
21
- window.dataLayer = window.dataLayer || [];
22
- function gtag(){dataLayer.push(arguments);}
23
- gtag('js', new Date());
24
- ${t}
25
- gtag('config', '${e.measurementId}', ${n}${r});
26
- <\/script>
27
- `}}let c=``,l=``;if(t.integrations?.gtm){let e=t.integrations.gtm;if(process.env.NODE_ENV===`production`){let t=e.dataLayerName||`dataLayer`;c=`
28
- <!-- Google Tag Manager -->
29
- <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
30
- new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
31
- j=d.createElement(s),dl=l!='${t}'?'&l='+l:'';j.async=true;j.src=
32
- 'https://www.googletagmanager.com/gtm.js?id='+i+dl+'${e.preview?`&gtm_preview=${e.preview}`:``}';f.parentNode.insertBefore(j,f);
33
- })(window,document,'script','${t}','${e.tagId}');<\/script>
34
- <!-- End Google Tag Manager -->
35
- `,l=`
36
- <!-- Google Tag Manager (noscript) -->
37
- <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${e.tagId}"
38
- height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
39
- <!-- End Google Tag Manager (noscript) -->
40
- `}}return e=e.replace(`<head>`,`<head>
41
-
42
- <script>
43
- (function() {
44
- try {
45
- var stored = localStorage.getItem("boltdocs-theme");
46
- var isDark =
47
- stored === "dark" ||
48
- (stored !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
49
- document.documentElement.classList.toggle("dark", isDark);
50
- document.documentElement.dataset.theme = isDark ? "dark" : "light";
51
- } catch (e) {
52
- // Ignore localStorage errors (e.g. if cookies/storage are disabled)
53
- }
54
- })();
55
- <\/script>
56
- `),e=e.replace(`</head>`,` ${o}\n${s}${c} </head>`),l&&(e=e.replace(/<body([^>]*)>/,`<body$1>\n${l}`)),!e.includes(`src/main`)&&!e.includes(`virtual:boltdocs-entry`)&&(e=e.replace(`</body>`,` <script type="module">import "virtual:boltdocs-entry";<\/script>
57
- </body>`)),e}var P=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},F=class extends P{constructor(e,t){super(e,`Validation failed: ${t}`)}},fe=class extends P{constructor(e,t){super(e,`Compatibility error: ${t}`)}},I=class extends P{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},pe=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 me=i._.extend({version:u.z.string().optional(),boltdocsVersion:u.z.string().optional(),hooks:u.z.object({beforeBuild:u.z.function().optional(),afterBuild:u.z.function().optional(),beforeDev:u.z.function().optional(),afterDev:u.z.function().optional(),buildEnd:u.z.function().optional(),transformMdx:u.z.function().optional(),transformHtml:u.z.function().optional()}).optional()});function he(e,t){let n=[],r=new Set;for(let i of e){let e=me.safeParse(i);if(!e.success)throw new F(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 F(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!p.default.satisfies(t,a.boltdocsVersion))throw new fe(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(`..`)||c.default.isAbsolute(t))&&t.includes(`..`))throw new F(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`)}n.push(a)}return n}function ge(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{let{createRequire:r}=require(`node:module`);n=r(c.default.resolve(t,`package.json`)).resolve(`${e.name}/package.json`)}catch{let r=c.default.resolve(t,`node_modules`,e.name,`package.json`);l.default.existsSync(r)&&(n=r)}if(n&&l.default.existsSync(n)){let t=JSON.parse(l.default.readFileSync(n,`utf-8`)).scripts||{};(t.preinstall||t.postinstall||t.install)&&(0,d.warn)(`💡 ${d.colors.yellow(d.colors.bold(`Nota de seguridad:`))} El plugin ${d.colors.cyan(e.name)} ejecuta scripts nativos al instalarse. Corre ${d.colors.bold(`boltdocs audit`)} para un análisis detallado.`)}}catch{}}var _e=class{name=`ConfigResolve`;async execute(e){e.config=await i.p(`docs`,e.root),ge(e.config,e.root),e.viteConfig=await Nt(e.root,`production`)}};function L(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 ve=class{name=`RouteGenerate`;async execute(e){if(!e.config)throw Error(`Config not resolved. Run ConfigResolve first.`);let t=c.default.resolve(e.root,`docs`),n=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await r.t(t,e.config,n)],e.ssgRoutes=L(e.routes)}};const ye=u.z.object({title:u.z.string().optional(),description:u.z.string().optional(),canonical:u.z.string().url().optional(),robots:u.z.string().optional(),noindex:u.z.boolean().optional(),"og:title":u.z.string().optional(),"og:description":u.z.string().optional(),"og:image":u.z.string().optional(),"og:type":u.z.string().optional(),"og:url":u.z.string().url().optional()});var be=class{name=`SEOValidate`;async execute(e){if(!e.routes||!e.config)throw Error(`Routes or Config not initialized.`);let t=e.config.siteUrl;e.routes=e.routes.map(e=>{let n=e.seo||{},r=n.canonical||(t?`${t.replace(/\/$/,``)}${e.path}`:void 0),i=n[`og:url`]||r||void 0,a={...n};r&&(a.canonical=r),i&&(a[`og:url`]=i),!a[`og:title`]&&e.title&&(a[`og:title`]=e.title),!a[`og:description`]&&e.description&&(a[`og:description`]=e.description);let o=ye.safeParse(a);return o.success||(0,d.warn)(`[SEOValidate] Validation issues on route "${e.path}":`,o.error.message),e.title||(0,d.warn)(`[SEOValidate] Route "${e.path}" is missing a title.`),{...e,seo:a}}),e.ssgRoutes=L(e.routes)}},xe=class{name=`TypeGenerate`;async execute(e){if(!e.config||!e.routes)throw Error(`Config or Routes not initialized.`);let t=c.default.resolve(e.root,`docs`),n=e.routes.map(e=>e.path),r=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(r)||n.push(r),i.h(e.config,t,e.root,n),i.g(n)}},Se=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,h.build)({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:c.default.resolve(e.root,`.boltdocs/build`)},e.viteConfig),e.outDir=e.viteConfig.build?.outDir||`dist`}};function Ce(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"?>
58
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
59
- ${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>
60
- <loc>${t.r(`${r}${e.path.startsWith(`/`)?e.path:`/${e.path}`}`)}</loc>
61
- <changefreq>weekly</changefreq>
62
- <priority>0.7</priority>
63
- </url>`).join(`
64
- `)}
65
- </urlset>`}function we(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(`
66
- `);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(`
67
- `)+`
68
- `:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
69
- `)+`
70
- `:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
71
-
72
- `),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
73
- `);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
74
- `)}var Te=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=Ce(e.ssgRoutes,e.config),n=c.default.resolve(e.root,e.outDir);t&&l.default.writeFileSync(c.default.join(n,`sitemap.xml`),t,`utf-8`);let r=we(e.config);l.default.writeFileSync(c.default.join(n,`robots.txt`),r,`utf-8`)}};function Ee(){return new De().addStep(new _e).addStep(new ve).addStep(new be).addStep(new xe).addStep(new Se).addStep(new Te)}var De=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}}},Oe=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new pe,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new De;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 I(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 I(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=>d.info(`${t} ${e}`),warn:e=>d.warn(`${t} ${e}`),error:e=>{d.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>d.debug(`${t} ${e}`)}}};const R={ROOT:`root`,ELEMENT:`element`,TEXT:`text`,COMMENT:`comment`,CODE:`code`,INLINE_CODE:`inlineCode`,HEADING:`heading`,PARAGRAPH:`paragraph`,LINK:`link`,IMAGE:`image`,LIST:`list`,LIST_ITEM:`listItem`,JSX_FLOW_ELEMENT:`mdxJsxFlowElement`,JSX_TEXT_ELEMENT:`mdxJsxTextElement`,JSX_ATTRIBUTE:`mdxJsxAttribute`,FLOW_EXPRESSION:`mdxFlowExpression`,TEXT_EXPRESSION:`mdxTextExpression`,ESM:`mdxjsEsm`},z={TITLE:`data-title`,LANG:`data-lang`,HIGHLIGHTED:`data-highlighted`,HIGHLIGHTED_HTML:`data-highlighted-html`},B={LINE_NUMBERS:`shiki-line-numbers`,WORD_WRAP:`shiki-word-wrap`,FALLBACK:`shiki-fallback`},ke={LIGHT:`github-light`,DARK:`github-dark`},V={LANG:`plaintext`,MDX_DEFAULT_LANG:`text`},Ae=[v.default.default||v.default,y.default.default||y.default,b.default.default||b.default,x.default.default||x.default,S.default.default||S.default,C.default.default||C.default,w.default.default||w.default],je=[T.default,E.default,D.default,O.default,k.default,ne.default,re.default,ie.default,ae.default,oe.default,se.default,ce.default,le.default];let Me=null,H=null;const Ne=()=>(Me??=(0,te.createJavaScriptRegexEngine)(),Me),Pe=async e=>H||(H=(0,_.createHighlighterCore)({themes:Ae,langs:je,engine:Ne()}),H),Fe=(e={})=>{let{activateByDefault:t=!1}=e;return{name:`boltdocs:line-numbers`,pre(e){let n=this.options.meta?.lineNumbers===!0;(t||n)&&this.addClassToHast(e,B.LINE_NUMBERS)}}},Ie=(e={})=>{let{activateByDefault:t=!1}=e;return{name:`boltdocs:word-wrap`,pre(e){let n=this.options.meta?.wordWrap===!0;(t||n)&&this.addClassToHast(e,B.WORD_WRAP)}}},Le=()=>({name:`AddTitleProperty`,pre(e){let t=this.options.meta?.title;t&&(e.properties[z.TITLE]=t)}}),Re=()=>({name:`AddLanguageProperty`,pre(e){e.properties[z.LANG]=this.options.lang||V.LANG}});function U(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}var ze=class{config;constructor(e){this.config=e}getTheme(){return this.config?.theme?.codeTheme||{light:ke.LIGHT,dark:ke.DARK}}async getHighlighter(){return await Pe(this.getTheme())}getOptions(e,t){let n=this.getTheme(),r={},i=``;typeof t==`string`?(i=t,r=U(t)):t&&(r=t,i=t.__raw||``);let a={lang:e||V.LANG,meta:{__raw:i,...r},transformers:[Fe(),Ie(),Le(),Re()]};return typeof n==`object`?a.themes={light:n.light,dark:n.dark}:a.theme=n,a}async render(e,n,r){try{let t=await this.getHighlighter(),i=this.getOptions(n,r);return t.codeToHtml(e,i)}catch(n){return(0,d.error)(`[ShikiAdapter] Failed to render code:`,n),`<pre class="${B.FALLBACK}"><code>${t.n(e)}</code></pre>`}}};let Be=null,Ve;function He(e){let t=JSON.stringify(e?.theme?.codeTheme||null);return(Be===null||Ve!==t)&&(Be=new ze(e),Ve=t),Be}function W(e,t,n){e&&(0,g.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 Ue(e,t,n){W(e,R.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function We(e,t,n){let r=Array.isArray(t)?t:[t],i=[R.JSX_FLOW_ELEMENT,R.JSX_TEXT_ELEMENT];W(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function Ge(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function Ke(e,t){return e?.data?.hProperties?.[t]}function qe(e,t){return typeof t==`object`&&t?{type:R.JSX_ATTRIBUTE,name:e,value:t}:{type:R.JSX_ATTRIBUTE,name:e,value:String(t)}}function Je(e,t={},n=[]){return{type:R.ELEMENT,tagName:e,properties:t,children:n}}function Ye(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>qe(e,t));return{type:r?R.JSX_FLOW_ELEMENT:R.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function Xe(e,t){e&&(0,g.visit)(e,R.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Ze(e,t){e&&(0,g.visit)(e,R.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Qe(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 $e(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 et(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 tt(e){return e}function G(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(G):e&&typeof e==`object`?Object.values(e).flatMap(G):[]}const nt=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function rt(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=G(Object.entries(n.frontmatter).filter(([e])=>!nt.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}function K(e,n){let r=c.default.resolve(process.cwd(),`index.css`),i=l.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)}';
75
- const ${e} = _comp_${e}.default || _comp_${e}['${e}'] || _comp_${e};`).join(`
76
- `),s=a.map(([e])=>e).join(`, `),u=c.default.basename(e.docsDir||`docs`),d=c.default.resolve(process.cwd(),e.docsDir||`docs`),f=[`tsx`,`ts`,`jsx`,`js`].map(e=>c.default.resolve(d,`pages-external/index.${e}`)).find(e=>l.default.existsSync(e)),ee=f?`import * as _external_module from '${t.u(f)}';`:``,p=f?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``,m=process.env.VITE_SSG===`true`,h=m?`{ eager: true }`:`{}`,g=m?``:`
77
- if (typeof window !== 'undefined') {
78
- const prefetchAll = () => {
79
- const getters = Object.values(mdxModules)
80
- if (getters.length === 0) return
81
- let i = 0
82
- const nextBatch = () => {
83
- if (i >= getters.length) return
84
- const batch = getters.slice(i, i + 6)
85
- i += batch.length
86
- Promise.allSettled(batch.map(fn => fn())).then(() => {
87
- setTimeout(nextBatch, 0)
88
- })
89
- }
90
- ;(typeof requestIdleCallback === 'function' ? requestIdleCallback : function(cb) { setTimeout(cb, 500) })(nextBatch)
91
- }
92
- prefetchAll()
93
- }
94
- `;return`
95
- import { ViteReactSSG, createRoutes } from 'boltdocs/client'
96
- import _routes from 'virtual:boltdocs-routes.ts'
97
- import _collections from 'virtual:boltdocs-collections.ts'
98
- import _config from 'virtual:boltdocs-config.ts'
99
- import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx'
100
- ${i}
101
- ${o}
102
- ${ee}
103
-
104
- const mdxModules = import.meta.glob('/${u}/**/*.{md,mdx}', ${h});
105
-
106
- const _collLayoutMods = import.meta.glob('${`/${u}/**/layout.tsx`}', { eager: true });
107
- const _collListMods = import.meta.glob('${`/${u}/**/list.tsx`}', { eager: true });
108
- const _collPostMods = import.meta.glob('${`/${u}/**/post.tsx`}', { eager: true });
109
-
110
- const _collectionLayouts = {};
111
- for (const [p, mod] of Object.entries(_collLayoutMods)) {
112
- const dir = p.split('/').slice(-2, -1)[0];
113
- if (dir.startsWith('[') && dir.endsWith(']')) {
114
- _collectionLayouts[dir.slice(1, -1)] = mod.default || mod;
115
- }
116
- }
117
-
118
- const _collectionLists = {};
119
- for (const [p, mod] of Object.entries(_collListMods)) {
120
- const dir = p.split('/').slice(-2, -1)[0];
121
- if (dir.startsWith('[') && dir.endsWith(']')) {
122
- _collectionLists[dir.slice(1, -1)] = mod.default || mod;
123
- }
124
- }
125
-
126
- const _collectionPosts = {};
127
- for (const [p, mod] of Object.entries(_collPostMods)) {
128
- const dir = p.split('/').slice(-2, -1)[0];
129
- if (dir.startsWith('[') && dir.endsWith(']')) {
130
- _collectionPosts[dir.slice(1, -1)] = mod.default || mod;
131
- }
132
- }
133
-
134
- export const createRoot = ViteReactSSG(
135
- {
136
- routes: createRoutes({
137
- routesData: _routes,
138
- collectionsData: _collections,
139
- collectionLayouts: _collectionLayouts,
140
- collectionLists: _collectionLists,
141
- collectionPosts: _collectionPosts,
142
- config: _config,
143
- mdxModules,
144
- ${p}
145
- components: { ${s}${s?`, `:``} ...(_user_mdx_components || {}) },
146
- }),
147
- },
148
- ({ isClient }) => {
149
- // Boltdocs initialization hook
150
- if (isClient) {
151
- // Client-side initialization
152
- }
153
- },
154
- );
155
- ${g}
156
- `}let q=null,J=null;function it(){q=null,J=null}function at(e,n,i,a){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let n=i()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?t.u(c.default.resolve(n,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?t.u(c.default.resolve(n,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(i){let o=n();if(i.includes(`boltdocs-entry.tsx`)||i===`\0virtual:boltdocs-entry`)return K(e,o);if(i.includes(`boltdocs-client.mjs`)||i===`\0virtual:boltdocs-client.ts`||i===`virtual:boltdocs-client`){let e=__dirname,n=e;for(;e!==c.default.parse(e).root;){if(l.default.existsSync(c.default.join(e,`package.json`))&&JSON.parse(l.default.readFileSync(c.default.join(e,`package.json`),`utf-8`)).name===`boltdocs`){n=e;break}e=c.default.dirname(e)}let r=c.default.join(n,`src/client/index.ts`),i=c.default.join(n,`dist/client/index.js`);return`export * from '${t.u(l.default.existsSync(r)?r:i)}';`}if(!i.startsWith(`\0virtual:boltdocs-`))return;let s=i.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(s===`routes`){let e=L(await r.t(a,o));return`export default ${JSON.stringify(e,null,2)};`}if(s===`collections`){let e=L(await r.t(a,o)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,frontmatter:n.frontmatter}));return`export default ${JSON.stringify(t,null,2)};`}if(s===`config`){if(q===null){let{loadDirectoryMeta:e}=await Promise.resolve().then(()=>require(`./meta-loader-Cv9O0Pzl.cjs`));q=await e(a)}let e=q,t={base:o?.base,theme:o?.theme,i18n:o?.i18n,versions:o?.versions,siteUrl:o?.siteUrl,integrations:o?.integrations,plugins:o?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(s===`entry`)return K(e,o);if(s===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],n=null;for(let t of e){let e=c.default.resolve(a,`mdx-components.${t}`);if(l.default.existsSync(e)){n=e;break}}if(n){let e=t.u(n);return`import * as components from '${e}';
157
- const mdxComponents = components.default || components;
158
- export default mdxComponents;
159
- export * from '${e}';`}return`export default {};`}if(s===`layout`){let e=[`tsx`,`jsx`],n=null;for(let t of e){let e=c.default.resolve(a,`layout.${t}`);if(l.default.existsSync(e)){n=e;break}}if(n)return`import UserLayout from '${t.u(n)}';
160
- export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(s===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],n=null;for(let t of e){let e=c.default.resolve(a,`icons.${t}`);if(l.default.existsSync(e)){n=e;break}}return n?`import * as icons from '${t.u(n)}';\nexport default icons;`:`export default {};`}if(s===`search`){if(!J){let e=rt(await r.t(a,o));J=`export default ${JSON.stringify(e,null,2)};`}return J}if(s===`client`){let e=__dirname,n=``;for(;e&&e!==c.default.parse(e).root;){let r=c.default.join(e,`src/client/index.ts`),i=c.default.join(e,`dist/client/index.mjs`),a=c.default.join(e,`client/index.ts`);if(l.default.existsSync(r)){n=t.u(r);break}if(l.default.existsSync(i)){n=t.u(i);break}if(l.default.existsSync(a)){n=t.u(a);break}e=c.default.dirname(e)}if(!n)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${__dirname}`);return`export * from '${n}';`}}}}const ot={"X-Content-Type-Options":`nosniff`,"X-Frame-Options":`DENY`,"X-XSS-Protection":`1; mode=block`,"Referrer-Policy":`strict-origin-when-cross-origin`,"Permissions-Policy":`camera=(), microphone=(), geolocation=()`,"Strict-Transport-Security":`max-age=31536000; includeSubDomains`};function st(e){let t=process.env.NODE_ENV===`development`,n={"default-src":[`'self'`],"script-src":[`'self'`,`'unsafe-inline'`],"style-src":[`'self'`,`'unsafe-inline'`],"img-src":[`'self'`,`data:`,`https:`],"font-src":[`'self'`],"connect-src":[`'self'`]};return t&&(n[`script-src`]=[`'self'`,`'unsafe-eval'`,`'unsafe-inline'`],n[`style-src`]=[`'self'`,`'unsafe-inline'`]),Object.entries(n).map(([e,t])=>`${e} ${t.join(` `)}`).join(`; `)}const ct=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function lt(e,t){let n=process.env.NODE_ENV===`production`;e.middlewares.use((e,r,i)=>{n&&Object.entries(ot).forEach(([e,t])=>{r.setHeader(e,t)});let a=t();a.security?.enableCSP&&r.setHeader(`Content-Security-Policy`,st(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(n,r,i)=>{let a=n.url?.split(`?`)[0]||`/`,o=n.headers.accept||``,s=t();if(o.includes(`text/html`)&&!ct.test(a)){let t=ue(s);t=de(t,s),t=await e.transformIndexHtml(n.url||`/`,t),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(t);return}i()})}function ut(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await Promise.resolve().then(()=>require(`./routes-3sAccArX.cjs`)),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=8){let n=i.slice(t,t+8);await Promise.allSettled(n.map(t=>{let n=c.default.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},1e3)}const dt=[`tsx`,`jsx`],ft=[`tsx`,`ts`,`jsx`,`js`];function pt(e,t){let n=i.f.map(e=>c.default.resolve(process.cwd(),e)),r=dt.map(e=>c.default.resolve(t,`layout.${e}`)),a=ft.map(e=>c.default.resolve(t,`mdx-components.${e}`)),o=ft.map(e=>c.default.resolve(t,`pages-external/index.${e}`)),s=ft.map(e=>c.default.resolve(t,`icons.${e}`));e.watcher.add([...n,...a,...r,...o,...s])}const Y=new Map;function mt(e){let{lastUpdated:t,...n}=e;return f.default.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function ht(e){try{let{data:n}=await t.d(e);return mt(n)}catch{return``}}function gt(e){let t=Y.get(e);if(t===void 0){let n=r.r.get(e);n?.route?.frontmatter&&(t=mt(n.route.frontmatter),Y.set(e,t))}return t}function _t(e,t){Y.set(e,t)}function vt(e){Y.delete(e)}const yt=[`tsx`,`ts`,`jsx`,`js`];function X(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function bt(e,n,a,o){let s=new Map,l=a.toLowerCase(),u=async(a,u)=>{try{let f=t.u(a);if(i.f.some(e=>f.endsWith(e))){e.restart();return}if(yt.some(e=>f.endsWith(`mdx-components.${e}`))){i.h(o(),n),X(e,`mdx-components.tsx`),e.ws.send({type:`full-reload`});return}if(yt.some(e=>f.endsWith(`icons.${e}`))){X(e,`icons.tsx`),e.ws.send({type:`full-reload`});return}if(f.endsWith(`layout.tsx`)||f.endsWith(`layout.jsx`)){X(e,`layout.tsx`),e.ws.send({type:`full-reload`});return}if(f.includes(`/pages-external/`)||f.includes(`\\pages-external\\`)){X(e,`entry`),e.ws.send({type:`full-reload`});return}if(!f.toLowerCase().startsWith(l)||!t.c(f))return;if(u===`add`||u===`unlink`){u===`unlink`&&vt(a),r.n(),it();let t=o();i.h(t,n),X(e,`config`),X(e,`routes`),X(e,`search`),X(e,`collections`),i.c(n,process.cwd(),t).catch(e=>{(0,d.error)(`Failed to update link tree:`,e)}),e.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:t?.theme,i18n:t?.i18n,versions:t?.versions,siteUrl:t?.siteUrl}}),e.ws.send({type:`full-reload`});return}s.has(f)&&clearTimeout(s.get(f)),s.set(f,setTimeout(async()=>{s.delete(f);try{let i=gt(a),o=await ht(a);if(_t(a,o),r.i(a),i!==void 0&&i!==o){X(e,`routes`),X(e,`search`),X(e,`collections`),e.ws.send({type:`full-reload`});return}let s=t.u(c.default.relative(n,a)),l=e.moduleGraph.getModulesByFile(f);if(l&&l.size>0)for(let t of l)e.moduleGraph.invalidateModule(t);else{e.ws.send({type:`full-reload`});return}e.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:f,relPath:s}})}catch(e){(0,d.error)(`HMR error processing content change:`,e)}},150))}catch(e){(0,d.error)(`HMR error during ${u} event:`,e)}};e.watcher.on(`add`,e=>u(e,`add`)),e.watcher.on(`unlink`,e=>u(e,`unlink`)),e.watcher.on(`change`,e=>u(e,`change`))}function xt(e){let n=e.toLowerCase();return({file:e})=>{if(e.toLowerCase().startsWith(n)&&t.c(e))return[]}}function St(e,t,n,r,a){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let o=a();await o?.runHook(`beforeDev`),i.c(e,process.cwd(),n()).catch(e=>{(0,d.error)(`Failed to generate initial link tree:`,e)}),ut(r,e,n),lt(r,n),pt(r,e),bt(r,e,t,n),await o?.runHook(`afterDev`)},hotUpdate:xt(t)}}const Z=new n.r(`mdx`);function Ct(e){let t=He(e);return async e=>{let n=await t.getHighlighter();W(e,R.ELEMENT,e=>{if(e.tagName!==`pre`)return;let r=e.children?.[0];if(!r||r.type!==R.ELEMENT||r.tagName!==`code`)return;let i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),a=i?i.slice(9):V.MDX_DEFAULT_LANG;if(a===`mermaid`)return;let o=U(r.properties?.metastring||r.data?.meta||``),s=t.getOptions(a,o),c=r.children?.[0]?.value||``;try{let t=n.codeToHast(c,s),r=t.type===`root`?t.children[0]:t;e.children=r.children,e.properties={...e.properties,...r.properties,[z.HIGHLIGHTED]:`true`,[z.LANG]:a}}catch(t){(0,d.error)(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],B.FALLBACK],e.properties[z.HIGHLIGHTED]=`false`,e.properties[z.LANG]=a}return o.title&&(e.properties[z.TITLE]=o.title),g.SKIP})}}function wt(){return e=>{W(e,R.CODE,e=>{e.meta&&Ge(e,`metastring`,e.meta)})}}let Tt=!1;function Et(e,t,n=A.default){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[j.default,M.default,wt,...r],rehypePlugins:[N.default,[Ct,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Tt||=(await Z.load(),!0),a.buildStart&&await a.buildStart.call(this)},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${f.default.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await Z.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),Z.set(o,e),{code:e,map:null}}return c},async buildEnd(){Z.save(),await Z.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Q=m.createRequire(require(`url`).pathToFileURL(__filename).href);function Dt(e){try{let e=c.default.join(process.cwd(),`node_modules/boltdocs/package.json`);if(l.default.existsSync(e)){let t=l.default.realpathSync(e);return m.createRequire(t)}else return m.createRequire(c.default.join(process.cwd(),`package.json`))}catch{return e}}function Ot(e){let t=c.default.dirname(e);for(;t&&t!==c.default.dirname(t);){let e=c.default.join(t,`package.json`);if(l.default.existsSync(e))return e;t=c.default.dirname(t)}return null}function kt(e){let t=e.split(`/`);return e.startsWith(`@`)?{packageName:t.slice(0,2).join(`/`),subpath:t.slice(2).join(`/`)}:{packageName:t[0],subpath:t.slice(1).join(`/`)}}function $(e,t=Q){try{let{packageName:n,subpath:r}=kt(e),i;try{i=t.resolve(n+`/package.json`)}catch{i=Ot(t.resolve(n))||``}if(!i)throw Error(`Could not find package.json for ${n}`);let a=c.default.dirname(i),o=JSON.parse(l.default.readFileSync(i,`utf-8`)),s=``,u=r?`./`+r:`.`;if(o.exports){let e=o.exports[u]||o.exports[r];e&&(s=typeof e==`string`?e:e.import||e.default||e.require||e)}if(!s&&!r&&(s=o.module||o.main||`index.js`),typeof s==`object`&&s){let e=s;s=e.import||e.default||e.require||``}if(s){let e=c.default.resolve(a,s);if(l.default.existsSync(e))return e}}catch{}return t.resolve(e)}function At(){let e=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],n=[],r=Dt(Q);for(let t of e)try{let e=``;e=t===`@bdocs/ssg`||t===`react-router-dom`||t===`react-helmet-async`?$(t,r):r.resolve(t),e&&n.push(l.default.realpathSync(e))}catch{}if(r!==Q)for(let t of e)try{let e=``;e=t===`@bdocs/ssg`||t===`react-router-dom`||t===`react-helmet-async`?$(t,Q):Q.resolve(t),e&&n.push(l.default.realpathSync(e))}catch{}for(let e of[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`]){try{n.push(l.default.realpathSync(r.resolve(e)))}catch{}if(r!==Q)try{n.push(l.default.realpathSync(Q.resolve(e)))}catch{}}return Array.from(new Set(n)).map(e=>t.u(e))}function jt(e={},n){let a=c.default.resolve(process.cwd(),e.docsDir||`docs`),o=t.u(a),u=n,d,f=!1,p,m=[],h=()=>u,g=e=>{u=e},te=()=>d,_=()=>p;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){f=t.command===`build`;let n=!!(t.isSsrBuild||e.build?.ssr),o=e.envDir||process.cwd(),c=(0,s.loadEnv)(t.mode,o,``);if(Object.assign(process.env,c),!u){u=await i.p(a);let e=(await r.t(a,u)).map(e=>e.path),t=(u.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t),i.h(u,a,void 0,e),i.g(e)}let l=(await Promise.resolve().then(()=>require(`./package-CwNjt3Sd.cjs`))).version,d=he(u.plugins||[],l);return u.plugins=d,p=new Oe(d,u),m=d.flatMap(e=>e.vitePlugins||[]),f&&await p.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:f},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:$(`react-router-dom`)},{find:`react-helmet-async`,replacement:$(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:$(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...n?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...At()],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){d=e},resolveId(e,t,n){let r=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`].find(t=>e===t||e.startsWith(t+`/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,c.default.sep)}/`));if(r&&n?.ssr){let t=e;if(!c.default.isAbsolute(e)){let n=Dt(Q);try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?$(e,n):n.resolve(e)}catch{try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?$(e,Q):Q.resolve(e)}catch{}}}try{t=l.default.realpathSync(t)}catch{}return{id:t,external:!0}}return null},transformIndexHtml:{order:`pre`,handler(e){return de(e,u)}},async buildEnd(){let{pool:e}=await Promise.resolve().then(()=>require(`./worker-pool-DXLyeHJg.cjs`));await e.terminate()},async closeBundle(){!f||d?.build?.ssr||(await p?.runHook(`afterBuild`),await p?.runHook(`buildEnd`))},configurePreviewServer(e){let t=d?.build?.outDir?c.default.resolve(d.root||process.cwd(),d.build.outDir):c.default.resolve(process.cwd(),`dist`);e.middlewares.use((e,n,r)=>{let i=e.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(c.default.extname(a))return r();let o=a.replace(/\/$/,``)||`/`,s=c.default.join(t,o,`index.html`);o!==`/`&&l.default.existsSync(s)&&(e.url=`${o}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()})}},at(e,h,te,a),St(a,o,h,g,_),Et(u,_),{...(0,ee.ViteImageOptimizer)({includePublic:!0,png:{quality:80},jpeg:{quality:80},jpg:{quality:80},webp:{quality:80},avif:{quality:80},svg:{multipass:!0,plugins:[{name:`preset-default`}]}}),apply:`build`},...m]}(0,m.createRequire)(require(`url`).pathToFileURL(__filename).href);async function Mt(e){let t=e?.docsDir||`docs`,n=await i.p(t),a=(await r.t(t,n)).map(e=>e.path),o=(n.base||`/docs`).replace(/\/$/,``);return a.includes(o)||a.push(o),i.h(n,t,void 0,a),i.g(a),jt({...e},n)}async function Nt(e,t=`development`){let n=await i.p(`docs`,e),l=(await r.t(`docs`,n)).map(e=>e.path),u=(n.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u),i.h(n,`docs`,e,l),i.g(l);let d=t===`production`,f=d?{...ot}:{};return n.security?.enableCSP&&(f[`Content-Security-Policy`]=st(n)),{root:e,mode:t,oxc:{jsx:{development:!d,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:[(0,a.default)(),(0,o.default)(),...jt({docsDir:`docs`,root:e},n)],resolve:{alias:[{find:`boltdocs/entry`,replacement:(0,s.normalizePath)(c.default.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:(0,s.normalizePath)(c.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`}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...At()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,...n.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{headers:{...f,...n.vite?.server?.headers},...n.vite?.server},preview:{headers:{...f,...n.vite?.preview?.headers},...n.vite?.preview},...n.vite}}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return R}});
@@ -1,160 +0,0 @@
1
- /**
2
- * Boltdocs - https://boltdocs.vercel.app
3
- * Copyright (c) 2026 Jesus Alcala
4
- * Licensed under the MIT License.
5
- */
6
- import{c as e,d as t,n,r,u as i}from"./utils-BYITg7T5.mjs";import{r as a}from"./cache-BMUyNiiA.mjs";import{i as o,n as s,r as c,t as l}from"./routes-DZpXqq1p.mjs";import{_ as u,c as d,f,g as p,h as m,p as h}from"./doctor-Dnv77Lfx.mjs";import*as g from"node:module";import{createRequire as _}from"node:module";import ee from"@vitejs/plugin-react";import te from"@tailwindcss/vite";import{loadEnv as ne,normalizePath as re}from"vite";import v from"node:path";import y from"node:fs";import{z as b}from"zod";import*as x from"@bdocs/dui";import{colors as S,error as C,warn as w}from"@bdocs/dui";import ie from"node:crypto";import{ViteImageOptimizer as ae}from"vite-plugin-image-optimizer";import oe from"semver";import{build as se}from"@bdocs/ssg/node";import{EXIT as ce,SKIP as le,visit as T}from"unist-util-visit";import{createJavaScriptRegexEngine as ue}from"shiki/engine/javascript";import{createHighlighterCore as de}from"shiki/core";import fe from"@shikijs/themes/github-light";import pe from"@shikijs/themes/github-dark";import me from"@shikijs/themes/tokyo-night";import he from"@shikijs/themes/dracula";import ge from"@shikijs/themes/nord";import _e from"@shikijs/themes/one-dark-pro";import ve from"@shikijs/themes/one-light";import ye from"@shikijs/langs/html";import be from"@shikijs/langs/js";import xe from"@shikijs/langs/ts";import Se from"@shikijs/langs/tsx";import Ce from"@shikijs/langs/css";import we from"@shikijs/langs/json";import Te from"@shikijs/langs/bash";import Ee from"@shikijs/langs/markdown";import De from"@shikijs/langs/mdx";import Oe from"@shikijs/langs/yaml";import ke from"@shikijs/langs/rust";import Ae from"@shikijs/langs/toml";import je from"@shikijs/langs/csv";import{fileURLToPath as Me}from"node:url";import Ne from"@mdx-js/rollup";import Pe from"remark-gfm";import Fe from"remark-frontmatter";import Ie from"rehype-slug";var Le=Object.defineProperty,Re=(e,t)=>{let n={};for(var r in e)Le(n,r,{get:e[r],enumerable:!0});return t||Le(n,Symbol.toStringTag,{value:`Module`}),n},ze=_(import.meta.url);function Be(e){return`<!doctype html>
7
- <html lang="en">
8
- <head>
9
- <meta charset="UTF-8" />
10
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11
- <title>${e.theme?.title||`Boltdocs`}</title>
12
- </head>
13
- <body>
14
- <div id="root"></div>
15
- </body>
16
- </html>`}function Ve(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=Be(t));let n=t.theme,r=n?.title||`Boltdocs`;if(typeof r==`object`){let e=t.i18n?.defaultLocale||``;r=r[e]||Object.values(r)[0]||`Boltdocs`}let i=n?.description||``;if(typeof i==`object`){let e=t.i18n?.defaultLocale||``;i=i[e]||Object.values(i)[0]||``}let a=n?.favicon;!a&&n?.logo&&(a=typeof n.logo==`string`?n.logo:n.logo.light||n.logo.dark);let o=[a?`<link rel="icon" href="${a}">`:``,`<meta name="description" content="${i}">`,`<meta property="og:title" content="${r}">`,`<meta property="og:description" content="${i}">`,`<meta property="og:type" content="website">`,t.siteUrl?`<meta property="og:url" content="${t.siteUrl}">`:``,t.siteUrl?`<link rel="canonical" href="${t.siteUrl}">`:``,`<meta name="twitter:card" content="summary_large_image">`,`<meta name="twitter:title" content="${r}">`,`<meta name="twitter:description" content="${i}">`,`<meta name="generator" content="Boltdocs">`].filter(Boolean).join(`
17
- `);e=e.includes(`<title>`)?e.replace(/<title>.*?<\/title>/,`<title>${r}</title>`):e.replace(`</head>`,` <title>${r}</title>\n </head>`);let s=``;if(t.integrations?.ga4){let e=t.integrations.ga4;if(process.env.NODE_ENV===`production`||e.debug){let t=e.anonymizeIp?`gtag('set', 'ip', true);`:``,n=e.sendPageView===!1?`{send_page_view: false}`:`{}`,r=e.cookieFlags?`, {'cookie_flags': '${e.cookieFlags}'}`:``;s=`
18
- <!-- Google tag (gtag.js) - ${e.measurementId} -->
19
- <script async src="https://www.googletagmanager.com/gtag/js?id=${e.measurementId}"><\/script>
20
- <script>
21
- window.dataLayer = window.dataLayer || [];
22
- function gtag(){dataLayer.push(arguments);}
23
- gtag('js', new Date());
24
- ${t}
25
- gtag('config', '${e.measurementId}', ${n}${r});
26
- <\/script>
27
- `}}let c=``,l=``;if(t.integrations?.gtm){let e=t.integrations.gtm;if(process.env.NODE_ENV===`production`){let t=e.dataLayerName||`dataLayer`;c=`
28
- <!-- Google Tag Manager -->
29
- <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
30
- new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
31
- j=d.createElement(s),dl=l!='${t}'?'&l='+l:'';j.async=true;j.src=
32
- 'https://www.googletagmanager.com/gtm.js?id='+i+dl+'${e.preview?`&gtm_preview=${e.preview}`:``}';f.parentNode.insertBefore(j,f);
33
- })(window,document,'script','${t}','${e.tagId}');<\/script>
34
- <!-- End Google Tag Manager -->
35
- `,l=`
36
- <!-- Google Tag Manager (noscript) -->
37
- <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${e.tagId}"
38
- height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
39
- <!-- End Google Tag Manager (noscript) -->
40
- `}}return e=e.replace(`<head>`,`<head>
41
-
42
- <script>
43
- (function() {
44
- try {
45
- var stored = localStorage.getItem("boltdocs-theme");
46
- var isDark =
47
- stored === "dark" ||
48
- (stored !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
49
- document.documentElement.classList.toggle("dark", isDark);
50
- document.documentElement.dataset.theme = isDark ? "dark" : "light";
51
- } catch (e) {
52
- // Ignore localStorage errors (e.g. if cookies/storage are disabled)
53
- }
54
- })();
55
- <\/script>
56
- `),e=e.replace(`</head>`,` ${o}\n${s}${c} </head>`),l&&(e=e.replace(/<body([^>]*)>/,`<body$1>\n${l}`)),!e.includes(`src/main`)&&!e.includes(`virtual:boltdocs-entry`)&&(e=e.replace(`</body>`,` <script type="module">import "virtual:boltdocs-entry";<\/script>
57
- </body>`)),e}var E=class extends Error{name=this.constructor.name;constructor(e,t,n){super(`[plugin:${e}] ${t}`,n),this.pluginName=e}},D=class extends E{constructor(e,t){super(e,`Validation failed: ${t}`)}},O=class extends E{constructor(e,t){super(e,`Compatibility error: ${t}`)}},k=class extends E{constructor(e,t,n){super(e,`Error in hook '${t}': ${n.message}`,{cause:n}),this.hookName=t}},He=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 Ue=u.extend({version:b.string().optional(),boltdocsVersion:b.string().optional(),hooks:b.object({beforeBuild:b.function().optional(),afterBuild:b.function().optional(),beforeDev:b.function().optional(),afterDev:b.function().optional(),buildEnd:b.function().optional(),transformMdx:b.function().optional(),transformHtml:b.function().optional()}).optional()});function A(e,t){let n=[],r=new Set;for(let i of e){let e=Ue.safeParse(i);if(!e.success)throw new D(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 D(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!oe.satisfies(t,a.boltdocsVersion))throw new O(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(`..`)||v.isAbsolute(t))&&t.includes(`..`))throw new D(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`)}n.push(a)}return n}function We(e,t=process.cwd()){let n=e.plugins||[];for(let e of n)if(e.name)try{let n=null;try{let{createRequire:r}=ze(`node:module`);n=r(v.resolve(t,`package.json`)).resolve(`${e.name}/package.json`)}catch{let r=v.resolve(t,`node_modules`,e.name,`package.json`);y.existsSync(r)&&(n=r)}if(n&&y.existsSync(n)){let t=JSON.parse(y.readFileSync(n,`utf-8`)).scripts||{};(t.preinstall||t.postinstall||t.install)&&w(`💡 ${S.yellow(S.bold(`Nota de seguridad:`))} El plugin ${S.cyan(e.name)} ejecuta scripts nativos al instalarse. Corre ${S.bold(`boltdocs audit`)} para un análisis detallado.`)}}catch{}}var Ge=class{name=`ConfigResolve`;async execute(e){e.config=await h(`docs`,e.root),We(e.config,e.root),e.viteConfig=await nn(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 Ke=class{name=`RouteGenerate`;async execute(e){if(!e.config)throw Error(`Config not resolved. Run ConfigResolve first.`);let t=v.resolve(e.root,`docs`),n=e.viteConfig?.base||e.config.base||`/docs`;e.routes=[...await l(t,e.config,n)],e.ssgRoutes=j(e.routes)}};const qe=b.object({title:b.string().optional(),description:b.string().optional(),canonical:b.string().url().optional(),robots:b.string().optional(),noindex:b.boolean().optional(),"og:title":b.string().optional(),"og:description":b.string().optional(),"og:image":b.string().optional(),"og:type":b.string().optional(),"og:url":b.string().url().optional()});var Je=class{name=`SEOValidate`;async execute(e){if(!e.routes||!e.config)throw Error(`Routes or Config not initialized.`);let t=e.config.siteUrl;e.routes=e.routes.map(e=>{let n=e.seo||{},r=n.canonical||(t?`${t.replace(/\/$/,``)}${e.path}`:void 0),i=n[`og:url`]||r||void 0,a={...n};r&&(a.canonical=r),i&&(a[`og:url`]=i),!a[`og:title`]&&e.title&&(a[`og:title`]=e.title),!a[`og:description`]&&e.description&&(a[`og:description`]=e.description);let o=qe.safeParse(a);return o.success||w(`[SEOValidate] Validation issues on route "${e.path}":`,o.error.message),e.title||w(`[SEOValidate] Route "${e.path}" is missing a title.`),{...e,seo:a}}),e.ssgRoutes=j(e.routes)}},Ye=class{name=`TypeGenerate`;async execute(e){if(!e.config||!e.routes)throw Error(`Config or Routes not initialized.`);let t=v.resolve(e.root,`docs`),n=e.routes.map(e=>e.path),r=(e.config.base||`/docs`).replace(/\/$/,``);n.includes(r)||n.push(r),m(e.config,t,e.root,n),p(n)}},Xe=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 se({entry:`boltdocs/entry`,routeToSourceFileMap:t,cacheDir:v.resolve(e.root,`.boltdocs/build`)},e.viteConfig),e.outDir=e.viteConfig.build?.outDir||`dist`}};function Ze(e,t){let n=(t.siteUrl||``).replace(/\/$/,``);if(!n)return``;let i=t.seo?.indexing!==`all`&&t.seo?.indexing!==`public`;return`<?xml version="1.0" encoding="UTF-8"?>
58
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
59
- ${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>
60
- <loc>${r(`${n}${e.path.startsWith(`/`)?e.path:`/${e.path}`}`)}</loc>
61
- <changefreq>weekly</changefreq>
62
- <priority>0.7</priority>
63
- </url>`).join(`
64
- `)}
65
- </urlset>`}function Qe(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(`
66
- `);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(`
67
- `)+`
68
- `:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
69
- `)+`
70
- `:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
71
-
72
- `),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
73
- `);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
74
- `)}var $e=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=Ze(e.ssgRoutes,e.config),n=v.resolve(e.root,e.outDir);t&&y.writeFileSync(v.join(n,`sitemap.xml`),t,`utf-8`);let r=Qe(e.config);y.writeFileSync(v.join(n,`robots.txt`),r,`utf-8`)}};function et(){return new tt().addStep(new Ge).addStep(new Ke).addStep(new Je).addStep(new Ye).addStep(new Xe).addStep(new $e)}var tt=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}}},nt=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new He,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new tt;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 k(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 k(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=>x.info(`${t} ${e}`),warn:e=>x.warn(`${t} ${e}`),error:e=>{x.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>x.debug(`${t} ${e}`)}}};const M={ROOT:`root`,ELEMENT:`element`,TEXT:`text`,COMMENT:`comment`,CODE:`code`,INLINE_CODE:`inlineCode`,HEADING:`heading`,PARAGRAPH:`paragraph`,LINK:`link`,IMAGE:`image`,LIST:`list`,LIST_ITEM:`listItem`,JSX_FLOW_ELEMENT:`mdxJsxFlowElement`,JSX_TEXT_ELEMENT:`mdxJsxTextElement`,JSX_ATTRIBUTE:`mdxJsxAttribute`,FLOW_EXPRESSION:`mdxFlowExpression`,TEXT_EXPRESSION:`mdxTextExpression`,ESM:`mdxjsEsm`},N={TITLE:`data-title`,LANG:`data-lang`,HIGHLIGHTED:`data-highlighted`,HIGHLIGHTED_HTML:`data-highlighted-html`},P={LINE_NUMBERS:`shiki-line-numbers`,WORD_WRAP:`shiki-word-wrap`,FALLBACK:`shiki-fallback`},F={LIGHT:`github-light`,DARK:`github-dark`},I={LANG:`plaintext`,MDX_DEFAULT_LANG:`text`},rt=[fe.default||fe,pe.default||pe,me.default||me,he.default||he,ge.default||ge,_e.default||_e,ve.default||ve],it=[ye,be,xe,Se,Ce,we,Te,Ee,De,Oe,ke,Ae,je];let L=null,R=null;const at=()=>(L??=ue(),L),ot=async e=>R||(R=de({themes:rt,langs:it,engine:at()}),R),st=(e={})=>{let{activateByDefault:t=!1}=e;return{name:`boltdocs:line-numbers`,pre(e){let n=this.options.meta?.lineNumbers===!0;(t||n)&&this.addClassToHast(e,P.LINE_NUMBERS)}}},ct=(e={})=>{let{activateByDefault:t=!1}=e;return{name:`boltdocs:word-wrap`,pre(e){let n=this.options.meta?.wordWrap===!0;(t||n)&&this.addClassToHast(e,P.WORD_WRAP)}}},lt=()=>({name:`AddTitleProperty`,pre(e){let t=this.options.meta?.title;t&&(e.properties[N.TITLE]=t)}}),ut=()=>({name:`AddLanguageProperty`,pre(e){e.properties[N.LANG]=this.options.lang||I.LANG}});function z(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}var dt=class{config;constructor(e){this.config=e}getTheme(){return this.config?.theme?.codeTheme||{light:F.LIGHT,dark:F.DARK}}async getHighlighter(){return await ot(this.getTheme())}getOptions(e,t){let n=this.getTheme(),r={},i=``;typeof t==`string`?(i=t,r=z(t)):t&&(r=t,i=t.__raw||``);let a={lang:e||I.LANG,meta:{__raw:i,...r},transformers:[st(),ct(),lt(),ut()]};return typeof n==`object`?a.themes={light:n.light,dark:n.dark}:a.theme=n,a}async render(e,t,r){try{let n=await this.getHighlighter(),i=this.getOptions(t,r);return n.codeToHtml(e,i)}catch(t){return C(`[ShikiAdapter] Failed to render code:`,t),`<pre class="${P.FALLBACK}"><code>${n(e)}</code></pre>`}}};let B=null,ft;function pt(e){let t=JSON.stringify(e?.theme?.codeTheme||null);return(B===null||ft!==t)&&(B=new dt(e),ft=t),B}function V(e,t,n){e&&T(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 mt(e,t,n){V(e,M.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function ht(e,t,n){let r=Array.isArray(t)?t:[t],i=[M.JSX_FLOW_ELEMENT,M.JSX_TEXT_ELEMENT];V(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function H(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function gt(e,t){return e?.data?.hProperties?.[t]}function _t(e,t){return typeof t==`object`&&t?{type:M.JSX_ATTRIBUTE,name:e,value:t}:{type:M.JSX_ATTRIBUTE,name:e,value:String(t)}}function vt(e,t={},n=[]){return{type:M.ELEMENT,tagName:e,properties:t,children:n}}function yt(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>_t(e,t));return{type:r?M.JSX_FLOW_ELEMENT:M.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function bt(e,t){e&&T(e,M.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function xt(e,t){e&&T(e,M.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function St(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 Ct(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 wt(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 Tt(e){return e}const U=v.dirname(Me(import.meta.url));function W(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(W):e&&typeof e==`object`?Object.values(e).flatMap(W):[]}const Et=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function Dt(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=W(Object.entries(n.frontmatter).filter(([e])=>!Et.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}function G(e,t){let n=v.resolve(process.cwd(),`index.css`),r=y.existsSync(n)?`import './index.css';`:``,a=t?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],o=a.map(([e,t])=>`import * as _comp_${e} from '${i(t)}';
75
- const ${e} = _comp_${e}.default || _comp_${e}['${e}'] || _comp_${e};`).join(`
76
- `),s=a.map(([e])=>e).join(`, `),c=v.basename(e.docsDir||`docs`),l=v.resolve(process.cwd(),e.docsDir||`docs`),u=[`tsx`,`ts`,`jsx`,`js`].map(e=>v.resolve(l,`pages-external/index.${e}`)).find(e=>y.existsSync(e)),d=u?`import * as _external_module from '${i(u)}';`:``,f=u?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``,p=process.env.VITE_SSG===`true`,m=p?`{ eager: true }`:`{}`,h=p?``:`
77
- if (typeof window !== 'undefined') {
78
- const prefetchAll = () => {
79
- const getters = Object.values(mdxModules)
80
- if (getters.length === 0) return
81
- let i = 0
82
- const nextBatch = () => {
83
- if (i >= getters.length) return
84
- const batch = getters.slice(i, i + 6)
85
- i += batch.length
86
- Promise.allSettled(batch.map(fn => fn())).then(() => {
87
- setTimeout(nextBatch, 0)
88
- })
89
- }
90
- ;(typeof requestIdleCallback === 'function' ? requestIdleCallback : function(cb) { setTimeout(cb, 500) })(nextBatch)
91
- }
92
- prefetchAll()
93
- }
94
- `;return`
95
- import { ViteReactSSG, createRoutes } from 'boltdocs/client'
96
- import _routes from 'virtual:boltdocs-routes.ts'
97
- import _collections from 'virtual:boltdocs-collections.ts'
98
- import _config from 'virtual:boltdocs-config.ts'
99
- import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx'
100
- ${r}
101
- ${o}
102
- ${d}
103
-
104
- const mdxModules = import.meta.glob('/${c}/**/*.{md,mdx}', ${m});
105
-
106
- const _collLayoutMods = import.meta.glob('${`/${c}/**/layout.tsx`}', { eager: true });
107
- const _collListMods = import.meta.glob('${`/${c}/**/list.tsx`}', { eager: true });
108
- const _collPostMods = import.meta.glob('${`/${c}/**/post.tsx`}', { eager: true });
109
-
110
- const _collectionLayouts = {};
111
- for (const [p, mod] of Object.entries(_collLayoutMods)) {
112
- const dir = p.split('/').slice(-2, -1)[0];
113
- if (dir.startsWith('[') && dir.endsWith(']')) {
114
- _collectionLayouts[dir.slice(1, -1)] = mod.default || mod;
115
- }
116
- }
117
-
118
- const _collectionLists = {};
119
- for (const [p, mod] of Object.entries(_collListMods)) {
120
- const dir = p.split('/').slice(-2, -1)[0];
121
- if (dir.startsWith('[') && dir.endsWith(']')) {
122
- _collectionLists[dir.slice(1, -1)] = mod.default || mod;
123
- }
124
- }
125
-
126
- const _collectionPosts = {};
127
- for (const [p, mod] of Object.entries(_collPostMods)) {
128
- const dir = p.split('/').slice(-2, -1)[0];
129
- if (dir.startsWith('[') && dir.endsWith(']')) {
130
- _collectionPosts[dir.slice(1, -1)] = mod.default || mod;
131
- }
132
- }
133
-
134
- export const createRoot = ViteReactSSG(
135
- {
136
- routes: createRoutes({
137
- routesData: _routes,
138
- collectionsData: _collections,
139
- collectionLayouts: _collectionLayouts,
140
- collectionLists: _collectionLists,
141
- collectionPosts: _collectionPosts,
142
- config: _config,
143
- mdxModules,
144
- ${f}
145
- components: { ${s}${s?`, `:``} ...(_user_mdx_components || {}) },
146
- }),
147
- },
148
- ({ isClient }) => {
149
- // Boltdocs initialization hook
150
- if (isClient) {
151
- // Client-side initialization
152
- }
153
- },
154
- );
155
- ${h}
156
- `}let K=null,q=null;function Ot(){K=null,q=null}function kt(e,t,n,r){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let t=n()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?i(v.resolve(t,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?i(v.resolve(t,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(n){let a=t();if(n.includes(`boltdocs-entry.tsx`)||n===`\0virtual:boltdocs-entry`)return G(e,a);if(n.includes(`boltdocs-client.mjs`)||n===`\0virtual:boltdocs-client.ts`||n===`virtual:boltdocs-client`){let e=U,t=e;for(;e!==v.parse(e).root;){if(y.existsSync(v.join(e,`package.json`))&&JSON.parse(y.readFileSync(v.join(e,`package.json`),`utf-8`)).name===`boltdocs`){t=e;break}e=v.dirname(e)}let n=v.join(t,`src/client/index.ts`),r=v.join(t,`dist/client/index.js`);return`export * from '${i(y.existsSync(n)?n:r)}';`}if(!n.startsWith(`\0virtual:boltdocs-`))return;let o=n.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(o===`routes`){let e=j(await l(r,a));return`export default ${JSON.stringify(e,null,2)};`}if(o===`collections`){let e=j(await l(r,a)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,frontmatter:n.frontmatter}));return`export default ${JSON.stringify(t,null,2)};`}if(o===`config`){if(K===null){let{loadDirectoryMeta:e}=await import(`./meta-loader-DzwDFtdT.mjs`);K=await e(r)}let e=K,t={base:a?.base,theme:a?.theme,i18n:a?.i18n,versions:a?.versions,siteUrl:a?.siteUrl,integrations:a?.integrations,plugins:a?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(o===`entry`)return G(e,a);if(o===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],t=null;for(let n of e){let e=v.resolve(r,`mdx-components.${n}`);if(y.existsSync(e)){t=e;break}}if(t){let e=i(t);return`import * as components from '${e}';
157
- const mdxComponents = components.default || components;
158
- export default mdxComponents;
159
- export * from '${e}';`}return`export default {};`}if(o===`layout`){let e=[`tsx`,`jsx`],t=null;for(let n of e){let e=v.resolve(r,`layout.${n}`);if(y.existsSync(e)){t=e;break}}if(t)return`import UserLayout from '${i(t)}';
160
- export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(o===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],t=null;for(let n of e){let e=v.resolve(r,`icons.${n}`);if(y.existsSync(e)){t=e;break}}return t?`import * as icons from '${i(t)}';\nexport default icons;`:`export default {};`}if(o===`search`){if(!q){let e=Dt(await l(r,a));q=`export default ${JSON.stringify(e,null,2)};`}return q}if(o===`client`){let e=U,t=``;for(;e&&e!==v.parse(e).root;){let n=v.join(e,`src/client/index.ts`),r=v.join(e,`dist/client/index.mjs`),a=v.join(e,`client/index.ts`);if(y.existsSync(n)){t=i(n);break}if(y.existsSync(r)){t=i(r);break}if(y.existsSync(a)){t=i(a);break}e=v.dirname(e)}if(!t)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${U}`);return`export * from '${t}';`}}}}const At={"X-Content-Type-Options":`nosniff`,"X-Frame-Options":`DENY`,"X-XSS-Protection":`1; mode=block`,"Referrer-Policy":`strict-origin-when-cross-origin`,"Permissions-Policy":`camera=(), microphone=(), geolocation=()`,"Strict-Transport-Security":`max-age=31536000; includeSubDomains`};function jt(e){let t=process.env.NODE_ENV===`development`,n={"default-src":[`'self'`],"script-src":[`'self'`,`'unsafe-inline'`],"style-src":[`'self'`,`'unsafe-inline'`],"img-src":[`'self'`,`data:`,`https:`],"font-src":[`'self'`],"connect-src":[`'self'`]};return t&&(n[`script-src`]=[`'self'`,`'unsafe-eval'`,`'unsafe-inline'`],n[`style-src`]=[`'self'`,`'unsafe-inline'`]),Object.entries(n).map(([e,t])=>`${e} ${t.join(` `)}`).join(`; `)}const Mt=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function Nt(e,t){let n=process.env.NODE_ENV===`production`;e.middlewares.use((e,r,i)=>{n&&Object.entries(At).forEach(([e,t])=>{r.setHeader(e,t)});let a=t();a.security?.enableCSP&&r.setHeader(`Content-Security-Policy`,jt(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(n,r,i)=>{let a=n.url?.split(`?`)[0]||`/`,o=n.headers.accept||``,s=t();if(o.includes(`text/html`)&&!Mt.test(a)){let t=Be(s);t=Ve(t,s),t=await e.transformIndexHtml(n.url||`/`,t),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(t);return}i()})}function Pt(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await import(`./routes-DjoxNeef.mjs`),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=8){let n=i.slice(t,t+8);await Promise.allSettled(n.map(t=>{let n=v.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},1e3)}const Ft=[`tsx`,`jsx`],J=[`tsx`,`ts`,`jsx`,`js`];function It(e,t){let n=f.map(e=>v.resolve(process.cwd(),e)),r=Ft.map(e=>v.resolve(t,`layout.${e}`)),i=J.map(e=>v.resolve(t,`mdx-components.${e}`)),a=J.map(e=>v.resolve(t,`pages-external/index.${e}`)),o=J.map(e=>v.resolve(t,`icons.${e}`));e.watcher.add([...n,...i,...r,...a,...o])}const Y=new Map;function Lt(e){let{lastUpdated:t,...n}=e;return ie.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function Rt(e){try{let{data:n}=await t(e);return Lt(n)}catch{return``}}function zt(e){let t=Y.get(e);if(t===void 0){let n=c.get(e);n?.route?.frontmatter&&(t=Lt(n.route.frontmatter),Y.set(e,t))}return t}function Bt(e,t){Y.set(e,t)}function Vt(e){Y.delete(e)}const Ht=[`tsx`,`ts`,`jsx`,`js`];function X(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function Ut(t,n,r,a){let c=new Map,l=r.toLowerCase(),u=async(r,u)=>{try{let p=i(r);if(f.some(e=>p.endsWith(e))){t.restart();return}if(Ht.some(e=>p.endsWith(`mdx-components.${e}`))){m(a(),n),X(t,`mdx-components.tsx`),t.ws.send({type:`full-reload`});return}if(Ht.some(e=>p.endsWith(`icons.${e}`))){X(t,`icons.tsx`),t.ws.send({type:`full-reload`});return}if(p.endsWith(`layout.tsx`)||p.endsWith(`layout.jsx`)){X(t,`layout.tsx`),t.ws.send({type:`full-reload`});return}if(p.includes(`/pages-external/`)||p.includes(`\\pages-external\\`)){X(t,`entry`),t.ws.send({type:`full-reload`});return}if(!p.toLowerCase().startsWith(l)||!e(p))return;if(u===`add`||u===`unlink`){u===`unlink`&&Vt(r),s(),Ot();let e=a();m(e,n),X(t,`config`),X(t,`routes`),X(t,`search`),X(t,`collections`),d(n,process.cwd(),e).catch(e=>{C(`Failed to update link tree:`,e)}),t.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:e?.theme,i18n:e?.i18n,versions:e?.versions,siteUrl:e?.siteUrl}}),t.ws.send({type:`full-reload`});return}c.has(p)&&clearTimeout(c.get(p)),c.set(p,setTimeout(async()=>{c.delete(p);try{let e=zt(r),a=await Rt(r);if(Bt(r,a),o(r),e!==void 0&&e!==a){X(t,`routes`),X(t,`search`),X(t,`collections`),t.ws.send({type:`full-reload`});return}let s=i(v.relative(n,r)),c=t.moduleGraph.getModulesByFile(p);if(c&&c.size>0)for(let e of c)t.moduleGraph.invalidateModule(e);else{t.ws.send({type:`full-reload`});return}t.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:p,relPath:s}})}catch(e){C(`HMR error processing content change:`,e)}},150))}catch(e){C(`HMR error during ${u} event:`,e)}};t.watcher.on(`add`,e=>u(e,`add`)),t.watcher.on(`unlink`,e=>u(e,`unlink`)),t.watcher.on(`change`,e=>u(e,`change`))}function Wt(t){let n=t.toLowerCase();return({file:t})=>{if(t.toLowerCase().startsWith(n)&&e(t))return[]}}function Gt(e,t,n,r,i){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let a=i();await a?.runHook(`beforeDev`),d(e,process.cwd(),n()).catch(e=>{C(`Failed to generate initial link tree:`,e)}),Pt(r,e,n),Nt(r,n),It(r,e),Ut(r,e,t,n),await a?.runHook(`afterDev`)},hotUpdate:Wt(t)}}const Z=new a(`mdx`);function Kt(e){let t=pt(e);return async e=>{let n=await t.getHighlighter();V(e,M.ELEMENT,e=>{if(e.tagName!==`pre`)return;let r=e.children?.[0];if(!r||r.type!==M.ELEMENT||r.tagName!==`code`)return;let i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),a=i?i.slice(9):I.MDX_DEFAULT_LANG;if(a===`mermaid`)return;let o=z(r.properties?.metastring||r.data?.meta||``),s=t.getOptions(a,o),c=r.children?.[0]?.value||``;try{let t=n.codeToHast(c,s),r=t.type===`root`?t.children[0]:t;e.children=r.children,e.properties={...e.properties,...r.properties,[N.HIGHLIGHTED]:`true`,[N.LANG]:a}}catch(t){C(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],P.FALLBACK],e.properties[N.HIGHLIGHTED]=`false`,e.properties[N.LANG]=a}return o.title&&(e.properties[N.TITLE]=o.title),le})}}function qt(){return e=>{V(e,M.CODE,e=>{e.meta&&H(e,`metastring`,e.meta)})}}let Jt=!1;function Yt(e,t,n=Ne){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[Pe,Fe,qt,...r],rehypePlugins:[Ie,[Kt,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Jt||=(await Z.load(),!0),a.buildStart&&await a.buildStart.call(this)},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${ie.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await Z.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),Z.set(o,e),{code:e,map:null}}return c},async buildEnd(){Z.save(),await Z.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Q=g.createRequire(import.meta.url);function Xt(e){try{let e=v.join(process.cwd(),`node_modules/boltdocs/package.json`);if(y.existsSync(e)){let t=y.realpathSync(e);return g.createRequire(t)}else return g.createRequire(v.join(process.cwd(),`package.json`))}catch{return e}}function Zt(e){let t=v.dirname(e);for(;t&&t!==v.dirname(t);){let e=v.join(t,`package.json`);if(y.existsSync(e))return e;t=v.dirname(t)}return null}function Qt(e){let t=e.split(`/`);return e.startsWith(`@`)?{packageName:t.slice(0,2).join(`/`),subpath:t.slice(2).join(`/`)}:{packageName:t[0],subpath:t.slice(1).join(`/`)}}function $(e,t=Q){try{let{packageName:n,subpath:r}=Qt(e),i;try{i=t.resolve(n+`/package.json`)}catch{i=Zt(t.resolve(n))||``}if(!i)throw Error(`Could not find package.json for ${n}`);let a=v.dirname(i),o=JSON.parse(y.readFileSync(i,`utf-8`)),s=``,c=r?`./`+r:`.`;if(o.exports){let e=o.exports[c]||o.exports[r];e&&(s=typeof e==`string`?e:e.import||e.default||e.require||e)}if(!s&&!r&&(s=o.module||o.main||`index.js`),typeof s==`object`&&s){let e=s;s=e.import||e.default||e.require||``}if(s){let e=v.resolve(a,s);if(y.existsSync(e))return e}}catch{}return t.resolve(e)}function $t(){let e=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],t=[],n=Xt(Q);for(let r of e)try{let e=``;e=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?$(r,n):n.resolve(r),e&&t.push(y.realpathSync(e))}catch{}if(n!==Q)for(let n of e)try{let e=``;e=n===`@bdocs/ssg`||n===`react-router-dom`||n===`react-helmet-async`?$(n,Q):Q.resolve(n),e&&t.push(y.realpathSync(e))}catch{}for(let e of[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`]){try{t.push(y.realpathSync(n.resolve(e)))}catch{}if(n!==Q)try{t.push(y.realpathSync(Q.resolve(e)))}catch{}}return Array.from(new Set(t)).map(e=>i(e))}function en(e={},t){let n=v.resolve(process.cwd(),e.docsDir||`docs`),r=i(n),a=t,o,s=!1,c,u=[],d=()=>a,f=e=>{a=e},g=()=>o,_=()=>c;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){s=t.command===`build`;let r=!!(t.isSsrBuild||e.build?.ssr),i=e.envDir||process.cwd(),o=ne(t.mode,i,``);if(Object.assign(process.env,o),!a){a=await h(n);let e=(await l(n,a)).map(e=>e.path),t=(a.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t),m(a,n,void 0,e),p(e)}let d=(await import(`./package-DlgexgpQ.mjs`)).version,f=A(a.plugins||[],d);return a.plugins=f,c=new nt(f,a),u=f.flatMap(e=>e.vitePlugins||[]),s&&await c.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:s},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:$(`react-router-dom`)},{find:`react-helmet-async`,replacement:$(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:$(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...r?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...$t()],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){o=e},resolveId(e,t,n){let r=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`].find(t=>e===t||e.startsWith(t+`/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,v.sep)}/`));if(r&&n?.ssr){let t=e;if(!v.isAbsolute(e)){let n=Xt(Q);try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?$(e,n):n.resolve(e)}catch{try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?$(e,Q):Q.resolve(e)}catch{}}}try{t=y.realpathSync(t)}catch{}return{id:t,external:!0}}return null},transformIndexHtml:{order:`pre`,handler(e){return Ve(e,a)}},async buildEnd(){let{pool:e}=await import(`./worker-pool-Kn4F9gDq.mjs`);await e.terminate()},async closeBundle(){!s||o?.build?.ssr||(await c?.runHook(`afterBuild`),await c?.runHook(`buildEnd`))},configurePreviewServer(e){let t=o?.build?.outDir?v.resolve(o.root||process.cwd(),o.build.outDir):v.resolve(process.cwd(),`dist`);e.middlewares.use((e,n,r)=>{let i=e.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(v.extname(a))return r();let o=a.replace(/\/$/,``)||`/`,s=v.join(t,o,`index.html`);o!==`/`&&y.existsSync(s)&&(e.url=`${o}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()})}},kt(e,d,g,n),Gt(n,r,d,f,_),Yt(a,_),{...ae({includePublic:!0,png:{quality:80},jpeg:{quality:80},jpg:{quality:80},webp:{quality:80},avif:{quality:80},svg:{multipass:!0,plugins:[{name:`preset-default`}]}}),apply:`build`},...u]}_(import.meta.url);async function tn(e){let t=e?.docsDir||`docs`,n=await h(t),r=(await l(t,n)).map(e=>e.path),i=(n.base||`/docs`).replace(/\/$/,``);return r.includes(i)||r.push(i),m(n,t,void 0,r),p(r),en({...e},n)}async function nn(e,t=`development`){let n=await h(`docs`,e),r=(await l(`docs`,n)).map(e=>e.path),i=(n.base||`/docs`).replace(/\/$/,``);r.includes(i)||r.push(i),m(n,`docs`,e,r),p(r);let a=t===`production`,o=a?{...At}:{};return n.security?.enableCSP&&(o[`Content-Security-Policy`]=jt(n)),{root:e,mode:t,oxc:{jsx:{development:!a,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(),te(),...en({docsDir:`docs`,root:e},n)],resolve:{alias:[{find:`boltdocs/entry`,replacement:re(v.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:re(v.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`}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...$t()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,...n.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{headers:{...o,...n.vite?.server?.headers},...n.vite?.server},preview:{headers:{...o,...n.vite?.preview?.headers},...n.vite?.preview},...n.vite}}export{D as A,et as C,O as D,He as E,E as O,nt as S,A as T,mt as _,ce as a,z as b,_t as c,gt as d,wt as f,V as g,ht as h,Tt as i,Re as j,k,yt as l,H as m,nn as n,le as o,Ct as p,G as r,St as s,tn as t,vt as u,bt as v,We as w,M as x,xt as y};
@@ -1,6 +0,0 @@
1
- /**
2
- * Boltdocs - https://boltdocs.vercel.app
3
- * Copyright (c) 2026 Jesus Alcala
4
- * Licensed under the MIT License.
5
- */
6
- const e=require(`./routes-DpJnb2VS.cjs`);exports.generateRoutes=e.t;
@@ -1,6 +0,0 @@
1
- /**
2
- * Boltdocs - https://boltdocs.vercel.app
3
- * Copyright (c) 2026 Jesus Alcala
4
- * Licensed under the MIT License.
5
- */
6
- import{t as e}from"./utils-BYITg7T5.mjs";import{n as t,t as n}from"./cache-BMUyNiiA.mjs";import r from"node:path";import{fdir as i}from"fdir";const a=new t({name:`routes`});function o(){a.invalidateAll(),n.clear()}function s(e){a.invalidate(e),n.invalidate(e)}function c(e){return e.sort((e,t)=>!e.group&&!t.group?l(e,t):e.group?t.group?e.group===t.group?l(e,t):u(e,t):1:-1)}function l(e,t){return e.sidebarPosition!==void 0&&t.sidebarPosition!==void 0?e.sidebarPosition-t.sidebarPosition:e.sidebarPosition===void 0?t.sidebarPosition===void 0?e.title.localeCompare(t.title):1:-1}function u(e,t){return e.groupPosition!==void 0&&t.groupPosition!==void 0?e.groupPosition-t.groupPosition:e.groupPosition===void 0?t.groupPosition===void 0?(e.groupTitle||e.group).localeCompare(t.groupTitle||t.group):1:-1}let d=null;const f=new Map;let p=null;function m(){d=null,f.clear(),o()}async function h(t,n,o,s=!1){if(p)return p;let l=(async()=>{let l=o||n?.base||`/docs`;await a.load(),f.clear();let u;if(!s&&d)u=d;else{let e=await new i().withFullPaths().filter(e=>e.endsWith(`.md`)||e.endsWith(`.mdx`)?!r.relative(t,e).replace(/\\/g,`/`).split(`/`).some(e=>e.startsWith(`_`)&&e!==`_index.md`&&e!==`_index.mdx`):!1).crawl(t).withPromise(),n=[/index\./i,/intro/i,/getting-started/i,/readme/i],a=e.map(e=>{let t=r.basename(e),i=n.findIndex(e=>e.test(t));return{f:e,score:i===-1?2**53-1:i}});a.sort((e,t)=>e.score-t.score),u=a.map(e=>e.f),d=u}a.pruneStale(new Set(u));let p=process.env.NODE_ENV===`test`||process.env.VITEST===`true`,m;if(p){let{parseDocFile:e}=await import(`./parser-9LqyiEnB.mjs`).then(e=>e.t);m=await Promise.all(u.map(async r=>{let i=a.get(r);if(i)return i;let o=await e(r,t,l,n);return a.set(r,o),o}))}else{let{pool:e}=await import(`./worker-pool-Kn4F9gDq.mjs`),r=n?{i18n:n.i18n,versions:n.versions}:void 0;m=await Promise.all(u.map(async n=>{let i=a.get(n);if(i)return i;let o=await e.parseFile(n,t,l,r);return a.set(n,o),o}))}a.save();let h=[],_=new Map;for(let e of m)if(!(process.env.NODE_ENV===`production`&&e.route.draft))if(e.inferredCollection){let t=e.inferredCollection;_.has(t)||_.set(t,[]),_.get(t).push(e)}else h.push(e);let v=new Map,y=[],b=n?.i18n?.defaultLocale||``;for(let t of h)if(t.isGroupIndex&&t.relativeDir&&y.push(t),t.relativeDir){let n=`${t.route.locale||b}:${t.relativeDir}`,r=v.get(n);r?r.position===void 0&&t.inferredGroupPosition!==void 0&&(r.position=t.inferredGroupPosition):(r={title:e(t.relativeDir),position:t.inferredGroupPosition},v.set(n,r))}for(let e of y){let t=`${e.route.locale||b}:${e.relativeDir}`,n=v.get(t);e.groupMeta&&(n.title=e.groupMeta.title,e.groupMeta.position!==void 0&&(n.position=e.groupMeta.position),e.groupMeta.icon&&(n.icon=e.groupMeta.icon))}if(n?.theme?.sidebarGroups){let t=n.i18n?Object.keys(n.i18n.locales):[b];for(let[r,i]of Object.entries(n.theme.sidebarGroups))for(let n of t){let t=`${n}:${r}`,a=v.get(t),o;typeof i.title==`string`?o=i.title:i.title&&(o=i.title[n]||i.title[b]),a?(o&&(a.title=o),i.icon&&(a.icon=i.icon)):v.set(t,{title:o||e(r),icon:i.icon})}}let x=Array(h.length);for(let t=0;t<h.length;t++){let n=h[t],r=n.relativeDir,i=n.route.locale||b,a=r?`${i}:${r}`:void 0,o=a?v.get(a):void 0,s;o&&(s=typeof o.title==`string`?o.title:o.title[i]||o.title[b]),x[t]={...n.route,group:r,groupTitle:s||(r?e(r):void 0),groupPosition:o?.position,groupIcon:o?.icon}}let S=[];for(let[,e]of _)for(let t of e)S.push({...t.route,collection:t.inferredCollection});S.sort((e,t)=>{let n=e.date?new Date(e.date).getTime():0;return(t.date?new Date(t.date).getTime():0)-n});let C=x;if(n?.i18n){let e=g(x,n,l);C=[...x,...e]}return[...c(C),...S]})();p=l;try{return await l}finally{p=null}}function g(e,t,n){let r=t.i18n.defaultLocale,i=Object.keys(t.i18n.locales),a=[],o=new Map,s=[];for(let t of e){let e=t.locale||r;o.has(e)||o.set(e,new Set),o.get(e).add(t.path),e===r&&s.push(t)}for(let e of i){let i=o.get(e)||new Set;for(let o of s){let s=_(o.path,r,e,n,t);s!==o.path&&(i.has(s)||a.push({...o,path:s,locale:e}))}}return a}function _(e,t,n,r,i){let a=`${e}:${n}`,o=f.get(a);if(o)return o;let s=r.startsWith(`/`)?r:`/`+r,c=s;if(i?.versions){let t=i.versions.prefix||``;for(let n of i.versions.versions){let r=`${s}/${t+n.path}`;if(e.startsWith(r)){c=r;break}let i=`${s}/${n.path}`;if(e.startsWith(i)){c=i;break}}}let l=e.substring(c.length),u=`/${t}`;if(l.startsWith(u+`/`))l=`/`+n+`/`+l.substring(u.length+1);else if(l===u)l=`/`+n;else if(l===`/`||l===``)l=`/`+n;else{let e=l.startsWith(`/`)?``:`/`;l=`/`+n+e+l}let d=c+l;return f.size>2e3&&f.clear(),f.set(a,d),d}export{s as i,m as n,a as r,h as t};
@@ -1,6 +0,0 @@
1
- /**
2
- * Boltdocs - https://boltdocs.vercel.app
3
- * Copyright (c) 2026 Jesus Alcala
4
- * Licensed under the MIT License.
5
- */
6
- import{t as e}from"./routes-DZpXqq1p.mjs";export{e as generateRoutes};