boltdocs 2.7.6 → 2.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.cjs +1 -1
- package/dist/client/index.d.cts +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/primitives.cjs +1 -1
- package/dist/client/primitives.d.cts +1 -1
- package/dist/client/primitives.d.ts +1 -1
- package/dist/client/primitives.js +1 -1
- package/dist/{docs-layout-CCUDPQ8O.js → docs-layout-KoWNZc8_.js} +1 -1
- package/dist/docs-layout-x2yKt2cL.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-BxSJ6D6D.mjs → node-BXd1xgio.mjs} +1 -1
- package/dist/{node-Cccqb9Sn.cjs → node-DWhzY9qh.cjs} +1 -1
- package/dist/{package-D1yArBef.cjs → package-60UENucA.cjs} +1 -1
- package/dist/{package-blLyyOgw.mjs → package-DGLEx5yT.mjs} +1 -1
- package/dist/{sidebar-CbQtlYiz.d.ts → sidebar-CcBkrm06.d.cts} +3 -1
- package/dist/{sidebar-DKvg6KOc.d.cts → sidebar-CyZS9YOm.d.ts} +3 -1
- package/package.json +2 -2
- package/src/client/components/docs-layout-default.tsx +1 -1
- package/src/client/components/primitives/sidebar.tsx +24 -5
- package/src/client/ssg/create-routes.tsx +61 -23
- package/dist/docs-layout-CZVMDgr-.cjs +0 -6
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
+
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
const e=require(`./icons-dev-BlV3wWFT.cjs`);let t=require(`react-router-dom`),n=require(`react`);n=e.rt(n);let r=require(`react/jsx-runtime`),i=require(`react-aria-components`);i=e.rt(i);let a=require(`virtual:boltdocs-icons`);a=e.rt(a);let o=require(`scroll-into-view-if-needed`);o=e.rt(o);const s=({children:t,className:n,...a})=>(0,r.jsx)(i.Breadcrumbs,{className:e.y(`flex flex-wrap items-center`,n),...a,children:t});s.Root=s,s.Item=({children:t,className:n,...a})=>(0,r.jsx)(i.Breadcrumb,{className:e.y(`flex items-center`,n),...a,children:t}),s.Link=({children:t,href:n,className:i,...a})=>(0,r.jsx)(e._,{href:n,className:e.y(`cursor-pointer`,i),...a,children:t}),s.Separator=({className:t})=>(0,r.jsx)(e.D,{size:14,className:e.y(`shrink-0`,t)});const c=({...e})=>(0,r.jsx)(i.Button,{...e}),l=({children:t,className:n,vertical:i=!1})=>(0,r.jsx)(`div`,{className:e.y(`inline-flex`,i?`flex-col`:`flex-row`,!i&&[`[&>*:not(:first-child)]:-ml-px`,`[&>*:first-child]:rounded-r-none`,`[&>*:last-child]:rounded-l-none`,`[&>*:not(:first-child):not(:last-child)]:rounded-none`,n?.includes(`rounded-full`)&&[`[&>*:first-child]:rounded-l-full`,`[&>*:last-child]:rounded-r-full`],n?.includes(`rounded-xl`)&&[`[&>*:first-child]:rounded-l-xl`,`[&>*:last-child]:rounded-r-xl`],n?.includes(`rounded-lg`)&&[`[&>*:first-child]:rounded-l-lg`,`[&>*:last-child]:rounded-r-lg`]],i&&[`[&>*:not(:first-child)]:-mt-px`,`[&>*:first-child]:rounded-b-none`,`[&>*:last-child]:rounded-t-none`,`[&>*:not(:first-child):not(:last-child)]:rounded-none`,n?.includes(`rounded-full`)&&[`[&>*:first-child]:rounded-t-full`,`[&>*:last-child]:rounded-b-full`]],n),children:t}),u=({children:t,className:n,...a})=>(0,r.jsx)(i.Popover,{offset:8,className:e.y(`z-50 overflow-auto outline-none transition-none`,n),...a,children:t});function d({placement:e,className:t,...a}){let[o,s]=n.Children.toArray(a.children).slice(0,2);return(0,r.jsxs)(i.MenuTrigger,{...a,children:[o,(0,r.jsx)(u,{placement:e,className:t,children:s})]})}function f({className:e,...t}){let[a,o]=n.Children.toArray(t.children).slice(0,2);return(0,r.jsxs)(i.SubmenuTrigger,{...t,children:[a,(0,r.jsx)(u,{offset:-4,crossOffset:-4,className:e,children:o})]})}function p(t){return(0,r.jsx)(i.Menu,{...t,className:i.composeRenderProps(t.className,t=>e.y(`outline-none overflow-auto`,t))})}function m(t){let n=t.textValue||(typeof t.children==`string`?t.children:void 0);return(0,r.jsx)(i.MenuItem,{...t,textValue:n,className:i.composeRenderProps(t.className,t=>e.y(`group relative flex flex-row items-center cursor-default outline-none`,t)),children:i.composeRenderProps(t.children,(t,{selectionMode:n,isSelected:i,hasSubmenu:a})=>(0,r.jsxs)(r.Fragment,{children:[n===`multiple`&&(0,r.jsx)(`span`,{className:`flex items-center shrink-0 justify-center`,children:i&&(0,r.jsx)(e.w,{className:`size-3.5`})}),(0,r.jsx)(`div`,{className:`flex flex-row w-full items-center`,children:t}),a&&(0,r.jsx)(e.D,{className:`size-4 ml-auto`})]}))})}function ee({title:t,...n}){return(0,r.jsxs)(i.MenuSection,{...n,className:e.y(`flex flex-col`,n.className),children:[t&&(0,r.jsx)(i.Header,{className:`select-none`,children:t}),(0,r.jsx)(i.Collection,{items:n.items,children:n.children})]})}function te(t){return(0,r.jsx)(i.Separator,{...t,className:e.y(`border-t`,t.className)})}p.Root=p,p.Item=m,p.Trigger=d,p.SubTrigger=f,p.Section=ee,p.Separator=te;var ne=class extends n.Component{state={hasError:!1,error:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`ErrorBoundary caught an unhandled error:`,e,t)}resetErrorBoundary=()=>{this.props.onReset&&this.props.onReset(),this.setState({hasError:!1,error:null})};render(){let{hasError:e,error:t}=this.state,{children:n,fallback:i,FallbackComponent:a}=this.props;return e&&t?a?(0,r.jsx)(a,{error:t,resetErrorBoundary:this.resetErrorBoundary}):i||(0,r.jsx)(h,{error:t,resetErrorBoundary:this.resetErrorBoundary}):n}};function h({error:e,resetErrorBoundary:t}){return(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center min-h-[40vh] text-center gap-4 px-6 py-8 border border-subtle bg-surface rounded-2xl max-w-lg mx-auto shadow-xs`,children:[(0,r.jsx)(`div`,{className:`text-lg font-bold text-rose-600 dark:text-rose-400`,children:`Something went wrong`}),(0,r.jsx)(`p`,{className:`text-sm text-muted max-w-sm leading-relaxed`,children:e?.message||`An unexpected error occurred while rendering this page.`}),(0,r.jsx)(c,{className:`rounded-xl border border-subtle bg-main px-6 py-2.5 text-xs font-semibold text-body hover:bg-primary-50/50 hover:border-primary-500/50 transition-all duration-300 cursor-pointer outline-none select-none`,onPress:t,children:`Try again`})]})}const g=({children:t,className:n=``,...i})=>(0,r.jsx)(`div`,{className:e.y(`w-full`,n),...i,children:t});g.Root=g,g.List=({children:t,className:n=``})=>(0,r.jsx)(`div`,{role:`tablist`,className:e.y(`relative flex flex-row items-center`,n),children:t}),g.Item=({children:t,id:n,selected:i,className:a=``,...o})=>(0,r.jsx)(`button`,{role:`tab`,"aria-selected":i,"data-selected":i,className:e.y(`outline-none cursor-pointer bg-transparent border-none`,a),...o,children:t}),g.Content=({children:t,className:n=``})=>(0,r.jsx)(`div`,{className:e.y(`outline-none`,n),children:t}),g.Indicator=({className:t=``,style:n})=>(0,r.jsx)(`div`,{className:e.y(`absolute bottom-0`,t),style:n});const _=(0,n.createContext)(void 0);function v({children:e}){let[i,a]=(0,n.useState)(!1),o=(0,t.useLocation)();return(0,n.useEffect)(()=>{a(!1)},[o.pathname]),(0,r.jsx)(_.Provider,{value:{isSidebarOpen:i,toggleSidebar:()=>a(e=>!e),closeSidebar:()=>a(!1)},children:e})}function y(){let e=(0,n.useContext)(_);return e===void 0?{isSidebarOpen:!1,toggleSidebar:()=>{},closeSidebar:()=>{}}:e}function b(e){return e.startsWith(`#`)?e.slice(1):null}var x=class{items=[];single=!1;observer=null;onChange;callback(e){for(let e of this.items){let t=document.getElementById(e.id);if(!t){e.active=!1,e.fallback=!1;continue}let n=t.getBoundingClientRect(),r=typeof window<`u`?window.innerHeight:1e3,i=n.bottom>0&&n.top<r;e.active=i,e.fallback=!i&&n.top>0&&n.top<r*2}if(this.single){let e=-1,t=this.items.map((e,t)=>({item:e,idx:t})).filter(({item:e})=>e.active);if(t.length>0)e=t[0].idx;else{let t=this.items.map((e,t)=>({item:e,idx:t})).filter(({item:e})=>e.fallback);t.length>0?e=t[0].idx:this.items.length>0&&(e=0)}this.items=this.items.map((t,n)=>({...t,active:n===e,t:n===e?Date.now():t.t}))}else this.items=this.items.map((e,t)=>({...e,active:e.active,t:e.active?Date.now():e.t}));this.onChange?.()}setItems(e){let t=this.observer;if(t)for(let e of this.items){let n=document.getElementById(e.id);n&&t.unobserve(n)}this.items=[];for(let t of e){let e=b(t.url);e&&this.items.push({id:e,active:!1,fallback:!1,t:0,original:t})}this.watchItems(),typeof window<`u`&&(setTimeout(()=>this.watchItems(),100),setTimeout(()=>this.watchItems(),500),setTimeout(()=>this.watchItems(),1e3)),this.onChange?.()}watch(e){this.observer||(this.observer=new IntersectionObserver(this.callback.bind(this),e),this.watchItems())}watchItems(){if(this.observer)for(let e of this.items){let t=document.getElementById(e.id);t&&this.observer.observe(t)}}unwatch(){this.observer?.disconnect(),this.observer=null}};const S=(0,n.createContext)(null),C=(0,n.createContext)(null);function w(){let e=(0,n.use)(S);if(!e)throw Error(`Component must be used under the <AnchorProvider /> component.`);return e}function T(){let e=w();return(0,n.useMemo)(()=>{let t;for(let n of e)n.active&&(!t||n.t>t.t)&&(t=n);return t?.id},[e])}function E(){let e=w();return(0,n.useMemo)(()=>{let t=[];for(let n of e)n.active&&t.push(n.id);return t},[e])}function D({containerRef:e,children:t}){return(0,r.jsx)(C.Provider,{value:e,children:t})}function O({toc:e,single:t=!1,observerOptions:i,children:a}){let o=(0,n.useMemo)(()=>new x,[]),[s,c]=(0,n.useState)(o.items);return o.single=t,(0,n.useEffect)(()=>{o.setItems(e)},[o,e]),(0,n.useEffect)(()=>{let e={rootMargin:`-80px 0% -60% 0%`,threshold:0},t=i?{...e,...i}:e;return o.watch(t),o.onChange=()=>c([...o.items]),()=>{o.unwatch()}},[o]),(0,r.jsx)(S.Provider,{value:s,children:a})}const k=({children:t,className:n})=>(0,r.jsx)(`nav`,{className:e.y(`sticky top-navbar hidden xl:flex flex-col shrink-0`,`w-toc`,`py-4 pl-6 pr-4`,n),children:t}),re=({children:t,className:n,...i})=>(0,r.jsx)(`div`,{className:e.y(`mb-4 text-xs font-bold text-body`,n),...i,children:t}),A=({children:t,className:i,ref:a,...o})=>{let s=(0,n.useRef)(null);return(0,n.useImperativeHandle)(a,()=>s.current),(0,r.jsx)(`div`,{ref:s,className:e.y(`relative overflow-y-auto boltdocs-otp-content pb-12`,`max-h-[70%]`,i),style:{maskImage:`linear-gradient(to bottom, black 90%, transparent 100%)`,WebkitMaskImage:`linear-gradient(to bottom, black 90%, transparent 100%)`},...o,children:t})};A.displayName=`OnThisPageContent`;const j=({children:t,className:n})=>(0,r.jsx)(`ul`,{className:e.y(`relative space-y-0.5 text-sm border-l border-subtle`,n),children:t}),M=({level:t,children:n,className:i})=>(0,r.jsx)(`li`,{className:e.y(t===3&&`pl-3`,i),children:n}),N=({children:t,href:i,active:a,onClick:s,className:c})=>{let l=(0,n.use)(S),u=(0,n.use)(C),d=i?b(i):null,f=(0,n.useRef)(null),p=a===void 0?d&&l?!!l.find(e=>e.id===d)?.active:!1:a;return(0,n.useEffect)(()=>{p&&f.current&&u?.current&&(0,o.default)(f.current,{behavior:`smooth`,block:`center`,inline:`center`,scrollMode:`if-needed`,boundary:u.current})},[p,u]),(0,r.jsx)(`a`,{ref:f,href:i,onClick:e=>{if(s)s(e);else if(i&&i.startsWith(`#`)){e.preventDefault();let t=i.slice(1),n=document.getElementById(t);n&&(n.scrollIntoView({behavior:`smooth`}),window.history.pushState(null,``,i))}},"data-active":p,className:e.y(`block py-0.5 pl-4 text-[13px] outline-none transition-colors`,p?`text-primary-500`:`text-muted hover:text-body`,c),children:t})},P=({style:t,className:i})=>{let a=(0,n.useRef)(null),[o,s]=(0,n.useState)({opacity:0,...t});return(0,n.useEffect)(()=>{let e=a.current?.parentElement;if(!e)return;let n=e.querySelectorAll(`a[data-active="true"]`);if(n.length>0){let r=n[0],i=n[n.length-1],a=r.getBoundingClientRect(),o=i.getBoundingClientRect(),c=e.getBoundingClientRect(),l=a.top-c.top,u=o.bottom-a.top;s({transform:`translateY(${l}px)`,height:`${u}px`,opacity:1,...t})}else s({opacity:0,...t})},[w(),t]),(0,r.jsx)(`div`,{ref:a,className:e.y(`absolute -left-px w-0.5 rounded-full bg-primary-500`,i),style:{transition:`transform 180ms cubic-bezier(0.2, 0.8, 0.2, 1), height 180ms cubic-bezier(0.2, 0.8, 0.2, 1), opacity 150ms`,...o}})};function F({headings:e=[],className:t}){let n=E();return e.length===0?null:(0,r.jsxs)(j,{className:t,children:[(0,r.jsx)(P,{}),e.map(e=>(0,r.jsx)(M,{level:e.level,children:(0,r.jsx)(N,{href:`#${e.id}`,active:n.includes(e.id),children:e.text})},e.id))]})}function I({headings:e=[],className:t}){let i=(0,n.useMemo)(()=>e.map(e=>({title:e.text,url:`#${e.id}`,depth:e.level})),[e]),a=(0,n.useRef)(null);return e.length===0?null:(0,r.jsx)(O,{toc:i,single:!1,children:(0,r.jsx)(D,{containerRef:a,children:(0,r.jsx)(A,{ref:a,children:(0,r.jsx)(F,{headings:e,className:t})})})})}k.Root=k,k.Header=re,k.Content=A,k.List=j,k.Item=M,k.Link=N,k.Indicator=P,k.Items=F,k.Tree=I;const L=({children:t,className:n})=>(0,r.jsx)(`nav`,{className:e.y(`grid sm:grid-cols-2 gap-4`,n),children:t});L.Root=L,L.Link=({children:t,to:n,direction:i,className:a})=>{let o=i===`next`;return(0,r.jsxs)(e._,{href:n,className:e.y(`flex items-center outline-none no-underline`,o?`justify-end`:`justify-start`,a),children:[!o&&(0,r.jsx)(e.E,{className:`shrink-0`}),(0,r.jsx)(`div`,{className:`flex flex-col flex-1`,children:t}),o&&(0,r.jsx)(e.D,{className:`shrink-0`})]})},L.Title=({children:t,className:n})=>(0,r.jsx)(`span`,{className:e.y(n),children:t}),L.Description=({children:t,className:n})=>(0,r.jsx)(`span`,{className:e.y(`truncate`,n),children:t}),L.Icon=({children:e})=>(0,r.jsx)(r.Fragment,{children:e});function R(r){let i=e.nt(),a=e.Z((0,t.useLocation)().pathname);return(0,n.useMemo)(()=>{let t=r.find(t=>e.Z(t.path)===a),n=t?.tab?.toLowerCase(),o=n?r.filter(e=>!e.tab||e.tab.toLowerCase()===n):r,s={};if(i.directoryMeta)for(let[e,t]of Object.entries(i.directoryMeta)){let n=e.split(`/`).filter(e=>!e.startsWith(`(`)||!e.endsWith(`)`)).map(e=>e.replace(/^\d+-/,``)).join(`/`);s[n===``?`.`:n]=t}let c=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/-/g,` `),l=new Map,u=[],d=(e,t)=>{let n=t,r=``,i=null;for(let t=0;t<e.length;t++){let a=e[t],o=r?`${r}/${a}`:a;if(!n.has(a)){let e=s[o]||{},t={path:`#`,title:e.title||c(a),componentPath:``,filePath:``,icon:e.icon,groupPosition:typeof e.order==`number`?e.order:999,subRoutes:[]};n.set(a,t)}i=n.get(a),i._subMap||=new Map,n=i._subMap,r=o}return i},f=[...o].sort((e,t)=>(e.sidebarPosition??e.order??999)-(t.sidebarPosition??t.order??999));for(let e of f){if(e.sidebarHidden)continue;let t=e.slugParts||[],n=e.filePath.split(`/`).pop()||``,r=/^index\.mdx?$/.test(n);if(t.length===0){e.filePath&&u.push(e);continue}if(r){let n=d(t,l);n&&(n.path=e.path,n.title=e.title||n.title,n.icon=e.icon||n.icon,n.badge=e.badge,n.sidebarPosition=e.sidebarPosition,n.frontmatter=e.frontmatter)}else{let n=d(t,l);n&&n.subRoutes.push(e)}}let p=(e,t=``)=>(e.forEach(e=>{if(e._subMap){let t=Array.from(e._subMap.values());e.subRoutes=[...e.subRoutes||[],...t],delete e._subMap}e.subRoutes&&e.subRoutes.length>0&&(e.subRoutes=p(e.subRoutes))}),e.sort((e,t)=>{let n=e.sidebarPosition??e.groupPosition??999,r=t.sidebarPosition??t.groupPosition??999;return n===r?e.title.localeCompare(t.title):n-r})),m=p(Array.from(l.values()));return m.map(e=>({slug:e.title.toLowerCase().replace(/\s+/g,`-`),title:e.title,icon:e.icon,routes:[e]})),{groups:m.map(e=>e.subRoutes&&e.subRoutes.length>0?{slug:e.title.toLowerCase().replace(/\s+/g,`-`),title:e.title,icon:e.icon,routes:e.subRoutes}:(u.push(e),null)).filter(Boolean),ungrouped:p(u),activeRoute:t,activePath:a,config:i}},[r,i,a])}let z=0;function B(t){if(!t)return;let n={...e.Y,...a.default};return n[t]||n[t+`Icon`]||void 0}const V=({badge:t})=>{let n={new:`bg-primary-500/10 text-primary-500 border border-primary-500/20`,updated:`bg-emerald-500/10 text-emerald-500 border border-emerald-500/20`,deprecated:`bg-danger-500/10 text-danger-500 border border-danger-500/20`},i=typeof t==`string`?t:t?.text;return i?(0,r.jsx)(`span`,{className:e.y(`ml-auto flex h-5 items-center rounded-md text-[10px] font-bold px-1.5 py-0.5 uppercase tracking-wider`,n[i]||n.new),children:i}):null};function H({children:t,className:n}){return(0,r.jsx)(`aside`,{className:e.y(`hidden lg:flex flex-col w-sidebar sticky top-navbar h-[calc(100vh-var(--spacing-navbar))] border-r border-subtle bg-main`,n),children:t})}function U({children:t,className:n}){let{isSidebarOpen:a,closeSidebar:o}=y();return(0,r.jsx)(i.ModalOverlay,{isOpen:a,onOpenChange:e=>!e&&o(),isDismissable:!0,className:e.y(`fixed inset-0 z-50 bg-black/20 backdrop-blur-sm lg:hidden`,`entering:animate-in entering:fade-in exiting:animate-out exiting:fade-out duration-300`),children:(0,r.jsx)(i.Modal,{className:e.y(`fixed top-0 left-0 bottom-0 w-80 bg-main border-r border-subtle shadow-2xl outline-none`,`entering:animate-in entering:slide-in-from-left exiting:animate-out exiting:slide-out-to-left duration-300`,n),children:(0,r.jsx)(i.Dialog,{className:`h-full focus:outline-none outline-none flex flex-col`,children:t})})})}function W({children:t,className:n}){return(0,r.jsx)(`div`,{className:e.y(`flex items-center justify-between p-4 border-b border-subtle`,n),children:t})}function G({children:t,className:i}){let a=(0,n.useRef)(null);return(0,n.useLayoutEffect)(()=>{a.current&&(a.current.scrollTop=z)},[]),(0,n.useEffect)(()=>{let e=a.current;if(!e)return;let t=()=>{z=e.scrollTop};return e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[]),(0,r.jsx)(`div`,{ref:a,className:e.y(`flex-1 overflow-y-auto p-4 pb-16 custom-scrollbar`,i),children:(0,r.jsx)(`nav`,{className:`flex flex-col gap-6`,children:t})})}const K=({title:e,icon:t,children:n,className:i})=>(0,r.jsxs)(`div`,{className:i,children:[e&&(0,r.jsxs)(`h4`,{className:`px-2 mb-2 flex items-center gap-2 text-[11px] font-bold uppercase tracking-widest text-muted/50`,children:[t&&(0,r.jsx)(t,{size:12}),e]}),(0,r.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:n})]}),q=({label:t,href:n,active:i,icon:a,badge:o,className:s})=>(0,r.jsxs)(e._,{href:n,className:e.y(`group flex items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-sm transition-all outline-none`,i?`bg-primary-500/10 text-primary-500 font-medium shadow-sm`:`text-muted hover:bg-surface hover:text-body`,s),children:[a&&(0,r.jsx)(a,{size:16,className:e.y(i?`text-primary-500`:`text-muted group-hover:text-body`)}),(0,r.jsx)(`span`,{className:`truncate`,children:t}),o&&(0,r.jsx)(V,{badge:o})]}),J=({label:t,href:n,active:i,icon:a,badge:o,isOpen:s,onToggle:c,children:l,className:u})=>(0,r.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,r.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,r.jsx)(q,{label:t,href:n,active:i,icon:a,badge:o,className:e.y(`flex-1 pr-8`,u)}),(0,r.jsx)(`button`,{onClick:e=>{e.preventDefault(),e.stopPropagation(),c()},className:`absolute right-1 p-1.5 text-muted hover:text-body transition-colors outline-none cursor-pointer`,children:(0,r.jsx)(e.D,{size:14,className:e.y(`transition-transform duration-200`,s&&`rotate-90`)})})]}),s&&(0,r.jsx)(`div`,{className:`ml-4 pl-3 border-l border-subtle/50 mt-0.5 flex flex-col gap-0.5`,children:l})]});function Y({route:t,activePath:i,activeRoute:a,className:o}){let s=e.b(t.path),c=i===(s.endsWith(`/`)?s.slice(0,-1):s)||!!a?.filePath&&!!t.filePath&&a.filePath===t.filePath,l=!!t.routes?.length||!!t.subRoutes?.length,u=t.routes||t.subRoutes,[d,f]=(0,n.useState)(()=>i.startsWith(s)||!!a?.filePath&&!!t.filePath&&a.filePath===t.filePath),[p,m]=(0,n.useState)(i);return i!==p&&(m(i),(i.startsWith(s)||a?.filePath&&t.filePath&&a.filePath===t.filePath)&&f(!0)),l?(0,r.jsx)(J,{label:t.title,href:t.path,active:c,icon:B(t.icon),badge:t.badge,isOpen:d,onToggle:()=>f(!d),className:o,children:u?.map(e=>(0,r.jsx)(Y,{route:e,activePath:i,activeRoute:a},e.path))}):(0,r.jsx)(q,{label:t.title,href:t.path,active:c,icon:B(t.icon),badge:t.badge,className:o})}function X({routes:t,className:n}){let{groups:i,ungrouped:a,activePath:o,activeRoute:s}=R(t);return(0,r.jsxs)(`div`,{className:e.y(`flex flex-col gap-6`,n),children:[a.length>0&&(0,r.jsx)(K,{children:a.map(e=>(0,r.jsx)(Y,{route:e,activePath:o,activeRoute:s},e.path))}),i.map(e=>(0,r.jsx)(K,{title:e.title,icon:B(e.icon),children:e.routes.map(e=>(0,r.jsx)(Y,{route:e,activePath:o,activeRoute:s},e.path))},e.title))]})}const ie=Object.assign(H,{Root:H,Mobile:U,Header:W,Content:G,Group:K,Link:q,SubGroup:J,Item:Y,Items:X}),Z=()=>(0,t.useLocation)();function Q(e=`.boltdocs-page`){let{search:t}=Z(),r=new URLSearchParams(t).get(`hl`);(0,n.useEffect)(()=>{if(!r){$(e);return}let t=document.querySelector(e);if(!t)return;let n,i=new MutationObserver(e=>{e.some(e=>{let t=Array.from(e.addedNodes),n=Array.from(e.removedNodes);return t.some(e=>!(e instanceof HTMLElement&&e.hasAttribute(`data-search-highlight`)))||n.some(e=>!(e instanceof HTMLElement&&e.hasAttribute(`data-search-highlight`)))})&&a()});function a(){cancelAnimationFrame(n),n=requestAnimationFrame(()=>{i.disconnect(),$(e);let n=r.split(/\s+/).map(e=>e.trim()).filter(e=>e.length>=2);n.length>0&&ae(t,n),i.observe(t,{childList:!0,subtree:!0})})}return a(),()=>{cancelAnimationFrame(n),i.disconnect(),$(e)}},[r,t,e])}function $(e){document.querySelectorAll(`${e} mark[data-search-highlight]`).forEach(e=>{try{let t=e.parentNode;if(t&&t.contains(e)){let n=e.textContent||``;t.replaceChild(document.createTextNode(n),e)}}catch{}})}function ae(e,t){let n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>{let t=e.parentElement;return t&&(t.tagName===`SCRIPT`||t.tagName===`STYLE`||t.tagName===`MARK`||t.closest(`pre`)||t.closest(`code`))?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[],i;for(;i=n.nextNode();)r.push(i);let a={a:`[aáàäâã]`,e:`[eéèëê]`,i:`[iíìïî]`,o:`[oóòöôõ]`,u:`[uúùüû]`,n:`[nñ]`,c:`[cç]`},o=e=>{let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return t=t.split(``).map(e=>a[e.toLowerCase()]||e).join(``),t},s=t.map(o).join(`|`),c=RegExp(`(${s})`,`gi`),l=t.map(e=>{let t=o(e);return RegExp(`^${t}$`,`i`)});r.forEach(e=>{let t=e.textContent;if(t&&c.test(t)){let n=document.createDocumentFragment();t.split(c).forEach(e=>{if(l.some(t=>t.test(e))){let t=document.createElement(`mark`);t.textContent=e,t.setAttribute(`data-search-highlight`,`true`),n.appendChild(t)}else e&&n.appendChild(document.createTextNode(e))}),e.parentNode&&e.parentNode.replaceChild(n,e)}})}function oe(){return Q(`.boltdocs-page`),null}function se({children:t,className:n,style:i}){return(0,r.jsx)(`div`,{className:e.y(`h-screen flex flex-col overflow-hidden bg-main text-body`,n),style:i,children:t})}function ce({children:t,className:n,style:i}){return(0,r.jsx)(`div`,{className:e.y(`mx-auto flex flex-1 w-full max-w-(--breakpoint-3xl) bg-main overflow-hidden`,n),style:i,children:t})}function le({children:t,className:n,style:i}){return(0,r.jsx)(`main`,{className:e.y(`boltdocs-content flex-1 min-w-0 overflow-y-auto`,`contain-layout`,n),style:i,children:t})}function ue({children:t,className:n,style:i}){return(0,r.jsxs)(`div`,{className:e.y(`boltdocs-page mx-auto pt-4 pb-20 px-4 sm:px-8`,n),style:i,children:[(0,r.jsx)(oe,{}),t]})}function de({children:t,className:n,style:i}){return(0,r.jsx)(`header`,{className:e.y(`mb-10`,n),style:i,children:t})}function fe({children:t,className:n,style:i}){return(0,r.jsx)(`div`,{className:e.y(`mt-20`,n),style:i,children:t})}const pe=Object.assign(se,{Body:ce,Content:le,ContentMdx:ue,Header:de,Footer:fe});Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return I}});
|
package/dist/node/cli-entry.cjs
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* Copyright (c) 2026 Jesus Alcala
|
|
5
5
|
* Licensed under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
const e=require(`../chunk-Ds5LZdWN.cjs`),t=require(`../routes-Co1mRM58.cjs`),n=require(`../node-
|
|
7
|
+
const e=require(`../chunk-Ds5LZdWN.cjs`),t=require(`../routes-Co1mRM58.cjs`),n=require(`../node-DWhzY9qh.cjs`),r=require(`../doctor-COpf35L2.cjs`);let i=require(`vite`),a=require(`node:path`);a=e.n(a);let o=require(`cac`);o=e.n(o);let s=require(`@bdocs/ssg/node`);async function c(e=process.cwd()){try{let t=await(0,s.createServer)(await n.n(e,`development`));await t.listen(),t.printUrls(),t.bindCLIShortcuts({print:!0})}catch(e){r.u(`Failed to start dev server:`,e),process.exit(1)}}async function l(e=process.cwd()){try{let i=await n.n(e,`production`),o=await r.p(`docs`,e),c=await t.t(a.default.resolve(e,`docs`),o,i.base),l={};for(let e of c)if(e.path&&e.componentPath){l[e.path]=e.componentPath;let t=e.path.replace(/\/$/,``);l[t]=e.componentPath}await(0,s.build)({entry:`boltdocs/entry`,routeToSourceFileMap:l,cacheDir:a.default.resolve(e,`.boltdocs`)},i),r.d(`SSG build completed successfully!`),process.exit(0)}catch(e){r.u(`Build failed:`,e),process.exit(1)}}async function u(e=process.cwd()){try{(await(0,i.preview)(await n.n(e,`production`))).printUrls()}catch(e){r.u(`Failed to start preview server:`,e),process.exit(1)}}const d=(0,o.default)(`boltdocs`);d.command(`[root]`,`Start development server`).alias(`dev`).action(c),d.command(`build [root]`,`Build for production`).action(l),d.command(`preview [root]`,`Preview production build`).action(u),d.command(`doctor [root]`,`Check the health of your documentation`).option(`--fix`,`Automatically fix broken internal links and sync translations`).option(`--check-external`,`Verify external links (slower)`).option(`--init`,`Initialize doctor.json with default configuration`).action(async(e,t)=>{let{doctorAction:n}=await Promise.resolve().then(()=>require(`../doctor-BQiQhCTl.cjs`));await n(e,t)}),d.command(`generate-changelog <file>`,`Generate changelog documentation from CHANGELOG.md`).option(`-o, --output <path>`,`Output folder (default: docs/changelog)`,{default:`docs/changelog`}).option(`-t, --title <text>`,`Title for changelog pages`,{default:`Changelog`}).option(`--infer-tab`,`Infer tab from folder name (default: true)`,{default:!0}).option(`-l, --limit <number>`,`Limit number of versions to generate`).action(async(e,t)=>{let{generateChangelog:n}=await Promise.resolve().then(()=>require(`../generator-DGW6pkCC.cjs`));await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),d.help(),d.version(`2.0.0`),d.parse();
|
package/dist/node/cli-entry.mjs
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* Copyright (c) 2026 Jesus Alcala
|
|
5
5
|
* Licensed under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
import{i as e,o as t,r as n}from"../doctor-COxqQQQ8.mjs";import{t as r}from"../routes-D0KpEheM.mjs";import{n as i}from"../node-
|
|
7
|
+
import{i as e,o as t,r as n}from"../doctor-COxqQQQ8.mjs";import{t as r}from"../routes-D0KpEheM.mjs";import{n as i}from"../node-BXd1xgio.mjs";import{preview as a}from"vite";import o from"node:path";import s from"cac";import{build as c,createServer as l}from"@bdocs/ssg/node";async function u(e=process.cwd()){try{let t=await l(await i(e,`development`));await t.listen(),t.printUrls(),t.bindCLIShortcuts({print:!0})}catch(e){n(`Failed to start dev server:`,e),process.exit(1)}}async function d(a=process.cwd()){try{let n=await i(a,`production`),s=await t(`docs`,a),l=await r(o.resolve(a,`docs`),s,n.base),u={};for(let e of l)if(e.path&&e.componentPath){u[e.path]=e.componentPath;let t=e.path.replace(/\/$/,``);u[t]=e.componentPath}await c({entry:`boltdocs/entry`,routeToSourceFileMap:u,cacheDir:o.resolve(a,`.boltdocs`)},n),e(`SSG build completed successfully!`),process.exit(0)}catch(e){n(`Build failed:`,e),process.exit(1)}}async function f(e=process.cwd()){try{(await a(await i(e,`production`))).printUrls()}catch(e){n(`Failed to start preview server:`,e),process.exit(1)}}const p=s(`boltdocs`);p.command(`[root]`,`Start development server`).alias(`dev`).action(u),p.command(`build [root]`,`Build for production`).action(d),p.command(`preview [root]`,`Preview production build`).action(f),p.command(`doctor [root]`,`Check the health of your documentation`).option(`--fix`,`Automatically fix broken internal links and sync translations`).option(`--check-external`,`Verify external links (slower)`).option(`--init`,`Initialize doctor.json with default configuration`).action(async(e,t)=>{let{doctorAction:n}=await import(`../doctor-COxqQQQ8.mjs`).then(e=>e.t);await n(e,t)}),p.command(`generate-changelog <file>`,`Generate changelog documentation from CHANGELOG.md`).option(`-o, --output <path>`,`Output folder (default: docs/changelog)`,{default:`docs/changelog`}).option(`-t, --title <text>`,`Title for changelog pages`,{default:`Changelog`}).option(`--infer-tab`,`Infer tab from folder name (default: true)`,{default:!0}).option(`-l, --limit <number>`,`Limit number of versions to generate`).action(async(e,t)=>{let{generateChangelog:n}=await import(`../generator-Dv3wEmhZ.mjs`);await n(e,{output:t.output,title:t.title,inferTab:t.inferTab,limit:t.limit?parseInt(String(t.limit),10):void 0})}),p.help(),p.version(`2.0.0`),p.parse();export{};
|
package/dist/node/index.cjs
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../utils-Clzu7jvb.cjs`),t=require(`../node-
|
|
6
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../utils-Clzu7jvb.cjs`),t=require(`../node-DWhzY9qh.cjs`),n=require(`../doctor-COpf35L2.cjs`);exports.BoltdocsPluginStore=t.u,exports.PluginCompatibilityError=t.d,exports.PluginError=t.f,exports.PluginHookError=t.p,exports.PluginLifecycleManager=t.a,exports.PluginPermissionError=t.m,exports.PluginSandbox=t.o,exports.PluginValidationError=t.h,exports.SecurePluginSchema=t.s,exports.createPlugin=t.i,exports.createViteConfig=t.n,exports.default=t.t,exports.defineConfig=n.h,exports.generateEntryCode=t.r,exports.hasPermission=t.c,exports.normalizePath=e.l,exports.resolveConfig=n.p,exports.sanitizeFilename=e.d,exports.validatePlugins=t.l;
|
package/dist/node/index.mjs
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import{c as e,o as t}from"../doctor-COxqQQQ8.mjs";import{d as n,l as r}from"../utils-BxNAXhZZ.mjs";import{a as i,c as a,d as o,f as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v}from"../node-
|
|
6
|
+
import{c as e,o as t}from"../doctor-COxqQQQ8.mjs";import{d as n,l as r}from"../utils-BxNAXhZZ.mjs";import{a as i,c as a,d as o,f as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v}from"../node-BXd1xgio.mjs";export{v as BoltdocsPluginStore,o as PluginCompatibilityError,s as PluginError,m as PluginHookError,i as PluginLifecycleManager,d as PluginPermissionError,p as PluginSandbox,c as PluginValidationError,g as SecurePluginSchema,l as createPlugin,f as createViteConfig,_ as default,e as defineConfig,h as generateEntryCode,a as hasPermission,r as normalizePath,t as resolveConfig,n as sanitizeFilename,u as validatePlugins};
|
|
@@ -104,7 +104,7 @@ export const createRoot = ViteReactSSG(
|
|
|
104
104
|
const mdxComponents = components.default || components;
|
|
105
105
|
export default mdxComponents;
|
|
106
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-blLyyOgw.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:`nested`,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`))}},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+=`
|
|
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
108
|
if (import.meta.hot) {
|
|
109
109
|
import.meta.hot.accept();
|
|
110
110
|
}
|
|
@@ -104,7 +104,7 @@ export const createRoot = ViteReactSSG(
|
|
|
104
104
|
const mdxComponents = components.default || components;
|
|
105
105
|
export default mdxComponents;
|
|
106
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-D1yArBef.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:`nested`,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`))}},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+=`
|
|
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
108
|
if (import.meta.hot) {
|
|
109
109
|
import.meta.hot.accept();
|
|
110
110
|
}
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
var e=`2.7.
|
|
6
|
+
var e=`2.7.8`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
import * as React$2 from "react";
|
|
3
3
|
import { ComponentType, ReactNode } from "react";
|
|
4
|
-
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
4
|
import { Plugin } from "vite";
|
|
5
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
6
6
|
|
|
7
7
|
//#region src/shared/types.d.ts
|
|
8
8
|
/**
|
|
@@ -428,10 +428,12 @@ declare const SidebarSubGroup: ({
|
|
|
428
428
|
interface SidebarItemProps extends ComponentBase {
|
|
429
429
|
route: ComponentRoute;
|
|
430
430
|
activePath: string;
|
|
431
|
+
activeRoute?: ComponentRoute;
|
|
431
432
|
}
|
|
432
433
|
declare function SidebarItem({
|
|
433
434
|
route,
|
|
434
435
|
activePath,
|
|
436
|
+
activeRoute,
|
|
435
437
|
className
|
|
436
438
|
}: SidebarItemProps): _$react_jsx_runtime0.JSX.Element;
|
|
437
439
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
import * as React$2 from "react";
|
|
3
3
|
import { ComponentType, ReactNode } from "react";
|
|
4
|
-
import { Plugin } from "vite";
|
|
5
4
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
|
+
import { Plugin } from "vite";
|
|
6
6
|
|
|
7
7
|
//#region src/shared/types.d.ts
|
|
8
8
|
/**
|
|
@@ -428,10 +428,12 @@ declare const SidebarSubGroup: ({
|
|
|
428
428
|
interface SidebarItemProps extends ComponentBase {
|
|
429
429
|
route: ComponentRoute;
|
|
430
430
|
activePath: string;
|
|
431
|
+
activeRoute?: ComponentRoute;
|
|
431
432
|
}
|
|
432
433
|
declare function SidebarItem({
|
|
433
434
|
route,
|
|
434
435
|
activePath,
|
|
436
|
+
activeRoute,
|
|
435
437
|
className
|
|
436
438
|
}: SidebarItemProps): _$react_jsx_runtime0.JSX.Element;
|
|
437
439
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "boltdocs",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.8",
|
|
4
4
|
"description": "A lightweight documentation generator for React projects.",
|
|
5
5
|
"main": "dist/node/index.mjs",
|
|
6
6
|
"module": "dist/node/index.mjs",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"vite": "7.0.0 || 8.0.0",
|
|
88
88
|
"vite-plugin-image-optimizer": "2.0.3",
|
|
89
89
|
"zod": "4.3.6",
|
|
90
|
-
"@bdocs/ssg": "0.0.
|
|
90
|
+
"@bdocs/ssg": "0.0.5"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
93
|
"react": "19.0.0",
|
|
@@ -27,7 +27,7 @@ function DocsLayoutComponent({ children }: DocsLayoutThemeProps) {
|
|
|
27
27
|
<DocsLayoutPrimitive.Body className="bg-main">
|
|
28
28
|
<Sidebar routes={filteredRoutes || []} config={config} />
|
|
29
29
|
<DocsLayoutPrimitive.Content className="animate-in fade-in duration-500 scroll-smooth">
|
|
30
|
-
<DocsLayoutPrimitive.ContentMdx className="max-w-
|
|
30
|
+
<DocsLayoutPrimitive.ContentMdx className="max-w-3xl sm:max-w-4xl lg:max-w-4xl px-2 pt-8 pb-24">
|
|
31
31
|
<DocsLayoutPrimitive.Header>
|
|
32
32
|
<div className="mb-4 border-b border-subtle pb-4 flex flex-wrap items-center justify-between gap-3">
|
|
33
33
|
<Breadcrumbs />
|
|
@@ -282,28 +282,44 @@ export const SidebarSubGroup = ({
|
|
|
282
282
|
export interface SidebarItemProps extends ComponentBase {
|
|
283
283
|
route: ComponentRoute
|
|
284
284
|
activePath: string
|
|
285
|
+
activeRoute?: ComponentRoute
|
|
285
286
|
}
|
|
286
287
|
|
|
287
288
|
export function SidebarItem({
|
|
288
289
|
route,
|
|
289
290
|
activePath,
|
|
291
|
+
activeRoute,
|
|
290
292
|
className,
|
|
291
293
|
}: SidebarItemProps) {
|
|
292
294
|
const localizedHref = useLocalizedTo(route.path)
|
|
293
295
|
const isCurrent =
|
|
294
296
|
activePath ===
|
|
295
|
-
|
|
297
|
+
(localizedHref.endsWith('/')
|
|
298
|
+
? localizedHref.slice(0, -1)
|
|
299
|
+
: localizedHref) ||
|
|
300
|
+
(!!activeRoute?.filePath &&
|
|
301
|
+
!!route.filePath &&
|
|
302
|
+
activeRoute.filePath === route.filePath)
|
|
296
303
|
const hasChildren = !!route.routes?.length || !!route.subRoutes?.length
|
|
297
304
|
const children = route.routes || route.subRoutes
|
|
298
305
|
|
|
299
|
-
const [isOpen, setIsOpen] = useState(
|
|
300
|
-
|
|
306
|
+
const [isOpen, setIsOpen] = useState(
|
|
307
|
+
() =>
|
|
308
|
+
activePath.startsWith(localizedHref) ||
|
|
309
|
+
(!!activeRoute?.filePath &&
|
|
310
|
+
!!route.filePath &&
|
|
311
|
+
activeRoute.filePath === route.filePath),
|
|
301
312
|
)
|
|
302
313
|
const [prevActivePath, setPrevActivePath] = useState(activePath)
|
|
303
314
|
|
|
304
315
|
if (activePath !== prevActivePath) {
|
|
305
316
|
setPrevActivePath(activePath)
|
|
306
|
-
if (
|
|
317
|
+
if (
|
|
318
|
+
activePath.startsWith(localizedHref) ||
|
|
319
|
+
(!!activeRoute?.filePath &&
|
|
320
|
+
!!route.filePath &&
|
|
321
|
+
activeRoute.filePath === route.filePath)
|
|
322
|
+
) {
|
|
307
323
|
setIsOpen(true)
|
|
308
324
|
}
|
|
309
325
|
}
|
|
@@ -325,6 +341,7 @@ export function SidebarItem({
|
|
|
325
341
|
key={subRoute.path}
|
|
326
342
|
route={subRoute}
|
|
327
343
|
activePath={activePath}
|
|
344
|
+
activeRoute={activeRoute}
|
|
328
345
|
/>
|
|
329
346
|
))}
|
|
330
347
|
</SidebarSubGroup>
|
|
@@ -351,7 +368,7 @@ export interface SidebarItemsProps extends ComponentBase {
|
|
|
351
368
|
}
|
|
352
369
|
|
|
353
370
|
export function SidebarItems({ routes, className }: SidebarItemsProps) {
|
|
354
|
-
const { groups, ungrouped, activePath } = useSidebar(routes)
|
|
371
|
+
const { groups, ungrouped, activePath, activeRoute } = useSidebar(routes)
|
|
355
372
|
|
|
356
373
|
return (
|
|
357
374
|
<div className={cn('flex flex-col gap-6', className)}>
|
|
@@ -362,6 +379,7 @@ export function SidebarItems({ routes, className }: SidebarItemsProps) {
|
|
|
362
379
|
key={route.path}
|
|
363
380
|
route={route}
|
|
364
381
|
activePath={activePath}
|
|
382
|
+
activeRoute={activeRoute}
|
|
365
383
|
/>
|
|
366
384
|
))}
|
|
367
385
|
</SidebarGroup>
|
|
@@ -378,6 +396,7 @@ export function SidebarItems({ routes, className }: SidebarItemsProps) {
|
|
|
378
396
|
key={route.path}
|
|
379
397
|
route={route}
|
|
380
398
|
activePath={activePath}
|
|
399
|
+
activeRoute={activeRoute}
|
|
381
400
|
/>
|
|
382
401
|
))}
|
|
383
402
|
</SidebarGroup>
|
|
@@ -6,7 +6,6 @@ import { NotFound } from '../components/ui-base'
|
|
|
6
6
|
const Loading = () => <div className="text-muted text-sm py-4">Loading...</div>
|
|
7
7
|
import type React from 'react'
|
|
8
8
|
import { useEffect } from 'react'
|
|
9
|
-
import { Navigate } from 'react-router-dom'
|
|
10
9
|
|
|
11
10
|
interface CreateRoutesOptions {
|
|
12
11
|
routesData: ComponentRoute[]
|
|
@@ -176,11 +175,12 @@ export function createRoutes(options: CreateRoutesOptions): RouteRecord[] {
|
|
|
176
175
|
const moduleKey = moduleMap.get(normalizedFilePath)
|
|
177
176
|
const moduleLoader = moduleKey ? mdxModules[moduleKey] : null
|
|
178
177
|
const fullPath = withBase(route.path === '' ? '/' : route.path)
|
|
179
|
-
const path =
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
const path =
|
|
179
|
+
fullPath === baseDocsPath
|
|
180
|
+
? '.'
|
|
181
|
+
: fullPath.startsWith(baseDocsPath + '/')
|
|
182
|
+
? fullPath.slice(baseDocsPath.length + 1)
|
|
183
|
+
: fullPath
|
|
184
184
|
|
|
185
185
|
return {
|
|
186
186
|
path,
|
|
@@ -298,7 +298,7 @@ export function createRoutes(options: CreateRoutesOptions): RouteRecord[] {
|
|
|
298
298
|
: null
|
|
299
299
|
|
|
300
300
|
// Prioritize: Find a real route that matches the default tab first, then fall back to the first route beginning with this pattern.
|
|
301
|
-
|
|
301
|
+
let matchedRouteObj: RouteRecord | undefined =
|
|
302
302
|
defaultTabPath && docPathRegistry.has(defaultTabPath.replace(/\/$/, ''))
|
|
303
303
|
? docRoutes.find(
|
|
304
304
|
(r) =>
|
|
@@ -307,24 +307,62 @@ export function createRoutes(options: CreateRoutesOptions): RouteRecord[] {
|
|
|
307
307
|
: docRoutes.find((r) => filter(r.path) && r.path !== normalizedPath)
|
|
308
308
|
|
|
309
309
|
// Ultimate fallback: the absolute first document
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
310
|
+
if (!matchedRouteObj && docRoutes.length > 0) {
|
|
311
|
+
matchedRouteObj = docRoutes[0]
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if (matchedRouteObj) {
|
|
315
|
+
const redirectPath =
|
|
316
|
+
bPath === baseDocsPath
|
|
317
|
+
? '.'
|
|
318
|
+
: bPath.startsWith(baseDocsPath + '/')
|
|
319
|
+
? bPath.slice(baseDocsPath.length + 1)
|
|
320
|
+
: bPath
|
|
321
|
+
|
|
322
|
+
// Use `index: true` for the docs base path (e.g. /docs) instead of
|
|
323
|
+
// `path: '.'`. The dot-path is a client-only React Router feature: it
|
|
324
|
+
// means "same URL as parent" in createBrowserRouter, but createStaticHandler
|
|
325
|
+
// does not recognise it during SSG. This caused the static handler to skip
|
|
326
|
+
// the fallback loader entirely → loaderData was empty for /docs → the SSR
|
|
327
|
+
// rendered an empty content slot while the client hydrated with the first
|
|
328
|
+
// doc's element → structural mismatch → visual page duplication on refresh.
|
|
329
|
+
// Index routes are correctly matched by both browser and static handler.
|
|
330
|
+
const isBasePathFallback = redirectPath === '.'
|
|
322
331
|
docRoutes.push({
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
332
|
+
...(isBasePathFallback
|
|
333
|
+
? { index: true as const }
|
|
334
|
+
: { path: redirectPath }),
|
|
335
|
+
element: matchedRouteObj.element,
|
|
336
|
+
loader: matchedRouteObj.loader,
|
|
337
|
+
getStaticPaths: () => [],
|
|
338
|
+
})
|
|
339
|
+
|
|
340
|
+
const matchedMetaObj = docMetadata.find((m) => {
|
|
341
|
+
const fullPath = withBase(m.path === '' ? '/' : m.path)
|
|
342
|
+
const p =
|
|
343
|
+
fullPath === baseDocsPath
|
|
344
|
+
? '.'
|
|
345
|
+
: fullPath.startsWith(baseDocsPath + '/')
|
|
346
|
+
? fullPath.slice(baseDocsPath.length + 1)
|
|
347
|
+
: fullPath
|
|
348
|
+
return p === matchedRouteObj.path
|
|
327
349
|
})
|
|
350
|
+
|
|
351
|
+
if (matchedMetaObj) {
|
|
352
|
+
const canonicalPath = withBase(matchedMetaObj.path)
|
|
353
|
+
const canonicalUrl = config.siteUrl
|
|
354
|
+
? `${config.siteUrl.replace(/\/$/, '')}${canonicalPath}`
|
|
355
|
+
: canonicalPath
|
|
356
|
+
|
|
357
|
+
docMetadata.push({
|
|
358
|
+
...matchedMetaObj,
|
|
359
|
+
path: bPath,
|
|
360
|
+
seo: {
|
|
361
|
+
...matchedMetaObj.seo,
|
|
362
|
+
canonical: canonicalUrl,
|
|
363
|
+
},
|
|
364
|
+
})
|
|
365
|
+
}
|
|
328
366
|
}
|
|
329
367
|
}
|
|
330
368
|
})
|