boltdocs 2.7.8 → 2.7.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +263 -0
- package/dist/{cache-DorPMFgW.cjs → cache-Ba-DZQNH.cjs} +1 -1
- package/dist/{cache-CQKlT4fI.mjs → cache-BuMZ58L5.mjs} +1 -1
- package/dist/chunk-CU-zTemE.cjs +6 -0
- package/dist/client/index.cjs +1 -1
- package/dist/client/index.js +1 -1
- package/dist/doctor-Be7Ly1oM.mjs +21 -0
- package/dist/{parser-Bh11BsdA.cjs → doctor-CrytFkqW.cjs} +1 -1
- package/dist/doctor-jMxWZyLJ.cjs +21 -0
- package/dist/generator-CHqxiQhF.cjs +21 -0
- package/dist/generator-ClVanhvi.mjs +21 -0
- package/dist/meta-loader-CWg2gnbY.mjs +6 -0
- package/dist/meta-loader-Cv9O0Pzl.cjs +6 -0
- package/dist/node/cli-entry.cjs +1 -1
- package/dist/node/cli-entry.mjs +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.mjs +1 -1
- package/dist/node/routes/worker.cjs +1 -1
- package/dist/node/routes/worker.mjs +1 -1
- package/dist/node-DtEDyN1u.cjs +111 -0
- package/dist/node-_1jhMGYx.mjs +111 -0
- package/dist/{package-DGLEx5yT.mjs → package--0Yf0t1N.mjs} +1 -1
- package/dist/{package-60UENucA.cjs → package-DrwtlXfk.cjs} +1 -1
- package/dist/{doctor-BQiQhCTl.cjs → parser-Aq8LoH-0.cjs} +1 -1
- package/dist/{parser-DYRzXWmA.cjs → parser-CdNbqN5y.cjs} +1 -1
- package/dist/parser-nE792MLO.mjs +6 -0
- package/dist/rolldown-runtime-fkIsjY3S.mjs +6 -0
- package/dist/{routes-Co1mRM58.cjs → routes-2k3tbUmC.cjs} +1 -1
- package/dist/routes-CpxZIsMM.mjs +6 -0
- package/dist/{routes-CHf76Ye4.cjs → routes-DP1vmWRj.cjs} +1 -1
- package/dist/utils-CG65J0Sc.mjs +7 -0
- package/dist/utils-CKunkU96.cjs +7 -0
- package/dist/{worker-pool-BwU8ckrg.cjs → worker-pool-Crbqgw5R.cjs} +1 -1
- package/package.json +3 -2
- package/src/client/ssg/create-routes.tsx +2 -0
- package/dist/chunk-Ds5LZdWN.cjs +0 -6
- package/dist/doctor-COpf35L2.cjs +0 -20
- package/dist/doctor-COxqQQQ8.mjs +0 -20
- package/dist/generator-DGW6pkCC.cjs +0 -22
- package/dist/generator-Dv3wEmhZ.mjs +0 -22
- package/dist/meta-loader-0gJ4PtBC.cjs +0 -6
- package/dist/meta-loader-9IpAHWDS.mjs +0 -6
- package/dist/node-BXd1xgio.mjs +0 -111
- package/dist/node-DWhzY9qh.cjs +0 -111
- package/dist/parser-DiHXWckn.mjs +0 -6
- package/dist/routes-D0KpEheM.mjs +0 -6
- package/dist/utils-BxNAXhZZ.mjs +0 -7
- package/dist/utils-Clzu7jvb.cjs +0 -7
- /package/dist/{worker-pool-Bd8Y9KDv.mjs → worker-pool-CGn7DrLb.mjs} +0 -0
package/dist/doctor-COpf35L2.cjs
DELETED
|
@@ -1,20 +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-Ds5LZdWN.cjs`),t=require(`./utils-Clzu7jvb.cjs`);let n=require(`vite`),r=require(`node:path`);r=e.n(r);let i=require(`fdir`),a=require(`fs`);a=e.n(a);let o=require(`zod`),s=require(`node:fs`);s=e.n(s);let c=require(`path`);c=e.n(c);let l=require(`picomatch`);l=e.n(l);let u=require(`node:readline`);u=e.n(u);let d=require(`fastest-levenshtein`);const f=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 p=o.z.enum([`fs:read`,`fs:write`,`vite:config`,`mdx:remark`,`mdx:rehype`,`components`,`hooks:build`,`hooks:dev`]),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(),permissions:o.z.array(p).optional(),remarkPlugins:o.z.array(o.z.any()).optional(),rehypePlugins:o.z.array(o.z.any()).optional(),vitePlugins:o.z.array(o.z.any()).optional(),components:o.z.record(o.z.string(),o.z.string()).optional(),hooks:o.z.record(o.z.string(),o.z.any()).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(f).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({ga4:x.optional(),gtm:S.optional()}),w=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:C.optional(),vite:o.z.record(o.z.string(),o.z.unknown()).optional()});function T(e,t,n=process.cwd()){let i=r.default.resolve(n,`.boltdocs`);s.default.existsSync(i)||s.default.mkdirSync(i,{recursive:!0});let a=e.i18n?Object.keys(e.i18n.locales):[],o=e.versions?e.versions.versions.map(e=>e.path):[],c=a.length>0?a.map(e=>`'${e}'`).join(` | `):`string`,l=o.length>0?o.map(e=>`'${e}'`).join(` | `):`string`,u=[`tsx`,`ts`,`jsx`,`js`],d=``,f=``;for(let e of u){let a=r.default.resolve(n,t,`mdx-components.${e}`);if(s.default.existsSync(a)){let e=r.default.join(n,t,`mdx-components`),a=r.default.relative(i,e).replace(/\\/g,`/`);d=`import type * as MdxComponentsModule from '${a.startsWith(`.`)?a:`./${a}`}'\n`,f=` MdxComponents: typeof MdxComponentsModule`;break}}let p=`// This file is automatically generated by Boltdocs.
|
|
7
|
-
// Do not edit this file manually.
|
|
8
|
-
|
|
9
|
-
${d}declare global {
|
|
10
|
-
namespace Boltdocs {
|
|
11
|
-
interface Types {
|
|
12
|
-
Locale: ${c}
|
|
13
|
-
Version: ${l}${f?`\n${f}`:``}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export {}
|
|
19
|
-
`;s.default.writeFileSync(r.default.resolve(i,`types.d.ts`),p)}function E(e){return e}const D=[`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.ts`];async function O(e,i=process.cwd()){let a=i,o={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`}}},c={};for(let e of D){let t=r.default.resolve(a,e);if(s.default.existsSync(t))try{let e=await(0,n.loadConfigFromFile)({command:`serve`,mode:`development`},t,a);if(e){c=e.config;break}}catch(t){console.warn(`[boltdocs] Failed to load config from ${e}:`,t)}}let l={title:c.title,description:c.description,logo:c.logo,favicon:c.favicon,navbar:c.navbar,sidebar:c.sidebar,sidebarGroups:c.theme?.sidebarGroups,socialLinks:c.socialLinks,githubRepo:c.githubRepo,tabs:c.tabs,codeTheme:c.codeTheme,communityHelp:c.communityHelp,version:c.version,editLink:c.editLink,...c.theme||{}},u=Object.fromEntries(Object.entries(l).filter(([e,t])=>t!==void 0));u.navbar&&=u.navbar.map(e=>({label:e.label||e.text||``,href:e.href||e.link||e.to||``,items:e.items}));let d={docsDir:r.default.resolve(e),theme:{...o.theme,...u},i18n:c.i18n?{...c.i18n,locales:Array.isArray(c.i18n.locales)?Object.fromEntries(c.i18n.locales.map(e=>[e,e])):c.i18n.locales}:void 0,versions:c.versions,siteUrl:c.siteUrl,base:c.base,seo:c.seo,plugins:c.plugins||[],robots:c.robots,security:c.security,integrations:c.integrations,vite:c.vite},f=w.safeParse(d);if(!f.success)throw new t._(`Invalid Boltdocs configuration:\n${f.error.issues.map(e=>` - ${e.path.join(`.`)}: ${e.message}`).join(`
|
|
20
|
-
`)}`);return f.data}async function k(e,t=process.cwd()){let n=await O(e,t);return T(n,e,t),n}var ee=e.t({box:()=>R,colors:()=>A,confirm:()=>j,divider:()=>L,error:()=>F,formatLog:()=>M,info:()=>N,success:()=>I,warn:()=>P});const A={reset:`\x1B[0m`,bold:`\x1B[1m`,red:`\x1B[31m`,green:`\x1B[32m`,yellow:`\x1B[33m`,blue:`\x1B[34m`,cyan:`\x1B[36m`,gray:`\x1B[90m`,dim:`\x1B[2m`,magenta:`\x1B[35m`};function j(e){let t=u.default.createInterface({input:process.stdin,output:process.stdout});return new Promise(n=>{t.question(`${M(e,A.yellow)} (y/N): `,e=>{t.close(),n(e.toLowerCase()===`y`||e.toLowerCase()===`yes`)})})}function M(e,t=``){return`${t}${A.bold}[boltdocs]${A.reset} ${e}${A.reset}`}function N(e){console.log(M(e))}function P(e){console.log(M(e,A.yellow))}function F(e,t){console.error(M(e,A.red)),t&&console.error(t)}function I(e){console.log(M(e,A.green))}function L(){console.log(A.gray+`─`.repeat(50)+A.reset)}function R(e){let t=`━`.repeat(e.length+4);console.log(`\n${A.cyan}┏${t}┓`),console.log(`┃ ${A.bold}${e}${A.reset}${A.cyan} ┃`),console.log(`┗${t}┛${A.reset}\n`)}const z={$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}},fix:{confirmChanges:!1,backupFiles:!1,backupPath:`.boltdocs/backups`},reporting:{format:`pretty`,outputFile:`.boltdocs/doctor-report.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`},exclude:[]};function B(e,t,n){return e.doctorConfig.severity[t]||n}async function te(e,t){s.default.existsSync(t)||s.default.mkdirSync(t,{recursive:!0});let n=r.default.basename(e),i=new Date().toISOString().replace(/[:.]/g,`-`),a=r.default.join(t,`${n}.${i}.bak`);s.default.copyFileSync(e,a)}const V=new Map;function H(e){let n=V.get(e);if(n)return n;let r=(async()=>{let n=await t.u(e,!1);return{raw:n.raw,data:n.data,content:n.content}})();return V.set(e,r),r}const U=new Map;function W(e){if(U.has(e))return U.get(e);let t=!1;try{t=s.default.existsSync(e)&&s.default.statSync(e).isFile()}catch{t=!1}return U.set(e,t),t}async function G(e){let t=r.default.resolve(e,`doctor.json`);if(s.default.existsSync(t))try{let e=JSON.parse(s.default.readFileSync(t,`utf-8`));return{...z,...e,checks:{...z.checks,...e.checks,metadata:{...z.checks.metadata,...e.checks?.metadata},links:{...z.checks.links,...e.checks?.links},i18n:{...z.checks.i18n,...e.checks?.i18n}},fix:{...z.fix,...e.fix},reporting:{...z.reporting,...e.reporting},severity:{...z.severity,...e.severity},exclude:[...z.exclude,...e.exclude||[]]}}catch(e){P(`Failed to parse doctor.json: ${e}`)}return z}async function K(e,n=process.cwd(),a,o){let c=r.default.resolve(n,`.boltdocs`);s.default.existsSync(c)||s.default.mkdirSync(c,{recursive:!0});let l=o;l||=await new i.fdir().withFullPaths().filter(e=>e.endsWith(`.md`)||e.endsWith(`.mdx`)).crawl(e).withPromise();let u=a?.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 H(i),s;return s=o.permalink?o.permalink.startsWith(`/`)?o.permalink:`/${o.permalink}`:t.i(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 s.default.writeFileSync(r.default.resolve(c,`link-tree.json`),JSON.stringify(f,null,2)),f}function ne(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,d.distance)(i,a)/Math.max(i.length,a.length);return o>.8?o*.95:1-(0,d.distance)(e,t)/Math.max(e.length,t.length)}const q=new Map;function J(e,t){if(q.has(e))return q.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=ne(e,a);c>i&&(i=c,r=a)}let a={bestMatch:r,similarity:i};return q.set(e,a),a}async function Y(e){let n=[];if(!e.doctorConfig.checks.metadata.enabled)return n;let{titleMin:r,titleMax:i,descriptionMin:a}=e.doctorConfig.checks.metadata,o=new Map;for(let s of e.files){let l=t.l(c.default.relative(e.docsDir,s));try{let{raw:c,data:u}=await H(s);if(c.trim().startsWith(`---`)&&c.split(`---`).length>=3&&Object.keys(u).length===0){let t=B(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.v.safeParse(u);if(!d.success){let t=B(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=B(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]&&isNaN(Date.parse(String(u[r])))){let t=B(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<r){let i=B(e,`shortMetadata`,`low`);i!==`off`&&n.push({file:l,level:i,message:`Title is too short (${t.length} chars).`,suggestion:`Titles should be at least ${r} characters for better SEO.`})}else if(t.length>i){let r=B(e,`shortMetadata`,`low`);r!==`off`&&n.push({file:l,level:r,message:`Title is too long (${t.length} chars).`,suggestion:`Titles should be under ${i} characters.`})}let a=o.get(t)||[];a.push(l),o.set(t,a)}if(u.description&&String(u.description).length<a){let t=B(e,`shortMetadata`,`low`);t!==`off`&&n.push({file:l,level:t,message:`Description is very short.`,suggestion:`Descriptions should ideally be at least ${a} characters.`})}}catch(t){let r=B(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 o.entries())if(r.length>1){let i=B(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 X(e){let n=[],{internal:r,external:i,ignore:o,timeout:s,concurrency:l}=e.doctorConfig.checks.links;if(!r&&!i&&!e.options.checkExternal)return n;let u=/(?:\[.*?\]\((.*?)\))|(?:href=["']([^"']+)["'])/g,d=new Set,f=5e5;for(let s of e.files){let l=t.l(c.default.relative(e.docsDir,s)),{content:p}=await H(s),m=[...(p.length>f?p.slice(0,f):p).matchAll(u)];for(let t of m){let u=t[1]||t[2],f=!!t[1];if(!u||o.some(e=>u.includes(e)))continue;if(/^https?:\/\//i.test(u)){(i||e.options.checkExternal)&&d.add({url:u,file:s});continue}if(!r||/^(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=c.default.join(e.docsDir,n),m=[``,`.md`,`.mdx`,`/index.md`,`/index.mdx`].some(e=>W(h+e))}}else h=c.default.resolve(c.default.dirname(s),p),m=[``,`.md`,`.mdx`,`/index.md`,`/index.mdx`].some(e=>W(h+e));if(!m){let{bestMatch:t,similarity:r}=J(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,d=r>.75&&t!==p||i,m=B(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:d?async()=>{let e=u.includes(`#`)?`#`+u.split(`#`)[1]:``,n=f?`(${u})`:`href="${u}"`,r=f?`(${t}${e})`:`href="${t}${e}"`,i=a.default.readFileSync(s,`utf-8`).replace(n,r);a.default.writeFileSync(s,i),V.delete(s)}:void 0})}}}if(d.size>0){N(`${A.gray}Verifying ${d.size} external links...${A.reset}`);let r=new Map;for(let e of d)r.has(e.url)||r.set(e.url,[]),r.get(e.url).push(e.file);let i=async e=>{try{let t=new AbortController,n=setTimeout(()=>t.abort(),s),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}}},a=Array.from(r.keys()),o=[];for(let e=0;e<a.length;e+=l){let t=a.slice(e,e+l),n=await Promise.allSettled(t.map(i));o.push(...n.map(e=>e.status===`fulfilled`?e.value:{url:`unknown`,ok:!1,error:e.reason}))}for(let i of o)if(!i.ok){let a=B(e,`brokenLink`,`warning`);if(a!==`off`){let o=r.get(i.url)||[];for(let r of o)n.push({file:t.l(c.default.relative(e.docsDir,r)),level:a,message:`Broken external link: "${i.url}"`,suggestion:`Verify the URL or update it if it's permanently down. Error: ${i.error||`Status >= 400`}`})}}}return n}async function Z(e){let n=[];if(!e.doctorConfig.checks.i18n.enabled||!e.config.i18n)return n;let{defaultLocale:r,locales:i}=e.config.i18n,o=Object.keys(i),s=o.filter(e=>e!==r);for(let i of e.files){let l=t.l(c.default.relative(e.docsDir,i)),u=l.split(`/`),d=u[0];if(d===r){let t=u.slice(1).join(`/`);for(let r of s){let o=c.default.join(e.docsDir,r,t);if(!W(o)){let s=B(e,`missingTranslation`,`warning`);s!==`off`&&n.push({file:l,level:s,message:`Missing translation for locale "${r}"`,suggestion:`Create a version at "${r}/${t}".`,fix:async()=>{let e=c.default.dirname(o);a.default.existsSync(e)||a.default.mkdirSync(e,{recursive:!0}),a.default.copyFileSync(i,o)}})}}}else if(o.includes(d)){let t=u.slice(1).join(`/`);if(!W(c.default.join(e.docsDir,r,t))){let o=B(e,`missingTranslation`,`low`);o!==`off`&&n.push({file:l,level:o,message:`Orphaned translation (source missing in "${r}")`,suggestion:`Remove this file or create the source at "${r}/${t}".`,fix:async()=>{a.default.unlinkSync(i)}})}}}return n}async function Q(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=B(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}=J(r.link,e.linkTree.routes),a=i>.6,o=B(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=B(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 $(e){let t=c.default.resolve(e,`doctor.json`);if(a.default.existsSync(t)){P(`"doctor.json" already exists at ${e}.`);return}try{a.default.writeFileSync(t,JSON.stringify(z,null,2)),I(`Created "doctor.json" with default configuration.`)}catch(e){F(`Failed to create "doctor.json": ${e}`)}}async function re(e=process.cwd(),t={}){if(t.init){await $(e);return}try{let n=await G(e),{format:r}=n.reporting,{colors:o}=ee;r===`pretty`&&R(`DOCTOR - Documentation Health Check`);let s=performance.now(),u=await O(`docs`,e),d=c.default.resolve(e,`docs`);a.default.existsSync(d)||(r===`pretty`&&F(`Docs dir not found at ${d}`),process.exit(1)),r===`pretty`&&N(`${A.dim}🔍 Discovering files and routes...${A.reset}`);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=c.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)U.set(e,!0);let m=await K(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};r===`pretty`&&N(`${A.dim}🧪 Running diagnostic checks in parallel...${A.reset}`);let[v,y,b,x]=await Promise.all([Y(_),X(_),Z(_),Q(_)]),S=[...v,...y,...b,...x],C=0;if(t.fix){for(let e of S)if(e.fix){if(_.doctorConfig.fix.confirmChanges&&!await j(`Fix issue in "${e.file}": ${e.message}?`))continue;if(_.doctorConfig.fix.backupFiles){let t=c.default.resolve(_.docsDir,e.file);a.default.existsSync(t)&&await te(t,c.default.resolve(_.root,_.doctorConfig.fix.backupPath))}await e.fix(),C++}}let w=((performance.now()-s)/1e3).toFixed(2),T=S.filter(e=>e.level===`high`).length,E=S.filter(e=>e.level===`warning`).length,D=S.filter(e=>e.level===`low`).length,k={summary:{total:S.length,high:T,warning:E,low:D,fixed:C,duration:w},issues:S.map(e=>({...e,fix:void 0}))};if(n.reporting.outputFile){let t=c.default.resolve(e,n.reporting.outputFile);a.default.existsSync(c.default.dirname(t))||a.default.mkdirSync(c.default.dirname(t),{recursive:!0}),a.default.writeFileSync(t,JSON.stringify(k,null,2))}if(r===`json`)console.log(JSON.stringify(k,null,2));else if(r===`pretty`){let e=S.reduce((e,t)=>(e[t.file]||(e[t.file]=[]),e[t.file].push(t),e),{});if(S.length>0){L();for(let[n,r]of Object.entries(e)){console.log(`\n${o.bold}${o.cyan}📄 ${n}${o.reset}`);for(let e of r){let n=e.level===`high`?`❌`:e.level===`warning`?`⚠️`:`ℹ️`,r=e.level===`high`?o.red:e.level===`warning`?o.yellow:o.blue;console.log(` ${n} ${r}${e.level.toUpperCase()}${o.reset}: ${e.message}`),e.suggestion&&console.log(` ${o.dim}💡 Suggestion: ${e.suggestion}${o.reset}`),t.fix&&e.fix&&console.log(` ${o.green}✅ Fixed automatically${o.reset}`)}}L()}S.length===0?I(`Everything looks perfect! Your documentation is in great shape. ✨`):(console.log(`\n${o.bold}Diagnosis Results (${w}s):${o.reset}`),T>0&&console.log(` ${o.red}● ${T} Critical Errors${o.reset}`),E>0&&console.log(` ${o.yellow}● ${E} Warnings${o.reset}`),D>0&&console.log(` ${o.blue}● ${D} Improvements${o.reset}`),C>0&&I(`Successfully fixed ${C} issues automatically!`),T>0?console.log(`\n${o.red}${o.bold}[boltdocs] Please fix the critical errors before building for production.${o.reset}`):I(`[boltdocs] No critical issues found. You are ready to go!`))}n.reporting.failOnError&&T>0&&process.exit(1),n.reporting.maxWarnings!==-1&&E>n.reporting.maxWarnings&&(r===`pretty`&&F(`Failed: Too many warnings (${E} > ${n.reporting.maxWarnings})`),process.exit(1))}catch(e){F(`Doctor failed: ${e}`),process.exit(1)}}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return F}});
|
package/dist/doctor-COxqQQQ8.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
-
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
import{_ as e,i as t,l as n,u as r,v as i}from"./utils-BxNAXhZZ.mjs";import"node:module";import{loadConfigFromFile as a}from"vite";import o from"node:path";import{fdir as s}from"fdir";import c from"fs";import{z as l}from"zod";import u from"node:fs";import d from"path";import f from"picomatch";import p from"node:readline";import{distance as m}from"fastest-levenshtein";var h=Object.defineProperty,g=(e,t)=>{let n={};for(var r in e)h(n,r,{get:e[r],enumerable:!0});return t||h(n,Symbol.toStringTag,{value:`Module`}),n};const _=l.object({icon:l.string().max(50),link:l.string().url()});l.object({text:l.string().max(2e3).optional()});const v=l.enum([`fs:read`,`fs:write`,`vite:config`,`mdx:remark`,`mdx:rehype`,`components`,`hooks:build`,`hooks:dev`]),y=l.object({name:l.string(),enforce:l.enum([`pre`,`post`]).optional(),version:l.string().optional(),boltdocsVersion:l.string().optional(),permissions:l.array(v).optional(),remarkPlugins:l.array(l.any()).optional(),rehypePlugins:l.array(l.any()).optional(),vitePlugins:l.array(l.any()).optional(),components:l.record(l.string(),l.string()).optional(),hooks:l.record(l.string(),l.any()).optional()}),b=l.object({title:l.union([l.string(),l.record(l.string(),l.string())]).optional(),description:l.union([l.string(),l.record(l.string(),l.string())]).optional(),logo:l.union([l.string(),l.object({dark:l.string(),light:l.string(),alt:l.string().optional(),width:l.number().optional(),height:l.number().optional()})]).optional(),navbar:l.array(l.object({label:l.union([l.string(),l.record(l.string(),l.string())]),href:l.string(),items:l.array(l.object({label:l.union([l.string(),l.record(l.string(),l.string())]),href:l.string()})).optional()})).optional(),sidebar:l.record(l.string(),l.array(l.object({text:l.string(),link:l.string()}))).optional(),sidebarGroups:l.record(l.string(),l.object({title:l.union([l.string(),l.record(l.string(),l.string())]).optional(),icon:l.string().optional()})).optional(),socialLinks:l.array(_).optional(),editLink:l.string().refine(e=>!e||e.includes(`:path`),{message:`editLink must contain ':path' placeholder if specified`}).optional(),communityHelp:l.string().url().optional(),version:l.string().max(50).optional(),githubRepo:l.string().max(100).optional(),favicon:l.string().optional(),tabs:l.array(l.object({id:l.string(),text:l.union([l.string(),l.record(l.string(),l.string())]),icon:l.string().optional()})).optional(),codeTheme:l.union([l.string(),l.object({light:l.string(),dark:l.string()})]).optional()}),x=l.union([l.string(),l.object({rules:l.array(l.object({userAgent:l.string(),allow:l.union([l.string(),l.array(l.string())]).optional(),disallow:l.union([l.string(),l.array(l.string())]).optional()})).optional(),sitemaps:l.array(l.string().url()).optional()})]),S=l.object({defaultLocale:l.string(),locales:l.union([l.record(l.string(),l.string()),l.array(l.string())]).transform(e=>Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e),localeConfigs:l.record(l.string(),l.object({label:l.string().optional(),direction:l.enum([`ltr`,`rtl`]).optional(),htmlLang:l.string().optional(),calendar:l.string().optional()})).optional()}),C=l.object({defaultVersion:l.string(),prefix:l.string().optional(),versions:l.array(l.object({label:l.string(),path:l.string()}))}),w=l.object({headers:l.record(l.string(),l.string()).optional(),enableCSP:l.boolean().optional(),customHeaders:l.record(l.string(),l.string()).optional()}),T=l.object({metatags:l.record(l.string(),l.string()).optional(),indexing:l.enum([`all`,`public`]).optional(),thumbnails:l.object({background:l.string().optional()}).optional()}),E=l.object({measurementId:l.string().min(1,`Measurement ID is required for GA4`),debug:l.boolean().optional(),anonymizeIp:l.boolean().optional(),sendPageView:l.boolean().optional(),cookieFlags:l.string().optional(),autoTrack:l.object({pageViews:l.boolean().optional(),downloads:l.boolean().optional(),externalLinks:l.boolean().optional(),search:l.boolean().optional()}).optional()}),D=l.object({tagId:l.string().min(1,`Tag ID is required for GTM`),dataLayerName:l.string().optional(),preview:l.string().optional()}),O=l.object({ga4:E.optional(),gtm:D.optional()}),ee=l.object({siteUrl:l.string().url().optional(),docsDir:l.string().optional(),base:l.string().optional(),theme:b.optional(),i18n:S.optional(),versions:C.optional(),plugins:l.array(y).optional(),robots:x.optional(),security:w.optional(),seo:T.optional(),integrations:O.optional(),vite:l.record(l.string(),l.unknown()).optional()});function k(e,t,n=process.cwd()){let r=o.resolve(n,`.boltdocs`);u.existsSync(r)||u.mkdirSync(r,{recursive:!0});let i=e.i18n?Object.keys(e.i18n.locales):[],a=e.versions?e.versions.versions.map(e=>e.path):[],s=i.length>0?i.map(e=>`'${e}'`).join(` | `):`string`,c=a.length>0?a.map(e=>`'${e}'`).join(` | `):`string`,l=[`tsx`,`ts`,`jsx`,`js`],d=``,f=``;for(let e of l){let i=o.resolve(n,t,`mdx-components.${e}`);if(u.existsSync(i)){let e=o.join(n,t,`mdx-components`),i=o.relative(r,e).replace(/\\/g,`/`);d=`import type * as MdxComponentsModule from '${i.startsWith(`.`)?i:`./${i}`}'\n`,f=` MdxComponents: typeof MdxComponentsModule`;break}}let p=`// This file is automatically generated by Boltdocs.
|
|
7
|
-
// Do not edit this file manually.
|
|
8
|
-
|
|
9
|
-
${d}declare global {
|
|
10
|
-
namespace Boltdocs {
|
|
11
|
-
interface Types {
|
|
12
|
-
Locale: ${s}
|
|
13
|
-
Version: ${c}${f?`\n${f}`:``}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export {}
|
|
19
|
-
`;u.writeFileSync(o.resolve(r,`types.d.ts`),p)}function te(e){return e}const A=[`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.ts`];async function j(t,n=process.cwd()){let r=n,i={docsDir:o.resolve(t),theme:{title:`Boltdocs`,description:`A Vite documentation framework`,navbar:[{label:`Home`,href:`/`},{label:`Documentation`,href:`/docs`}],codeTheme:{light:`github-light`,dark:`github-dark`}}},s={};for(let e of A){let t=o.resolve(r,e);if(u.existsSync(t))try{let e=await a({command:`serve`,mode:`development`},t,r);if(e){s=e.config;break}}catch(t){console.warn(`[boltdocs] Failed to load config from ${e}:`,t)}}let c={title:s.title,description:s.description,logo:s.logo,favicon:s.favicon,navbar:s.navbar,sidebar:s.sidebar,sidebarGroups:s.theme?.sidebarGroups,socialLinks:s.socialLinks,githubRepo:s.githubRepo,tabs:s.tabs,codeTheme:s.codeTheme,communityHelp:s.communityHelp,version:s.version,editLink:s.editLink,...s.theme||{}},l=Object.fromEntries(Object.entries(c).filter(([e,t])=>t!==void 0));l.navbar&&=l.navbar.map(e=>({label:e.label||e.text||``,href:e.href||e.link||e.to||``,items:e.items}));let d={docsDir:o.resolve(t),theme:{...i.theme,...l},i18n:s.i18n?{...s.i18n,locales:Array.isArray(s.i18n.locales)?Object.fromEntries(s.i18n.locales.map(e=>[e,e])):s.i18n.locales}:void 0,versions:s.versions,siteUrl:s.siteUrl,base:s.base,seo:s.seo,plugins:s.plugins||[],robots:s.robots,security:s.security,integrations:s.integrations,vite:s.vite},f=ee.safeParse(d);if(!f.success)throw new e(`Invalid Boltdocs configuration:\n${f.error.issues.map(e=>` - ${e.path.join(`.`)}: ${e.message}`).join(`
|
|
20
|
-
`)}`);return f.data}async function ne(e,t=process.cwd()){let n=await j(e,t);return k(n,e,t),n}var re=g({box:()=>B,colors:()=>M,confirm:()=>N,divider:()=>z,error:()=>L,formatLog:()=>P,info:()=>F,success:()=>R,warn:()=>I});const M={reset:`\x1B[0m`,bold:`\x1B[1m`,red:`\x1B[31m`,green:`\x1B[32m`,yellow:`\x1B[33m`,blue:`\x1B[34m`,cyan:`\x1B[36m`,gray:`\x1B[90m`,dim:`\x1B[2m`,magenta:`\x1B[35m`};function N(e){let t=p.createInterface({input:process.stdin,output:process.stdout});return new Promise(n=>{t.question(`${P(e,M.yellow)} (y/N): `,e=>{t.close(),n(e.toLowerCase()===`y`||e.toLowerCase()===`yes`)})})}function P(e,t=``){return`${t}${M.bold}[boltdocs]${M.reset} ${e}${M.reset}`}function F(e){console.log(P(e))}function I(e){console.log(P(e,M.yellow))}function L(e,t){console.error(P(e,M.red)),t&&console.error(t)}function R(e){console.log(P(e,M.green))}function z(){console.log(M.gray+`─`.repeat(50)+M.reset)}function B(e){let t=`━`.repeat(e.length+4);console.log(`\n${M.cyan}┏${t}┓`),console.log(`┃ ${M.bold}${e}${M.reset}${M.cyan} ┃`),console.log(`┗${t}┛${M.reset}\n`)}const V={$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}},fix:{confirmChanges:!1,backupFiles:!1,backupPath:`.boltdocs/backups`},reporting:{format:`pretty`,outputFile:`.boltdocs/doctor-report.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`},exclude:[]};function H(e,t,n){return e.doctorConfig.severity[t]||n}async function ie(e,t){u.existsSync(t)||u.mkdirSync(t,{recursive:!0});let n=o.basename(e),r=new Date().toISOString().replace(/[:.]/g,`-`),i=o.join(t,`${n}.${r}.bak`);u.copyFileSync(e,i)}const U=new Map;function W(e){let t=U.get(e);if(t)return t;let n=(async()=>{let t=await r(e,!1);return{raw:t.raw,data:t.data,content:t.content}})();return U.set(e,n),n}const G=new Map;function K(e){if(G.has(e))return G.get(e);let t=!1;try{t=u.existsSync(e)&&u.statSync(e).isFile()}catch{t=!1}return G.set(e,t),t}async function q(e){let t=o.resolve(e,`doctor.json`);if(u.existsSync(t))try{let e=JSON.parse(u.readFileSync(t,`utf-8`));return{...V,...e,checks:{...V.checks,...e.checks,metadata:{...V.checks.metadata,...e.checks?.metadata},links:{...V.checks.links,...e.checks?.links},i18n:{...V.checks.i18n,...e.checks?.i18n}},fix:{...V.fix,...e.fix},reporting:{...V.reporting,...e.reporting},severity:{...V.severity,...e.severity},exclude:[...V.exclude,...e.exclude||[]]}}catch(e){I(`Failed to parse doctor.json: ${e}`)}return V}async function J(e,n=process.cwd(),r,i){let a=o.resolve(n,`.boltdocs`);u.existsSync(a)||u.mkdirSync(a,{recursive:!0});let c=i;c||=await new s().withFullPaths().filter(e=>e.endsWith(`.md`)||e.endsWith(`.mdx`)).crawl(e).withPromise();let l=r?.base||`/docs`,d=[];for(let n=0;n<c.length;n+=100){let r=c.slice(n,n+100),i=await Promise.all(r.map(async n=>{let r=o.isAbsolute(n)?n:o.resolve(e,n),i=o.relative(e,r),{data:a}=await W(r),s;return s=a.permalink?a.permalink.startsWith(`/`)?a.permalink:`/${a.permalink}`:t(i),l===`/`?s:(l.endsWith(`/`)?l:l+`/`)+(s.startsWith(`/`)?s.substring(1):s)}));d.push(...i)}d.includes(l)||d.push(l);let f={routes:Array.from(new Set(d)).sort(),timestamp:Date.now()};return u.writeFileSync(o.resolve(a,`link-tree.json`),JSON.stringify(f,null,2)),f}function ae(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-m(i,a)/Math.max(i.length,a.length);return o>.8?o*.95:1-m(e,t)/Math.max(e.length,t.length)}const Y=new Map;function X(e,t){if(Y.has(e))return Y.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=ae(e,a);c>i&&(i=c,r=a)}let a={bestMatch:r,similarity:i};return Y.set(e,a),a}async function Z(e){let t=[];if(!e.doctorConfig.checks.metadata.enabled)return t;let{titleMin:r,titleMax:a,descriptionMin:o}=e.doctorConfig.checks.metadata,s=new Map;for(let c of e.files){let l=n(d.relative(e.docsDir,c));try{let{raw:n,data:u}=await W(c);if(n.trim().startsWith(`---`)&&n.split(`---`).length>=3&&Object.keys(u).length===0){let n=H(e,`malformedFrontmatter`,`high`);n!==`off`&&t.push({file:l,level:n,message:`Malformed frontmatter (YAML parsing failed).`,suggestion:`Check your YAML syntax for indentation or unquoted special characters.`})}let d=i.safeParse(u);if(!d.success){let n=H(e,`invalidFrontmatter`,`high`);if(n!==`off`)for(let e of d.error.issues)t.push({file:l,level:n,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 n of f)if(u[n]===void 0){let r=H(e,`missingMetadata`,`warning`);r!==`off`&&t.push({file:l,level:r,message:`Missing required frontmatter field: "${n}".`,suggestion:`Add the "${n}" field to your frontmatter.`})}if(e.doctorConfig.checks.metadata.validateDates){let n=[`date`,`lastUpdated`,...e.doctorConfig.checks.metadata.optional.filter(e=>e.toLowerCase().includes(`date`))];for(let r of n)if(u[r]&&isNaN(Date.parse(String(u[r])))){let n=H(e,`invalidFrontmatter`,`high`);n!==`off`&&t.push({file:l,level:n,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 n=String(u.title);if(n.length<r){let i=H(e,`shortMetadata`,`low`);i!==`off`&&t.push({file:l,level:i,message:`Title is too short (${n.length} chars).`,suggestion:`Titles should be at least ${r} characters for better SEO.`})}else if(n.length>a){let r=H(e,`shortMetadata`,`low`);r!==`off`&&t.push({file:l,level:r,message:`Title is too long (${n.length} chars).`,suggestion:`Titles should be under ${a} characters.`})}let i=s.get(n)||[];i.push(l),s.set(n,i)}if(u.description&&String(u.description).length<o){let n=H(e,`shortMetadata`,`low`);n!==`off`&&t.push({file:l,level:n,message:`Description is very short.`,suggestion:`Descriptions should ideally be at least ${o} characters.`})}}catch(n){let r=H(e,`malformedFrontmatter`,`high`);r!==`off`&&t.push({file:l,level:r,message:`Malformed frontmatter (YAML error): ${n.message}`,suggestion:`Check your YAML syntax for indentation or unquoted special characters.`})}}for(let[n,r]of s.entries())if(r.length>1){let i=H(e,`duplicateTitle`,`low`);if(i!==`off`)for(let e of r)t.push({file:e,level:i,message:`Duplicate title found: "${n}"`,suggestion:`Ensure each page has a unique title. Also used in: ${r.filter(t=>t!==e).join(`, `)}`})}return t}async function Q(e){let t=[],{internal:r,external:i,ignore:a,timeout:o,concurrency:s}=e.doctorConfig.checks.links;if(!r&&!i&&!e.options.checkExternal)return t;let l=/(?:\[.*?\]\((.*?)\))|(?:href=["']([^"']+)["'])/g,u=new Set,f=5e5;for(let o of e.files){let s=n(d.relative(e.docsDir,o)),{content:p}=await W(o),m=[...(p.length>f?p.slice(0,f):p).matchAll(l)];for(let n of m){let l=n[1]||n[2],f=!!n[1];if(!l||a.some(e=>l.includes(e)))continue;if(/^https?:\/\//i.test(l)){(i||e.options.checkExternal)&&u.add({url:l,file:o});continue}if(!r||/^(mailto|tel|#)/i.test(l))continue;let p;try{p=decodeURIComponent(l.split(`#`)[0].split(`?`)[0])}catch{p=l.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=d.join(e.docsDir,n),m=[``,`.md`,`.mdx`,`/index.md`,`/index.mdx`].some(e=>K(h+e))}}else h=d.resolve(d.dirname(o),p),m=[``,`.md`,`.mdx`,`/index.md`,`/index.mdx`].some(e=>K(h+e));if(!m){let{bestMatch:n,similarity:r}=X(p,e.linkTree.routes),i=!1,a=e.basePrefix+(p.startsWith(`/`)?p:`/`+p);(e.routeIndex.has(a)||e.routeIndexWithSlash.has(a))&&(n=a,r=1,i=!0);let u=r>.6||i,d=r>.75&&n!==p||i,m=H(e,`brokenLink`,`high`);m!==`off`&&t.push({file:s,level:m,message:`Broken internal link: "${l}"`,suggestion:u?`Did you mean "${n}"?`:`Ensure the target exists or check for typos.`,fix:d?async()=>{let e=l.includes(`#`)?`#`+l.split(`#`)[1]:``,t=f?`(${l})`:`href="${l}"`,r=f?`(${n}${e})`:`href="${n}${e}"`,i=c.readFileSync(o,`utf-8`).replace(t,r);c.writeFileSync(o,i),U.delete(o)}:void 0})}}}if(u.size>0){F(`${M.gray}Verifying ${u.size} external links...${M.reset}`);let r=new Map;for(let e of u)r.has(e.url)||r.set(e.url,[]),r.get(e.url).push(e.file);let i=async e=>{try{let t=new AbortController,n=setTimeout(()=>t.abort(),o),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}}},a=Array.from(r.keys()),c=[];for(let e=0;e<a.length;e+=s){let t=a.slice(e,e+s),n=await Promise.allSettled(t.map(i));c.push(...n.map(e=>e.status===`fulfilled`?e.value:{url:`unknown`,ok:!1,error:e.reason}))}for(let i of c)if(!i.ok){let a=H(e,`brokenLink`,`warning`);if(a!==`off`){let o=r.get(i.url)||[];for(let r of o)t.push({file:n(d.relative(e.docsDir,r)),level:a,message:`Broken external link: "${i.url}"`,suggestion:`Verify the URL or update it if it's permanently down. Error: ${i.error||`Status >= 400`}`})}}}return t}async function $(e){let t=[];if(!e.doctorConfig.checks.i18n.enabled||!e.config.i18n)return t;let{defaultLocale:r,locales:i}=e.config.i18n,a=Object.keys(i),o=a.filter(e=>e!==r);for(let i of e.files){let s=n(d.relative(e.docsDir,i)),l=s.split(`/`),u=l[0];if(u===r){let n=l.slice(1).join(`/`);for(let r of o){let a=d.join(e.docsDir,r,n);if(!K(a)){let o=H(e,`missingTranslation`,`warning`);o!==`off`&&t.push({file:s,level:o,message:`Missing translation for locale "${r}"`,suggestion:`Create a version at "${r}/${n}".`,fix:async()=>{let e=d.dirname(a);c.existsSync(e)||c.mkdirSync(e,{recursive:!0}),c.copyFileSync(i,a)}})}}}else if(a.includes(u)){let n=l.slice(1).join(`/`);if(!K(d.join(e.docsDir,r,n))){let a=H(e,`missingTranslation`,`low`);a!==`off`&&t.push({file:s,level:a,message:`Orphaned translation (source missing in "${r}")`,suggestion:`Remove this file or create the source at "${r}/${n}".`,fix:async()=>{c.unlinkSync(i)}})}}}return t}async function oe(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=H(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}=X(r.link,e.linkTree.routes),a=i>.6,o=H(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=H(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}var se=g({DEFAULT_DOCTOR_CONFIG:()=>V,checkI18n:()=>$,checkLinks:()=>Q,checkMetadata:()=>Z,checkSidebar:()=>oe,doctorAction:()=>le,doctorInit:()=>ce,generateLinkTree:()=>J,loadDoctorConfig:()=>q});async function ce(e){let t=d.resolve(e,`doctor.json`);if(c.existsSync(t)){I(`"doctor.json" already exists at ${e}.`);return}try{c.writeFileSync(t,JSON.stringify(V,null,2)),R(`Created "doctor.json" with default configuration.`)}catch(e){L(`Failed to create "doctor.json": ${e}`)}}async function le(e=process.cwd(),t={}){if(t.init){await ce(e);return}try{let n=await q(e),{format:r}=n.reporting,{colors:i}=re;r===`pretty`&&B(`DOCTOR - Documentation Health Check`);let a=performance.now(),o=await j(`docs`,e),l=d.resolve(e,`docs`);c.existsSync(l)||(r===`pretty`&&L(`Docs dir not found at ${l}`),process.exit(1)),r===`pretty`&&F(`${M.dim}🔍 Discovering files and routes...${M.reset}`);let u=f(n.exclude||[]),p=await new s().withFullPaths().filter(e=>{if(!(e.endsWith(`.md`)||e.endsWith(`.mdx`)))return!1;let t=d.relative(l,e).replace(/\\/g,`/`),n=t.split(`/`).some(e=>e.startsWith(`_`)&&e!==`_index.md`&&e!==`_index.mdx`);return!u(t)&&!n}).crawl(l).withPromise();for(let e of p)G.set(e,!0);let m=await J(l,e,o,p),h=o.base||`/`,g=h===`/`?``:h.endsWith(`/`)?h.slice(0,-1):h,_={root:e,docsDir:l,config:o,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};r===`pretty`&&F(`${M.dim}🧪 Running diagnostic checks in parallel...${M.reset}`);let[v,y,b,x]=await Promise.all([Z(_),Q(_),$(_),oe(_)]),S=[...v,...y,...b,...x],C=0;if(t.fix){for(let e of S)if(e.fix){if(_.doctorConfig.fix.confirmChanges&&!await N(`Fix issue in "${e.file}": ${e.message}?`))continue;if(_.doctorConfig.fix.backupFiles){let t=d.resolve(_.docsDir,e.file);c.existsSync(t)&&await ie(t,d.resolve(_.root,_.doctorConfig.fix.backupPath))}await e.fix(),C++}}let w=((performance.now()-a)/1e3).toFixed(2),T=S.filter(e=>e.level===`high`).length,E=S.filter(e=>e.level===`warning`).length,D=S.filter(e=>e.level===`low`).length,O={summary:{total:S.length,high:T,warning:E,low:D,fixed:C,duration:w},issues:S.map(e=>({...e,fix:void 0}))};if(n.reporting.outputFile){let t=d.resolve(e,n.reporting.outputFile);c.existsSync(d.dirname(t))||c.mkdirSync(d.dirname(t),{recursive:!0}),c.writeFileSync(t,JSON.stringify(O,null,2))}if(r===`json`)console.log(JSON.stringify(O,null,2));else if(r===`pretty`){let e=S.reduce((e,t)=>(e[t.file]||(e[t.file]=[]),e[t.file].push(t),e),{});if(S.length>0){z();for(let[n,r]of Object.entries(e)){console.log(`\n${i.bold}${i.cyan}📄 ${n}${i.reset}`);for(let e of r){let n=e.level===`high`?`❌`:e.level===`warning`?`⚠️`:`ℹ️`,r=e.level===`high`?i.red:e.level===`warning`?i.yellow:i.blue;console.log(` ${n} ${r}${e.level.toUpperCase()}${i.reset}: ${e.message}`),e.suggestion&&console.log(` ${i.dim}💡 Suggestion: ${e.suggestion}${i.reset}`),t.fix&&e.fix&&console.log(` ${i.green}✅ Fixed automatically${i.reset}`)}}z()}S.length===0?R(`Everything looks perfect! Your documentation is in great shape. ✨`):(console.log(`\n${i.bold}Diagnosis Results (${w}s):${i.reset}`),T>0&&console.log(` ${i.red}● ${T} Critical Errors${i.reset}`),E>0&&console.log(` ${i.yellow}● ${E} Warnings${i.reset}`),D>0&&console.log(` ${i.blue}● ${D} Improvements${i.reset}`),C>0&&R(`Successfully fixed ${C} issues automatically!`),T>0?console.log(`\n${i.red}${i.bold}[boltdocs] Please fix the critical errors before building for production.${i.reset}`):R(`[boltdocs] No critical issues found. You are ready to go!`))}n.reporting.failOnError&&T>0&&process.exit(1),n.reporting.maxWarnings!==-1&&E>n.reporting.maxWarnings&&(r===`pretty`&&L(`Failed: Too many warnings (${E} > ${n.reporting.maxWarnings})`),process.exit(1))}catch(e){L(`Doctor failed: ${e}`),process.exit(1)}}export{A as a,te as c,g as d,R as i,k as l,J as n,j as o,L as r,ne as s,se as t,y as u};
|
|
@@ -1,22 +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-Ds5LZdWN.cjs`);let t=require(`node:path`);t=e.n(t);let n=require(`node:fs`);n=e.n(n);function r(e){return e.replace(/^v/,``).replace(/^\[|\]$/g,``)}function i(e){let t=e.match(/Thanks \[@(\w+)\]/);return t?t[1]:void 0}function a(e){let t=e.match(/Thanks \[@[^\]]+\]\(([^)]+)\)/);return t?t[1]:void 0}function o(e){let t=e.match(/\[`([a-f0-9]+)`\]/);return t?t[1]:void 0}function s(e){let t=e.match(/\[`[a-f0-9]+`\]\(([^)]+)\)/);return t?t[1]:void 0}function c(e,t){let n=e;return n=n.replace(/Thanks \[@[^\]]+\]\([^)]+\)/g,``),n=n.replace(/\[`[a-f0-9]+`\]\([^)]+\)/g,``),n=n.replace(/!\s*-/g,``),n=n.replace(/^-\s*/,``),n=n.replace(/^feat:\s*/i,``),n=n.replace(/^fix:\s*/i,``),n=n.replace(/^perf:\s*/i,``),n=n.replace(/^refactor:\s*/i,``),n=n.replace(/^docs:\s*/i,``),n=n.replace(/^chore:\s*/i,``),n=n.replace(/^\*\*[a-z]+(\([^)]+\))?:\*\*/gi,``),n.trim()}function l(e){let t=/^###\s+(Minor Changes|Major Changes|Patch Changes)/m.test(e),n=/^##\s+v?(\d+\.\d+\.\d+)/m.test(e);return t&&n}function u(e,t){for(let n=t+1;n<Math.min(t+10,e.length);n++){let t=e[n].trim().toLowerCase();if(t.startsWith(`### major`))return`major`;if(t.startsWith(`### minor`))return`minor`;if(t.startsWith(`### patch`))return`patch`}return null}function d(e){let t=e.split(`
|
|
7
|
-
`),n=[],l=null,d=``;for(let e=0;e<t.length;e++){let f=t[e].trim(),p=f.match(/^##\s+v?(\d+\.\d+\.\d+)/);if(p){l&&n.push(l);let i=r(p[1]),a=`patch`,o,s=f.match(/\((\d{4}-\d{2}-\d{2})\)/);s&&(o=s[1]);let c=u(t,e);c&&(a=c),l={version:i,type:a,date:o,changes:[]},d=``;continue}let m=f.match(/^###\s+(.+)$/i);if(m){d=m[1].toLowerCase();continue}if(f.startsWith(`- `)&&l){let e=f.slice(2).trim(),t=`other`;d.includes(`feat`)||d.includes(`minor`)?t=`feat`:d.includes(`fix`)||d.includes(`patch`)?t=`fix`:d.includes(`perf`)?t=`perf`:d.includes(`refactor`)?t=`refactor`:d.includes(`docs`)||d.includes(`documentation`)?t=`docs`:d.includes(`chore`)&&(t=`chore`);let n={type:t,message:c(e,t),author:i(e),authorUrl:a(e),commit:o(e),commitUrl:s(e)};l.changes.push(n)}}return l&&n.push(l),n}const f={name:`changesets`,detect:l,parse:d},p={added:`feat`,changed:`refactor`,deprecated:`fix`,removed:`fix`,fixed:`fix`,security:`fix`};function m(e){let t=/^#\s+Changelog/i.test(e),n=/^##\s*\[[\d.]+\]\s*-\s*\d{4}-\d{2}-\d{2}/m.test(e),r=/^###\s+(Added|Changed|Deprecated|Removed|Fixed|Security)$/m.test(e);return t&&n&&r}function h(e){let t=e.split(`
|
|
8
|
-
`),n=[],l=null,u=``;for(let e=0;e<t.length;e++){let d=t[e].trim(),f=d.match(/^##\s*\[(\d+\.\d+\.\d+[^\]]*)\]\s*-\s*(\d{4}-\d{2}-\d{2})/);if(f){l&&n.push(l),l={version:r(f[1]),type:`patch`,date:f[2],changes:[]},u=``;continue}if(d.match(/^##\s*\[Unreleased\]/i)){l&&n.push(l),l={version:`unreleased`,type:`patch`,date:void 0,changes:[]},u=``;continue}let m=d.match(/^###\s+(Added|Changed|Deprecated|Removed|Fixed|Security)$/i);if(m){u=m[1].toLowerCase();continue}if((d.startsWith(`- `)||d.startsWith(`* `))&&l){let e=d.slice(2).trim(),t=p[u]||`other`,n={type:t,message:c(e,t),author:i(e),authorUrl:a(e),commit:o(e),commitUrl:s(e)};l.changes.push(n)}}return l&&n.push(l),n}const g={name:`keep-a-changelog`,detect:m,parse:h},_={features:`feat`,"breaking changes":`feat`,breaking:`feat`,"bug fixes":`fix`,bugfixes:`fix`,fixes:`fix`,performance:`perf`,"build system":`chore`,builds:`chore`,tests:`chore`,chores:`chore`,documentation:`docs`,docs:`docs`,revert:`fix`,reverts:`fix`,refactor:`refactor`,"code refactoring":`refactor`};function v(e){let t=/^###\s+(Features|Bug Fixes|BREAKING CHANGES|Build System|Tests|Chores|Documentation|Reverts)/m.test(e),n=/^\*\*[a-z]+(\([^)]+\))?:\*\*/m.test(e),r=/^##\s*\[[\d.]+\]\([^)]+\)\s*\(\d{4}-\d{2}-\d{2}\)/m.test(e);return t&&(n||r)}function y(e){let t=e.split(`
|
|
9
|
-
`),n=[],l=null,u=``;for(let e=0;e<t.length;e++){let d=t[e].trim(),f=d.match(/^##\s*\[(\d+\.\d+\.\d+[^\]]*)\]\([^)]+\)\s*\((\d{4}-\d{2}-\d{2})\)/);if(f){l&&n.push(l);let i=r(f[1]),a=`patch`;for(let n=e+1;n<Math.min(e+20,t.length);n++){let e=t[n].toLowerCase();if(e.includes(`major`)||e.includes(`breaking`)){a=`major`;break}(e.includes(`minor`)||e.includes(`feat`))&&(a=`minor`)}l={version:i,type:a,date:f[2],changes:[]},u=``;continue}let p=d.match(/^###\s+(.+)$/i);if(p){u=p[1].toLowerCase();continue}if((d.startsWith(`- `)||d.startsWith(`* `))&&l){let e=d.slice(2).trim(),t=_[u]||`other`,n={type:t,message:c(e,t),author:i(e),authorUrl:a(e),commit:o(e),commitUrl:s(e)};l.changes.push(n)}}return l&&n.push(l),n}const b={name:`semantic-release`,detect:v,parse:y},x={features:`feat`,"breaking changes":`feat`,breaking:`feat`,"bug fixes":`fix`,fixes:`fix`,performance:`perf`,"build system":`chore`,builds:`chore`,tests:`chore`,chores:`chore`,documentation:`docs`,docs:`docs`,revert:`fix`,reverts:`fix`,refactor:`refactor`,"code refactoring":`refactor`};function S(e){let t=/^##\s+(\d+\.\d+\.\d+)\s*\((\d{4}-\d{2}-\d{2})\)/m.test(e),n=/^###\s+(Features|Bug Fixes|BREAKING CHANGES|Build System|Tests|Chores|Documentation)/m.test(e),r=/^[*-]\s+/m.test(e);return t&&n&&r}function C(e){let t=e.split(`
|
|
10
|
-
`),n=[],l=null,u=``;for(let e=0;e<t.length;e++){let d=t[e].trim(),f=d.match(/^##\s+(\d+\.\d+\.\d+)\s*\((\d{4}-\d{2}-\d{2})\)/);if(f){l&&n.push(l);let i=r(f[1]),a=`patch`;for(let n=e+1;n<Math.min(e+20,t.length);n++){let e=t[n].toLowerCase();if(e.includes(`major`)||e.includes(`breaking`)){a=`major`;break}(e.includes(`minor`)||e.includes(`feat`))&&(a=`minor`)}l={version:i,type:a,date:f[2],changes:[]},u=``;continue}let p=d.match(/^###\s+(.+)$/i);if(p){u=p[1].toLowerCase();continue}if((d.startsWith(`- `)||d.startsWith(`* `))&&l){let e=d.slice(2).trim(),t=x[u]||`other`,n={type:t,message:c(e,t),author:i(e),authorUrl:a(e),commit:o(e),commitUrl:s(e)};l.changes.push(n)}}return l&&n.push(l),n}const w=[g,b,{name:`standard-version`,detect:S,parse:C},f];function T(e){for(let t of w)if(t.detect(e))return{parser:t,name:t.name};return{parser:f,name:`changesets (fallback)`}}function E(e){let{parser:t}=T(e);return t?.parse(e)||[]}function D(e){return E(e)}function O(e){let r=t.default.resolve(e);if(!n.default.existsSync(r))throw Error(`Changelog file not found: ${r}`);return n.default.readFileSync(r,`utf-8`)}const k={feat:`Feature`,fix:`Bug Fix`,perf:`Performance`,refactor:`Refactor`,docs:`Documentation`,chore:`Chore`,other:`Other`};async function A(e,r={}){let i=t.default.resolve(r.output||`docs/changelog`),a=r.title||`Changelog`,o=r.inferTab!==!1,s=r.limit?Math.max(1,r.limit):void 0;console.log(`📄 Reading changelog from: ${e}`);let c=D(O(e));if(c.length===0){console.warn(`⚠️ No versions found in changelog`);return}let l=s?c.slice(0,s):c;n.default.existsSync(i)||(n.default.mkdirSync(i,{recursive:!0}),console.log(`📁 Created directory: ${i}`));for(let[e,r]of l.entries()){let s=j(r,a,o),c=`${e+1}.v${r.version}.md`,l=t.default.join(i,c);n.default.writeFileSync(l,s,`utf-8`),console.log(`✅ Generated: ${c}`)}let u=s&&s<c.length?`${s} of ${c.length} versions`:`${c.length} versions`;console.log(`\n✨ Generated ${u} changelog pages in ${i}`),console.log(`
|
|
11
|
-
📝 Add this to your navbar in boltdocs.config.ts:`),console.log(` { label: '${a}', href: '/changelog' }`)}function j(e,t,n){let r=e.type.charAt(0).toUpperCase()+e.type.slice(1),i=M(e.changes),a=`---
|
|
12
|
-
title: v${e.version}
|
|
13
|
-
badge: "${r}"
|
|
14
|
-
description: Changelog version ${e.version}${e.date?` (${e.date})`:``}
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# ${t} v${e.version}
|
|
18
|
-
|
|
19
|
-
${e.date?`**Released:** ${e.date}`:``}
|
|
20
|
-
|
|
21
|
-
`;for(let[e,t]of Object.entries(i)){if(t.length===0)continue;let n=k[e]||e;a+=`## ${n}\n\n`;for(let e of t)a+=`- ${e.message}\n`,e.author&&(e.authorUrl?a+=` - **Author:** [@${e.author}](${e.authorUrl})\n`:a+=` - **Author:** @${e.author}\n`),e.commit&&(e.commitUrl?a+=` - **Commit:** [\`${e.commit.slice(0,7)}\`](${e.commitUrl})\n`:a+=` - **Commit:** \`${e.commit.slice(0,7)}\`\n`);a+=`
|
|
22
|
-
`}return a}function M(e){let t={feat:[],fix:[],perf:[],refactor:[],docs:[],chore:[],other:[]};for(let n of e)t[t[n.type]?n.type:`other`].push(n);return t}exports.generateChangelog=A;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
-
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
import e from"node:path";import t from"node:fs";function n(e){return e.replace(/^v/,``).replace(/^\[|\]$/g,``)}function r(e){let t=e.match(/Thanks \[@(\w+)\]/);return t?t[1]:void 0}function i(e){let t=e.match(/Thanks \[@[^\]]+\]\(([^)]+)\)/);return t?t[1]:void 0}function a(e){let t=e.match(/\[`([a-f0-9]+)`\]/);return t?t[1]:void 0}function o(e){let t=e.match(/\[`[a-f0-9]+`\]\(([^)]+)\)/);return t?t[1]:void 0}function s(e,t){let n=e;return n=n.replace(/Thanks \[@[^\]]+\]\([^)]+\)/g,``),n=n.replace(/\[`[a-f0-9]+`\]\([^)]+\)/g,``),n=n.replace(/!\s*-/g,``),n=n.replace(/^-\s*/,``),n=n.replace(/^feat:\s*/i,``),n=n.replace(/^fix:\s*/i,``),n=n.replace(/^perf:\s*/i,``),n=n.replace(/^refactor:\s*/i,``),n=n.replace(/^docs:\s*/i,``),n=n.replace(/^chore:\s*/i,``),n=n.replace(/^\*\*[a-z]+(\([^)]+\))?:\*\*/gi,``),n.trim()}function c(e){let t=/^###\s+(Minor Changes|Major Changes|Patch Changes)/m.test(e),n=/^##\s+v?(\d+\.\d+\.\d+)/m.test(e);return t&&n}function l(e,t){for(let n=t+1;n<Math.min(t+10,e.length);n++){let t=e[n].trim().toLowerCase();if(t.startsWith(`### major`))return`major`;if(t.startsWith(`### minor`))return`minor`;if(t.startsWith(`### patch`))return`patch`}return null}function u(e){let t=e.split(`
|
|
7
|
-
`),c=[],u=null,d=``;for(let e=0;e<t.length;e++){let f=t[e].trim(),p=f.match(/^##\s+v?(\d+\.\d+\.\d+)/);if(p){u&&c.push(u);let r=n(p[1]),i=`patch`,a,o=f.match(/\((\d{4}-\d{2}-\d{2})\)/);o&&(a=o[1]);let s=l(t,e);s&&(i=s),u={version:r,type:i,date:a,changes:[]},d=``;continue}let m=f.match(/^###\s+(.+)$/i);if(m){d=m[1].toLowerCase();continue}if(f.startsWith(`- `)&&u){let e=f.slice(2).trim(),t=`other`;d.includes(`feat`)||d.includes(`minor`)?t=`feat`:d.includes(`fix`)||d.includes(`patch`)?t=`fix`:d.includes(`perf`)?t=`perf`:d.includes(`refactor`)?t=`refactor`:d.includes(`docs`)||d.includes(`documentation`)?t=`docs`:d.includes(`chore`)&&(t=`chore`);let n={type:t,message:s(e,t),author:r(e),authorUrl:i(e),commit:a(e),commitUrl:o(e)};u.changes.push(n)}}return u&&c.push(u),c}const d={name:`changesets`,detect:c,parse:u},f={added:`feat`,changed:`refactor`,deprecated:`fix`,removed:`fix`,fixed:`fix`,security:`fix`};function p(e){let t=/^#\s+Changelog/i.test(e),n=/^##\s*\[[\d.]+\]\s*-\s*\d{4}-\d{2}-\d{2}/m.test(e),r=/^###\s+(Added|Changed|Deprecated|Removed|Fixed|Security)$/m.test(e);return t&&n&&r}function m(e){let t=e.split(`
|
|
8
|
-
`),c=[],l=null,u=``;for(let e=0;e<t.length;e++){let d=t[e].trim(),p=d.match(/^##\s*\[(\d+\.\d+\.\d+[^\]]*)\]\s*-\s*(\d{4}-\d{2}-\d{2})/);if(p){l&&c.push(l),l={version:n(p[1]),type:`patch`,date:p[2],changes:[]},u=``;continue}if(d.match(/^##\s*\[Unreleased\]/i)){l&&c.push(l),l={version:`unreleased`,type:`patch`,date:void 0,changes:[]},u=``;continue}let m=d.match(/^###\s+(Added|Changed|Deprecated|Removed|Fixed|Security)$/i);if(m){u=m[1].toLowerCase();continue}if((d.startsWith(`- `)||d.startsWith(`* `))&&l){let e=d.slice(2).trim(),t=f[u]||`other`,n={type:t,message:s(e,t),author:r(e),authorUrl:i(e),commit:a(e),commitUrl:o(e)};l.changes.push(n)}}return l&&c.push(l),c}const h={name:`keep-a-changelog`,detect:p,parse:m},g={features:`feat`,"breaking changes":`feat`,breaking:`feat`,"bug fixes":`fix`,bugfixes:`fix`,fixes:`fix`,performance:`perf`,"build system":`chore`,builds:`chore`,tests:`chore`,chores:`chore`,documentation:`docs`,docs:`docs`,revert:`fix`,reverts:`fix`,refactor:`refactor`,"code refactoring":`refactor`};function _(e){let t=/^###\s+(Features|Bug Fixes|BREAKING CHANGES|Build System|Tests|Chores|Documentation|Reverts)/m.test(e),n=/^\*\*[a-z]+(\([^)]+\))?:\*\*/m.test(e),r=/^##\s*\[[\d.]+\]\([^)]+\)\s*\(\d{4}-\d{2}-\d{2}\)/m.test(e);return t&&(n||r)}function v(e){let t=e.split(`
|
|
9
|
-
`),c=[],l=null,u=``;for(let e=0;e<t.length;e++){let d=t[e].trim(),f=d.match(/^##\s*\[(\d+\.\d+\.\d+[^\]]*)\]\([^)]+\)\s*\((\d{4}-\d{2}-\d{2})\)/);if(f){l&&c.push(l);let r=n(f[1]),i=`patch`;for(let n=e+1;n<Math.min(e+20,t.length);n++){let e=t[n].toLowerCase();if(e.includes(`major`)||e.includes(`breaking`)){i=`major`;break}(e.includes(`minor`)||e.includes(`feat`))&&(i=`minor`)}l={version:r,type:i,date:f[2],changes:[]},u=``;continue}let p=d.match(/^###\s+(.+)$/i);if(p){u=p[1].toLowerCase();continue}if((d.startsWith(`- `)||d.startsWith(`* `))&&l){let e=d.slice(2).trim(),t=g[u]||`other`,n={type:t,message:s(e,t),author:r(e),authorUrl:i(e),commit:a(e),commitUrl:o(e)};l.changes.push(n)}}return l&&c.push(l),c}const y={name:`semantic-release`,detect:_,parse:v},b={features:`feat`,"breaking changes":`feat`,breaking:`feat`,"bug fixes":`fix`,fixes:`fix`,performance:`perf`,"build system":`chore`,builds:`chore`,tests:`chore`,chores:`chore`,documentation:`docs`,docs:`docs`,revert:`fix`,reverts:`fix`,refactor:`refactor`,"code refactoring":`refactor`};function x(e){let t=/^##\s+(\d+\.\d+\.\d+)\s*\((\d{4}-\d{2}-\d{2})\)/m.test(e),n=/^###\s+(Features|Bug Fixes|BREAKING CHANGES|Build System|Tests|Chores|Documentation)/m.test(e),r=/^[*-]\s+/m.test(e);return t&&n&&r}function S(e){let t=e.split(`
|
|
10
|
-
`),c=[],l=null,u=``;for(let e=0;e<t.length;e++){let d=t[e].trim(),f=d.match(/^##\s+(\d+\.\d+\.\d+)\s*\((\d{4}-\d{2}-\d{2})\)/);if(f){l&&c.push(l);let r=n(f[1]),i=`patch`;for(let n=e+1;n<Math.min(e+20,t.length);n++){let e=t[n].toLowerCase();if(e.includes(`major`)||e.includes(`breaking`)){i=`major`;break}(e.includes(`minor`)||e.includes(`feat`))&&(i=`minor`)}l={version:r,type:i,date:f[2],changes:[]},u=``;continue}let p=d.match(/^###\s+(.+)$/i);if(p){u=p[1].toLowerCase();continue}if((d.startsWith(`- `)||d.startsWith(`* `))&&l){let e=d.slice(2).trim(),t=b[u]||`other`,n={type:t,message:s(e,t),author:r(e),authorUrl:i(e),commit:a(e),commitUrl:o(e)};l.changes.push(n)}}return l&&c.push(l),c}const C=[h,y,{name:`standard-version`,detect:x,parse:S},d];function w(e){for(let t of C)if(t.detect(e))return{parser:t,name:t.name};return{parser:d,name:`changesets (fallback)`}}function T(e){let{parser:t}=w(e);return t?.parse(e)||[]}function E(e){return T(e)}function D(n){let r=e.resolve(n);if(!t.existsSync(r))throw Error(`Changelog file not found: ${r}`);return t.readFileSync(r,`utf-8`)}const O={feat:`Feature`,fix:`Bug Fix`,perf:`Performance`,refactor:`Refactor`,docs:`Documentation`,chore:`Chore`,other:`Other`};async function k(n,r={}){let i=e.resolve(r.output||`docs/changelog`),a=r.title||`Changelog`,o=r.inferTab!==!1,s=r.limit?Math.max(1,r.limit):void 0;console.log(`📄 Reading changelog from: ${n}`);let c=E(D(n));if(c.length===0){console.warn(`⚠️ No versions found in changelog`);return}let l=s?c.slice(0,s):c;t.existsSync(i)||(t.mkdirSync(i,{recursive:!0}),console.log(`📁 Created directory: ${i}`));for(let[n,r]of l.entries()){let s=A(r,a,o),c=`${n+1}.v${r.version}.md`,l=e.join(i,c);t.writeFileSync(l,s,`utf-8`),console.log(`✅ Generated: ${c}`)}let u=s&&s<c.length?`${s} of ${c.length} versions`:`${c.length} versions`;console.log(`\n✨ Generated ${u} changelog pages in ${i}`),console.log(`
|
|
11
|
-
📝 Add this to your navbar in boltdocs.config.ts:`),console.log(` { label: '${a}', href: '/changelog' }`)}function A(e,t,n){let r=e.type.charAt(0).toUpperCase()+e.type.slice(1),i=j(e.changes),a=`---
|
|
12
|
-
title: v${e.version}
|
|
13
|
-
badge: "${r}"
|
|
14
|
-
description: Changelog version ${e.version}${e.date?` (${e.date})`:``}
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# ${t} v${e.version}
|
|
18
|
-
|
|
19
|
-
${e.date?`**Released:** ${e.date}`:``}
|
|
20
|
-
|
|
21
|
-
`;for(let[e,t]of Object.entries(i)){if(t.length===0)continue;let n=O[e]||e;a+=`## ${n}\n\n`;for(let e of t)a+=`- ${e.message}\n`,e.author&&(e.authorUrl?a+=` - **Author:** [@${e.author}](${e.authorUrl})\n`:a+=` - **Author:** @${e.author}\n`),e.commit&&(e.commitUrl?a+=` - **Commit:** [\`${e.commit.slice(0,7)}\`](${e.commitUrl})\n`:a+=` - **Commit:** \`${e.commit.slice(0,7)}\`\n`);a+=`
|
|
22
|
-
`}return a}function j(e){let t={feat:[],fix:[],perf:[],refactor:[],docs:[],chore:[],other:[]};for(let n of e)t[t[n.type]?n.type:`other`].push(n);return t}export{k as generateChangelog};
|
|
@@ -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(`./chunk-Ds5LZdWN.cjs`);let t=require(`node:path`);t=e.n(t);let n=require(`fdir`),r=require(`node:fs/promises`);r=e.n(r);async function i(e){let i={};try{let a=(await new n.fdir().withFullPaths().filter(e=>e.endsWith(`meta.json`)).crawl(e).withPromise()).filter(e=>{let n=t.default.basename(e);return n===`meta.json`||n===`_meta.json`}),o=await Promise.allSettled(a.map(async n=>{let i=await r.default.readFile(n,`utf-8`),a=t.default.relative(e,t.default.dirname(n)).replace(/\\/g,`/`);return{key:a===``?`.`:a,content:JSON.parse(i)}}));for(let e of o)e.status===`fulfilled`?i[e.value.key]=e.value.content:console.warn(`[Boltdocs] Failed to read meta.json:`,e.reason)}catch(e){console.error(`[Boltdocs] Error loading directory metadata:`,e)}return i}exports.loadDirectoryMeta=i;
|
|
@@ -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 e from"node:path";import{fdir as t}from"fdir";import n from"node:fs/promises";async function r(r){let i={};try{let a=(await new t().withFullPaths().filter(e=>e.endsWith(`meta.json`)).crawl(r).withPromise()).filter(t=>{let n=e.basename(t);return n===`meta.json`||n===`_meta.json`}),o=await Promise.allSettled(a.map(async t=>{let i=await n.readFile(t,`utf-8`),a=e.relative(r,e.dirname(t)).replace(/\\/g,`/`);return{key:a===``?`.`:a,content:JSON.parse(i)}}));for(let e of o)e.status===`fulfilled`?i[e.value.key]=e.value.content:console.warn(`[Boltdocs] Failed to read meta.json:`,e.reason)}catch(e){console.error(`[Boltdocs] Error loading directory metadata:`,e)}return i}export{r as loadDirectoryMeta};
|
package/dist/node-BXd1xgio.mjs
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
-
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
import{a as e,l as t,n,s as r,u as i}from"./doctor-COxqQQQ8.mjs";import{l as a,n as o,s,u as c}from"./utils-BxNAXhZZ.mjs";import{r as l}from"./cache-CQKlT4fI.mjs";import{i as u,n as d,t as f}from"./routes-D0KpEheM.mjs";import*as p from"node:module";import{createRequire as m}from"node:module";import h from"@vitejs/plugin-react";import g from"@tailwindcss/vite";import{loadEnv as ee,normalizePath as _}from"vite";import v from"node:path";import y from"fs";import{z as b}from"zod";import x from"node:fs";import S from"node:crypto";import{ViteImageOptimizer as te}from"vite-plugin-image-optimizer";import ne from"semver";import C from"path";import{fileURLToPath as re}from"node:url";import ie from"@mdx-js/rollup";import ae from"remark-gfm";import oe from"remark-frontmatter";import se from"rehype-slug";import{visit as ce}from"unist-util-visit";import{createJavaScriptRegexEngine as le}from"shiki/engine/javascript";import{createHighlighterCore as ue}from"shiki/core";import de from"@shikijs/themes/github-light";import fe from"@shikijs/themes/github-dark";import pe from"@shikijs/themes/tokyo-night";import me from"@shikijs/themes/dracula";import he from"@shikijs/themes/nord";import ge from"@shikijs/themes/one-dark-pro";import _e from"@shikijs/themes/one-light";import ve from"@shikijs/langs/html";import ye from"@shikijs/langs/js";import be from"@shikijs/langs/ts";import xe from"@shikijs/langs/tsx";import Se from"@shikijs/langs/css";import Ce from"@shikijs/langs/json";import we from"@shikijs/langs/bash";import Te from"@shikijs/langs/markdown";import Ee from"@shikijs/langs/mdx";import De from"@shikijs/langs/yaml";import Oe from"@shikijs/langs/rust";import ke from"@shikijs/langs/toml";import Ae from"@shikijs/langs/csv";function w(e){return e.map(e=>({path:e.path,filePath:e.filePath,title:e.title,description:e.description||``,sidebarPosition:e.sidebarPosition,badge:e.badge,icon:e.icon,headings:e.headings||[],_content:e._content||``,_rawContent:e._rawContent||``,locale:e.locale,version:e.version,tab:e.tab,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}))}function je(e,t){let n=(t.siteUrl||``).replace(/\/$/,``);if(!n)return``;let r=t.seo?.indexing!==`all`&&t.seo?.indexing!==`public`;return`<?xml version="1.0" encoding="UTF-8"?>
|
|
7
|
-
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
8
|
-
${e.filter(e=>e.seo?.noindex||typeof e.seo?.robots==`string`&&e.seo.robots.includes(`noindex`)?!1:(r&&e.seo?.index,!0)).map(e=>` <url>
|
|
9
|
-
<loc>${o(`${n}${e.path.startsWith(`/`)?e.path:`/${e.path}`}`)}</loc>
|
|
10
|
-
<changefreq>weekly</changefreq>
|
|
11
|
-
<priority>0.7</priority>
|
|
12
|
-
</url>`).join(`
|
|
13
|
-
`)}
|
|
14
|
-
</urlset>`}function Me(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(`
|
|
15
|
-
`);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(`
|
|
16
|
-
`)+`
|
|
17
|
-
`:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
|
|
18
|
-
`)+`
|
|
19
|
-
`:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
|
|
20
|
-
|
|
21
|
-
`),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
|
|
22
|
-
`);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
|
|
23
|
-
`)}function T(e){return`<!doctype html>
|
|
24
|
-
<html lang="en">
|
|
25
|
-
<head>
|
|
26
|
-
<meta charset="UTF-8" />
|
|
27
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
28
|
-
<title>${e.theme?.title||`Boltdocs`}</title>
|
|
29
|
-
</head>
|
|
30
|
-
<body>
|
|
31
|
-
<div id="root"></div>
|
|
32
|
-
</body>
|
|
33
|
-
</html>`}function E(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=T(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">`,`<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(`
|
|
34
|
-
`);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=`
|
|
35
|
-
<!-- Google tag (gtag.js) - ${e.measurementId} -->
|
|
36
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=${e.measurementId}"><\/script>
|
|
37
|
-
<script>
|
|
38
|
-
window.dataLayer = window.dataLayer || [];
|
|
39
|
-
function gtag(){dataLayer.push(arguments);}
|
|
40
|
-
gtag('js', new Date());
|
|
41
|
-
${t}
|
|
42
|
-
gtag('config', '${e.measurementId}', ${n}${r});
|
|
43
|
-
<\/script>
|
|
44
|
-
`}}let c=``,l=``;if(t.integrations?.gtm){let e=t.integrations.gtm;if(process.env.NODE_ENV===`production`){let t=e.dataLayerName||`dataLayer`;c=`
|
|
45
|
-
<!-- Google Tag Manager -->
|
|
46
|
-
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
|
47
|
-
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
|
48
|
-
j=d.createElement(s),dl=l!='${t}'?'&l='+l:'';j.async=true;j.src=
|
|
49
|
-
'https://www.googletagmanager.com/gtm.js?id='+i+dl+'${e.preview?`>m_preview=${e.preview}`:``}';f.parentNode.insertBefore(j,f);
|
|
50
|
-
})(window,document,'script','${t}','${e.tagId}');<\/script>
|
|
51
|
-
<!-- End Google Tag Manager -->
|
|
52
|
-
`,l=`
|
|
53
|
-
<!-- Google Tag Manager (noscript) -->
|
|
54
|
-
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${e.tagId}"
|
|
55
|
-
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|
56
|
-
<!-- End Google Tag Manager (noscript) -->
|
|
57
|
-
`}}return e=e.replace(`</head>`,` ${o}\n
|
|
58
|
-
<script>
|
|
59
|
-
(function() {
|
|
60
|
-
try {
|
|
61
|
-
var stored = localStorage.getItem("boltdocs-theme");
|
|
62
|
-
var isDark =
|
|
63
|
-
stored === "dark" ||
|
|
64
|
-
(stored !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
65
|
-
document.documentElement.classList.toggle("dark", isDark);
|
|
66
|
-
document.documentElement.dataset.theme = isDark ? "dark" : "light";
|
|
67
|
-
} catch (e) {}
|
|
68
|
-
})();
|
|
69
|
-
<\/script>
|
|
70
|
-
\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>
|
|
71
|
-
</body>`)),e}var D=class e extends Error{pluginName;constructor(t,n){super(`[plugin:${t}] ${n}`),this.name=`PluginError`,this.pluginName=t,Object.setPrototypeOf(this,e.prototype)}},O=class e extends D{constructor(t,n){super(t,`Validation failed: ${n}`),this.name=`PluginValidationError`,Object.setPrototypeOf(this,e.prototype)}},k=class e extends D{constructor(t,n){super(t,`Compatibility error: ${n}`),this.name=`PluginCompatibilityError`,Object.setPrototypeOf(this,e.prototype)}},A=class e extends D{constructor(t,n){super(t,`Missing required permission: '${n}'`),this.name=`PluginPermissionError`,Object.setPrototypeOf(this,e.prototype)}},j=class e extends D{hookName;constructor(t,n,r){super(t,`Error in hook '${n}': ${r.message}`),this.name=`PluginHookError`,this.hookName=n,this.stack=r.stack,Object.setPrototypeOf(this,e.prototype)}},M=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 N=i.extend({version:b.string().optional(),boltdocsVersion:b.string().optional(),permissions:b.array(b.string()).optional(),hooks:b.object({beforeBuild:b.function().optional(),afterBuild:b.function().optional(),beforeDev:b.function().optional(),afterDev:b.function().optional(),configResolved:b.function().optional(),buildEnd:b.function().optional()}).optional()});function P(e,t){let n=[],r=new Set;for(let i of e){let e=N.safeParse(i);if(!e.success)throw new O(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 O(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!ne.satisfies(t,a.boltdocsVersion))throw new k(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.isAbsolute(t))&&t.includes(`..`))throw new O(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`)}n.push(a)}return n}function F(e,t){return e.permissions?e.permissions.includes(t):!1}var I=class e{static checkPermission(e,t){if(!F(e,t))throw new A(e.name,t)}static getSanitizedCapabilities(e){return{remarkPlugins:F(e,`mdx:remark`)?e.remarkPlugins:[],rehypePlugins:F(e,`mdx:rehype`)?e.rehypePlugins:[],vitePlugins:F(e,`vite:config`)?e.vitePlugins:[],components:F(e,`components`)?e.components:{}}}static async executeWithIsolation(t,n,r,i){try{return e.checkPermission(t,n),await i()}catch(e){if(e instanceof A){console.warn(`[boltdocs] Skipping hook '${r}' for plugin '${t.name}': ${e.message}`);return}throw e}}},Ne=class{plugins;config;store;constructor(e,t){this.plugins=e,this.config=t,this.store=new M}async runHook(e,...t){let n=this.getSortedPlugins();for(let r of n){if(!r.hooks?.[e])continue;let n=this.createContext(r),i=e.toLowerCase().includes(`build`),a=e.toLowerCase().includes(`dev`),o=i?`hooks:build`:a?`hooks:dev`:void 0;try{o?await I.executeWithIsolation(r,o,e,()=>r.hooks[e](n,...t)):await r.hooks[e](n,...t)}catch(t){let i=new j(r.name,e,t instanceof Error?t:Error(String(t)));n.logger.error(i)}}}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]}createContext(e){return{config:Object.freeze({...this.config}),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=>console.log(`${t} INFO: ${e}`),warn:e=>console.warn(`${t} WARN: ${e}`),error:e=>{let n=e instanceof Error?e.message:e;console.error(`${t} ERROR: ${n}`)},debug:e=>console.debug(`${t} DEBUG: ${e}`)}}};function Pe(e){return e}const L=v.dirname(re(import.meta.url));function R(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(R):e&&typeof e==`object`?Object.values(e).flatMap(R):[]}const Fe=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function Ie(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=R(Object.entries(n.frontmatter).filter(([e])=>!Fe.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 z(e,t,n=!1){let r=C.resolve(process.cwd(),`index.css`),i=y.existsSync(r)?`import './index.css';`:``,o=t?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],s=o.map(([e,t])=>`import * as _comp_${e} from '${a(t)}';
|
|
72
|
-
const ${e} = _comp_${e}.default || _comp_${e}['${e}'] || _comp_${e};`).join(`
|
|
73
|
-
`),c=o.map(([e])=>e).join(`, `),l=C.basename(e.docsDir||`docs`),u=C.resolve(process.cwd(),e.docsDir||`docs`),d=[`tsx`,`ts`,`jsx`,`js`].map(e=>C.resolve(u,`pages-external/index.${e}`)).find(e=>y.existsSync(e));return`
|
|
74
|
-
import { ViteReactSSG, createRoutes } from 'boltdocs/client';
|
|
75
|
-
import _routes from 'virtual:boltdocs-routes.ts';
|
|
76
|
-
import _config from 'virtual:boltdocs-config.ts';
|
|
77
|
-
import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx';
|
|
78
|
-
import _Layout from 'virtual:boltdocs-layout.tsx';
|
|
79
|
-
${i}
|
|
80
|
-
${s}
|
|
81
|
-
${d?`import * as _external_module from '${a(d)}';`:``}
|
|
82
|
-
|
|
83
|
-
const mdxModules = import.meta.glob('/${l}/**/*.{md,mdx}', { eager: true });
|
|
84
|
-
|
|
85
|
-
export const createRoot = ViteReactSSG(
|
|
86
|
-
{
|
|
87
|
-
routes: createRoutes({
|
|
88
|
-
routesData: _routes,
|
|
89
|
-
config: _config,
|
|
90
|
-
mdxModules,
|
|
91
|
-
Layout: _Layout,
|
|
92
|
-
${d?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``}
|
|
93
|
-
components: { ${c}${c?`, `:``} ...(_user_mdx_components || {}) },
|
|
94
|
-
}),
|
|
95
|
-
},
|
|
96
|
-
({ isClient }) => {
|
|
97
|
-
// Boltdocs initialization hook
|
|
98
|
-
if (isClient) {
|
|
99
|
-
// Client-side initialization
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
);
|
|
103
|
-
`}let B=null,V=null;function Le(){B=null,V=null}function Re(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`?a(v.resolve(t,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?a(v.resolve(t,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(i){let o=n()?.command===`build`,s=t();if(i.includes(`boltdocs-entry.tsx`)||i===`\0virtual:boltdocs-entry`)return z(e,s,o);if(i.includes(`boltdocs-client.mjs`)||i===`\0virtual:boltdocs-client.ts`||i===`virtual:boltdocs-client`){let e=L,t=e;for(;e!==v.parse(e).root;){if(x.existsSync(v.join(e,`package.json`))&&JSON.parse(x.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 '${a(x.existsSync(n)?n:r)}';`}if(!i.startsWith(`\0virtual:boltdocs-`))return;let c=i.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(c===`routes`){let e=w(await f(r,s));return`export default ${JSON.stringify(e,null,2)};`}if(c===`config`){if(B===null){let{loadDirectoryMeta:e}=await import(`./meta-loader-9IpAHWDS.mjs`);B=await e(r)}let e=B,t={base:s?.base,theme:s?.theme,i18n:s?.i18n,versions:s?.versions,siteUrl:s?.siteUrl,integrations:s?.integrations,plugins:s?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(c===`entry`)return z(e,s,o);if(c===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],t=null;for(let n of e){let e=v.resolve(r,`mdx-components.${n}`);if(x.existsSync(e)){t=e;break}}if(t){let e=a(t);return`import * as components from '${e}';
|
|
104
|
-
const mdxComponents = components.default || components;
|
|
105
|
-
export default mdxComponents;
|
|
106
|
-
export * from '${e}';`}return`export default {};`}if(c===`layout`){let e=[`tsx`,`jsx`],t=null;for(let n of e){let e=v.resolve(r,`layout.${n}`);if(x.existsSync(e)){t=e;break}}if(t)return`import UserLayout from '${a(t)}';
|
|
107
|
-
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(c===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],t=null;for(let n of e){let e=v.resolve(r,`icons.${n}`);if(x.existsSync(e)){t=e;break}}return t?`import * as icons from '${a(t)}';\nexport default icons;`:`export default {};`}if(c===`search`){if(!V){let e=Ie(await f(r,s));V=`export default ${JSON.stringify(e,null,2)};`}return V}if(c===`client`){let e=L,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`),i=v.join(e,`client/index.ts`);if(x.existsSync(n)){t=a(n);break}if(x.existsSync(r)){t=a(r);break}if(x.existsSync(i)){t=a(i);break}e=v.dirname(e)}if(!t)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${L}`);return`export * from '${t}';`}}}}const ze={"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 Be(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 H=new Map;async function Ve(e){try{let{data:t}=await c(e),n=JSON.stringify(t);return S.createHash(`md5`).update(n).digest(`hex`)}catch{return``}}function He(e){return H.get(e)}function Ue(e,t){H.set(e,t)}function We(e){H.delete(e)}function U(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function Ge(r,i,o,c,l){let f=new Map;return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(c){let p=l();await p?.runHook(`beforeDev`),n(r,process.cwd(),o()).catch(e=>{console.error(`[boltdocs] Failed to generate initial link tree:`,e)}),setTimeout(async()=>{try{let{generateRoutes:e}=await import(`./routes-D0KpEheM.mjs`).then(e=>e.r),t=await e(r,o());for(let e of t)if(e.filePath){let t=v.relative(process.cwd(),e.filePath).replace(/\\/g,`/`),n=t.startsWith(`/`)?t:`/${t}`;await c.transformRequest(n).catch(()=>{}),await new Promise(e=>setTimeout(e,50))}}catch{}},1e3),c.middlewares.use((e,t,n)=>{process.env.NODE_ENV===`production`&&Object.entries(ze).forEach(([e,n])=>{t.setHeader(e,n)});let r=o();r.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,Be(r)),n()}),c.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),c.middlewares.use(async(e,t,n)=>{let r=e.url?.split(`?`)[0]||`/`,i=e.headers.accept||``,a=o(),s=/\.(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.test(r);if(i.includes(`text/html`)&&!s){let n=T(a);n=E(n,a),n=await c.transformIndexHtml(e.url||`/`,n),t.statusCode=200,t.setHeader(`Content-Type`,`text/html`),t.end(n);return}n()});let m=e.map(e=>v.resolve(process.cwd(),e)),h=[`tsx`,`jsx`].map(e=>v.resolve(r,`layout.${e}`)),g=[`tsx`,`ts`,`jsx`,`js`],ee=g.map(e=>v.resolve(r,`mdx-components.${e}`)),_=g.map(e=>v.resolve(r,`pages-external/index.${e}`)),y=g.map(e=>v.resolve(r,`icons.${e}`));c.watcher.add([...m,...ee,...h,..._,...y]);let b=async(l,p)=>{try{let m=a(l);if(e.some(e=>m.endsWith(e))){c.restart();return}if(g.some(e=>m.endsWith(`mdx-components.${e}`))){t(o(),r),U(c,`mdx-components.tsx`),c.ws.send({type:`full-reload`});return}if(g.some(e=>m.endsWith(`icons.${e}`))){U(c,`icons.tsx`),c.ws.send({type:`full-reload`});return}if(m.endsWith(`layout.tsx`)||m.endsWith(`layout.jsx`)){U(c,`layout.tsx`),c.ws.send({type:`full-reload`});return}if(m.includes(`/pages-external/`)||m.includes(`\\pages-external\\`)){U(c,`entry`),c.ws.send({type:`full-reload`});return}if(!m.toLowerCase().startsWith(i.toLowerCase())||!s(m))return;if(p===`add`||p===`unlink`){p===`unlink`&&We(l),d(),Le();let e=o();t(e,r),U(c,`config`),U(c,`routes`),U(c,`search`),n(r,process.cwd(),e).catch(e=>{console.error(`[boltdocs] Failed to update link tree:`,e)}),c.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:e?.theme,i18n:e?.i18n,versions:e?.versions,siteUrl:e?.siteUrl}}),c.ws.send({type:`full-reload`});return}f.has(m)&&clearTimeout(f.get(m)),f.set(m,setTimeout(async()=>{f.delete(m);try{let e=He(l),t=await Ve(l);Ue(l,t),u(l),e!==void 0&&e!==t&&(U(c,`routes`),U(c,`search`));let n=a(v.relative(r,l)),i=c.moduleGraph.getModulesByFile(m);if(i)for(let e of i)c.moduleGraph.invalidateModule(e);c.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:m,relPath:n}})}catch(e){console.error(`[boltdocs] HMR error processing content change:`,e)}},150))}catch(e){console.error(`[boltdocs] HMR error during ${p} event:`,e)}};c.watcher.on(`add`,e=>b(e,`add`)),c.watcher.on(`unlink`,e=>b(e,`unlink`)),c.watcher.on(`change`,e=>b(e,`change`)),await p?.runHook(`afterDev`)},handleHotUpdate({file:e,server:t}){let n=a(e);if(n.toLowerCase().startsWith(i.toLowerCase())&&s(n))return[]}}}const W=p.createRequire(import.meta.url);function Ke(e){let t=v.dirname(e);for(;t&&t!==v.dirname(t);){let e=v.join(t,`package.json`);if(x.existsSync(e))return e;t=v.dirname(t)}return null}function qe(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 G(e,t=W){try{let{packageName:n,subpath:r}=qe(e),i;try{i=t.resolve(n+`/package.json`)}catch{i=Ke(t.resolve(n))||``}if(!i)throw Error(`Could not find package.json for ${n}`);let a=v.dirname(i),o=JSON.parse(x.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=s.import||s.default||s.require||``),s){let e=v.resolve(a,s);if(x.existsSync(e))return e}}catch{}return t.resolve(e)}function Je(){let e=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],t=[],n=W;try{let e=v.join(process.cwd(),`node_modules/boltdocs/package.json`);if(x.existsSync(e)){let t=x.realpathSync(e);n=p.createRequire(t)}else n=p.createRequire(v.join(process.cwd(),`package.json`))}catch{}for(let r of e)try{let e=``;e=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?G(r,n):n.resolve(r),e&&t.push(x.realpathSync(e))}catch{}if(n!==W)for(let n of e)try{let e=``;e=n===`@bdocs/ssg`||n===`react-router-dom`||n===`react-helmet-async`?G(n,W):W.resolve(n),e&&t.push(x.realpathSync(e))}catch{}for(let e of[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`]){try{t.push(x.realpathSync(n.resolve(e)))}catch{}if(n!==W)try{t.push(x.realpathSync(W.resolve(e)))}catch{}}return Array.from(new Set(t)).map(e=>a(e))}function Ye(e={},t){let n=v.resolve(process.cwd(),e.docsDir||`docs`),i=a(n),o=t,s,c=!1,l,u=[],d=()=>o;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){c=t.command===`build`;let i=!!(t.ssrBuild||t.ssr||e.build?.ssr),a=e.envDir||process.cwd(),s=ee(t.mode,a,``);Object.assign(process.env,s),o||=await r(n);let d=(await import(`./package-DGLEx5yT.mjs`)).version,p=P(o.plugins||[],d);return o.plugins=p,l=new Ne(p,o),u=p.flatMap(e=>I.getSanitizedCapabilities(e).vitePlugins||[]),c&&await l.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`},onFinished:async e=>{let t=je(w(await f(n,o)),o);t&&x.writeFileSync(v.join(e,`sitemap.xml`),t);let r=Me(o);x.writeFileSync(v.join(e,`robots.txt`),r)}},build:{ssrManifest:c},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:G(`react-router-dom`)},{find:`react-helmet-async`,replacement:G(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:G(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...i?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Je()],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[]}}},configResolved(e){s=e,l?.runHook(`configResolved`,o)},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=W;try{let e=v.join(process.cwd(),`node_modules/boltdocs/package.json`);if(x.existsSync(e)){let t=x.realpathSync(e);n=p.createRequire(t)}else n=p.createRequire(v.join(process.cwd(),`package.json`))}catch{}try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?G(e,n):n.resolve(e)}catch{try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?G(e,W):W.resolve(e)}catch{}}}try{t=x.realpathSync(t)}catch{}return{id:t,external:!0}}return null},transformIndexHtml:{order:`pre`,handler(e){return E(e,o)}},async buildEnd(){let{pool:e}=await import(`./worker-pool-Bd8Y9KDv.mjs`);await e.terminate()},async closeBundle(){!c||s?.build?.ssr||(await l?.runHook(`afterBuild`),await l?.runHook(`buildEnd`))},configurePreviewServer(e){let t=s?.build?.outDir?v.resolve(s.root||process.cwd(),s.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!==`/`&&x.existsSync(s)&&(e.url=`${o}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()})}},Re(e,d,()=>s,n),Ge(n,i,d,e=>{o=e},()=>l),{...te({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]}const K=new l(`mdx`),Xe=[de.default||de,fe.default||fe,pe.default||pe,me.default||me,he.default||he,ge.default||ge,_e.default||_e],Ze=[ve,ye,be,xe,Se,Ce,we,Te,Ee,De,Oe,ke,Ae];let Qe=null,q=null;const $e=()=>(Qe??=le(),Qe),et=async e=>q||(q=ue({themes:Xe,langs:Ze,engine:$e()}),q),J={JSX_FLOW_ELEMENT:`mdxJsxFlowElement`,JSX_TEXT_ELEMENT:`mdxJsxTextElement`,JSX_ATTRIBUTE:`mdxJsxAttribute`,ELEMENT:`element`,TEXT:`text`,CODE:`code`},tt={PRE:`pre`,CODE:`code`},Y={TITLE:`data-title`,LANG:`data-lang`,HIGHLIGHTED:`data-highlighted`,HIGHLIGHTED_HTML:`data-highlighted-html`},X={LINE_NUMBERS:`shiki-line-numbers`,WORD_WRAP:`shiki-word-wrap`,FALLBACK:`shiki-fallback`},nt={LIGHT:`github-light`,DARK:`github-dark`},Z={LANG:`plaintext`,MDX_DEFAULT_LANG:`text`},rt=(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,X.LINE_NUMBERS)}}},it=(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,X.WORD_WRAP)}}},at=()=>({name:`AddTitleProperty`,pre(e){let t=this.options.meta?.title;t&&(e.properties[Y.TITLE]=t)}}),ot=()=>({name:`AddLanguageProperty`,pre(e){e.properties[Y.LANG]=this.options.lang||Z.LANG}});function st(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 ct=class{config;constructor(e){this.config=e}getTheme(){return this.config?.theme?.codeTheme||{light:nt.LIGHT,dark:nt.DARK}}async getHighlighter(){return await et(this.getTheme())}getOptions(e,t){let n=this.getTheme(),r={},i=``;typeof t==`string`?(i=t,r=st(t)):t&&(r=t,i=t.__raw||``);let a={lang:e||Z.LANG,meta:{__raw:i,...r},transformers:[rt(),it(),at(),ot()]};return typeof n==`object`?a.themes={light:n.light,dark:n.dark}:a.theme=n,a}async render(e,t,n){try{let r=await this.getHighlighter(),i=this.getOptions(t,n);return r.codeToHtml(e,i)}catch(t){return console.error(`[ShikiAdapter] Failed to render code:`,t),`<pre class="${X.FALLBACK}"><code>${lt(e)}</code></pre>`}}};function lt(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}let Q=null,ut;function dt(e){let t=JSON.stringify(e?.theme?.codeTheme||null);return(Q===null||ut!==t)&&(Q=new ct(e),ut=t),Q}function ft(e){let t=dt(e);return async e=>{let n=await t.getHighlighter();ce(e,J.ELEMENT,e=>{if(e.tagName===tt.PRE&&e.children?.[0]?.type===J.ELEMENT&&e.children[0].tagName===tt.CODE){let r=e.children[0],i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),a=i?i.slice(9):Z.MDX_DEFAULT_LANG;if(a===`mermaid`)return;let o=r.children?.[0]?.value||``,s=st(r.properties?.metastring||r.data?.meta||``),c=t.getOptions(a,s),l=``;try{l=n.codeToHtml(o,c)}catch(e){console.error(`[rehypeShiki] Failed to highlight code block:`,e),l=`<pre class="${X.FALLBACK}"><code>${lt(o)}</code></pre>`}e.properties=e.properties||{},s.title&&(e.properties[Y.TITLE]=s.title),e.properties[Y.HIGHLIGHTED]=`true`,e.properties[Y.HIGHLIGHTED_HTML]=l,e.properties[Y.LANG]=a,e.children=[]}})}}function pt(){return e=>{ce(e,J.CODE,e=>{e.meta&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties.metastring=e.meta)})}}let mt=!1;function $(e,t=ie){let n=e?.plugins?.flatMap(e=>I.getSanitizedCapabilities(e).remarkPlugins||[])||[],r=e?.plugins?.flatMap(e=>I.getSanitizedCapabilities(e).rehypePlugins||[])||[],i=t({remarkPlugins:[ae,oe,pt,...n],rehypePlugins:[se,[ft,e],...r],jsxRuntime:`automatic`});return{...i,name:`vite-plugin-boltdocs-mdx`,async buildStart(){mt||=(await K.load(),!0),i.buildStart&&await i.buildStart.call(this)},async transform(e,t,n){let[r]=t.split(`?`);if(!r.endsWith(`.md`)&&!r.endsWith(`.mdx`))return i.transform?.call(this,e,t,n);let a=`${r}:${S.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,o=await K.getAsync(a);if(o)return{code:o,map:null};let s=await i.transform.call(this,e,r,n);return s&&typeof s==`object`&&s.code&&(process.env.NODE_ENV!==`production`&&(s.code+=`
|
|
108
|
-
if (import.meta.hot) {
|
|
109
|
-
import.meta.hot.accept();
|
|
110
|
-
}
|
|
111
|
-
`),K.set(a,s.code)),s},async buildEnd(){K.save(),await K.flush(),i.buildEnd&&await i.buildEnd.call(this)}}}m(import.meta.url);async function ht(e){let t=await r(e?.docsDir||`docs`);return[...Ye({...e},t),$(t)]}async function gt(e,t=`development`){let n=await r(`docs`,e),i=t===`production`,a=i?{...ze}:{};return n.security?.enableCSP&&(a[`Content-Security-Policy`]=Be(n)),{root:e,mode:t,oxc:{jsx:{development:!i,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[h(),g(),...Ye({docsDir:`docs`,root:e},n),$(n)],resolve:{alias:[{find:`boltdocs/entry`,replacement:_(v.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:_(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-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Je()],optimizeDeps:{include:[`react-fast-compare`,`invariant`,...n.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`]},server:{headers:{...a,...n.vite?.server?.headers},...n.vite?.server},preview:{headers:{...a,...n.vite?.preview?.headers},...n.vite?.preview},...n.vite}}export{Ne as a,F as c,k as d,D as f,O as h,Pe as i,P as l,A as m,gt as n,I as o,j as p,z as r,N as s,ht as t,M as u};
|
package/dist/node-DWhzY9qh.cjs
DELETED
|
@@ -1,111 +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-Ds5LZdWN.cjs`),t=require(`./utils-Clzu7jvb.cjs`),n=require(`./cache-DorPMFgW.cjs`),r=require(`./routes-Co1mRM58.cjs`),i=require(`./doctor-COpf35L2.cjs`);let a=require(`@vitejs/plugin-react`);a=e.n(a);let o=require(`@tailwindcss/vite`);o=e.n(o);let s=require(`vite`),c=require(`node:path`);c=e.n(c);let l=require(`fs`);l=e.n(l);let u=require(`zod`),d=require(`node:fs`);d=e.n(d);let f=require(`node:crypto`);f=e.n(f);let p=require(`vite-plugin-image-optimizer`),m=require(`semver`);m=e.n(m);let h=require(`path`);h=e.n(h);let g=require(`node:module`);g=e.n(g);let _=require(`@mdx-js/rollup`);_=e.n(_);let v=require(`remark-gfm`);v=e.n(v);let y=require(`remark-frontmatter`);y=e.n(y);let b=require(`rehype-slug`);b=e.n(b);let ee=require(`unist-util-visit`),te=require(`shiki/engine/javascript`),ne=require(`shiki/core`),x=require(`@shikijs/themes/github-light`);x=e.n(x);let S=require(`@shikijs/themes/github-dark`);S=e.n(S);let C=require(`@shikijs/themes/tokyo-night`);C=e.n(C);let w=require(`@shikijs/themes/dracula`);w=e.n(w);let T=require(`@shikijs/themes/nord`);T=e.n(T);let E=require(`@shikijs/themes/one-dark-pro`);E=e.n(E);let D=require(`@shikijs/themes/one-light`);D=e.n(D);let O=require(`@shikijs/langs/html`);O=e.n(O);let re=require(`@shikijs/langs/js`);re=e.n(re);let k=require(`@shikijs/langs/ts`);k=e.n(k);let A=require(`@shikijs/langs/tsx`);A=e.n(A);let j=require(`@shikijs/langs/css`);j=e.n(j);let M=require(`@shikijs/langs/json`);M=e.n(M);let ie=require(`@shikijs/langs/bash`);ie=e.n(ie);let ae=require(`@shikijs/langs/markdown`);ae=e.n(ae);let oe=require(`@shikijs/langs/mdx`);oe=e.n(oe);let se=require(`@shikijs/langs/yaml`);se=e.n(se);let N=require(`@shikijs/langs/rust`);N=e.n(N);let P=require(`@shikijs/langs/toml`);P=e.n(P);let F=require(`@shikijs/langs/csv`);F=e.n(F);function ce(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,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}))}function le(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"?>
|
|
7
|
-
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
8
|
-
${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>
|
|
9
|
-
<loc>${t.n(`${r}${e.path.startsWith(`/`)?e.path:`/${e.path}`}`)}</loc>
|
|
10
|
-
<changefreq>weekly</changefreq>
|
|
11
|
-
<priority>0.7</priority>
|
|
12
|
-
</url>`).join(`
|
|
13
|
-
`)}
|
|
14
|
-
</urlset>`}function ue(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(`
|
|
15
|
-
`);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(`
|
|
16
|
-
`)+`
|
|
17
|
-
`:t+=`Allow: ${e.allow}\n`),e.disallow&&(Array.isArray(e.disallow)?t+=e.disallow.map(e=>`Disallow: ${e}`).join(`
|
|
18
|
-
`)+`
|
|
19
|
-
`:t+=`Disallow: ${e.disallow}\n`),t.trim()}).join(`
|
|
20
|
-
|
|
21
|
-
`),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
|
|
22
|
-
`);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
|
|
23
|
-
`)}function de(e){return`<!doctype html>
|
|
24
|
-
<html lang="en">
|
|
25
|
-
<head>
|
|
26
|
-
<meta charset="UTF-8" />
|
|
27
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
28
|
-
<title>${e.theme?.title||`Boltdocs`}</title>
|
|
29
|
-
</head>
|
|
30
|
-
<body>
|
|
31
|
-
<div id="root"></div>
|
|
32
|
-
</body>
|
|
33
|
-
</html>`}function fe(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=de(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">`,`<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(`
|
|
34
|
-
`);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=`
|
|
35
|
-
<!-- Google tag (gtag.js) - ${e.measurementId} -->
|
|
36
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=${e.measurementId}"><\/script>
|
|
37
|
-
<script>
|
|
38
|
-
window.dataLayer = window.dataLayer || [];
|
|
39
|
-
function gtag(){dataLayer.push(arguments);}
|
|
40
|
-
gtag('js', new Date());
|
|
41
|
-
${t}
|
|
42
|
-
gtag('config', '${e.measurementId}', ${n}${r});
|
|
43
|
-
<\/script>
|
|
44
|
-
`}}let c=``,l=``;if(t.integrations?.gtm){let e=t.integrations.gtm;if(process.env.NODE_ENV===`production`){let t=e.dataLayerName||`dataLayer`;c=`
|
|
45
|
-
<!-- Google Tag Manager -->
|
|
46
|
-
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
|
47
|
-
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
|
48
|
-
j=d.createElement(s),dl=l!='${t}'?'&l='+l:'';j.async=true;j.src=
|
|
49
|
-
'https://www.googletagmanager.com/gtm.js?id='+i+dl+'${e.preview?`>m_preview=${e.preview}`:``}';f.parentNode.insertBefore(j,f);
|
|
50
|
-
})(window,document,'script','${t}','${e.tagId}');<\/script>
|
|
51
|
-
<!-- End Google Tag Manager -->
|
|
52
|
-
`,l=`
|
|
53
|
-
<!-- Google Tag Manager (noscript) -->
|
|
54
|
-
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=${e.tagId}"
|
|
55
|
-
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|
56
|
-
<!-- End Google Tag Manager (noscript) -->
|
|
57
|
-
`}}return e=e.replace(`</head>`,` ${o}\n
|
|
58
|
-
<script>
|
|
59
|
-
(function() {
|
|
60
|
-
try {
|
|
61
|
-
var stored = localStorage.getItem("boltdocs-theme");
|
|
62
|
-
var isDark =
|
|
63
|
-
stored === "dark" ||
|
|
64
|
-
(stored !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
65
|
-
document.documentElement.classList.toggle("dark", isDark);
|
|
66
|
-
document.documentElement.dataset.theme = isDark ? "dark" : "light";
|
|
67
|
-
} catch (e) {}
|
|
68
|
-
})();
|
|
69
|
-
<\/script>
|
|
70
|
-
\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>
|
|
71
|
-
</body>`)),e}var I=class e extends Error{pluginName;constructor(t,n){super(`[plugin:${t}] ${n}`),this.name=`PluginError`,this.pluginName=t,Object.setPrototypeOf(this,e.prototype)}},L=class e extends I{constructor(t,n){super(t,`Validation failed: ${n}`),this.name=`PluginValidationError`,Object.setPrototypeOf(this,e.prototype)}},pe=class e extends I{constructor(t,n){super(t,`Compatibility error: ${n}`),this.name=`PluginCompatibilityError`,Object.setPrototypeOf(this,e.prototype)}},R=class e extends I{constructor(t,n){super(t,`Missing required permission: '${n}'`),this.name=`PluginPermissionError`,Object.setPrototypeOf(this,e.prototype)}},me=class e extends I{hookName;constructor(t,n,r){super(t,`Error in hook '${n}': ${r.message}`),this.name=`PluginHookError`,this.hookName=n,this.stack=r.stack,Object.setPrototypeOf(this,e.prototype)}},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 ge=i._.extend({version:u.z.string().optional(),boltdocsVersion:u.z.string().optional(),permissions:u.z.array(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(),configResolved:u.z.function().optional(),buildEnd:u.z.function().optional()}).optional()});function _e(e,t){let n=[],r=new Set;for(let i of e){let e=ge.safeParse(i);if(!e.success)throw new L(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 L(a.name,`Duplicate plugin name detected`);if(r.add(a.name),a.boltdocsVersion&&!m.default.satisfies(t,a.boltdocsVersion))throw new pe(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(`..`)||h.default.isAbsolute(t))&&t.includes(`..`))throw new L(a.name,`Component '${e}' has an invalid path: traversal sequences are not allowed.`)}n.push(a)}return n}function z(e,t){return e.permissions?e.permissions.includes(t):!1}var B=class e{static checkPermission(e,t){if(!z(e,t))throw new R(e.name,t)}static getSanitizedCapabilities(e){return{remarkPlugins:z(e,`mdx:remark`)?e.remarkPlugins:[],rehypePlugins:z(e,`mdx:rehype`)?e.rehypePlugins:[],vitePlugins:z(e,`vite:config`)?e.vitePlugins:[],components:z(e,`components`)?e.components:{}}}static async executeWithIsolation(t,n,r,i){try{return e.checkPermission(t,n),await i()}catch(e){if(e instanceof R){console.warn(`[boltdocs] Skipping hook '${r}' for plugin '${t.name}': ${e.message}`);return}throw e}}},ve=class{plugins;config;store;constructor(e,t){this.plugins=e,this.config=t,this.store=new he}async runHook(e,...t){let n=this.getSortedPlugins();for(let r of n){if(!r.hooks?.[e])continue;let n=this.createContext(r),i=e.toLowerCase().includes(`build`),a=e.toLowerCase().includes(`dev`),o=i?`hooks:build`:a?`hooks:dev`:void 0;try{o?await B.executeWithIsolation(r,o,e,()=>r.hooks[e](n,...t)):await r.hooks[e](n,...t)}catch(t){let i=new me(r.name,e,t instanceof Error?t:Error(String(t)));n.logger.error(i)}}}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]}createContext(e){return{config:Object.freeze({...this.config}),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=>console.log(`${t} INFO: ${e}`),warn:e=>console.warn(`${t} WARN: ${e}`),error:e=>{let n=e instanceof Error?e.message:e;console.error(`${t} ERROR: ${n}`)},debug:e=>console.debug(`${t} DEBUG: ${e}`)}}};function ye(e){return e}function V(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(V):e&&typeof e==`object`?Object.values(e).flatMap(V):[]}const be=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function xe(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=V(Object.entries(n.frontmatter).filter(([e])=>!be.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 H(e,n,r=!1){let i=h.default.resolve(process.cwd(),`index.css`),a=l.default.existsSync(i)?`import './index.css';`:``,o=n?.plugins?.flatMap(e=>Object.entries(e.components||{}))||[],s=o.map(([e,n])=>`import * as _comp_${e} from '${t.l(n)}';
|
|
72
|
-
const ${e} = _comp_${e}.default || _comp_${e}['${e}'] || _comp_${e};`).join(`
|
|
73
|
-
`),c=o.map(([e])=>e).join(`, `),u=h.default.basename(e.docsDir||`docs`),d=h.default.resolve(process.cwd(),e.docsDir||`docs`),f=[`tsx`,`ts`,`jsx`,`js`].map(e=>h.default.resolve(d,`pages-external/index.${e}`)).find(e=>l.default.existsSync(e));return`
|
|
74
|
-
import { ViteReactSSG, createRoutes } from 'boltdocs/client';
|
|
75
|
-
import _routes from 'virtual:boltdocs-routes.ts';
|
|
76
|
-
import _config from 'virtual:boltdocs-config.ts';
|
|
77
|
-
import _user_mdx_components from 'virtual:boltdocs-mdx-components.tsx';
|
|
78
|
-
import _Layout from 'virtual:boltdocs-layout.tsx';
|
|
79
|
-
${a}
|
|
80
|
-
${s}
|
|
81
|
-
${f?`import * as _external_module from '${t.l(f)}';`:``}
|
|
82
|
-
|
|
83
|
-
const mdxModules = import.meta.glob('/${u}/**/*.{md,mdx}', { eager: true });
|
|
84
|
-
|
|
85
|
-
export const createRoot = ViteReactSSG(
|
|
86
|
-
{
|
|
87
|
-
routes: createRoutes({
|
|
88
|
-
routesData: _routes,
|
|
89
|
-
config: _config,
|
|
90
|
-
mdxModules,
|
|
91
|
-
Layout: _Layout,
|
|
92
|
-
${f?`externalPages: _external_module.pages, externalLayout: _external_module.layout,`:``}
|
|
93
|
-
components: { ${c}${c?`, `:``} ...(_user_mdx_components || {}) },
|
|
94
|
-
}),
|
|
95
|
-
},
|
|
96
|
-
({ isClient }) => {
|
|
97
|
-
// Boltdocs initialization hook
|
|
98
|
-
if (isClient) {
|
|
99
|
-
// Client-side initialization
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
);
|
|
103
|
-
`}let U=null,W=null;function Se(){U=null,W=null}function Ce(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.l(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.l(c.default.resolve(n,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(o){let s=i()?.command===`build`,l=n();if(o.includes(`boltdocs-entry.tsx`)||o===`\0virtual:boltdocs-entry`)return H(e,l,s);if(o.includes(`boltdocs-client.mjs`)||o===`\0virtual:boltdocs-client.ts`||o===`virtual:boltdocs-client`){let e=__dirname,n=e;for(;e!==c.default.parse(e).root;){if(d.default.existsSync(c.default.join(e,`package.json`))&&JSON.parse(d.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.l(d.default.existsSync(r)?r:i)}';`}if(!o.startsWith(`\0virtual:boltdocs-`))return;let u=o.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(u===`routes`){let e=ce(await r.t(a,l));return`export default ${JSON.stringify(e,null,2)};`}if(u===`config`){if(U===null){let{loadDirectoryMeta:e}=await Promise.resolve().then(()=>require(`./meta-loader-0gJ4PtBC.cjs`));U=await e(a)}let e=U,t={base:l?.base,theme:l?.theme,i18n:l?.i18n,versions:l?.versions,siteUrl:l?.siteUrl,integrations:l?.integrations,plugins:l?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(u===`entry`)return H(e,l,s);if(u===`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(d.default.existsSync(e)){n=e;break}}if(n){let e=t.l(n);return`import * as components from '${e}';
|
|
104
|
-
const mdxComponents = components.default || components;
|
|
105
|
-
export default mdxComponents;
|
|
106
|
-
export * from '${e}';`}return`export default {};`}if(u===`layout`){let e=[`tsx`,`jsx`],n=null;for(let t of e){let e=c.default.resolve(a,`layout.${t}`);if(d.default.existsSync(e)){n=e;break}}if(n)return`import UserLayout from '${t.l(n)}';
|
|
107
|
-
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(u===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],n=null;for(let t of e){let e=c.default.resolve(a,`icons.${t}`);if(d.default.existsSync(e)){n=e;break}}return n?`import * as icons from '${t.l(n)}';\nexport default icons;`:`export default {};`}if(u===`search`){if(!W){let e=xe(await r.t(a,l));W=`export default ${JSON.stringify(e,null,2)};`}return W}if(u===`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(d.default.existsSync(r)){n=t.l(r);break}if(d.default.existsSync(i)){n=t.l(i);break}if(d.default.existsSync(a)){n=t.l(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 we={"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 Te(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 G=new Map;async function Ee(e){try{let{data:n}=await t.u(e),r=JSON.stringify(n);return f.default.createHash(`md5`).update(r).digest(`hex`)}catch{return``}}function De(e){return G.get(e)}function Oe(e,t){G.set(e,t)}function ke(e){G.delete(e)}function K(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function Ae(e,n,a,o,s){let l=new Map;return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(o){let u=s();await u?.runHook(`beforeDev`),i.s(e,process.cwd(),a()).catch(e=>{console.error(`[boltdocs] Failed to generate initial link tree:`,e)}),setTimeout(async()=>{try{let{generateRoutes:t}=await Promise.resolve().then(()=>require(`./routes-CHf76Ye4.cjs`)),n=await t(e,a());for(let e of n)if(e.filePath){let t=c.default.relative(process.cwd(),e.filePath).replace(/\\/g,`/`),n=t.startsWith(`/`)?t:`/${t}`;await o.transformRequest(n).catch(()=>{}),await new Promise(e=>setTimeout(e,50))}}catch{}},1e3),o.middlewares.use((e,t,n)=>{process.env.NODE_ENV===`production`&&Object.entries(we).forEach(([e,n])=>{t.setHeader(e,n)});let r=a();r.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,Te(r)),n()}),o.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),o.middlewares.use(async(e,t,n)=>{let r=e.url?.split(`?`)[0]||`/`,i=e.headers.accept||``,s=a(),c=/\.(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.test(r);if(i.includes(`text/html`)&&!c){let n=de(s);n=fe(n,s),n=await o.transformIndexHtml(e.url||`/`,n),t.statusCode=200,t.setHeader(`Content-Type`,`text/html`),t.end(n);return}n()});let d=i.f.map(e=>c.default.resolve(process.cwd(),e)),f=[`tsx`,`jsx`].map(t=>c.default.resolve(e,`layout.${t}`)),p=[`tsx`,`ts`,`jsx`,`js`],m=p.map(t=>c.default.resolve(e,`mdx-components.${t}`)),h=p.map(t=>c.default.resolve(e,`pages-external/index.${t}`)),g=p.map(t=>c.default.resolve(e,`icons.${t}`));o.watcher.add([...d,...m,...f,...h,...g]);let _=async(s,u)=>{try{let d=t.l(s);if(i.f.some(e=>d.endsWith(e))){o.restart();return}if(p.some(e=>d.endsWith(`mdx-components.${e}`))){i.g(a(),e),K(o,`mdx-components.tsx`),o.ws.send({type:`full-reload`});return}if(p.some(e=>d.endsWith(`icons.${e}`))){K(o,`icons.tsx`),o.ws.send({type:`full-reload`});return}if(d.endsWith(`layout.tsx`)||d.endsWith(`layout.jsx`)){K(o,`layout.tsx`),o.ws.send({type:`full-reload`});return}if(d.includes(`/pages-external/`)||d.includes(`\\pages-external\\`)){K(o,`entry`),o.ws.send({type:`full-reload`});return}if(!d.toLowerCase().startsWith(n.toLowerCase())||!t.s(d))return;if(u===`add`||u===`unlink`){u===`unlink`&&ke(s),r.n(),Se();let t=a();i.g(t,e),K(o,`config`),K(o,`routes`),K(o,`search`),i.s(e,process.cwd(),t).catch(e=>{console.error(`[boltdocs] Failed to update link tree:`,e)}),o.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:t?.theme,i18n:t?.i18n,versions:t?.versions,siteUrl:t?.siteUrl}}),o.ws.send({type:`full-reload`});return}l.has(d)&&clearTimeout(l.get(d)),l.set(d,setTimeout(async()=>{l.delete(d);try{let n=De(s),i=await Ee(s);Oe(s,i),r.r(s),n!==void 0&&n!==i&&(K(o,`routes`),K(o,`search`));let a=t.l(c.default.relative(e,s)),l=o.moduleGraph.getModulesByFile(d);if(l)for(let e of l)o.moduleGraph.invalidateModule(e);o.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:d,relPath:a}})}catch(e){console.error(`[boltdocs] HMR error processing content change:`,e)}},150))}catch(e){console.error(`[boltdocs] HMR error during ${u} event:`,e)}};o.watcher.on(`add`,e=>_(e,`add`)),o.watcher.on(`unlink`,e=>_(e,`unlink`)),o.watcher.on(`change`,e=>_(e,`change`)),await u?.runHook(`afterDev`)},handleHotUpdate({file:e,server:r}){let i=t.l(e);if(i.toLowerCase().startsWith(n.toLowerCase())&&t.s(i))return[]}}}const q=g.createRequire(require(`url`).pathToFileURL(__filename).href);function je(e){let t=c.default.dirname(e);for(;t&&t!==c.default.dirname(t);){let e=c.default.join(t,`package.json`);if(d.default.existsSync(e))return e;t=c.default.dirname(t)}return null}function Me(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 J(e,t=q){try{let{packageName:n,subpath:r}=Me(e),i;try{i=t.resolve(n+`/package.json`)}catch{i=je(t.resolve(n))||``}if(!i)throw Error(`Could not find package.json for ${n}`);let a=c.default.dirname(i),o=JSON.parse(d.default.readFileSync(i,`utf-8`)),s=``,l=r?`./`+r:`.`;if(o.exports){let e=o.exports[l]||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=s.import||s.default||s.require||``),s){let e=c.default.resolve(a,s);if(d.default.existsSync(e))return e}}catch{}return t.resolve(e)}function Ne(){let e=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],n=[],r=q;try{let e=c.default.join(process.cwd(),`node_modules/boltdocs/package.json`);if(d.default.existsSync(e)){let t=d.default.realpathSync(e);r=g.createRequire(t)}else r=g.createRequire(c.default.join(process.cwd(),`package.json`))}catch{}for(let t of e)try{let e=``;e=t===`@bdocs/ssg`||t===`react-router-dom`||t===`react-helmet-async`?J(t,r):r.resolve(t),e&&n.push(d.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`?J(t,q):q.resolve(t),e&&n.push(d.default.realpathSync(e))}catch{}for(let e of[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`]){try{n.push(d.default.realpathSync(r.resolve(e)))}catch{}if(r!==q)try{n.push(d.default.realpathSync(q.resolve(e)))}catch{}}return Array.from(new Set(n)).map(e=>t.l(e))}function Pe(e={},n){let a=c.default.resolve(process.cwd(),e.docsDir||`docs`),o=t.l(a),l=n,u,f=!1,m,h=[],_=()=>l;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){f=t.command===`build`;let n=!!(t.ssrBuild||t.ssr||e.build?.ssr),o=e.envDir||process.cwd(),u=(0,s.loadEnv)(t.mode,o,``);Object.assign(process.env,u),l||=await i.m(a);let p=(await Promise.resolve().then(()=>require(`./package-60UENucA.cjs`))).version,g=_e(l.plugins||[],p);return l.plugins=g,m=new ve(g,l),h=g.flatMap(e=>B.getSanitizedCapabilities(e).vitePlugins||[]),f&&await m.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`},onFinished:async e=>{let t=le(ce(await r.t(a,l)),l);t&&d.default.writeFileSync(c.default.join(e,`sitemap.xml`),t);let n=ue(l);d.default.writeFileSync(c.default.join(e,`robots.txt`),n)}},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:J(`react-router-dom`)},{find:`react-helmet-async`,replacement:J(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:J(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...n?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Ne()],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[]}}},configResolved(e){u=e,m?.runHook(`configResolved`,l)},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=q;try{let e=c.default.join(process.cwd(),`node_modules/boltdocs/package.json`);if(d.default.existsSync(e)){let t=d.default.realpathSync(e);n=g.createRequire(t)}else n=g.createRequire(c.default.join(process.cwd(),`package.json`))}catch{}try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?J(e,n):n.resolve(e)}catch{try{t=r===`@bdocs/ssg`||r===`react-router-dom`||r===`react-helmet-async`?J(e,q):q.resolve(e)}catch{}}}try{t=d.default.realpathSync(t)}catch{}return{id:t,external:!0}}return null},transformIndexHtml:{order:`pre`,handler(e){return fe(e,l)}},async buildEnd(){let{pool:e}=await Promise.resolve().then(()=>require(`./worker-pool-BwU8ckrg.cjs`));await e.terminate()},async closeBundle(){!f||u?.build?.ssr||(await m?.runHook(`afterBuild`),await m?.runHook(`buildEnd`))},configurePreviewServer(e){let t=u?.build?.outDir?c.default.resolve(u.root||process.cwd(),u.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!==`/`&&d.default.existsSync(s)&&(e.url=`${o}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()})}},Ce(e,_,()=>u,a),Ae(a,o,_,e=>{l=e},()=>m),{...(0,p.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`},...h]}const Y=new n.r(`mdx`),Fe=[x.default.default||x.default,S.default.default||S.default,C.default.default||C.default,w.default.default||w.default,T.default.default||T.default,E.default.default||E.default,D.default.default||D.default],Ie=[O.default,re.default,k.default,A.default,j.default,M.default,ie.default,ae.default,oe.default,se.default,N.default,P.default,F.default];let Le=null,X=null;const Re=()=>(Le??=(0,te.createJavaScriptRegexEngine)(),Le),ze=async e=>X||(X=(0,ne.createHighlighterCore)({themes:Fe,langs:Ie,engine:Re()}),X),Z={JSX_FLOW_ELEMENT:`mdxJsxFlowElement`,JSX_TEXT_ELEMENT:`mdxJsxTextElement`,JSX_ATTRIBUTE:`mdxJsxAttribute`,ELEMENT:`element`,TEXT:`text`,CODE:`code`},Be={PRE:`pre`,CODE:`code`},Q={TITLE:`data-title`,LANG:`data-lang`,HIGHLIGHTED:`data-highlighted`,HIGHLIGHTED_HTML:`data-highlighted-html`},$={LINE_NUMBERS:`shiki-line-numbers`,WORD_WRAP:`shiki-word-wrap`,FALLBACK:`shiki-fallback`},Ve={LIGHT:`github-light`,DARK:`github-dark`},He={LANG:`plaintext`,MDX_DEFAULT_LANG:`text`},Ue=(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,$.LINE_NUMBERS)}}},We=(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,$.WORD_WRAP)}}},Ge=()=>({name:`AddTitleProperty`,pre(e){let t=this.options.meta?.title;t&&(e.properties[Q.TITLE]=t)}}),Ke=()=>({name:`AddLanguageProperty`,pre(e){e.properties[Q.LANG]=this.options.lang||He.LANG}});function qe(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 Je=class{config;constructor(e){this.config=e}getTheme(){return this.config?.theme?.codeTheme||{light:Ve.LIGHT,dark:Ve.DARK}}async getHighlighter(){return await ze(this.getTheme())}getOptions(e,t){let n=this.getTheme(),r={},i=``;typeof t==`string`?(i=t,r=qe(t)):t&&(r=t,i=t.__raw||``);let a={lang:e||He.LANG,meta:{__raw:i,...r},transformers:[Ue(),We(),Ge(),Ke()]};return typeof n==`object`?a.themes={light:n.light,dark:n.dark}:a.theme=n,a}async render(e,t,n){try{let r=await this.getHighlighter(),i=this.getOptions(t,n);return r.codeToHtml(e,i)}catch(t){return console.error(`[ShikiAdapter] Failed to render code:`,t),`<pre class="${$.FALLBACK}"><code>${Ye(e)}</code></pre>`}}};function Ye(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}let Xe=null,Ze;function Qe(e){let t=JSON.stringify(e?.theme?.codeTheme||null);return(Xe===null||Ze!==t)&&(Xe=new Je(e),Ze=t),Xe}function $e(e){let t=Qe(e);return async e=>{let n=await t.getHighlighter();(0,ee.visit)(e,Z.ELEMENT,e=>{if(e.tagName===Be.PRE&&e.children?.[0]?.type===Z.ELEMENT&&e.children[0].tagName===Be.CODE){let r=e.children[0],i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),a=i?i.slice(9):He.MDX_DEFAULT_LANG;if(a===`mermaid`)return;let o=r.children?.[0]?.value||``,s=qe(r.properties?.metastring||r.data?.meta||``),c=t.getOptions(a,s),l=``;try{l=n.codeToHtml(o,c)}catch(e){console.error(`[rehypeShiki] Failed to highlight code block:`,e),l=`<pre class="${$.FALLBACK}"><code>${Ye(o)}</code></pre>`}e.properties=e.properties||{},s.title&&(e.properties[Q.TITLE]=s.title),e.properties[Q.HIGHLIGHTED]=`true`,e.properties[Q.HIGHLIGHTED_HTML]=l,e.properties[Q.LANG]=a,e.children=[]}})}}function et(){return e=>{(0,ee.visit)(e,Z.CODE,e=>{e.meta&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties.metastring=e.meta)})}}let tt=!1;function nt(e,t=_.default){let n=e?.plugins?.flatMap(e=>B.getSanitizedCapabilities(e).remarkPlugins||[])||[],r=e?.plugins?.flatMap(e=>B.getSanitizedCapabilities(e).rehypePlugins||[])||[],i=t({remarkPlugins:[v.default,y.default,et,...n],rehypePlugins:[b.default,[$e,e],...r],jsxRuntime:`automatic`});return{...i,name:`vite-plugin-boltdocs-mdx`,async buildStart(){tt||=(await Y.load(),!0),i.buildStart&&await i.buildStart.call(this)},async transform(e,t,n){let[r]=t.split(`?`);if(!r.endsWith(`.md`)&&!r.endsWith(`.mdx`))return i.transform?.call(this,e,t,n);let a=`${r}:${f.default.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,o=await Y.getAsync(a);if(o)return{code:o,map:null};let s=await i.transform.call(this,e,r,n);return s&&typeof s==`object`&&s.code&&(process.env.NODE_ENV!==`production`&&(s.code+=`
|
|
108
|
-
if (import.meta.hot) {
|
|
109
|
-
import.meta.hot.accept();
|
|
110
|
-
}
|
|
111
|
-
`),Y.set(a,s.code)),s},async buildEnd(){Y.save(),await Y.flush(),i.buildEnd&&await i.buildEnd.call(this)}}}(0,g.createRequire)(require(`url`).pathToFileURL(__filename).href);async function rt(e){let t=await i.m(e?.docsDir||`docs`);return[...Pe({...e},t),nt(t)]}async function it(e,t=`development`){let n=await i.m(`docs`,e),r=t===`production`,l=r?{...we}:{};return n.security?.enableCSP&&(l[`Content-Security-Policy`]=Te(n)),{root:e,mode:t,oxc:{jsx:{development:!r,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)(),...Pe({docsDir:`docs`,root:e},n),nt(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-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Ne()],optimizeDeps:{include:[`react-fast-compare`,`invariant`,...n.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`]},server:{headers:{...l,...n.vite?.server?.headers},...n.vite?.server},preview:{headers:{...l,...n.vite?.preview?.headers},...n.vite?.preview},...n.vite}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return he}});
|