boltdocs 3.3.4 → 3.3.6
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/{build-COgv-rkY.mjs → build-BJnL-FHG.mjs} +1 -1
- package/dist/{build-1CsvBIsN.cjs → build-CxT38vPv.cjs} +1 -1
- package/dist/client/index.cjs +80 -32
- package/dist/client/index.d.cts +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +78 -31
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +4 -4
- package/dist/client/primitives.d.cts +40 -9
- package/dist/client/primitives.d.ts +40 -9
- package/dist/client/primitives.js +4 -4
- package/dist/config-B3_iVsbi.mjs +7 -0
- package/dist/{config-PLvresCv.cjs → config-BC_qhXws.cjs} +1 -1
- package/dist/config-BJp3lGzE.cjs +7 -0
- package/dist/{dev-C_9iBwmu.cjs → dev-46NiL0MC.cjs} +1 -1
- package/dist/{dev-UWVM3ah-.mjs → dev-C4kjO5xs.mjs} +1 -1
- package/dist/{docs-layout-CbZ7LDRe.js → docs-layout-D3Fmb0Wd.js} +16 -117
- package/dist/{docs-layout-vzfXed1Q.cjs → docs-layout-SgphExoE.cjs} +16 -123
- package/dist/{doctor-DMECtdK6.cjs → doctor-BqxOFRt3.cjs} +1 -1
- package/dist/{doctor-i8Qmd8DJ.mjs → doctor-Cv5lXnay.mjs} +1 -1
- package/dist/{doctor-FuFY1jBz.cjs → doctor-TS3JGNEU.cjs} +1 -1
- package/dist/{image-B-NDSDuY.js → image-BAiDReNd.js} +1 -1
- package/dist/{image-Hnaa2bJd.cjs → image-Bkx85rsq.cjs} +1 -1
- package/dist/{index-Cg3TmXIZ.d.ts → index-B1Mx0dHl.d.ts} +30 -6
- package/dist/{index-CSiMUBhC.d.cts → index-DLaHgD-i.d.cts} +30 -6
- package/dist/{link-vZjmD-es.cjs → link-hLWOsx0x.cjs} +59 -28
- package/dist/{link-CgdI6O2o.js → link-q1qHNGK_.js} +54 -29
- package/dist/{mdx-BRT71V5Q.js → mdx-CJGWzBGy.js} +2 -2
- package/dist/{mdx-D0Absdq5.cjs → mdx-Qi0DmaY8.cjs} +2 -2
- package/dist/node/cli-entry.cjs +1 -1
- package/dist/node/cli-entry.mjs +1 -1
- package/dist/node/highlight.d.cts +2 -2
- package/dist/node/highlight.d.mts +2 -2
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +7 -4
- package/dist/node/index.d.mts +7 -4
- package/dist/node/index.mjs +1 -1
- package/dist/node/mdx/shiki-adapter.cjs +1 -1
- package/dist/node/mdx/shiki-adapter.d.cts +7 -2
- package/dist/node/mdx/shiki-adapter.d.mts +7 -2
- package/dist/node/mdx/shiki-adapter.mjs +1 -1
- package/dist/node-7Cfw6nMr.cjs +23 -0
- package/dist/node-CT2E84nY.mjs +23 -0
- package/dist/{package-Cwma8oO7.cjs → package-Bah2tHjK.cjs} +1 -1
- package/dist/{package-CKC-4LtU.mjs → package-D6bf68FR.mjs} +1 -1
- package/dist/plugin-AgNI3ktz.cjs +69 -0
- package/dist/plugin-BAv_pYLt.mjs +69 -0
- package/dist/{plugin-context-BxF88sW4.cjs → plugin-context-BZs5lvDu.cjs} +3 -3
- package/dist/{plugin-context-BKK-nfOd.mjs → plugin-context-b5qVVQSU.mjs} +2 -2
- package/dist/{plugin-lifecycle-BjMclfc3.cjs → plugin-lifecycle-s89gzTlh.cjs} +1 -1
- package/dist/{registry-BbB6NqSv.d.cts → registry-B8pt41zj.d.cts} +1 -1
- package/dist/{registry-sJqDv0kE.d.mts → registry-BrrH2X9c.d.mts} +1 -1
- package/dist/routes-CzhKOw67.cjs +6 -0
- package/dist/{routes-C3_w9fLX.cjs → routes-Dq_2EUIB.cjs} +1 -1
- package/dist/routes-Dw6g0bfF.mjs +6 -0
- package/dist/search-dialog-BYZS9aeO.cjs +747 -0
- package/dist/{search-dialog-x_qHU8ty.cjs → search-dialog-CguKVtUu.cjs} +145 -5
- package/dist/{search-dialog-MmwxFMmE.js → search-dialog-DQwod5Xc.js} +1 -1
- package/dist/search-dialog-DzObE-Ar.js +717 -0
- package/dist/{search-dialog-DmirOMPg.cjs → search-dialog-QgKRRbsI.cjs} +1 -1
- package/dist/{search-dialog-BqkzDTq2.js → search-dialog-mYnqU4v7.js} +134 -6
- package/dist/{types-Db6zToZH.d.mts → types-74i_xUe2.d.mts} +1 -1
- package/dist/{types-o7iZ2BAR.d.cts → types-X_Pwk8Cg.d.cts} +1 -1
- package/dist/virtual-modules-C3S3Nz8r.cjs +40 -0
- package/dist/virtual-modules-CaxqrFd6.mjs +40 -0
- package/package.json +4 -3
- package/dist/config-CrsQJHQz.cjs +0 -7
- package/dist/config-DC0nMMk7.mjs +0 -7
- package/dist/node-C3HctGaH.cjs +0 -23
- package/dist/node-CUiheODn.mjs +0 -23
- package/dist/plugin-BX6TXR8x.cjs +0 -69
- package/dist/plugin-C8UMIA-4.mjs +0 -69
- package/dist/routes-C0kb4ue6.cjs +0 -6
- package/dist/routes-C4wrLWwu.mjs +0 -6
- package/dist/search-dialog-D3jtaw6w.cjs +0 -525
- package/dist/search-dialog-DRiXejws.js +0 -501
- package/dist/virtual-modules-XBiJoTsp.mjs +0 -39
- package/dist/virtual-modules-hndVivLR.cjs +0 -39
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { ft as BoltdocsRoutePathWithFallback } from "../index-CuNSD3E2.js";
|
|
3
|
-
import { $ as SidebarItem, J as Sidebar, Q as SidebarHeader, X as SidebarGroup, Y as SidebarContent, Z as SidebarGroupRenderProps, at as SidebarLinkProps, ct as SidebarSlots, et as SidebarItemProps, it as SidebarLink, lt as SidebarSubGroup, nt as SidebarItems, ot as SidebarMobile, qt as NavbarLink$1, rt as SidebarItemsProps, st as SidebarRoot, tt as SidebarItemRenderProps, ut as ComponentBase } from "../index-
|
|
3
|
+
import { $ as SidebarItem, J as Sidebar, Q as SidebarHeader, X as SidebarGroup, Y as SidebarContent, Z as SidebarGroupRenderProps, at as SidebarLinkProps, ct as SidebarSlots, et as SidebarItemProps, it as SidebarLink, lt as SidebarSubGroup, nt as SidebarItems, ot as SidebarMobile, qt as NavbarLink$1, rt as SidebarItemsProps, st as SidebarRoot, tt as SidebarItemRenderProps, ut as ComponentBase } from "../index-B1Mx0dHl.js";
|
|
4
4
|
import { a as CalloutRoot, c as CalloutTitleProps, i as CalloutProps, l as CalloutVariant, n as CalloutBody, o as CalloutRootProps, r as CalloutIcon, s as CalloutTitle, t as Callout } from "../callout-oI_LCbxS.js";
|
|
5
5
|
import * as _$react from "react";
|
|
6
6
|
import { CSSProperties, Component, ComponentProps, ComponentType, ErrorInfo, FC, HTMLAttributes, ImgHTMLAttributes, ReactNode, Ref, RefObject } from "react";
|
|
@@ -93,8 +93,16 @@ declare namespace Tabs {
|
|
|
93
93
|
}
|
|
94
94
|
declare function TabsList({
|
|
95
95
|
children,
|
|
96
|
-
className
|
|
97
|
-
|
|
96
|
+
className,
|
|
97
|
+
role
|
|
98
|
+
}: ComponentBase & {
|
|
99
|
+
/**
|
|
100
|
+
* Pass `null` when the "tabs" are plain navigation links (e.g. section
|
|
101
|
+
* tabs rendered as anchors): an ARIA `tablist` requires `tab` children and
|
|
102
|
+
* breaks otherwise. Omit to get the standard widget role.
|
|
103
|
+
*/
|
|
104
|
+
role?: string | null;
|
|
105
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
98
106
|
declare function TabsItem({
|
|
99
107
|
children,
|
|
100
108
|
id,
|
|
@@ -183,8 +191,11 @@ declare function AnchorProvider({
|
|
|
183
191
|
}: AnchorProviderProps): _$react_jsx_runtime0.JSX.Element;
|
|
184
192
|
declare function OnThisPage({
|
|
185
193
|
children,
|
|
186
|
-
className
|
|
187
|
-
|
|
194
|
+
className,
|
|
195
|
+
label
|
|
196
|
+
}: ComponentBase & {
|
|
197
|
+
/** Accessible name for the TOC nav landmark. */label?: string;
|
|
198
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
188
199
|
declare namespace OnThisPage {
|
|
189
200
|
var Root: typeof OnThisPage;
|
|
190
201
|
var Header: typeof OnThisPageHeader;
|
|
@@ -525,6 +536,12 @@ interface ErrorBoundaryProps {
|
|
|
525
536
|
FallbackComponent?: ComponentType<FallbackProps>;
|
|
526
537
|
onError?: (error: Error, info: ErrorInfo) => void;
|
|
527
538
|
onReset?: () => void;
|
|
539
|
+
/**
|
|
540
|
+
* When any of these values change, a caught error is automatically
|
|
541
|
+
* reset (e.g. pass the current route path so navigation clears stale
|
|
542
|
+
* render errors).
|
|
543
|
+
*/
|
|
544
|
+
resetKeys?: unknown[];
|
|
528
545
|
}
|
|
529
546
|
interface ErrorBoundaryState {
|
|
530
547
|
hasError: boolean;
|
|
@@ -535,6 +552,8 @@ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryS
|
|
|
535
552
|
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
536
553
|
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
537
554
|
resetErrorBoundary: () => void;
|
|
555
|
+
private prevResetKeys;
|
|
556
|
+
componentDidUpdate(prevProps: ErrorBoundaryProps): void;
|
|
538
557
|
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | _$react_jsx_runtime0.JSX.Element | null | undefined;
|
|
539
558
|
}
|
|
540
559
|
interface ErrorBoundaryFallbackProps {
|
|
@@ -876,6 +895,8 @@ interface NavbarLogoProps extends Omit<ComponentBase, 'children'> {
|
|
|
876
895
|
}
|
|
877
896
|
interface NavbarSearchTriggerProps extends ComponentBase {
|
|
878
897
|
onPress: () => void;
|
|
898
|
+
'aria-label'?: string;
|
|
899
|
+
'aria-keyshortcuts'?: string;
|
|
879
900
|
}
|
|
880
901
|
interface NavbarThemeProps {
|
|
881
902
|
className?: string;
|
|
@@ -953,8 +974,16 @@ declare function NavbarTitle({
|
|
|
953
974
|
}): _$react_jsx_runtime0.JSX.Element;
|
|
954
975
|
declare function NavbarLinks({
|
|
955
976
|
children,
|
|
956
|
-
className
|
|
957
|
-
|
|
977
|
+
className,
|
|
978
|
+
label
|
|
979
|
+
}: ComponentBase & {
|
|
980
|
+
/**
|
|
981
|
+
* Accessible name for the nav landmark. Required when the page renders
|
|
982
|
+
* multiple navs (e.g. a docs navbar plus a sidebar) so landmarks stay
|
|
983
|
+
* distinguishable.
|
|
984
|
+
*/
|
|
985
|
+
label?: string;
|
|
986
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
958
987
|
declare function NavbarLink({
|
|
959
988
|
label,
|
|
960
989
|
href,
|
|
@@ -999,12 +1028,14 @@ declare function NavbarDropdownItem({
|
|
|
999
1028
|
declare function NavbarSearchTriggerDesktop({
|
|
1000
1029
|
className,
|
|
1001
1030
|
onPress,
|
|
1002
|
-
children
|
|
1031
|
+
children,
|
|
1032
|
+
...props
|
|
1003
1033
|
}: NavbarSearchTriggerProps): _$react_jsx_runtime0.JSX.Element;
|
|
1004
1034
|
declare function NavbarSearchTriggerMobile({
|
|
1005
1035
|
className,
|
|
1006
1036
|
onPress,
|
|
1007
|
-
children
|
|
1037
|
+
children,
|
|
1038
|
+
...props
|
|
1008
1039
|
}: NavbarSearchTriggerProps): _$react_jsx_runtime0.JSX.Element;
|
|
1009
1040
|
declare function NavbarSearchTriggerKbd({
|
|
1010
1041
|
className,
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import { n as NavLink, o as cn, r as TransitionLink, t as Link } from "../link-
|
|
7
|
-
import { a as CodeBlockContent, c as CodeBlockHeader, d as CalloutBody, f as CalloutIcon, h as Heading, i as CodeBlockActions, l as CodeBlockPre, m as CalloutTitle, n as Tooltip, o as CodeBlockExpand, p as CalloutRoot, r as CodeBlock, s as CodeBlockGroup, t as Image, u as Callout } from "../image-
|
|
8
|
-
import { D as
|
|
9
|
-
import {
|
|
6
|
+
import { n as NavLink, o as cn, r as TransitionLink, t as Link } from "../link-q1qHNGK_.js";
|
|
7
|
+
import { a as CodeBlockContent, c as CodeBlockHeader, d as CalloutBody, f as CalloutIcon, h as Heading, i as CodeBlockActions, l as CodeBlockPre, m as CalloutTitle, n as Tooltip, o as CodeBlockExpand, p as CalloutRoot, r as CodeBlock, s as CodeBlockGroup, t as Image, u as Callout } from "../image-BAiDReNd.js";
|
|
8
|
+
import { D as ButtonGroup, E as Popover, O as Breadcrumbs, T as Menu, _ as ScrollProvider, a as SidebarHeader, b as useItems, c as SidebarLink, d as SidebarSubGroup, f as PageNav, g as OnThisPageTree, h as OnThisPageItems, i as SidebarGroup, l as SidebarMobile, m as OnThisPage, n as Sidebar, o as SidebarItem, p as AnchorProvider, r as SidebarContent, s as SidebarItems, t as DocsLayout, u as SidebarRoot, v as useActiveAnchor, w as Tabs, y as useActiveAnchors } from "../docs-layout-D3Fmb0Wd.js";
|
|
9
|
+
import { c as Button, i as Navbar, o as ErrorBoundary, s as ErrorBoundaryFallback, t as SearchDialog } from "../search-dialog-mYnqU4v7.js";
|
|
10
10
|
import { jsx } from "react/jsx-runtime";
|
|
11
11
|
|
|
12
12
|
//#region src/client/components/primitives/skeleton.tsx
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
+
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
import{t as e}from"./chunk-BFSpntXv.mjs";import{r as t}from"./errors-N-b6Sn2G.mjs";import{t as n}from"./config-files-DfwZ3Wot.mjs";import r from"node:path";import i from"node:fs";import a from"node:crypto";import{z as o}from"zod";import{warn as s}from"@bdocs/dui";function c(e){return e}const l=o.object({icon:o.string().max(50),link:o.string().url()}),u=o.object({processor:o.enum([`satteri`]).default(`satteri`)}),d=o.object({name:o.string(),enforce:o.enum([`pre`,`post`]).optional(),version:o.string().optional(),boltdocsVersion:o.string().optional(),clientEntry:o.string().optional(),remarkPlugins:o.array(o.unknown()).optional(),rehypePlugins:o.array(o.unknown()).optional(),vitePlugins:o.array(o.unknown()).optional(),components:o.record(o.string(),o.string()).optional(),client:o.object({slots:o.record(o.string(),o.string()).optional(),providers:o.array(o.string()).optional(),mdxComponents:o.record(o.string(),o.string()).optional(),head:o.array(o.object({tag:o.enum([`script`,`link`,`meta`,`style`]),attrs:o.record(o.string(),o.union([o.string(),o.boolean()])).optional(),content:o.string().optional()})).optional()}).optional(),codeHighlighter:o.unknown().optional(),metadata:o.record(o.string(),o.unknown()).optional(),css:o.object({cssFiles:o.array(o.string()).optional(),headStyles:o.array(o.string()).optional(),postcssPlugins:o.array(o.unknown()).optional(),preprocessorOptions:o.record(o.string(),o.unknown()).optional()}).optional(),middleware:o.array(o.object({name:o.string().optional(),enforce:o.enum([`pre`,`post`]).optional()}).passthrough()).optional(),hooks:o.record(o.string(),o.unknown()).optional()}),f=o.object({title:o.union([o.string(),o.record(o.string(),o.string())]).optional(),description:o.union([o.string(),o.record(o.string(),o.string())]).optional(),logo:o.union([o.string(),o.object({dark:o.string(),light:o.string(),alt:o.string().optional(),width:o.number().optional(),height:o.number().optional()})]).optional(),navbar:o.array(o.object({label:o.union([o.string(),o.record(o.string(),o.string())]),href:o.string(),items:o.array(o.object({label:o.union([o.string(),o.record(o.string(),o.string())]),href:o.string()})).optional()})).optional(),sidebar:o.record(o.string(),o.array(o.object({text:o.string(),link:o.string()}))).optional(),sidebarGroups:o.record(o.string(),o.object({title:o.union([o.string(),o.record(o.string(),o.string())]).optional(),icon:o.string().optional()})).optional(),socialLinks:o.array(l).optional(),editLink:o.string().refine(e=>!e||e.includes(`:path`),{message:`editLink must contain ':path' placeholder if specified`}).optional(),communityHelp:o.string().url().optional(),version:o.string().max(50).optional(),githubRepo:o.string().max(100).optional(),favicon:o.string().optional(),tabs:o.array(o.object({id:o.string(),text:o.union([o.string(),o.record(o.string(),o.string())]),icon:o.string().optional()})).optional(),codeTheme:o.union([o.string(),o.object({light:o.string(),dark:o.string()})]).optional(),codeHighlighting:o.union([o.string(),o.object({engine:o.union([o.string(),o.unknown(),o.function()]).optional(),theme:o.union([o.string(),o.object({light:o.string(),dark:o.string()})]).optional(),options:o.record(o.string(),o.unknown()).optional()})]).optional()}),p=o.union([o.string(),o.object({rules:o.array(o.object({userAgent:o.string(),allow:o.union([o.string(),o.array(o.string())]).optional(),disallow:o.union([o.string(),o.array(o.string())]).optional()})).optional(),sitemaps:o.array(o.string().url()).optional()})]),m=o.object({defaultLocale:o.string(),locales:o.union([o.record(o.string(),o.string()),o.array(o.string())]).transform(e=>Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e),localeConfigs:o.record(o.string(),o.object({label:o.string().optional(),direction:o.enum([`ltr`,`rtl`]).optional(),htmlLang:o.string().optional(),calendar:o.string().optional()})).optional()}),h=o.object({defaultVersion:o.string(),prefix:o.string().optional(),versions:o.array(o.object({label:o.string(),path:o.string()}))}),g=o.object({headers:o.record(o.string(),o.string()).optional(),enableCSP:o.boolean().optional(),customHeaders:o.record(o.string(),o.string()).optional()}),_=o.object({google:o.string().optional(),bing:o.string().optional(),yandex:o.string().optional(),pinterest:o.string().optional(),facebook:o.string().optional()}),v=o.lazy(()=>o.union([o.string(),o.number(),o.boolean(),o.null(),o.array(v),o.record(o.string(),v)])),y=o.union([o.record(o.string(),v),o.array(o.record(o.string(),v))]),b=o.object({metatags:o.record(o.string(),o.string()).optional(),indexing:o.enum([`all`,`public`]).optional(),thumbnails:o.object({background:o.string().optional()}).optional(),verification:_.optional(),structuredData:y.optional()}),x=o.object({viewTransitions:o.union([o.boolean(),o.object({enabled:o.boolean().optional(),types:o.array(o.string()).optional()})]).optional(),fileRouting:o.boolean().optional()}),S=o.object({measurementId:o.string().min(1,`Measurement ID is required for GA4`),debug:o.boolean().optional(),anonymizeIp:o.boolean().optional(),sendPageView:o.boolean().optional(),cookieFlags:o.string().optional(),autoTrack:o.object({pageViews:o.boolean().optional(),downloads:o.boolean().optional(),externalLinks:o.boolean().optional(),search:o.boolean().optional()}).optional()}),C=o.object({tagId:o.string().min(1,`Tag ID is required for GTM`),dataLayerName:o.string().optional(),preview:o.string().optional()}),w=o.object({appId:o.string().min(1,`Algolia App ID is required`),apiKey:o.string().min(1,`Algolia API Key is required`),indexName:o.string().min(1,`Algolia Index Name is required`)}),T=o.object({repo:o.string().min(1,`Giscus repository is required`),repoId:o.string().min(1,`Giscus repository ID is required`),category:o.string().optional(),categoryId:o.string().optional(),mapping:o.enum([`pathname`,`url`,`title`,`og:title`,`specific`,`number`]).optional(),strict:o.union([o.enum([`0`,`1`]),o.boolean()]).optional(),reactionsEnabled:o.union([o.enum([`0`,`1`]),o.boolean()]).optional(),emitMetadata:o.union([o.enum([`0`,`1`]),o.boolean()]).optional(),inputPosition:o.enum([`top`,`bottom`]).optional(),theme:o.string().optional(),darkTheme:o.string().optional(),lang:o.string().optional(),loading:o.enum([`lazy`,`eager`]).optional()}),E=o.object({enabled:o.boolean(),owner:o.string().min(1,`GitHub owner is required`),repo:o.string().min(1,`GitHub repository name is required`),categorySlug:o.string().optional(),endpoint:o.string().optional()}),D=o.object({analytics:o.boolean().optional(),speedInsights:o.boolean().optional()}),O=o.object({apiKey:o.string().min(1,`API key is required for PostHog`),host:o.string().url().optional(),capturePageview:o.boolean().optional(),capturePageleave:o.boolean().optional(),sessionRecording:o.boolean().optional(),autocapture:o.boolean().optional()}),k=o.object({ga4:S.optional(),gtm:C.optional(),vercel:D.optional(),posthog:O.optional()}),A=o.object({algolia:w.optional()}),j=o.object({giscus:T.optional(),custom:E.optional()}),M=o.object({analytics:k.optional(),search:A.optional(),feedback:j.optional()}),N=o.object({criticalCss:o.enum([`zig-critters`,`beasties`,`none`]).optional(),criticalCssMaxSize:o.number().int().min(0).optional()}),P=o.object({labels:o.record(o.string(),o.union([o.string(),o.record(o.string(),o.string())])).optional(),positions:o.record(o.string(),o.number()).optional(),postsPerPage:o.number().int().positive().optional(),defaultCollection:o.string().optional(),dateFormat:o.string().optional(),sortBy:o.enum([`date`,`title`,`sidebarPosition`]).optional()}),F=o.object({visible:o.boolean().optional(),environments:o.array(o.string()).optional()}),I=o.object({turbo:o.boolean().optional(),siteUrl:o.string().url().optional(),docsDir:o.string().optional(),base:o.string().optional(),theme:f.optional(),i18n:m.optional(),versions:h.optional(),mdx:u.optional(),ssg:N.optional(),plugins:o.array(d).optional(),collections:P.optional(),robots:p.optional(),security:g.optional(),seo:b.optional(),integrations:M.optional(),drafts:F.optional(),experimental:x.optional(),aliases:o.custom().optional(),featureFlags:o.record(o.string(),o.union([o.boolean(),o.string()])).optional(),vite:o.custom().optional()});var L=e({resolveConfig:()=>G});const R=new Map;function z(e,t,n,r){return`${e}::${t}::${n}::${r}`}function B(e){return r.join(e,`.boltdocs`,`cache`,`config.json`)}function V(e,t,n,r,i){return a.createHash(`sha256`).update(`${e}:${t}:${n}:${r}:${i}`).digest(`hex`)}function H(e,t,n){let a=B(e);if(!i.existsSync(a))return null;try{let o=i.readFileSync(a,`utf-8`),s=JSON.parse(o),c=r.resolve(e,s.filename);if(!i.existsSync(c))return null;let l=i.statSync(c);if(V(s.filename,l.mtimeMs,l.size,t,n)!==V(s.filename,s.mtimeMs,s.size,s.command,s.mode))return null;let u=I.safeParse(s.config);return u.success?{config:u.data,configFile:c}:null}catch{return null}}function U(e,t,n,a,o,s,c){try{let l=B(e);i.mkdirSync(r.dirname(l),{recursive:!0});let u={filename:t,mtimeMs:n,size:a,command:o,mode:s,config:{...c,plugins:[]}};i.writeFileSync(l,JSON.stringify(u),`utf-8`)}catch(e){process.env.BOLTDOCS_DEBUG===`true`&&console.warn(`[boltdocs] Failed to write config cache:`,e)}}async function W(e,t){let{createJiti:n}=await import(`jiti`),r=await n(t,{interopDefault:!0}).import(e);return r.default??r.config??r}async function G(e,a=process.cwd(),o=`serve`,c=`development`){let l=a,u=z(e,l,o,c);{let e=R.get(u);if(e)return e}let d=H(l,o,c);if(d){try{let e=await W(d.configFile,l);e?.plugins&&(d.config.plugins=e.plugins)}catch{}return R.set(u,d.config),d.config}let f={docsDir:r.resolve(l,e),theme:{title:`Boltdocs`,description:`A Vite documentation framework`,navbar:[{label:`Home`,href:`/`},{label:`Documentation`,href:`/docs`}],codeTheme:{light:`github-light`,dark:`github-dark`}}},p={},m=null;for(let e of n){let t=r.resolve(l,e);if(i.existsSync(t))try{let n;try{n=await W(t,l)}catch(r){process.env.BOLTDOCS_DEBUG===`true`&&console.warn(`[boltdocs] jiti config load failed for ${e}, falling back to Vite: ${r instanceof Error?r.message:String(r)}`);let{loadConfigFromFile:i}=await import(`vite`);n=(await i({command:o,mode:c},t,l))?.config}if(n){p=n;let r=i.statSync(t);m={filename:e,mtimeMs:r.mtimeMs,size:r.size};break}}catch(t){t instanceof Error&&(console.error(`\x1b[31m[boltdocs] ✖ Failed to load config from ${e}: ${t.message}\x1b[0m`),s(`Failed to load config from ${e}: ${t.message}`))}}let h={title:p.title,description:p.description,logo:p.logo,favicon:p.favicon,navbar:p.navbar,sidebar:p.sidebar,sidebarGroups:p.theme?.sidebarGroups,socialLinks:p.socialLinks,githubRepo:p.githubRepo,tabs:p.tabs,codeTheme:p.codeTheme,codeHighlighting:p.theme?.codeHighlighting,communityHelp:p.communityHelp,version:p.version,editLink:p.editLink,...p.theme||{}},g=Object.fromEntries(Object.entries(h).filter(([e,t])=>t!==void 0));g.navbar&&=g.navbar.map(e=>({label:e.label||``,href:e.href||``,items:e.items}));let _={docsDir:r.resolve(l,p.docsDir||e),theme:{...f.theme,...g},i18n:p.i18n?{...p.i18n,locales:Array.isArray(p.i18n.locales)?Object.fromEntries(p.i18n.locales.map(e=>[e,e])):p.i18n.locales}:void 0,versions:p.versions,siteUrl:p.siteUrl,base:p.base,ssg:p.ssg,seo:p.seo,plugins:p.plugins||[],robots:p.robots,security:p.security,integrations:p.integrations,experimental:p.experimental,featureFlags:p.featureFlags,aliases:p.aliases,drafts:p.drafts,collections:p.collections,vite:p.vite},v=I.safeParse(_);if(!v.success)throw new t(`Invalid Boltdocs configuration:\n${v.error.issues.map(e=>` - ${e.path.join(`.`)}: ${e.message}`).join(`
|
|
7
|
+
`)}`);let y=v.data;return m&&U(l,m.filename,m.mtimeMs,m.size,o,c,y),R.set(u,y),y}export{c as i,G as n,d as r,L as t};
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
const e=require(`./config-
|
|
6
|
+
const e=require(`./config-BJp3lGzE.cjs`);require(`./config-files-ph2ZtHWl.cjs`),exports.resolveConfig=e.t;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boltdocs - https://boltdocs.vercel.app
|
|
3
|
+
* Copyright (c) 2026 Jesus Alcala
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
const e=require(`./chunk-D1Md3oWO.cjs`),t=require(`./errors-vKw8CkiX.cjs`),n=require(`./config-files-ph2ZtHWl.cjs`);let r=require(`node:path`);r=e.r(r);let i=require(`node:fs`);i=e.r(i);let a=require(`node:crypto`);a=e.r(a);let o=require(`zod`),s=require(`@bdocs/dui`);function c(e){return e}const l=o.z.object({icon:o.z.string().max(50),link:o.z.string().url()}),u=o.z.object({processor:o.z.enum([`satteri`]).default(`satteri`)}),d=o.z.object({name:o.z.string(),enforce:o.z.enum([`pre`,`post`]).optional(),version:o.z.string().optional(),boltdocsVersion:o.z.string().optional(),clientEntry:o.z.string().optional(),remarkPlugins:o.z.array(o.z.unknown()).optional(),rehypePlugins:o.z.array(o.z.unknown()).optional(),vitePlugins:o.z.array(o.z.unknown()).optional(),components:o.z.record(o.z.string(),o.z.string()).optional(),client:o.z.object({slots:o.z.record(o.z.string(),o.z.string()).optional(),providers:o.z.array(o.z.string()).optional(),mdxComponents:o.z.record(o.z.string(),o.z.string()).optional(),head:o.z.array(o.z.object({tag:o.z.enum([`script`,`link`,`meta`,`style`]),attrs:o.z.record(o.z.string(),o.z.union([o.z.string(),o.z.boolean()])).optional(),content:o.z.string().optional()})).optional()}).optional(),codeHighlighter:o.z.unknown().optional(),metadata:o.z.record(o.z.string(),o.z.unknown()).optional(),css:o.z.object({cssFiles:o.z.array(o.z.string()).optional(),headStyles:o.z.array(o.z.string()).optional(),postcssPlugins:o.z.array(o.z.unknown()).optional(),preprocessorOptions:o.z.record(o.z.string(),o.z.unknown()).optional()}).optional(),middleware:o.z.array(o.z.object({name:o.z.string().optional(),enforce:o.z.enum([`pre`,`post`]).optional()}).passthrough()).optional(),hooks:o.z.record(o.z.string(),o.z.unknown()).optional()}),f=o.z.object({title:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]).optional(),description:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]).optional(),logo:o.z.union([o.z.string(),o.z.object({dark:o.z.string(),light:o.z.string(),alt:o.z.string().optional(),width:o.z.number().optional(),height:o.z.number().optional()})]).optional(),navbar:o.z.array(o.z.object({label:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]),href:o.z.string(),items:o.z.array(o.z.object({label:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]),href:o.z.string()})).optional()})).optional(),sidebar:o.z.record(o.z.string(),o.z.array(o.z.object({text:o.z.string(),link:o.z.string()}))).optional(),sidebarGroups:o.z.record(o.z.string(),o.z.object({title:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]).optional(),icon:o.z.string().optional()})).optional(),socialLinks:o.z.array(l).optional(),editLink:o.z.string().refine(e=>!e||e.includes(`:path`),{message:`editLink must contain ':path' placeholder if specified`}).optional(),communityHelp:o.z.string().url().optional(),version:o.z.string().max(50).optional(),githubRepo:o.z.string().max(100).optional(),favicon:o.z.string().optional(),tabs:o.z.array(o.z.object({id:o.z.string(),text:o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())]),icon:o.z.string().optional()})).optional(),codeTheme:o.z.union([o.z.string(),o.z.object({light:o.z.string(),dark:o.z.string()})]).optional(),codeHighlighting:o.z.union([o.z.string(),o.z.object({engine:o.z.union([o.z.string(),o.z.unknown(),o.z.function()]).optional(),theme:o.z.union([o.z.string(),o.z.object({light:o.z.string(),dark:o.z.string()})]).optional(),options:o.z.record(o.z.string(),o.z.unknown()).optional()})]).optional()}),p=o.z.union([o.z.string(),o.z.object({rules:o.z.array(o.z.object({userAgent:o.z.string(),allow:o.z.union([o.z.string(),o.z.array(o.z.string())]).optional(),disallow:o.z.union([o.z.string(),o.z.array(o.z.string())]).optional()})).optional(),sitemaps:o.z.array(o.z.string().url()).optional()})]),m=o.z.object({defaultLocale:o.z.string(),locales:o.z.union([o.z.record(o.z.string(),o.z.string()),o.z.array(o.z.string())]).transform(e=>Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e),localeConfigs:o.z.record(o.z.string(),o.z.object({label:o.z.string().optional(),direction:o.z.enum([`ltr`,`rtl`]).optional(),htmlLang:o.z.string().optional(),calendar:o.z.string().optional()})).optional()}),h=o.z.object({defaultVersion:o.z.string(),prefix:o.z.string().optional(),versions:o.z.array(o.z.object({label:o.z.string(),path:o.z.string()}))}),g=o.z.object({headers:o.z.record(o.z.string(),o.z.string()).optional(),enableCSP:o.z.boolean().optional(),customHeaders:o.z.record(o.z.string(),o.z.string()).optional()}),_=o.z.object({google:o.z.string().optional(),bing:o.z.string().optional(),yandex:o.z.string().optional(),pinterest:o.z.string().optional(),facebook:o.z.string().optional()}),v=o.z.lazy(()=>o.z.union([o.z.string(),o.z.number(),o.z.boolean(),o.z.null(),o.z.array(v),o.z.record(o.z.string(),v)])),y=o.z.union([o.z.record(o.z.string(),v),o.z.array(o.z.record(o.z.string(),v))]),b=o.z.object({metatags:o.z.record(o.z.string(),o.z.string()).optional(),indexing:o.z.enum([`all`,`public`]).optional(),thumbnails:o.z.object({background:o.z.string().optional()}).optional(),verification:_.optional(),structuredData:y.optional()}),x=o.z.object({viewTransitions:o.z.union([o.z.boolean(),o.z.object({enabled:o.z.boolean().optional(),types:o.z.array(o.z.string()).optional()})]).optional(),fileRouting:o.z.boolean().optional()}),S=o.z.object({measurementId:o.z.string().min(1,`Measurement ID is required for GA4`),debug:o.z.boolean().optional(),anonymizeIp:o.z.boolean().optional(),sendPageView:o.z.boolean().optional(),cookieFlags:o.z.string().optional(),autoTrack:o.z.object({pageViews:o.z.boolean().optional(),downloads:o.z.boolean().optional(),externalLinks:o.z.boolean().optional(),search:o.z.boolean().optional()}).optional()}),C=o.z.object({tagId:o.z.string().min(1,`Tag ID is required for GTM`),dataLayerName:o.z.string().optional(),preview:o.z.string().optional()}),w=o.z.object({appId:o.z.string().min(1,`Algolia App ID is required`),apiKey:o.z.string().min(1,`Algolia API Key is required`),indexName:o.z.string().min(1,`Algolia Index Name is required`)}),T=o.z.object({repo:o.z.string().min(1,`Giscus repository is required`),repoId:o.z.string().min(1,`Giscus repository ID is required`),category:o.z.string().optional(),categoryId:o.z.string().optional(),mapping:o.z.enum([`pathname`,`url`,`title`,`og:title`,`specific`,`number`]).optional(),strict:o.z.union([o.z.enum([`0`,`1`]),o.z.boolean()]).optional(),reactionsEnabled:o.z.union([o.z.enum([`0`,`1`]),o.z.boolean()]).optional(),emitMetadata:o.z.union([o.z.enum([`0`,`1`]),o.z.boolean()]).optional(),inputPosition:o.z.enum([`top`,`bottom`]).optional(),theme:o.z.string().optional(),darkTheme:o.z.string().optional(),lang:o.z.string().optional(),loading:o.z.enum([`lazy`,`eager`]).optional()}),E=o.z.object({enabled:o.z.boolean(),owner:o.z.string().min(1,`GitHub owner is required`),repo:o.z.string().min(1,`GitHub repository name is required`),categorySlug:o.z.string().optional(),endpoint:o.z.string().optional()}),D=o.z.object({analytics:o.z.boolean().optional(),speedInsights:o.z.boolean().optional()}),O=o.z.object({apiKey:o.z.string().min(1,`API key is required for PostHog`),host:o.z.string().url().optional(),capturePageview:o.z.boolean().optional(),capturePageleave:o.z.boolean().optional(),sessionRecording:o.z.boolean().optional(),autocapture:o.z.boolean().optional()}),k=o.z.object({ga4:S.optional(),gtm:C.optional(),vercel:D.optional(),posthog:O.optional()}),A=o.z.object({algolia:w.optional()}),j=o.z.object({giscus:T.optional(),custom:E.optional()}),M=o.z.object({analytics:k.optional(),search:A.optional(),feedback:j.optional()}),N=o.z.object({criticalCss:o.z.enum([`zig-critters`,`beasties`,`none`]).optional(),criticalCssMaxSize:o.z.number().int().min(0).optional()}),P=o.z.object({labels:o.z.record(o.z.string(),o.z.union([o.z.string(),o.z.record(o.z.string(),o.z.string())])).optional(),positions:o.z.record(o.z.string(),o.z.number()).optional(),postsPerPage:o.z.number().int().positive().optional(),defaultCollection:o.z.string().optional(),dateFormat:o.z.string().optional(),sortBy:o.z.enum([`date`,`title`,`sidebarPosition`]).optional()}),F=o.z.object({visible:o.z.boolean().optional(),environments:o.z.array(o.z.string()).optional()}),I=o.z.object({turbo:o.z.boolean().optional(),siteUrl:o.z.string().url().optional(),docsDir:o.z.string().optional(),base:o.z.string().optional(),theme:f.optional(),i18n:m.optional(),versions:h.optional(),mdx:u.optional(),ssg:N.optional(),plugins:o.z.array(d).optional(),collections:P.optional(),robots:p.optional(),security:g.optional(),seo:b.optional(),integrations:M.optional(),drafts:F.optional(),experimental:x.optional(),aliases:o.z.custom().optional(),featureFlags:o.z.record(o.z.string(),o.z.union([o.z.boolean(),o.z.string()])).optional(),vite:o.z.custom().optional()}),L=new Map;function R(e,t,n,r){return`${e}::${t}::${n}::${r}`}function z(e){return r.default.join(e,`.boltdocs`,`cache`,`config.json`)}function B(e,t,n,r,i){return a.default.createHash(`sha256`).update(`${e}:${t}:${n}:${r}:${i}`).digest(`hex`)}function V(e,t,n){let a=z(e);if(!i.default.existsSync(a))return null;try{let o=i.default.readFileSync(a,`utf-8`),s=JSON.parse(o),c=r.default.resolve(e,s.filename);if(!i.default.existsSync(c))return null;let l=i.default.statSync(c);if(B(s.filename,l.mtimeMs,l.size,t,n)!==B(s.filename,s.mtimeMs,s.size,s.command,s.mode))return null;let u=I.safeParse(s.config);return u.success?{config:u.data,configFile:c}:null}catch{return null}}function H(e,t,n,a,o,s,c){try{let l=z(e);i.default.mkdirSync(r.default.dirname(l),{recursive:!0});let u={filename:t,mtimeMs:n,size:a,command:o,mode:s,config:{...c,plugins:[]}};i.default.writeFileSync(l,JSON.stringify(u),`utf-8`)}catch(e){process.env.BOLTDOCS_DEBUG===`true`&&console.warn(`[boltdocs] Failed to write config cache:`,e)}}async function U(e,t){let{createJiti:n}=await import(`jiti`),r=await n(t,{interopDefault:!0}).import(e);return r.default??r.config??r}async function W(e,a=process.cwd(),o=`serve`,c=`development`){let l=a,u=R(e,l,o,c);{let e=L.get(u);if(e)return e}let d=V(l,o,c);if(d){try{let e=await U(d.configFile,l);e?.plugins&&(d.config.plugins=e.plugins)}catch{}return L.set(u,d.config),d.config}let f={docsDir:r.default.resolve(l,e),theme:{title:`Boltdocs`,description:`A Vite documentation framework`,navbar:[{label:`Home`,href:`/`},{label:`Documentation`,href:`/docs`}],codeTheme:{light:`github-light`,dark:`github-dark`}}},p={},m=null;for(let e of n.t){let t=r.default.resolve(l,e);if(i.default.existsSync(t))try{let n;try{n=await U(t,l)}catch(r){process.env.BOLTDOCS_DEBUG===`true`&&console.warn(`[boltdocs] jiti config load failed for ${e}, falling back to Vite: ${r instanceof Error?r.message:String(r)}`);let{loadConfigFromFile:i}=await import(`vite`);n=(await i({command:o,mode:c},t,l))?.config}if(n){p=n;let r=i.default.statSync(t);m={filename:e,mtimeMs:r.mtimeMs,size:r.size};break}}catch(t){t instanceof Error&&(console.error(`\x1b[31m[boltdocs] ✖ Failed to load config from ${e}: ${t.message}\x1b[0m`),(0,s.warn)(`Failed to load config from ${e}: ${t.message}`))}}let h={title:p.title,description:p.description,logo:p.logo,favicon:p.favicon,navbar:p.navbar,sidebar:p.sidebar,sidebarGroups:p.theme?.sidebarGroups,socialLinks:p.socialLinks,githubRepo:p.githubRepo,tabs:p.tabs,codeTheme:p.codeTheme,codeHighlighting:p.theme?.codeHighlighting,communityHelp:p.communityHelp,version:p.version,editLink:p.editLink,...p.theme||{}},g=Object.fromEntries(Object.entries(h).filter(([e,t])=>t!==void 0));g.navbar&&=g.navbar.map(e=>({label:e.label||``,href:e.href||``,items:e.items}));let _={docsDir:r.default.resolve(l,p.docsDir||e),theme:{...f.theme,...g},i18n:p.i18n?{...p.i18n,locales:Array.isArray(p.i18n.locales)?Object.fromEntries(p.i18n.locales.map(e=>[e,e])):p.i18n.locales}:void 0,versions:p.versions,siteUrl:p.siteUrl,base:p.base,ssg:p.ssg,seo:p.seo,plugins:p.plugins||[],robots:p.robots,security:p.security,integrations:p.integrations,experimental:p.experimental,featureFlags:p.featureFlags,aliases:p.aliases,drafts:p.drafts,collections:p.collections,vite:p.vite},v=I.safeParse(_);if(!v.success)throw new t.r(`Invalid Boltdocs configuration:\n${v.error.issues.map(e=>` - ${e.path.join(`.`)}: ${e.message}`).join(`
|
|
7
|
+
`)}`);let y=v.data;return m&&H(l,m.filename,m.mtimeMs,m.size,o,c,y),L.set(u,y),y}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return W}});
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
const e=require(`./chunk-D1Md3oWO.cjs`),t=require(`./node-
|
|
6
|
+
const e=require(`./chunk-D1Md3oWO.cjs`),t=require(`./node-7Cfw6nMr.cjs`),n=require(`./routes-CzhKOw67.cjs`),r=require(`./update-check-DFQZyoSU.cjs`);let i=require(`node:path`);i=e.r(i);let a=require(`node:fs`);a=e.r(a);let o=require(`node:crypto`),s=require(`@bdocs/dui`),c=require(`@bdocs/ssg/node`);function l(e,t,n=e=>process.exit(e)){let r=!1;return{async shutdown(i){if(!r){r=!0;try{await e()}finally{t(),i!==void 0&&n(i)}}},isShuttingDown(){return r}}}function u(e){try{let t=Number.parseInt(a.default.readFileSync(e,`utf8`).trim(),10);return Number.isInteger(t)&&t>0?t:null}catch{return null}}function d(e){try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function f(e){let t=i.default.join(e,`.boltdocs`,`dev-server.lock`);for(a.default.mkdirSync(i.default.dirname(t),{recursive:!0});;)try{let e=a.default.openSync(t,`wx`);a.default.writeFileSync(e,`${process.pid}\n`),a.default.closeSync(e);let n=!1;return{release(){if(!n){n=!0;try{u(t)===process.pid&&a.default.unlinkSync(t)}catch{}}}}}catch(e){if(e.code!==`EEXIST`)throw e;let n=u(t);if(n&&d(n))throw Error(`A Boltdocs dev server is already running for this project (pid ${n})`);let r=`${t}.stale-${process.pid}-${(0,o.randomUUID)()}`;try{a.default.renameSync(t,r),a.default.unlinkSync(r)}catch(e){try{a.default.existsSync(r)&&a.default.unlinkSync(r)}catch{}if(e.code===`ENOENT`)continue;throw Error(`Could not recover stale Boltdocs dev lock: ${t}`)}}}let p=!1;async function m(e=process.cwd(),a={}){if(p)return;p=!0;let o=null,u=null,d=()=>{};r.t();let m,h=process.env.BOLTDOCS_DEBUG===`true`,g=performance.now();try{o=f(e),h&&console.log(`[boltdocs-dev] acquireLock: ${Math.round(performance.now()-g)}ms`);let _=performance.now(),v=performance.now(),y=await t.n(e,`development`,void 0,{skipTypes:!0,skipLinkTree:!0,skipRoutes:!0});m=y.__boltdocsConfig,h&&console.log(`[boltdocs-dev] createViteConfig: ${Math.round(performance.now()-v)}ms`),y.logLevel=`warn`,y.clearScreen=!1,a.port!==void 0&&(y.server=y.server||{},y.server.port=Number(a.port)),a.host!==void 0&&(y.server=y.server||{},y.server.host=a.host),a.force&&(y.optimizeDeps=y.optimizeDeps||{},y.optimizeDeps.force=!0);let b=performance.now();u=await(0,c.createServer)(y,{skipResolveConfig:!0}),h&&console.log(`[boltdocs-dev] createServer: ${Math.round(performance.now()-b)}ms`),d=()=>{process.off(`SIGINT`,S),process.off(`SIGTERM`,C)};let x=l(()=>u.close(),()=>{p=!1,o?.release(),d()}),S=()=>{x.shutdown(0)},C=()=>{x.shutdown(143)};process.once(`SIGINT`,S),process.once(`SIGTERM`,C);let w=performance.now();try{await u.listen()}catch(e){throw d(),e}h&&console.log(`[boltdocs-dev] server.listen: ${Math.round(performance.now()-w)}ms`),u.httpServer?.once(`close`,()=>{d(),p=!1,o?.release()}),t.d(m,e),n.t(m?.docsDir||i.default.resolve(e,`docs`),m).catch(e=>{(0,s.error)(`Background route generation failed:`,e)});let T=performance.now()-_;h&&console.log(`[boltdocs-dev] total startup: ${Math.round(T)}ms`);let E=u.resolvedUrls;console.log(r.o(E?.local?.[0]??`http://localhost:${a.port??5173}`,E?.network?.[0]??null,{readyIn:T})),u.bindCLIShortcuts({print:!1})}catch(e){if(d(),u)try{await u.close()}catch{}p=!1,o?.release(),(0,s.error)(`Failed to start dev server:`,e),process.exit(1)}}exports.devAction=m;
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import{
|
|
6
|
+
import{f as e,n as t}from"./node-CT2E84nY.mjs";import{t as n}from"./routes-Dw6g0bfF.mjs";import{o as r,t as i}from"./update-check-BXD1atVv.mjs";import a from"node:path";import o from"node:fs";import{randomUUID as s}from"node:crypto";import{error as c}from"@bdocs/dui";import{createServer as l}from"@bdocs/ssg/node";function u(e,t,n=e=>process.exit(e)){let r=!1;return{async shutdown(i){if(!r){r=!0;try{await e()}finally{t(),i!==void 0&&n(i)}}},isShuttingDown(){return r}}}function d(e){try{let t=Number.parseInt(o.readFileSync(e,`utf8`).trim(),10);return Number.isInteger(t)&&t>0?t:null}catch{return null}}function f(e){try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}function p(e){let t=a.join(e,`.boltdocs`,`dev-server.lock`);for(o.mkdirSync(a.dirname(t),{recursive:!0});;)try{let e=o.openSync(t,`wx`);o.writeFileSync(e,`${process.pid}\n`),o.closeSync(e);let n=!1;return{release(){if(!n){n=!0;try{d(t)===process.pid&&o.unlinkSync(t)}catch{}}}}}catch(e){if(e.code!==`EEXIST`)throw e;let n=d(t);if(n&&f(n))throw Error(`A Boltdocs dev server is already running for this project (pid ${n})`);let r=`${t}.stale-${process.pid}-${s()}`;try{o.renameSync(t,r),o.unlinkSync(r)}catch(e){try{o.existsSync(r)&&o.unlinkSync(r)}catch{}if(e.code===`ENOENT`)continue;throw Error(`Could not recover stale Boltdocs dev lock: ${t}`)}}}let m=!1;async function h(o=process.cwd(),s={}){if(m)return;m=!0;let d=null,f=null,h=()=>{};i();let g,_=process.env.BOLTDOCS_DEBUG===`true`,v=performance.now();try{d=p(o),_&&console.log(`[boltdocs-dev] acquireLock: ${Math.round(performance.now()-v)}ms`);let i=performance.now(),y=performance.now(),b=await t(o,`development`,void 0,{skipTypes:!0,skipLinkTree:!0,skipRoutes:!0});g=b.__boltdocsConfig,_&&console.log(`[boltdocs-dev] createViteConfig: ${Math.round(performance.now()-y)}ms`),b.logLevel=`warn`,b.clearScreen=!1,s.port!==void 0&&(b.server=b.server||{},b.server.port=Number(s.port)),s.host!==void 0&&(b.server=b.server||{},b.server.host=s.host),s.force&&(b.optimizeDeps=b.optimizeDeps||{},b.optimizeDeps.force=!0);let x=performance.now();f=await l(b,{skipResolveConfig:!0}),_&&console.log(`[boltdocs-dev] createServer: ${Math.round(performance.now()-x)}ms`),h=()=>{process.off(`SIGINT`,C),process.off(`SIGTERM`,w)};let S=u(()=>f.close(),()=>{m=!1,d?.release(),h()}),C=()=>{S.shutdown(0)},w=()=>{S.shutdown(143)};process.once(`SIGINT`,C),process.once(`SIGTERM`,w);let T=performance.now();try{await f.listen()}catch(e){throw h(),e}_&&console.log(`[boltdocs-dev] server.listen: ${Math.round(performance.now()-T)}ms`),f.httpServer?.once(`close`,()=>{h(),m=!1,d?.release()}),e(g,o),n(g?.docsDir||a.resolve(o,`docs`),g).catch(e=>{c(`Background route generation failed:`,e)});let E=performance.now()-i;_&&console.log(`[boltdocs-dev] total startup: ${Math.round(E)}ms`);let D=f.resolvedUrls;console.log(r(D?.local?.[0]??`http://localhost:${s.port??5173}`,D?.network?.[0]??null,{readyIn:E})),f.bindCLIShortcuts({print:!1})}catch(e){if(h(),f)try{await f.close()}catch{}m=!1,d?.release(),c(`Failed to start dev server:`,e),process.exit(1)}}export{h as devAction};
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import { G as
|
|
6
|
+
import { G as useConfig, K as useOptionalConfig, U as icons_exports, d as normalizePath, f as resolvePublicAssetUrl, g as Check, o as cn, s as useLocalizedTo, t as Link, u as useRoutesContext, y as ChevronRight } from "./link-q1qHNGK_.js";
|
|
7
7
|
import { E as useLocation, L as defaultNavigate, O as useNavigate, m as parseUrlReference } from "./router-CZBxMRAH.js";
|
|
8
|
+
import { r as useSearchHighlight } from "./search-dialog-mYnqU4v7.js";
|
|
8
9
|
import { Children, Fragment, createContext, use, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
9
10
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
11
|
import * as RAC from "react-aria-components";
|
|
@@ -251,9 +252,9 @@ function Tabs({ children, className = "", ...props }) {
|
|
|
251
252
|
children
|
|
252
253
|
});
|
|
253
254
|
}
|
|
254
|
-
function TabsList({ children, className
|
|
255
|
+
function TabsList({ children, className, role }) {
|
|
255
256
|
return /* @__PURE__ */ jsx("div", {
|
|
256
|
-
role: "tablist",
|
|
257
|
+
role: role === null ? void 0 : role ?? "tablist",
|
|
257
258
|
className: cn("relative flex flex-row items-center overflow-x-auto", className),
|
|
258
259
|
children
|
|
259
260
|
});
|
|
@@ -569,112 +570,6 @@ function useSidebar(routes) {
|
|
|
569
570
|
};
|
|
570
571
|
}
|
|
571
572
|
|
|
572
|
-
//#endregion
|
|
573
|
-
//#region src/client/hooks/use-search-highlight.ts
|
|
574
|
-
/**
|
|
575
|
-
* Hook to highlight search terms based on the 'hl' query parameter.
|
|
576
|
-
*/
|
|
577
|
-
function useSearchHighlight(containerSelector = ".boltdocs-page") {
|
|
578
|
-
const { search } = useLocation();
|
|
579
|
-
const query = new URLSearchParams(search).get("hl");
|
|
580
|
-
useEffect(() => {
|
|
581
|
-
if (!query) {
|
|
582
|
-
clearHighlights(containerSelector);
|
|
583
|
-
return;
|
|
584
|
-
}
|
|
585
|
-
const container = document.querySelector(containerSelector);
|
|
586
|
-
if (!container) return;
|
|
587
|
-
let rafId;
|
|
588
|
-
const observer = new MutationObserver((mutations) => {
|
|
589
|
-
if (mutations.some((m) => {
|
|
590
|
-
const addedNodes = Array.from(m.addedNodes);
|
|
591
|
-
const removedNodes = Array.from(m.removedNodes);
|
|
592
|
-
return addedNodes.some((n) => !(n instanceof HTMLElement && n.hasAttribute("data-search-highlight"))) || removedNodes.some((n) => !(n instanceof HTMLElement && n.hasAttribute("data-search-highlight")));
|
|
593
|
-
})) run();
|
|
594
|
-
});
|
|
595
|
-
function run() {
|
|
596
|
-
cancelAnimationFrame(rafId);
|
|
597
|
-
rafId = requestAnimationFrame(() => {
|
|
598
|
-
observer.disconnect();
|
|
599
|
-
clearHighlights(containerSelector);
|
|
600
|
-
const terms = query.split(/\s+/).map((t) => t.trim()).filter((t) => t.length >= 2);
|
|
601
|
-
if (terms.length > 0) highlightTerms(container, terms);
|
|
602
|
-
observer.observe(container, {
|
|
603
|
-
childList: true,
|
|
604
|
-
subtree: true
|
|
605
|
-
});
|
|
606
|
-
});
|
|
607
|
-
}
|
|
608
|
-
run();
|
|
609
|
-
return () => {
|
|
610
|
-
cancelAnimationFrame(rafId);
|
|
611
|
-
observer.disconnect();
|
|
612
|
-
clearHighlights(containerSelector);
|
|
613
|
-
};
|
|
614
|
-
}, [query, containerSelector]);
|
|
615
|
-
}
|
|
616
|
-
function clearHighlights(selector) {
|
|
617
|
-
document.querySelectorAll(`${selector} mark[data-search-highlight]`).forEach((mark) => {
|
|
618
|
-
try {
|
|
619
|
-
const parent = mark.parentNode;
|
|
620
|
-
if (parent && parent.contains(mark)) {
|
|
621
|
-
const text = mark.textContent || "";
|
|
622
|
-
parent.replaceChild(document.createTextNode(text), mark);
|
|
623
|
-
}
|
|
624
|
-
} catch (e) {}
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
function highlightTerms(container, terms) {
|
|
628
|
-
const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT, { acceptNode: (node) => {
|
|
629
|
-
const parent = node.parentElement;
|
|
630
|
-
if (parent && (parent.tagName === "SCRIPT" || parent.tagName === "STYLE" || parent.tagName === "MARK" || parent.closest("pre") || parent.closest("code"))) return NodeFilter.FILTER_REJECT;
|
|
631
|
-
return NodeFilter.FILTER_ACCEPT;
|
|
632
|
-
} });
|
|
633
|
-
const nodes = [];
|
|
634
|
-
let node = walker.nextNode();
|
|
635
|
-
while (node) {
|
|
636
|
-
nodes.push(node);
|
|
637
|
-
node = walker.nextNode();
|
|
638
|
-
}
|
|
639
|
-
const accentMap = {
|
|
640
|
-
a: "[aáàäâã]",
|
|
641
|
-
e: "[eéèëê]",
|
|
642
|
-
i: "[iíìïî]",
|
|
643
|
-
o: "[oóòöôõ]",
|
|
644
|
-
u: "[uúùüû]",
|
|
645
|
-
n: "[nñ]",
|
|
646
|
-
c: "[cç]"
|
|
647
|
-
};
|
|
648
|
-
const prepareRegex = (term) => {
|
|
649
|
-
let pattern = term.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
650
|
-
pattern = pattern.split("").map((char) => {
|
|
651
|
-
return accentMap[char.toLowerCase()] || char;
|
|
652
|
-
}).join("");
|
|
653
|
-
return pattern;
|
|
654
|
-
};
|
|
655
|
-
const combinedPattern = terms.map(prepareRegex).join("|");
|
|
656
|
-
const regex = new RegExp(`(${combinedPattern})`, "gi");
|
|
657
|
-
const matchRegexes = terms.map((term) => {
|
|
658
|
-
const p = prepareRegex(term);
|
|
659
|
-
return new RegExp(`^${p}$`, "i");
|
|
660
|
-
});
|
|
661
|
-
nodes.forEach((textNode) => {
|
|
662
|
-
const text = textNode.textContent;
|
|
663
|
-
if (text && regex.test(text)) {
|
|
664
|
-
const fragment = document.createDocumentFragment();
|
|
665
|
-
text.split(regex).forEach((part) => {
|
|
666
|
-
if (matchRegexes.some((rx) => rx.test(part))) {
|
|
667
|
-
const mark = document.createElement("mark");
|
|
668
|
-
mark.textContent = part;
|
|
669
|
-
mark.setAttribute("data-search-highlight", "true");
|
|
670
|
-
fragment.appendChild(mark);
|
|
671
|
-
} else if (part) fragment.appendChild(document.createTextNode(part));
|
|
672
|
-
});
|
|
673
|
-
if (textNode.parentNode) textNode.parentNode.replaceChild(fragment, textNode);
|
|
674
|
-
}
|
|
675
|
-
});
|
|
676
|
-
}
|
|
677
|
-
|
|
678
573
|
//#endregion
|
|
679
574
|
//#region src/client/components/primitives/helpers/observer.ts
|
|
680
575
|
function getItemId(url) {
|
|
@@ -838,9 +733,10 @@ function AnchorProvider({ toc, single = false, observerOptions, children }) {
|
|
|
838
733
|
children
|
|
839
734
|
});
|
|
840
735
|
}
|
|
841
|
-
function OnThisPage({ children, className }) {
|
|
736
|
+
function OnThisPage({ children, className, label = "On this page" }) {
|
|
842
737
|
return /* @__PURE__ */ jsx("nav", {
|
|
843
738
|
"data-otp-root": true,
|
|
739
|
+
"aria-label": label,
|
|
844
740
|
className,
|
|
845
741
|
children
|
|
846
742
|
});
|
|
@@ -935,7 +831,7 @@ function OnThisPageIndicator({ style, className }) {
|
|
|
935
831
|
const items = useItems();
|
|
936
832
|
useEffect(() => {
|
|
937
833
|
if (items.length === 0) return;
|
|
938
|
-
const parent = containerRef.current?.
|
|
834
|
+
const parent = containerRef.current?.offsetParent;
|
|
939
835
|
if (!parent) return;
|
|
940
836
|
const activeLinks = parent.querySelectorAll("a[data-active=\"true\"]");
|
|
941
837
|
if (activeLinks.length > 0) {
|
|
@@ -960,6 +856,7 @@ function OnThisPageIndicator({ style, className }) {
|
|
|
960
856
|
return /* @__PURE__ */ jsx("div", {
|
|
961
857
|
ref: containerRef,
|
|
962
858
|
"data-otp-indicator": true,
|
|
859
|
+
"aria-hidden": "true",
|
|
963
860
|
className: cn("absolute", className),
|
|
964
861
|
style: {
|
|
965
862
|
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",
|
|
@@ -973,9 +870,9 @@ function OnThisPageIndicator({ style, className }) {
|
|
|
973
870
|
function OnThisPageItems({ headings = [], className, itemClassName, linkClassName, indicatorClassName }) {
|
|
974
871
|
const activeIds = useActiveAnchors();
|
|
975
872
|
if (headings.length === 0) return null;
|
|
976
|
-
return /* @__PURE__ */ jsxs(OnThisPageList, {
|
|
873
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(OnThisPageIndicator, { className: indicatorClassName }), /* @__PURE__ */ jsx(OnThisPageList, {
|
|
977
874
|
className,
|
|
978
|
-
children:
|
|
875
|
+
children: headings.map((h) => /* @__PURE__ */ jsx(OnThisPageItem, {
|
|
979
876
|
level: h.level,
|
|
980
877
|
className: itemClassName,
|
|
981
878
|
children: /* @__PURE__ */ jsx(OnThisPageLink, {
|
|
@@ -984,8 +881,8 @@ function OnThisPageItems({ headings = [], className, itemClassName, linkClassNam
|
|
|
984
881
|
className: linkClassName,
|
|
985
882
|
children: h.text
|
|
986
883
|
})
|
|
987
|
-
}, h.id))
|
|
988
|
-
});
|
|
884
|
+
}, h.id))
|
|
885
|
+
})] });
|
|
989
886
|
}
|
|
990
887
|
/**
|
|
991
888
|
* High-level automated Table of Contents tree
|
|
@@ -1032,6 +929,7 @@ OnThisPage.Tree = OnThisPageTree;
|
|
|
1032
929
|
//#region src/client/components/primitives/page-nav.tsx
|
|
1033
930
|
function PageNav({ children, className }) {
|
|
1034
931
|
return /* @__PURE__ */ jsx("nav", {
|
|
932
|
+
"aria-label": "Pagination",
|
|
1035
933
|
className: cn("grid sm:grid-cols-2 gap-4", className),
|
|
1036
934
|
children
|
|
1037
935
|
});
|
|
@@ -1131,7 +1029,7 @@ function SidebarHeader({ children, className }) {
|
|
|
1131
1029
|
* The scroll container doubles as the semantic `<nav>` landmark. State and
|
|
1132
1030
|
* scroll-position handling live here; all visuals belong to the theme.
|
|
1133
1031
|
*/
|
|
1134
|
-
function SidebarContent({ children, className }) {
|
|
1032
|
+
function SidebarContent({ children, className, label = "Docs navigation" }) {
|
|
1135
1033
|
const scrollRef = useRef(null);
|
|
1136
1034
|
useLayoutEffect(() => {
|
|
1137
1035
|
if (scrollRef.current) scrollRef.current.scrollTop = sidebarScrollPos;
|
|
@@ -1148,6 +1046,7 @@ function SidebarContent({ children, className }) {
|
|
|
1148
1046
|
return /* @__PURE__ */ jsx("nav", {
|
|
1149
1047
|
ref: scrollRef,
|
|
1150
1048
|
"data-sidebar-content": true,
|
|
1049
|
+
"aria-label": label,
|
|
1151
1050
|
className,
|
|
1152
1051
|
children
|
|
1153
1052
|
});
|
|
@@ -1454,4 +1353,4 @@ const DocsLayout = Object.assign(DocsLayoutRoot, {
|
|
|
1454
1353
|
});
|
|
1455
1354
|
|
|
1456
1355
|
//#endregion
|
|
1457
|
-
export {
|
|
1356
|
+
export { useUI as A, resolveIcon as C, ButtonGroup as D, Popover$1 as E, Breadcrumbs$1 as O, IconRenderer as S, Menu as T, ScrollProvider as _, SidebarHeader as a, useItems as b, SidebarLink as c, SidebarSubGroup as d, PageNav as f, OnThisPageTree as g, OnThisPageItems as h, SidebarGroup as i, UIProvider as k, SidebarMobile as l, OnThisPage as m, Sidebar as n, SidebarItem as o, AnchorProvider as p, SidebarContent as r, SidebarItems as s, DocsLayout as t, SidebarRoot as u, useActiveAnchor as v, Tabs as w, useSidebar as x, useActiveAnchors as y };
|