boltdocs 2.5.5 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/bin/boltdocs.js +2 -2
  2. package/dist/client/index.cjs +6 -0
  3. package/dist/client/index.d.cts +1560 -0
  4. package/dist/client/index.d.ts +1219 -922
  5. package/dist/client/index.js +6 -1
  6. package/dist/client/theme/neutral.css +428 -0
  7. package/dist/node/cli-entry.cjs +8 -0
  8. package/dist/node/cli-entry.d.cts +2 -0
  9. package/dist/node/cli-entry.d.mts +2 -1
  10. package/dist/node/cli-entry.mjs +7 -5
  11. package/dist/node/index.cjs +6 -0
  12. package/dist/node/index.d.cts +519 -0
  13. package/dist/node/index.d.mts +374 -422
  14. package/dist/node/index.mjs +6 -1
  15. package/dist/node-BgvNl2Ay.mjs +89 -0
  16. package/dist/node-vkbb0MK7.cjs +89 -0
  17. package/dist/package-CR0HF9x3.mjs +6 -0
  18. package/dist/package-Dgmsc_l5.cjs +6 -0
  19. package/dist/search-dialog-3lvKsbVG.js +6 -0
  20. package/dist/search-dialog-DMK5OpgH.cjs +6 -0
  21. package/dist/use-search-C9bxCqfF.js +6 -0
  22. package/dist/use-search-DcfZSunO.cjs +6 -0
  23. package/package.json +26 -25
  24. package/src/client/app/config-context.tsx +38 -5
  25. package/src/client/app/doc-page.tsx +34 -0
  26. package/src/client/app/mdx-component.tsx +2 -3
  27. package/src/client/app/mdx-components-context.tsx +27 -2
  28. package/src/client/app/routes-context.tsx +34 -0
  29. package/src/client/app/scroll-handler.tsx +7 -4
  30. package/src/client/app/theme-context.tsx +71 -67
  31. package/src/client/components/default-layout.tsx +34 -33
  32. package/src/client/components/docs-layout.tsx +1 -2
  33. package/src/client/components/icons-dev.tsx +36 -5
  34. package/src/client/components/mdx/admonition.tsx +11 -27
  35. package/src/client/components/mdx/badge.tsx +1 -1
  36. package/src/client/components/mdx/button.tsx +3 -3
  37. package/src/client/components/mdx/card.tsx +1 -1
  38. package/src/client/components/mdx/code-block.tsx +90 -80
  39. package/src/client/components/mdx/component-preview.tsx +1 -5
  40. package/src/client/components/mdx/component-props.tsx +1 -1
  41. package/src/client/components/mdx/field.tsx +4 -5
  42. package/src/client/components/mdx/file-tree.tsx +6 -3
  43. package/src/client/components/mdx/hooks/use-code-block.ts +2 -2
  44. package/src/client/components/mdx/image.tsx +1 -1
  45. package/src/client/components/mdx/link.tsx +2 -2
  46. package/src/client/components/mdx/list.tsx +1 -1
  47. package/src/client/components/mdx/table.tsx +1 -1
  48. package/src/client/components/mdx/tabs.tsx +1 -1
  49. package/src/client/components/primitives/breadcrumbs.tsx +1 -7
  50. package/src/client/components/primitives/button-group.tsx +1 -1
  51. package/src/client/components/primitives/button.tsx +1 -1
  52. package/src/client/components/primitives/code-block.tsx +113 -0
  53. package/src/client/components/primitives/link.tsx +23 -41
  54. package/src/client/components/primitives/menu.tsx +5 -6
  55. package/src/client/components/primitives/navbar.tsx +6 -18
  56. package/src/client/components/primitives/navigation-menu.tsx +4 -4
  57. package/src/client/components/primitives/on-this-page.tsx +6 -10
  58. package/src/client/components/primitives/page-nav.tsx +4 -9
  59. package/src/client/components/primitives/popover.tsx +1 -1
  60. package/src/client/components/primitives/search-dialog.tsx +3 -6
  61. package/src/client/components/primitives/sidebar.tsx +80 -22
  62. package/src/client/components/primitives/skeleton.tsx +1 -1
  63. package/src/client/components/primitives/tabs.tsx +4 -11
  64. package/src/client/components/primitives/tooltip.tsx +3 -3
  65. package/src/client/components/ui-base/breadcrumbs.tsx +4 -6
  66. package/src/client/components/ui-base/copy-markdown.tsx +2 -7
  67. package/src/client/components/ui-base/github-stars.tsx +2 -2
  68. package/src/client/components/ui-base/head.tsx +58 -51
  69. package/src/client/components/ui-base/loading.tsx +2 -2
  70. package/src/client/components/ui-base/navbar.tsx +12 -14
  71. package/src/client/components/ui-base/not-found.tsx +1 -1
  72. package/src/client/components/ui-base/on-this-page.tsx +6 -6
  73. package/src/client/components/ui-base/page-nav.tsx +4 -8
  74. package/src/client/components/ui-base/search-dialog.tsx +10 -8
  75. package/src/client/components/ui-base/sidebar.tsx +76 -23
  76. package/src/client/components/ui-base/tabs.tsx +9 -8
  77. package/src/client/components/ui-base/theme-toggle.tsx +2 -2
  78. package/src/client/hooks/use-i18n.ts +3 -3
  79. package/src/client/hooks/use-localized-to.ts +1 -1
  80. package/src/client/hooks/use-navbar.ts +8 -6
  81. package/src/client/hooks/use-routes.ts +19 -11
  82. package/src/client/hooks/use-search.ts +1 -1
  83. package/src/client/hooks/use-sidebar.ts +48 -2
  84. package/src/client/hooks/use-tabs.ts +6 -2
  85. package/src/client/hooks/use-version.ts +3 -3
  86. package/src/client/index.ts +22 -22
  87. package/src/client/ssg/boltdocs-shell.tsx +127 -0
  88. package/src/client/ssg/create-routes.tsx +179 -0
  89. package/src/client/ssg/index.ts +3 -0
  90. package/src/client/ssg/mdx-page.tsx +37 -0
  91. package/src/client/store/boltdocs-context.tsx +66 -0
  92. package/src/client/theme/neutral.css +90 -50
  93. package/src/client/types.ts +5 -33
  94. package/src/client/utils/react-to-text.ts +34 -0
  95. package/CHANGELOG.md +0 -98
  96. package/dist/cache-3FOEPC2P.mjs +0 -1
  97. package/dist/chunk-5B5NKOW6.mjs +0 -77
  98. package/dist/chunk-J2PTDWZM.mjs +0 -1
  99. package/dist/chunk-TP5KMRD3.mjs +0 -1
  100. package/dist/chunk-Y4RE5KI7.mjs +0 -1
  101. package/dist/client/index.d.mts +0 -1263
  102. package/dist/client/index.mjs +0 -1
  103. package/dist/client/ssr.d.mts +0 -78
  104. package/dist/client/ssr.d.ts +0 -78
  105. package/dist/client/ssr.js +0 -1
  106. package/dist/client/ssr.mjs +0 -1
  107. package/dist/node/cli-entry.d.ts +0 -1
  108. package/dist/node/cli-entry.js +0 -82
  109. package/dist/node/index.d.ts +0 -567
  110. package/dist/node/index.js +0 -77
  111. package/dist/package-QFIAETHR.mjs +0 -1
  112. package/dist/search-dialog-O6VLVSOA.mjs +0 -1
  113. package/src/client/app/index.tsx +0 -345
  114. package/src/client/app/mdx-page.tsx +0 -15
  115. package/src/client/app/preload.tsx +0 -66
  116. package/src/client/app/router.tsx +0 -30
  117. package/src/client/integrations/codesandbox.ts +0 -179
  118. package/src/client/integrations/index.ts +0 -1
  119. package/src/client/ssr.tsx +0 -65
  120. package/src/client/store/use-boltdocs-store.ts +0 -44
  121. package/src/node/cache.ts +0 -408
  122. package/src/node/cli/build.ts +0 -53
  123. package/src/node/cli/dev.ts +0 -22
  124. package/src/node/cli/doctor.ts +0 -243
  125. package/src/node/cli/index.ts +0 -9
  126. package/src/node/cli/ui.ts +0 -54
  127. package/src/node/cli-entry.ts +0 -24
  128. package/src/node/config.ts +0 -382
  129. package/src/node/errors.ts +0 -44
  130. package/src/node/index.ts +0 -84
  131. package/src/node/mdx/cache.ts +0 -12
  132. package/src/node/mdx/highlighter.ts +0 -47
  133. package/src/node/mdx/index.ts +0 -122
  134. package/src/node/mdx/rehype-shiki.ts +0 -62
  135. package/src/node/mdx/remark-code-meta.ts +0 -35
  136. package/src/node/mdx/remark-shiki.ts +0 -61
  137. package/src/node/plugin/entry.ts +0 -87
  138. package/src/node/plugin/html.ts +0 -99
  139. package/src/node/plugin/index.ts +0 -478
  140. package/src/node/plugin/types.ts +0 -9
  141. package/src/node/plugins/index.ts +0 -17
  142. package/src/node/plugins/plugin-errors.ts +0 -62
  143. package/src/node/plugins/plugin-lifecycle.ts +0 -117
  144. package/src/node/plugins/plugin-sandbox.ts +0 -59
  145. package/src/node/plugins/plugin-store.ts +0 -54
  146. package/src/node/plugins/plugin-types.ts +0 -107
  147. package/src/node/plugins/plugin-validator.ts +0 -105
  148. package/src/node/routes/cache.ts +0 -28
  149. package/src/node/routes/index.ts +0 -293
  150. package/src/node/routes/parser.ts +0 -262
  151. package/src/node/routes/sorter.ts +0 -42
  152. package/src/node/routes/types.ts +0 -61
  153. package/src/node/schema/config.ts +0 -195
  154. package/src/node/schema/frontmatter.ts +0 -17
  155. package/src/node/search/index.ts +0 -55
  156. package/src/node/security/constants/index.ts +0 -10
  157. package/src/node/security/csp.ts +0 -31
  158. package/src/node/security/headers.ts +0 -27
  159. package/src/node/ssg/index.ts +0 -205
  160. package/src/node/ssg/meta.ts +0 -33
  161. package/src/node/ssg/options.ts +0 -15
  162. package/src/node/ssg/robots.ts +0 -53
  163. package/src/node/ssg/sitemap.ts +0 -55
  164. package/src/node/utils.ts +0 -349
  165. package/tsconfig.json +0 -26
  166. package/tsup.config.ts +0 -56
@@ -90,6 +90,10 @@
90
90
  }
91
91
  }
92
92
 
93
+ @variant dark
94
+ (
95
+ &:where(.dark, .dark *));
96
+
93
97
  .animate-pulse {
94
98
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
95
99
  }
@@ -99,9 +103,9 @@
99
103
  }
100
104
 
101
105
  :root[data-theme="dark"],
102
- :root:not(.theme-light) {
103
- --color-bg-main: var(--color-neutral-950);
104
- --color-bg-surface: var(--color-neutral-900);
106
+ :root.dark {
107
+ --color-bg-main: var(--color-neutral-900);
108
+ --color-bg-surface: var(--color-neutral-800);
105
109
  --color-bg-muted: var(--color-neutral-800);
106
110
  --color-text-main: var(--color-neutral-50);
107
111
  --color-text-muted: var(--color-neutral-400);
@@ -112,6 +116,7 @@
112
116
  --color-code-text: var(--color-neutral-200);
113
117
  }
114
118
 
119
+
115
120
  @layer base {
116
121
  *,
117
122
  *::before,
@@ -271,7 +276,6 @@
271
276
  border-radius: var(--radius-lg);
272
277
  margin: 2rem 0;
273
278
  display: block;
274
- box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.1);
275
279
  }
276
280
  .boltdocs-page table {
277
281
  width: 100%;
@@ -294,41 +298,6 @@
294
298
  .boltdocs-page tr:hover td {
295
299
  background-color: var(--color-bg-surface);
296
300
  }
297
- .boltdocs-page :not(pre) > code {
298
- background-color: var(--color-bg-surface);
299
- padding: 0.15rem 0.45rem;
300
- border-radius: 5px;
301
- font-family: var(--font-mono);
302
- font-size: 0.85em;
303
- color: var(--color-primary-400);
304
- border: 1px solid var(--color-border-subtle);
305
- }
306
- .boltdocs-page pre {
307
- margin: 1.5rem 0;
308
- border-radius: var(--radius-md);
309
- overflow-x: auto;
310
- font-family: var(--font-mono);
311
- font-size: 0.8125rem;
312
- line-height: 1.7;
313
- background-color: var(--color-code-bg);
314
- color: var(--color-code-text);
315
- border: 1px solid var(--color-border-subtle);
316
- }
317
- .boltdocs-page pre > code {
318
- display: grid;
319
- padding: 1rem;
320
- background-color: transparent;
321
- border: none;
322
- color: inherit;
323
- font-size: inherit;
324
- }
325
- .boltdocs-page pre > code .line {
326
- padding: 0 1.25rem;
327
- }
328
- .boltdocs-page pre > code .line.highlighted {
329
- background-color: oklch(0.6 0.22 280 / 10%);
330
- border-left: 2px solid var(--color-primary-500);
331
- }
332
301
 
333
302
  @media (max-width: 768px) {
334
303
  .boltdocs-page h1 {
@@ -369,20 +338,91 @@
369
338
  opacity: 1;
370
339
  }
371
340
 
372
- /* ═══ Shiki Dual Theme ═══ */
373
- .shiki-wrapper .shiki.shiki-themes {
341
+ /* ═══ Shiki Styles ═══ */
342
+
343
+ /* Shiki Light/Dark Mode */
344
+ :root .shiki,
345
+ :root .shiki span {
346
+ font-family: var(--font-mono);
347
+ font-size: 12px !important;
374
348
  background-color: transparent !important;
375
- color: var(--shiki-light) !important;
376
- }
377
- .shiki-wrapper .shiki.shiki-themes span {
378
- color: var(--shiki-light);
379
349
  }
380
- :root[data-theme="dark"] .shiki-wrapper .shiki.shiki-themes,
381
- :root:not(.theme-light) .shiki-wrapper .shiki.shiki-themes {
350
+
351
+ :root.dark .shiki,
352
+ :root.dark .shiki span {
382
353
  color: var(--shiki-dark) !important;
383
354
  }
384
- :root[data-theme="dark"] .shiki-wrapper .shiki.shiki-themes span,
385
- :root:not(.theme-light) .shiki-wrapper .shiki.shiki-themes span {
386
- color: var(--shiki-dark) !important;
355
+
356
+ /* Base Shiki Pre & Span Styles */
357
+ pre.shiki {
358
+ @apply py-2 text-[12px] leading-[1.6];
359
+ }
360
+
361
+ pre.shiki span.line {
362
+ @apply relative block px-4 py-0;
363
+ min-height: 1.6em;
364
+ }
365
+
366
+ /* Shiki Word Wrap */
367
+ pre.shiki-word-wrap {
368
+ @apply whitespace-pre-wrap break-words;
369
+ }
370
+
371
+ pre.shiki-word-wrap span.line {
372
+ @apply block w-full;
373
+ }
374
+
375
+ /* Shiki Line Numbers */
376
+ pre.shiki-line-numbers code {
377
+ counter-reset: step;
378
+ counter-increment: step 0;
379
+ }
380
+
381
+ pre.shiki-line-numbers .line {
382
+ @apply pl-12!;
383
+ }
384
+
385
+ /* Hide the last line if it is completely empty to avoid extra numbers */
386
+ pre.shiki-line-numbers .line:last-child:empty,
387
+ pre.shiki-line-numbers .line:last-child:has(> :empty) {
388
+ display: none;
389
+ }
390
+
391
+ pre.shiki-line-numbers .line::before {
392
+ counter-increment: step;
393
+ content: counter(step);
394
+ @apply absolute left-0 top-0 inline-flex w-10 justify-end pr-3;
395
+ @apply text-[11px] text-text-muted opacity-30 select-none;
396
+ line-height: inherit; /* Sync with line text */
397
+ }
398
+
399
+ /* Shiki Highlight */
400
+ pre span.shiki-line-highlight {
401
+ @apply relative z-0 inline-block w-full;
402
+ &::after {
403
+ content: "";
404
+ @apply absolute top-0 left-0 -z-10 h-full w-full border-l-2 border-primary-500 bg-primary-500/10! opacity-100;
405
+ }
406
+ }
407
+
408
+ /* Shiki Notation Diff */
409
+ pre.has-diff span.line.diff {
410
+ @apply relative inline-block w-full;
411
+ }
412
+
413
+ pre.has-diff span.line.diff.add {
414
+ @apply bg-emerald-500/10! dark:bg-emerald-500/10!;
415
+ &::before {
416
+ content: "+";
417
+ @apply absolute left-2 text-emerald-500 font-bold;
418
+ }
419
+ }
420
+
421
+ pre.has-diff span.line.diff.remove {
422
+ @apply bg-danger-500/10! opacity-70;
423
+ &::before {
424
+ content: "-";
425
+ @apply absolute left-2 text-danger-500 font-bold;
426
+ }
387
427
  }
388
428
  }
@@ -1,5 +1,4 @@
1
- import React from 'react'
2
- import type { BoltdocsConfig } from '@node/config'
1
+ export type { BoltdocsConfig } from '../shared/types'
3
2
 
4
3
  /**
5
4
  * Metadata provided by the server for a specific route.
@@ -38,6 +37,10 @@ export interface ComponentRoute {
38
37
  badge?: string | { text: 'updated' | 'new' | 'deprecated'; expires?: string }
39
38
  /** Optional icon for the route's group */
40
39
  groupIcon?: string
40
+ /** The sub-route group this route belongs to (from folders starting with _) */
41
+ subRouteGroup?: string
42
+ /** The nested sub-routes if this route acts as the parent of a subRouteGroup */
43
+ subRoutes?: ComponentRoute[]
41
44
  /** The extracted plain-text content of the page for search indexing */
42
45
  _content?: string
43
46
  /** The raw markdown content of the page */
@@ -49,37 +52,6 @@ export interface ComponentRoute {
49
52
  */
50
53
  export type SiteConfig = BoltdocsConfig
51
54
 
52
- /**
53
- * Configuration options for initializing the Boltdocs client app.
54
- */
55
- export interface CreateBoltdocsAppOptions {
56
- /** CSS selector for the DOM element where the app should mount (e.g. '#root') */
57
- target: string
58
- /** Initial routes generated by the Vite plugin (`virtual:boltdocs-routes`) */
59
- routes: ComponentRoute[]
60
- /** The name of the documentation directory (e.g. 'docs') */
61
- docsDirName: string
62
- /** Site configuration (`virtual:boltdocs-config`) */
63
- config: SiteConfig
64
- /** Dynamic import mapping from `import.meta.glob` for the documentation pages */
65
- modules: Record<string, () => Promise<{ default: React.ComponentType<any> }>>
66
- /** The `import.meta.hot` instance necessary for fast refresh/HMR updates */
67
- hot?: {
68
- accept: (cb?: (mod: any) => void) => void
69
- dispose: (cb: (data: any) => void) => void
70
- on: (event: string, cb: (data: any) => void) => void
71
- data: any
72
- }
73
- /** Optional custom React component to render when visiting the root path ('/') */
74
- homePage?: React.ComponentType
75
- /** Custom external pages mapped by their route path */
76
- externalPages?: Record<string, React.ComponentType>
77
- /** Optional custom layout for external pages */
78
- externalLayout?: React.ComponentType<{ children: React.ReactNode }>
79
- /** Optional custom MDX components provided by plugins */
80
- components?: Record<string, React.ComponentType>
81
- }
82
-
83
55
  /**
84
56
  * Tab configuration for the documentation site.
85
57
  */
@@ -0,0 +1,34 @@
1
+ import {
2
+ isValidElement,
3
+ type ReactNode,
4
+ type JSXElementConstructor,
5
+ } from "react";
6
+
7
+ type ResolverMap = Map<
8
+ string | JSXElementConstructor<object>,
9
+ (props: object) => string
10
+ >;
11
+
12
+ const reactToText = (node: ReactNode, resolvers?: ResolverMap): string => {
13
+ if (node == null || typeof node === "boolean") return "";
14
+
15
+ if (typeof node === "string" || typeof node === "number") return String(node);
16
+
17
+ if (Array.isArray(node))
18
+ return node.map((n) => reactToText(n, resolvers)).join("");
19
+
20
+ if (isValidElement(node)) {
21
+ const resolver = resolvers?.get(
22
+ node.type as string | JSXElementConstructor<object>,
23
+ );
24
+ if (resolver) return resolver(node.props as object);
25
+ return reactToText(
26
+ (node.props as { children?: ReactNode }).children,
27
+ resolvers,
28
+ );
29
+ }
30
+
31
+ return "";
32
+ };
33
+
34
+ export { reactToText };
package/CHANGELOG.md DELETED
@@ -1,98 +0,0 @@
1
- # boltdocs
2
-
3
- ## 2.5.5
4
-
5
- ### Patch Changes
6
-
7
- - [`c31cfe3`](https://github.com/bolt-docs/boltdocs/commit/c31cfe3777e77b4ef0290aa726696b493f9c51db) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - repared error use-external
8
-
9
- ## 2.5.4
10
-
11
- ### Patch Changes
12
-
13
- - [`7477d85`](https://github.com/bolt-docs/boltdocs/commit/7477d85ee486af85cdae0ca26aba67ae9071cce9) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - fix: added use-async-external-store with in optimizeDeps
14
-
15
- ## 2.5.3
16
-
17
- ### Patch Changes
18
-
19
- - [`613b4b7`](https://github.com/bolt-docs/boltdocs/commit/613b4b7c256b2dec3af6d2aa7eb00f1b9a9beea1) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - removed integrations of config
20
-
21
- ## 2.5.2
22
-
23
- ### Patch Changes
24
-
25
- - [`862634f`](https://github.com/bolt-docs/boltdocs/commit/862634fb0df4e10112877e05e31b12ce7a4f480e) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - removed sandbox integrations
26
-
27
- ## 2.5.1
28
-
29
- ### Patch Changes
30
-
31
- - [`6f47dae`](https://github.com/bolt-docs/boltdocs/commit/6f47dae6a572e1d2ec8c28e56c648ab2db7b96d5) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - repared error show visible CodeBlock & repared error components Plugins
32
-
33
- ## 2.5.0
34
-
35
- ### Minor Changes
36
-
37
- - [`de41957`](https://github.com/bolt-docs/boltdocs/commit/de4195754bbb6dea90cbcd91e1ae3ddc398a8fdb) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - Updated imports to simples, support CPS, Support External-Page with file
38
-
39
- ### Patch Changes
40
-
41
- - [`f54fc62`](https://github.com/bolt-docs/boltdocs/commit/f54fc62982411e893beeccb2ebcb20d7a4925bdd) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - export types of plugins, Config & theme
42
-
43
- ## 2.4.2
44
-
45
- ### Patch Changes
46
-
47
- - [`3073b74`](https://github.com/bolt-docs/boltdocs/commit/3073b747b9bd90e154c24758b5a502dfe51c043e) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - fix: repared error in build with virtual-imports
48
-
49
- ## 2.4.1
50
-
51
- ### Patch Changes
52
-
53
- - [`80de4bd`](https://github.com/bolt-docs/boltdocs/commit/80de4bd49c3de90ec234148c8077b479935db2cf) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - updated width with pathname
54
-
55
- - [`c49cefa`](https://github.com/bolt-docs/boltdocs/commit/c49cefa292075606ae626826a890a93bda939ba5) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - added name tabs in URLs & repared icons size
56
-
57
- ## 2.4.0
58
-
59
- ### Minor Changes
60
-
61
- - [`0ee1f85`](https://github.com/bolt-docs/boltdocs/commit/0ee1f8525500ca6b6dc1eb78260fc257b3698fd4) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - Support icons & title CodeBlock, Better Scroll, export Skeleton Component
62
-
63
- ## 2.3.0
64
-
65
- ### Minor Changes
66
-
67
- - [`5d53fd0`](https://github.com/jesusalcaladev/boltdocs/commit/5d53fd0eddbcc0e22b092f52cea82df78063376b) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - feat: added new primitives `Skeleton`
68
- feat: added new loading with `Skeleton` primitives
69
- feat: added new command `boltdocs doctor` for diagnostic your project
70
- feat: support full-text search
71
- fix: better calc in page-nav
72
-
73
- ## 2.2.0
74
-
75
- ### Minor Changes
76
-
77
- - [`766daf2`](https://github.com/jesusalcaladev/boltdocs/commit/766daf21becafaa173a65cc8bea4d31b32ce8640) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - feat: support i18n in links & tabs
78
- feat: change component Loading
79
- feat: dectecttheme of system
80
- perf: better calc in the routes & navigation
81
-
82
- ## 2.1.1
83
-
84
- ### Patch Changes
85
-
86
- - [`1ce39bb`](https://github.com/jesusalcaladev/boltdocs/commit/1ce39bbe07974f35f6a04c341c5578c337f37024) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - fix: repared error of deploy
87
-
88
- ## 2.1.0
89
-
90
- ### Minor Changes
91
-
92
- - [`06650d4`](https://github.com/jesusalcaladev/boltdocs/commit/06650d458c26c7bbf4cc2da7ea6bec6352c0c530) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - feat: extract vite.config.ts for used boltdocs.config.ts, support favicon, robots, ogImage
93
-
94
- ## 2.0.0
95
-
96
- ### Major Changes
97
-
98
- - [`105352e`](https://github.com/jesusalcaladev/boltdocs/commit/105352efc13f081c5fdb6bbcad11891be78f87a7) Thanks [@jesusalcaladev](https://github.com/jesusalcaladev)! - fix: secutity in build & production, repare error in build with virtual:boltdocs-layout
@@ -1 +0,0 @@
1
- import{v as a,w as b,x as c,y as d,z as e}from"./chunk-TP5KMRD3.mjs";import"./chunk-Y4RE5KI7.mjs";e();export{c as AssetCache,a as FileCache,b as TransformCache,d as flushCache};
@@ -1,77 +0,0 @@
1
- import{a,b as Gt,c as ks,d as et,e as Ht,f as Vt,g as Ut,h as _,i as ve,j as Re,k as Xt,l as zt,m as ee,n as tt,o as Wt,p as le,q as rt,r as ce,s as ot,t as be,u as J,v as Yt,w as Kt,z as Jt}from"./chunk-TP5KMRD3.mjs";import{a as I,b as v,d as As}from"./chunk-Y4RE5KI7.mjs";function st(){U.invalidateAll()}function it(r){U.invalidate(r)}var U,Zt=I(()=>{"use strict";a();Jt();U=new Yt({name:"routes"})});import K from"path";import Ds from"github-slugger";function er(r,e,t,s){let o;try{o=decodeURIComponent(r)}catch{let N=K.basename(r);throw be("ENCODING_ERROR","Invalid character encoding",{file:N}),new Ht(`Security breach: Invalid characters or encoding in path: ${N}`)}if(o.length>260){let N=K.basename(o);throw be("PATH_TOO_LONG","Path length exceeds limit",{length:o.length,file:N}),new et(`Security breach: Path length exceeds limit of ${260} characters: ${N}`)}let i=K.resolve(o),n=K.resolve(e),p=_(K.relative(n,i));if(p.startsWith("../")||p===".."||i.includes("\0")||!Gt.test(p)){let N=K.basename(r);throw be("PATH_TRAVERSAL_ATTEMPT","Path traversal or invalid characters detected",{path:p}),new et(`Security breach: File is outside of docs directory, contains null bytes, or invalid characters: ${N}`)}let{data:u,content:l}=zt(r),m=p.split("/"),f,P;if(s?.versions&&m.length>0){let N=m[0],Ze=s.versions.prefix||"",$e=s.versions.versions.find(ae=>{let Qe=Ze+ae.path;return N===Qe||N===ae.path});$e&&(P=$e.path,m=m.slice(1))}if(s?.i18n&&m.length>0){let N=m[0];s.i18n.locales[N]&&(f=N,m=m.slice(1))}let d;if(m.length>0){let N=m[0].match(/^\((.+)\)$/);N&&(d=N[1].toLowerCase(),m=m.slice(1))}let L=m.join("/"),$;u.permalink?$=u.permalink.startsWith("/")?u.permalink:`/${u.permalink}`:$=Wt(L||"index.md");let x=t;P&&(x+="/"+P),f&&(x+="/"+f),d&&(x+="/"+d),x+=$==="/"?"":$,(!x||x==="")&&(x="/");let b=m[m.length-1],w=ve(b),S=ve(K.basename(r,K.extname(r))),O=u.sidebarPosition??Re(b),A=m.length>=2?m[0]:void 0,C=A?ve(A):void 0,Y=m.length>=2&&/^index\.mdx?$/.test(w),j=new Ds,Ft=[],Ls=/^(#{2,4})\s+(.+)$/gm;for(let N of l.matchAll(Ls)){let Ze=N[1].length,$e=N[2].replace(/\[([^\]]+)\]\([^\)]+\)/g,"$1").replace(/[_*`]/g,"").trim(),ae=le($e).trim(),Qe=j.slug(ae);Ft.push({level:Ze,text:ae,id:Qe})}let Ts=u.title?le(String(u.title)):S,Je=u.description?le(String(u.description)):"";!Je&&l&&(Je=rt(l.replace(/^#+.*$/gm,"").replace(/\[([^\]]+)\]\([^\)]+\)/g,"$1").replace(/[_*`]/g,"").replace(/\s+/g," ")).trim().slice(0,160));let Os=u.badge?le(String(u.badge)):void 0,_t=u.icon?String(u.icon):void 0,Ns=Bs(l);return{route:{path:x,componentPath:r,filePath:p,title:Ts,description:Je,sidebarPosition:O,headings:Ft,locale:f,version:P,badge:Os,icon:_t,tab:d,_content:Ns,_rawContent:l},relativeDir:C,isGroupIndex:Y,inferredTab:d,groupMeta:Y?{title:u.groupTitle||u.title||(C?ce(C):""),position:u.groupPosition??u.sidebarPosition??(A?Re(A):void 0),icon:_t}:void 0,inferredGroupPosition:A?Re(A):void 0}}function Bs(r){let e=r.replace(/^#+.*$/gm,"").replace(/\[([^\]]+)\]\([^\)]+\)/g,"$1").replace(/\{[^\}]+\}/g,"").replace(/[_*`]/g,"").replace(/\s+/g," ");return rt(e).trim()}var tr=I(()=>{"use strict";a();J();ks();Ut()});function or(r){return r.sort((e,t)=>!e.group&&!t.group?rr(e,t):e.group?t.group?e.group!==t.group?qs(e,t):rr(e,t):1:-1)}function rr(r,e){return r.sidebarPosition!==void 0&&e.sidebarPosition!==void 0?r.sidebarPosition-e.sidebarPosition:r.sidebarPosition!==void 0?-1:e.sidebarPosition!==void 0?1:r.title.localeCompare(e.title)}function qs(r,e){return r.groupPosition!==void 0&&e.groupPosition!==void 0?r.groupPosition-e.groupPosition:r.groupPosition!==void 0?-1:e.groupPosition!==void 0?1:(r.groupTitle||r.group).localeCompare(e.groupTitle||e.group)}var sr=I(()=>{"use strict";a()});import js from"fast-glob";async function te(r,e,t="/docs",s=!0){let o=performance.now();U.load(),ue.clear(),(process.env.BOLTDOCS_FORCE_REPARSE==="true"||e?.i18n)&&U.invalidateAll();let i;!s&&nt?i=nt:(i=await js(["**/*.md","**/*.mdx"],{cwd:r,absolute:!0,suppressErrors:!0,followSymbolicLinks:!1}),nt=i),U.pruneStale(new Set(i));let n=50,p=[],u=0;for(let $=0;$<i.length;$+=n){let x=i.slice($,$+n),b=await Promise.all(x.map(async w=>{let S=U.get(w);if(S)return u++,S;let O=er(w,r,t,e);return U.set(w,O),O}));p.push(...b),$+n<i.length&&await new Promise(w=>setImmediate(w))}U.save();let l=new Map,m=[];for(let $ of p)if($.isGroupIndex&&$.relativeDir&&m.push($),$.relativeDir){let x=l.get($.relativeDir);x?(x.position===void 0&&$.inferredGroupPosition!==void 0&&(x.position=$.inferredGroupPosition),!x.icon&&$.route.icon&&(x.icon=$.route.icon)):(x={title:ce($.relativeDir),position:$.inferredGroupPosition,icon:$.route.icon},l.set($.relativeDir,x))}for(let $ of m){let x=l.get($.relativeDir);$.groupMeta&&(x.title=$.groupMeta.title,$.groupMeta.position!==void 0&&(x.position=$.groupMeta.position),$.groupMeta.icon&&(x.icon=$.groupMeta.icon))}let f=new Array(p.length);for(let $=0;$<p.length;$++){let x=p[$],b=x.relativeDir,w=b?l.get(b):void 0;f[$]={...x.route,group:b,groupTitle:w?.title||(b?ce(b):void 0),groupPosition:w?.position,groupIcon:w?.icon}}let P=f;if(e?.i18n){let $=Ms(f,e,t);P=[...f,...$]}let d=or(P),L=performance.now()-o;return console.log(`[boltdocs] Route generation: ${L.toFixed(2)}ms (${i.length} files, ${u} cache hits)`),d}function Ms(r,e,t){let s=e.i18n.defaultLocale,o=Object.keys(e.i18n.locales),i=[],n=new Map,p=[];for(let u of r){let l=u.locale||s;n.has(l)||n.set(l,new Set),n.get(l).add(u.path),l===s&&p.push(u)}for(let u of o){let l=n.get(u)||new Set;for(let m of p){let f=Fs(m.path,s,u,t,e);f!==m.path&&(l.has(f)||i.push({...m,path:f,locale:u}))}}return i}function Fs(r,e,t,s,o){let i=`${r}:${t}`,n=ue.get(i);if(n)return n;let p=s;if(o?.versions){let f=o.versions.prefix||"";for(let P of o.versions.versions){let d=f+P.path;if(r.startsWith(`${s}/${d}`)){p+="/"+d;break}if(r.startsWith(`${s}/${P.path}`)){p+="/"+P.path;break}}}let u=r.substring(p.length),l=`/${e}`;if(u.startsWith(l+"/"))u="/"+t+"/"+u.substring(l.length+1);else if(u===l)u="/"+t;else if(u==="/"||u==="")u="/"+t;else{let f=u.startsWith("/")?"":"/";u="/"+t+f+u}let m=p+u;return ue.size>2e3&&ue.clear(),ue.set(i,m),m}var nt,ue,at=I(()=>{"use strict";a();J();Zt();tr();sr();nt=null,ue=new Map});import{z as c}from"zod";var _s,Gs,Hs,lt,Vs,Us,Xs,zs,Ws,ir,ct=I(()=>{"use strict";a();_s=c.object({icon:c.string().max(50),link:c.string().url()}),Gs=c.object({text:c.string().max(2e3).optional()}),Hs=c.enum(["fs:read","fs:write","vite:config","mdx:remark","mdx:rehype","components","hooks:build","hooks:dev"]),lt=c.object({name:c.string(),enforce:c.enum(["pre","post"]).optional(),version:c.string().optional(),boltdocsVersion:c.string().optional(),permissions:c.array(Hs).optional(),remarkPlugins:c.array(c.any()).optional(),rehypePlugins:c.array(c.any()).optional(),vitePlugins:c.array(c.any()).optional(),components:c.record(c.string(),c.string()).optional(),hooks:c.record(c.string(),c.any()).optional()}),Vs=c.object({title:c.union([c.string(),c.record(c.string(),c.string())]).optional(),description:c.union([c.string(),c.record(c.string(),c.string())]).optional(),logo:c.union([c.string(),c.object({dark:c.string(),light:c.string(),alt:c.string().optional(),width:c.number().optional(),height:c.number().optional()})]).optional(),navbar:c.array(c.object({label:c.union([c.string(),c.record(c.string(),c.string())]),href:c.string()})).optional(),sidebar:c.record(c.string(),c.array(c.object({text:c.string(),link:c.string()}))).optional(),socialLinks:c.array(_s).optional(),footer:Gs.optional(),breadcrumbs:c.boolean().optional(),editLink:c.string().refine(r=>!r||r.includes(":path"),{message:"editLink must contain ':path' placeholder if specified"}).optional(),communityHelp:c.string().url().optional(),version:c.string().max(50).optional(),githubRepo:c.string().max(100).optional(),favicon:c.string().optional(),ogImage:c.string().optional(),poweredBy:c.boolean().optional(),tabs:c.array(c.object({id:c.string(),text:c.union([c.string(),c.record(c.string(),c.string())]),icon:c.string().optional()})).optional(),codeTheme:c.union([c.string(),c.object({light:c.string(),dark:c.string()})]).optional(),copyMarkdown:c.union([c.boolean(),c.object({text:c.string().optional(),icon:c.string().optional()})]).optional()}),Us=c.union([c.string(),c.object({rules:c.array(c.object({userAgent:c.string(),allow:c.union([c.string(),c.array(c.string())]).optional(),disallow:c.union([c.string(),c.array(c.string())]).optional()})).optional(),sitemaps:c.array(c.string().url()).optional()})]),Xs=c.object({defaultLocale:c.string(),locales:c.record(c.string(),c.string()),localeConfigs:c.record(c.string(),c.object({label:c.string().optional(),direction:c.enum(["ltr","rtl"]).optional(),htmlLang:c.string().optional(),calendar:c.string().optional()})).optional()}),zs=c.object({defaultVersion:c.string(),prefix:c.string().optional(),versions:c.array(c.object({label:c.string(),path:c.string()}))}),Ws=c.object({headers:c.record(c.string(),c.string()).optional(),enableCSP:c.boolean().optional(),customHeaders:c.record(c.string(),c.string()).optional()}),ir=c.object({siteUrl:c.string().url().optional(),docsDir:c.string().optional(),homePage:c.string().optional(),theme:Vs.optional(),i18n:Xs.optional(),versions:zs.optional(),plugins:c.array(lt).optional(),robots:Us.optional(),security:Ws.optional(),vite:c.record(c.string(),c.unknown()).optional()})});import ut from"path";import Ys from"fs";import{loadConfigFromFile as Ks}from"vite";function Js(r){return r}async function Z(r,e=process.cwd()){let t=e,s={docsDir:ut.resolve(r),theme:{title:"Boltdocs",description:"A Vite documentation framework",navbar:[{label:"Home",href:"/"},{label:"Documentation",href:"/docs"}],codeTheme:{light:"github-light",dark:"github-dark"},poweredBy:!0,breadcrumbs:!0}},o={};for(let m of Se){let f=ut.resolve(t,m);if(Ys.existsSync(f))try{let P=await Ks({command:"serve",mode:"development"},f,t);if(P){o=P.config;break}}catch(P){console.warn(`[boltdocs] Failed to load config from ${m}:`,P)}}let n={...{title:o.title,description:o.description,logo:o.logo,favicon:o.favicon,ogImage:o.ogImage,navbar:o.navbar,sidebar:o.sidebar,socialLinks:o.socialLinks,footer:o.footer,githubRepo:o.githubRepo,tabs:o.tabs,codeTheme:o.codeTheme,copyMarkdown:o.copyMarkdown,breadcrumbs:o.breadcrumbs,poweredBy:o.poweredBy,communityHelp:o.communityHelp,version:o.version,editLink:o.editLink},...o.theme||{}},p=Object.fromEntries(Object.entries(n).filter(([m,f])=>f!==void 0));p.navbar&&(p.navbar=p.navbar.map(m=>({label:m.label||m.text||"",href:m.href||m.link||m.to||""})));let u={docsDir:ut.resolve(r),homePage:o.homePage,theme:{...s.theme,...p},i18n:o.i18n,versions:o.versions,siteUrl:o.siteUrl,plugins:o.plugins||[],robots:o.robots,security:o.security,vite:o.vite},l=ir.safeParse(u);if(!l.success){let m=l.error.issues.map(f=>` - ${f.path.join(".")}: ${f.message}`).join(`
2
- `);throw new Vt(`Invalid Boltdocs configuration:
3
- ${m}`)}return l.data}var Se,we=I(()=>{"use strict";a();ct();Ut();Se=["boltdocs.config.js","boltdocs.config.mjs","boltdocs.config.ts"]});function nr(r,e){let t=ee(e.title),s=ee(e.description);return r.replace(/<title>.*?<\/title>/,`<title>${t}</title>`).replace(/(<meta name="description" content=")[^"]*(")/,`$1${s}$2`).replace(/(<meta property="og:title" content=")[^"]*(")/,`$1${t}$2`).replace(/(<meta property="og:description" content=")[^"]*(")/,`$1${s}$2`).replace(/(<meta name="twitter:title" content=")[^"]*(")/,`$1${t}$2`).replace(/(<meta name="twitter:description" content=")[^"]*(")/,`$1${s}$2`)}var ar=I(()=>{"use strict";a();J()});function lr(r,e){let t=e?.siteUrl?.replace(/\/$/,"")||"https://example.com",s=new Date().toISOString().split("T")[0],o=[{url:"/",priority:"1.0",changefreq:"daily"}];if(e?.i18n){let n=e.i18n.defaultLocale;for(let p of Object.keys(e.i18n.locales))p!==n&&o.push({url:`/${p}/`,priority:"1.0",changefreq:"daily"})}return`<?xml version="1.0" encoding="UTF-8"?>
4
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
5
- ${[...o,...r.map(n=>({url:n,priority:"0.8",changefreq:"weekly"}))].map(n=>` <url>
6
- <loc>${tt(t)}${tt(n.url)}</loc>
7
- <lastmod>${s}</lastmod>
8
- <changefreq>${n.changefreq}</changefreq>
9
- <priority>${n.priority}</priority>
10
- </url>`).join(`
11
- `)}
12
- </urlset>`}var cr=I(()=>{"use strict";a();J()});function Ce(r){if(typeof r.robots=="string")return r.robots;let e=r.siteUrl?.replace(/\/$/,"")||"",t=r.robots||{},s=t.rules||[{userAgent:"*",allow:"/"}],o=t.sitemaps||(e?[`${e}/sitemap.xml`]:[]),i="";for(let n of s){if(i+=`User-agent: ${n.userAgent}
13
- `,n.disallow){let p=Array.isArray(n.disallow)?n.disallow:[n.disallow];for(let u of p)i+=`Disallow: ${u}
14
- `}if(n.allow){let p=Array.isArray(n.allow)?n.allow:[n.allow];for(let u of p)i+=`Allow: ${u}
15
- `}i+=`
16
- `}for(let n of o)i+=`Sitemap: ${n}
17
- `;return i.trim()}var pt=I(()=>{"use strict";a()});import X from"fs";import z from"path";import{fileURLToPath as Zs}from"url";import{createRequire as Qs}from"module";async function ft(r){let{docsDir:e,docsDirName:t,outDir:s,config:o}=r,i=await te(e,o),n=["tsx","ts","jsx","js"].map(x=>z.resolve(e,`pages-external/index.${x}`)).find(x=>X.existsSync(x));if(n)try{let x=X.readFileSync(n,"utf-8"),b=x.match(/pages\s*:\s*{([^}]+)}/s);if(b){let w=b[1].split(",").map(S=>S.split(":")[0].trim().replace(/['"]/g,"")).filter(S=>S&&S.startsWith("/"));for(let S of w)i.some(O=>O.path===S)||i.push({path:S,title:S.slice(1).charAt(0).toUpperCase()+S.slice(2),filePath:"",componentPath:"",_content:""})}x.includes("homePage")&&!i.some(w=>w.path==="/")&&i.push({path:"/",title:"Home",filePath:"",componentPath:"",_content:""})}catch(x){console.warn("[boltdocs] Failed to parse external routes for SSG:",x)}let p=z.resolve(ur,"../client/ssr.js");if(!X.existsSync(p)){console.error("[boltdocs] SSR module not found at",p,"- Did you build the core package?");return}let u=pr("module"),l=u.prototype.require;u.prototype.require=function(x,...b){return x.startsWith("virtual:boltdocs-")?x==="virtual:boltdocs-layout"?{__esModule:!0,default:function(S){try{let A=l.apply(this,[z.resolve(ur,"../client/index.js")]).DefaultLayout||(({children:Y})=>Y);return l.apply(this,["react"]).createElement(A,S)}catch{return S.children}}}:x==="virtual:boltdocs-mdx-components"?{__esModule:!0,default:{}}:x==="virtual:boltdocs-config"?{__esModule:!0,default:o}:{__esModule:!0,default:x.includes("routes")?[]:{}}:l.apply(this,[x,...b])};let{render:m}=pr(p);u.prototype.require=l;let f=z.join(s,"index.html");if(!X.existsSync(f)){console.warn("[boltdocs] No index.html found in outDir, skipping SSG.");return}let P=X.readFileSync(f,"utf-8");await Promise.all(i.map(async x=>{let b=ot(o?.theme?.title,x.locale)||"Boltdocs",w=ot(o?.theme?.description,x.locale)||"",S=`${x.title} | ${b}`,O=x.description||w,A={};A[`/${t}/${x.filePath}`]={default:()=>null};try{let C=await m({path:x.path,routes:i,config:o||{},docsDirName:t,modules:A,homePage:void 0}),Y=nr(P,{title:ee(S),description:ee(O)}).replace("<!--app-html-->",C).replace('<div id="root"></div>',`<div id="root">${C}</div>`),j=z.join(s,x.path);await X.promises.mkdir(j,{recursive:!0}),await X.promises.writeFile(z.join(j,"index.html"),Y,"utf-8")}catch(C){console.error(`[boltdocs] Error SSR rendering route ${x.path}:`,C&&(C.stack||C))}}));let d=lr(i.map(x=>x.path),o);X.writeFileSync(z.join(s,"sitemap.xml"),d,"utf-8");let L=Ce(o);X.writeFileSync(z.join(s,"robots.txt"),L,"utf-8"),console.log(`[boltdocs] Generated ${i.length} static pages + sitemap.xml + robots.txt`);let{flushCache:$}=await import("./cache-3FOEPC2P.mjs");await $()}var ei,ur,pr,mt=I(()=>{"use strict";a();at();J();ar();cr();pt();ei=Zs(import.meta.url),ur=z.dirname(ei),pr=Qs(import.meta.url)});import Ie from"path";import fr from"fs";function mr(r,e){let t=r.homePage?`import HomePage from '${_(r.homePage)}';`:"",s=Ie.resolve(process.cwd(),"index.css"),o=fr.existsSync(s)?"import './index.css';":"",i=r.homePage?"homePage: HomePage,":"",n=e?.plugins?.flatMap(L=>Object.entries(L.components||{}))||[],p=n.map(([L,$])=>`import * as _comp_${L} from '${_($)}';
18
- const ${L} = _comp_${L}.default || _comp_${L}['${L}'] || _comp_${L};`).join(`
19
- `),u=n.map(([L])=>L).join(", "),l=Ie.basename(r.docsDir||"docs"),m=Ie.resolve(process.cwd(),r.docsDir||"docs"),f=["tsx","ts","jsx","js"].map(L=>Ie.resolve(m,`pages-external/index.${L}`)).find(L=>fr.existsSync(L)),P=f?`import * as _external_module from '${_(f)}';`:"";return i=f?"homePage: _external_module.homePage || HomePage,":r.homePage?"homePage: HomePage,":"",`
20
- import { createBoltdocsApp as _createApp } from 'boltdocs/client';
21
- import _routes from 'virtual:boltdocs-routes';
22
- import _config from 'virtual:boltdocs-config';
23
- import _user_mdx_components from 'virtual:boltdocs-mdx-components';
24
- ${o}
25
- ${t}
26
- ${p}
27
- ${P}
28
-
29
- _createApp({
30
- target: '#root',
31
- routes: _routes,
32
- docsDirName: '${l}',
33
- config: _config,
34
- modules: import.meta.glob('/${l}/**/*.{md,mdx}'),
35
- hot: import.meta.hot,
36
- ${i}
37
- ${f?"externalPages: _external_module.pages, externalLayout: _external_module.layout,":""}
38
- components: { ${u}${u?", ":""} ...(_user_mdx_components || {}) },
39
- });
40
- `}var dr=I(()=>{"use strict";a();J()});function gr(r){return`<!doctype html>
41
- <html lang="en">
42
- <head>
43
- <meta charset="UTF-8" />
44
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
45
- <title>${r.theme?.title||"Boltdocs"}</title>
46
- </head>
47
- <body>
48
- <div id="root"></div>
49
- </body>
50
- </html>`}function dt(r,e){let t=e.theme,s=t?.title||"Boltdocs",o=t?.description||"",i=t?.favicon;!i&&t?.logo&&(typeof t.logo=="string"?i=t.logo:i=t.logo.light||t.logo.dark);let n=[i?`<link rel="icon" href="${i}">`:"",`<meta name="description" content="${o}">`,`<meta property="og:title" content="${s}">`,`<meta property="og:description" content="${o}">`,t?.ogImage?`<meta property="og:image" content="${t.ogImage}">`:"",'<meta property="og:type" content="website">','<meta name="twitter:card" content="summary_large_image">',`<meta name="twitter:title" content="${s}">`,`<meta name="twitter:description" content="${o}">`,t?.ogImage?`<meta name="twitter:image" content="${t.ogImage}">`:"",'<meta name="generator" content="Boltdocs">'].filter(Boolean).join(`
51
- `),p=`
52
- <script>
53
- (function() {
54
- try {
55
- var stored = localStorage.getItem("boltdocs-theme");
56
- var theme = stored || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
57
- if (theme === "light") {
58
- document.documentElement.classList.add("theme-light");
59
- document.documentElement.dataset.theme = "light";
60
- } else {
61
- document.documentElement.classList.remove("theme-light");
62
- document.documentElement.dataset.theme = "dark";
63
- }
64
- } catch (e) {}
65
- })();
66
- </script>
67
- `;return r.includes("<title>")?r=r.replace(/<title>.*?<\/title>/,`<title>${s}</title>`):r=r.replace("</head>",` <title>${s}</title>
68
- </head>`),r=r.replace("</head>",` ${n}
69
- ${p} </head>`),!r.includes("src/main")&&!r.includes("virtual:boltdocs-entry")&&(r=r.replace("</body>",` <script type="module">import "virtual:boltdocs-entry";</script>
70
- </body>`)),r}var hr=I(()=>{"use strict";a()});function Er(r){let e=[];for(let t of r)if(e.push({id:t.path,title:t.title,content:t._content||"",url:t.path,display:t.groupTitle?`${t.groupTitle} > ${t.title}`:t.title,locale:t.locale,version:t.version}),t.headings)for(let s of t.headings)e.push({id:`${t.path}#${s.id}`,title:s.text,content:`${s.text} in ${t.title}`,url:`${t.path}#${s.id}`,display:`${t.title} > ${s.text}`,locale:t.locale,version:t.version});return e}var yr=I(()=>{"use strict";a()});var Le,gt=I(()=>{"use strict";a();Le={"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(r){let e=process.env.NODE_ENV==="development",t={"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 e&&(t["script-src"]=["'self'","'unsafe-eval'","'unsafe-inline'"],t["style-src"]=["'self'","'unsafe-inline'"]),Object.entries(t).map(([s,o])=>`${s} ${o.join(" ")}`).join("; ")}var ht=I(()=>{"use strict";a()});var Pr=I(()=>{"use strict";a()});var re,oe,Oe,pe,Ne,fe=I(()=>{"use strict";a();re=class r extends Error{pluginName;constructor(e,t){super(`[plugin:${e}] ${t}`),this.name="PluginError",this.pluginName=e,Object.setPrototypeOf(this,r.prototype)}},oe=class r extends re{constructor(e,t){super(e,`Validation failed: ${t}`),this.name="PluginValidationError",Object.setPrototypeOf(this,r.prototype)}},Oe=class r extends re{constructor(e,t){super(e,`Compatibility error: ${t}`),this.name="PluginCompatibilityError",Object.setPrototypeOf(this,r.prototype)}},pe=class r extends re{constructor(e,t){super(e,`Missing required permission: '${t}'`),this.name="PluginPermissionError",Object.setPrototypeOf(this,r.prototype)}},Ne=class r extends re{hookName;constructor(e,t,s){super(e,`Error in hook '${t}': ${s.message}`),this.name="PluginHookError",this.hookName=t,this.stack=s.stack,Object.setPrototypeOf(this,r.prototype)}}});var Ae,Et=I(()=>{"use strict";a();Ae=class{data=new Map;getNamespaceKey(e,t){return`${e}:${t}`}get(e,t){let s=this.getNamespaceKey(e,t),o=this.data.get(s);if(o!==void 0)return typeof o=="object"&&o!==null?JSON.parse(JSON.stringify(o)):o}set(e,t,s){let o=this.getNamespaceKey(e,t),i=typeof s=="object"&&s!==null?JSON.parse(JSON.stringify(s)):s;this.data.set(o,i)}has(e,t){let s=this.getNamespaceKey(e,t);return this.data.has(s)}}});var me=v((Sc,xr)=>{"use strict";a();var ti="2.0.0",ri=Number.MAX_SAFE_INTEGER||9007199254740991,oi=16,si=250,ii=["major","premajor","minor","preminor","patch","prepatch","prerelease"];xr.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:oi,MAX_SAFE_BUILD_LENGTH:si,MAX_SAFE_INTEGER:ri,RELEASE_TYPES:ii,SEMVER_SPEC_VERSION:ti,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var de=v((Cc,$r)=>{"use strict";a();var ni=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};$r.exports=ni});var se=v((H,vr)=>{"use strict";a();var{MAX_SAFE_COMPONENT_LENGTH:yt,MAX_SAFE_BUILD_LENGTH:ai,MAX_LENGTH:li}=me(),ci=de();H=vr.exports={};var ui=H.re=[],pi=H.safeRe=[],E=H.src=[],fi=H.safeSrc=[],y=H.t={},mi=0,Pt="[a-zA-Z0-9-]",di=[["\\s",1],["\\d",li],[Pt,ai]],gi=r=>{for(let[e,t]of di)r=r.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return r},R=(r,e,t)=>{let s=gi(e),o=mi++;ci(r,o,e),y[r]=o,E[o]=e,fi[o]=s,ui[o]=new RegExp(e,t?"g":void 0),pi[o]=new RegExp(s,t?"g":void 0)};R("NUMERICIDENTIFIER","0|[1-9]\\d*");R("NUMERICIDENTIFIERLOOSE","\\d+");R("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Pt}*`);R("MAINVERSION",`(${E[y.NUMERICIDENTIFIER]})\\.(${E[y.NUMERICIDENTIFIER]})\\.(${E[y.NUMERICIDENTIFIER]})`);R("MAINVERSIONLOOSE",`(${E[y.NUMERICIDENTIFIERLOOSE]})\\.(${E[y.NUMERICIDENTIFIERLOOSE]})\\.(${E[y.NUMERICIDENTIFIERLOOSE]})`);R("PRERELEASEIDENTIFIER",`(?:${E[y.NONNUMERICIDENTIFIER]}|${E[y.NUMERICIDENTIFIER]})`);R("PRERELEASEIDENTIFIERLOOSE",`(?:${E[y.NONNUMERICIDENTIFIER]}|${E[y.NUMERICIDENTIFIERLOOSE]})`);R("PRERELEASE",`(?:-(${E[y.PRERELEASEIDENTIFIER]}(?:\\.${E[y.PRERELEASEIDENTIFIER]})*))`);R("PRERELEASELOOSE",`(?:-?(${E[y.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${E[y.PRERELEASEIDENTIFIERLOOSE]})*))`);R("BUILDIDENTIFIER",`${Pt}+`);R("BUILD",`(?:\\+(${E[y.BUILDIDENTIFIER]}(?:\\.${E[y.BUILDIDENTIFIER]})*))`);R("FULLPLAIN",`v?${E[y.MAINVERSION]}${E[y.PRERELEASE]}?${E[y.BUILD]}?`);R("FULL",`^${E[y.FULLPLAIN]}$`);R("LOOSEPLAIN",`[v=\\s]*${E[y.MAINVERSIONLOOSE]}${E[y.PRERELEASELOOSE]}?${E[y.BUILD]}?`);R("LOOSE",`^${E[y.LOOSEPLAIN]}$`);R("GTLT","((?:<|>)?=?)");R("XRANGEIDENTIFIERLOOSE",`${E[y.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);R("XRANGEIDENTIFIER",`${E[y.NUMERICIDENTIFIER]}|x|X|\\*`);R("XRANGEPLAIN",`[v=\\s]*(${E[y.XRANGEIDENTIFIER]})(?:\\.(${E[y.XRANGEIDENTIFIER]})(?:\\.(${E[y.XRANGEIDENTIFIER]})(?:${E[y.PRERELEASE]})?${E[y.BUILD]}?)?)?`);R("XRANGEPLAINLOOSE",`[v=\\s]*(${E[y.XRANGEIDENTIFIERLOOSE]})(?:\\.(${E[y.XRANGEIDENTIFIERLOOSE]})(?:\\.(${E[y.XRANGEIDENTIFIERLOOSE]})(?:${E[y.PRERELEASELOOSE]})?${E[y.BUILD]}?)?)?`);R("XRANGE",`^${E[y.GTLT]}\\s*${E[y.XRANGEPLAIN]}$`);R("XRANGELOOSE",`^${E[y.GTLT]}\\s*${E[y.XRANGEPLAINLOOSE]}$`);R("COERCEPLAIN",`(^|[^\\d])(\\d{1,${yt}})(?:\\.(\\d{1,${yt}}))?(?:\\.(\\d{1,${yt}}))?`);R("COERCE",`${E[y.COERCEPLAIN]}(?:$|[^\\d])`);R("COERCEFULL",E[y.COERCEPLAIN]+`(?:${E[y.PRERELEASE]})?(?:${E[y.BUILD]})?(?:$|[^\\d])`);R("COERCERTL",E[y.COERCE],!0);R("COERCERTLFULL",E[y.COERCEFULL],!0);R("LONETILDE","(?:~>?)");R("TILDETRIM",`(\\s*)${E[y.LONETILDE]}\\s+`,!0);H.tildeTrimReplace="$1~";R("TILDE",`^${E[y.LONETILDE]}${E[y.XRANGEPLAIN]}$`);R("TILDELOOSE",`^${E[y.LONETILDE]}${E[y.XRANGEPLAINLOOSE]}$`);R("LONECARET","(?:\\^)");R("CARETTRIM",`(\\s*)${E[y.LONECARET]}\\s+`,!0);H.caretTrimReplace="$1^";R("CARET",`^${E[y.LONECARET]}${E[y.XRANGEPLAIN]}$`);R("CARETLOOSE",`^${E[y.LONECARET]}${E[y.XRANGEPLAINLOOSE]}$`);R("COMPARATORLOOSE",`^${E[y.GTLT]}\\s*(${E[y.LOOSEPLAIN]})$|^$`);R("COMPARATOR",`^${E[y.GTLT]}\\s*(${E[y.FULLPLAIN]})$|^$`);R("COMPARATORTRIM",`(\\s*)${E[y.GTLT]}\\s*(${E[y.LOOSEPLAIN]}|${E[y.XRANGEPLAIN]})`,!0);H.comparatorTrimReplace="$1$2$3";R("HYPHENRANGE",`^\\s*(${E[y.XRANGEPLAIN]})\\s+-\\s+(${E[y.XRANGEPLAIN]})\\s*$`);R("HYPHENRANGELOOSE",`^\\s*(${E[y.XRANGEPLAINLOOSE]})\\s+-\\s+(${E[y.XRANGEPLAINLOOSE]})\\s*$`);R("STAR","(<|>)?=?\\s*\\*");R("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");R("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ke=v((Tc,Rr)=>{"use strict";a();var hi=Object.freeze({loose:!0}),Ei=Object.freeze({}),yi=r=>r?typeof r!="object"?hi:r:Ei;Rr.exports=yi});var xt=v((Nc,wr)=>{"use strict";a();var br=/^[0-9]+$/,Sr=(r,e)=>{if(typeof r=="number"&&typeof e=="number")return r===e?0:r<e?-1:1;let t=br.test(r),s=br.test(e);return t&&s&&(r=+r,e=+e),r===e?0:t&&!s?-1:s&&!t?1:r<e?-1:1},Pi=(r,e)=>Sr(e,r);wr.exports={compareIdentifiers:Sr,rcompareIdentifiers:Pi}});var k=v((kc,Ir)=>{"use strict";a();var De=de(),{MAX_LENGTH:Cr,MAX_SAFE_INTEGER:Be}=me(),{safeRe:qe,t:je}=se(),xi=ke(),{compareIdentifiers:$t}=xt(),vt=class r{constructor(e,t){if(t=xi(t),e instanceof r){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Cr)throw new TypeError(`version is longer than ${Cr} characters`);De("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let s=e.trim().match(t.loose?qe[je.LOOSE]:qe[je.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Be||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Be||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Be||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){let i=+o;if(i>=0&&i<Be)return i}return o}):this.prerelease=[],this.build=s[5]?s[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(De("SemVer.compare",this.version,this.options,e),!(e instanceof r)){if(typeof e=="string"&&e===this.version)return 0;e=new r(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof r||(e=new r(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:this.patch>e.patch?1:0}comparePre(e){if(e instanceof r||(e=new r(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let s=this.prerelease[t],o=e.prerelease[t];if(De("prerelease compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return $t(s,o)}while(++t)}compareBuild(e){e instanceof r||(e=new r(e,this.options));let t=0;do{let s=this.build[t],o=e.build[t];if(De("build compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return $t(s,o)}while(++t)}inc(e,t,s){if(e.startsWith("pre")){if(!t&&s===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let o=`-${t}`.match(this.options.loose?qe[je.PRERELEASELOOSE]:qe[je.PRERELEASE]);if(!o||o[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,s),this.inc("pre",t,s);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,s),this.inc("pre",t,s);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let o=Number(s)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(t===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let i=[t,o];s===!1&&(i=[t]),$t(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Ir.exports=vt});var Q=v((Bc,Tr)=>{"use strict";a();var Lr=k(),$i=(r,e,t=!1)=>{if(r instanceof Lr)return r;try{return new Lr(r,e)}catch(s){if(!t)return null;throw s}};Tr.exports=$i});var Nr=v((jc,Or)=>{"use strict";a();var vi=Q(),Ri=(r,e)=>{let t=vi(r,e);return t?t.version:null};Or.exports=Ri});var kr=v((Fc,Ar)=>{"use strict";a();var bi=Q(),Si=(r,e)=>{let t=bi(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};Ar.exports=Si});var qr=v((Gc,Br)=>{"use strict";a();var Dr=k(),wi=(r,e,t,s,o)=>{typeof t=="string"&&(o=s,s=t,t=void 0);try{return new Dr(r instanceof Dr?r.version:r,t).inc(e,s,o).version}catch{return null}};Br.exports=wi});var Fr=v((Vc,Mr)=>{"use strict";a();var jr=Q(),Ci=(r,e)=>{let t=jr(r,null,!0),s=jr(e,null,!0),o=t.compare(s);if(o===0)return null;let i=o>0,n=i?t:s,p=i?s:t,u=!!n.prerelease.length;if(!!p.prerelease.length&&!u){if(!p.patch&&!p.minor)return"major";if(p.compareMain(n)===0)return p.minor&&!p.patch?"minor":"patch"}let m=u?"pre":"";return t.major!==s.major?m+"major":t.minor!==s.minor?m+"minor":t.patch!==s.patch?m+"patch":"prerelease"};Mr.exports=Ci});var Gr=v((Xc,_r)=>{"use strict";a();var Ii=k(),Li=(r,e)=>new Ii(r,e).major;_r.exports=Li});var Vr=v((Wc,Hr)=>{"use strict";a();var Ti=k(),Oi=(r,e)=>new Ti(r,e).minor;Hr.exports=Oi});var Xr=v((Kc,Ur)=>{"use strict";a();var Ni=k(),Ai=(r,e)=>new Ni(r,e).patch;Ur.exports=Ai});var Wr=v((Zc,zr)=>{"use strict";a();var ki=Q(),Di=(r,e)=>{let t=ki(r,e);return t&&t.prerelease.length?t.prerelease:null};zr.exports=Di});var M=v((eu,Kr)=>{"use strict";a();var Yr=k(),Bi=(r,e,t)=>new Yr(r,t).compare(new Yr(e,t));Kr.exports=Bi});var Zr=v((ru,Jr)=>{"use strict";a();var qi=M(),ji=(r,e,t)=>qi(e,r,t);Jr.exports=ji});var eo=v((su,Qr)=>{"use strict";a();var Mi=M(),Fi=(r,e)=>Mi(r,e,!0);Qr.exports=Fi});var Me=v((nu,ro)=>{"use strict";a();var to=k(),_i=(r,e,t)=>{let s=new to(r,t),o=new to(e,t);return s.compare(o)||s.compareBuild(o)};ro.exports=_i});var so=v((lu,oo)=>{"use strict";a();var Gi=Me(),Hi=(r,e)=>r.sort((t,s)=>Gi(t,s,e));oo.exports=Hi});var no=v((uu,io)=>{"use strict";a();var Vi=Me(),Ui=(r,e)=>r.sort((t,s)=>Vi(s,t,e));io.exports=Ui});var ge=v((fu,ao)=>{"use strict";a();var Xi=M(),zi=(r,e,t)=>Xi(r,e,t)>0;ao.exports=zi});var Fe=v((du,lo)=>{"use strict";a();var Wi=M(),Yi=(r,e,t)=>Wi(r,e,t)<0;lo.exports=Yi});var Rt=v((hu,co)=>{"use strict";a();var Ki=M(),Ji=(r,e,t)=>Ki(r,e,t)===0;co.exports=Ji});var bt=v((yu,uo)=>{"use strict";a();var Zi=M(),Qi=(r,e,t)=>Zi(r,e,t)!==0;uo.exports=Qi});var _e=v((xu,po)=>{"use strict";a();var en=M(),tn=(r,e,t)=>en(r,e,t)>=0;po.exports=tn});var Ge=v((vu,fo)=>{"use strict";a();var rn=M(),on=(r,e,t)=>rn(r,e,t)<=0;fo.exports=on});var St=v((bu,mo)=>{"use strict";a();var sn=Rt(),nn=bt(),an=ge(),ln=_e(),cn=Fe(),un=Ge(),pn=(r,e,t,s)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return sn(r,t,s);case"!=":return nn(r,t,s);case">":return an(r,t,s);case">=":return ln(r,t,s);case"<":return cn(r,t,s);case"<=":return un(r,t,s);default:throw new TypeError(`Invalid operator: ${e}`)}};mo.exports=pn});var ho=v((wu,go)=>{"use strict";a();var fn=k(),mn=Q(),{safeRe:He,t:Ve}=se(),dn=(r,e)=>{if(r instanceof fn)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?He[Ve.COERCEFULL]:He[Ve.COERCE]);else{let u=e.includePrerelease?He[Ve.COERCERTLFULL]:He[Ve.COERCERTL],l;for(;(l=u.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||l.index+l[0].length!==t.index+t[0].length)&&(t=l),u.lastIndex=l.index+l[1].length+l[2].length;u.lastIndex=-1}if(t===null)return null;let s=t[2],o=t[3]||"0",i=t[4]||"0",n=e.includePrerelease&&t[5]?`-${t[5]}`:"",p=e.includePrerelease&&t[6]?`+${t[6]}`:"";return mn(`${s}.${o}.${i}${n}${p}`,e)};go.exports=dn});var yo=v((Iu,Eo)=>{"use strict";a();var wt=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}};Eo.exports=wt});var F=v((Tu,vo)=>{"use strict";a();var gn=/\s+/g,Ct=class r{constructor(e,t){if(t=En(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof It)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(gn," "),this.set=this.raw.split("||").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(o=>!xo(o[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let o of this.set)if(o.length===1&&bn(o[0])){this.set=[o];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");let t=this.set[e];for(let s=0;s<t.length;s++)s>0&&(this.formatted+=" "),this.formatted+=t[s].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let s=((this.options.includePrerelease&&vn)|(this.options.loose&&Rn))+":"+e,o=Po.get(s);if(o)return o;let i=this.options.loose,n=i?B[D.HYPHENRANGELOOSE]:B[D.HYPHENRANGE];e=e.replace(n,kn(this.options.includePrerelease)),T("hyphen replace",e),e=e.replace(B[D.COMPARATORTRIM],Pn),T("comparator trim",e),e=e.replace(B[D.TILDETRIM],xn),T("tilde trim",e),e=e.replace(B[D.CARETTRIM],$n),T("caret trim",e);let p=e.split(" ").map(f=>Sn(f,this.options)).join(" ").split(/\s+/).map(f=>An(f,this.options));i&&(p=p.filter(f=>(T("loose invalid filter",f,this.options),!!f.match(B[D.COMPARATORLOOSE])))),T("range list",p);let u=new Map,l=p.map(f=>new It(f,this.options));for(let f of l){if(xo(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let m=[...u.values()];return Po.set(s,m),m}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Range is required");return this.set.some(s=>$o(s,t)&&e.set.some(o=>$o(o,t)&&s.every(i=>o.every(n=>i.intersects(n,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new yn(e,this.options)}catch{return!1}for(let t=0;t<this.set.length;t++)if(Dn(this.set[t],e,this.options))return!0;return!1}};vo.exports=Ct;var hn=yo(),Po=new hn,En=ke(),It=he(),T=de(),yn=k(),{safeRe:B,t:D,comparatorTrimReplace:Pn,tildeTrimReplace:xn,caretTrimReplace:$n}=se(),{FLAG_INCLUDE_PRERELEASE:vn,FLAG_LOOSE:Rn}=me(),xo=r=>r.value==="<0.0.0-0",bn=r=>r.value==="",$o=(r,e)=>{let t=!0,s=r.slice(),o=s.pop();for(;t&&s.length;)t=s.every(i=>o.intersects(i,e)),o=s.pop();return t},Sn=(r,e)=>(r=r.replace(B[D.BUILD],""),T("comp",r,e),r=In(r,e),T("caret",r),r=wn(r,e),T("tildes",r),r=Tn(r,e),T("xrange",r),r=Nn(r,e),T("stars",r),r),q=r=>!r||r.toLowerCase()==="x"||r==="*",wn=(r,e)=>r.trim().split(/\s+/).map(t=>Cn(t,e)).join(" "),Cn=(r,e)=>{let t=e.loose?B[D.TILDELOOSE]:B[D.TILDE];return r.replace(t,(s,o,i,n,p)=>{T("tilde",r,s,o,i,n,p);let u;return q(o)?u="":q(i)?u=`>=${o}.0.0 <${+o+1}.0.0-0`:q(n)?u=`>=${o}.${i}.0 <${o}.${+i+1}.0-0`:p?(T("replaceTilde pr",p),u=`>=${o}.${i}.${n}-${p} <${o}.${+i+1}.0-0`):u=`>=${o}.${i}.${n} <${o}.${+i+1}.0-0`,T("tilde return",u),u})},In=(r,e)=>r.trim().split(/\s+/).map(t=>Ln(t,e)).join(" "),Ln=(r,e)=>{T("caret",r,e);let t=e.loose?B[D.CARETLOOSE]:B[D.CARET],s=e.includePrerelease?"-0":"";return r.replace(t,(o,i,n,p,u)=>{T("caret",r,o,i,n,p,u);let l;return q(i)?l="":q(n)?l=`>=${i}.0.0${s} <${+i+1}.0.0-0`:q(p)?i==="0"?l=`>=${i}.${n}.0${s} <${i}.${+n+1}.0-0`:l=`>=${i}.${n}.0${s} <${+i+1}.0.0-0`:u?(T("replaceCaret pr",u),i==="0"?n==="0"?l=`>=${i}.${n}.${p}-${u} <${i}.${n}.${+p+1}-0`:l=`>=${i}.${n}.${p}-${u} <${i}.${+n+1}.0-0`:l=`>=${i}.${n}.${p}-${u} <${+i+1}.0.0-0`):(T("no pr"),i==="0"?n==="0"?l=`>=${i}.${n}.${p}${s} <${i}.${n}.${+p+1}-0`:l=`>=${i}.${n}.${p}${s} <${i}.${+n+1}.0-0`:l=`>=${i}.${n}.${p} <${+i+1}.0.0-0`),T("caret return",l),l})},Tn=(r,e)=>(T("replaceXRanges",r,e),r.split(/\s+/).map(t=>On(t,e)).join(" ")),On=(r,e)=>{r=r.trim();let t=e.loose?B[D.XRANGELOOSE]:B[D.XRANGE];return r.replace(t,(s,o,i,n,p,u)=>{T("xRange",r,s,o,i,n,p,u);let l=q(i),m=l||q(n),f=m||q(p),P=f;return o==="="&&P&&(o=""),u=e.includePrerelease?"-0":"",l?o===">"||o==="<"?s="<0.0.0-0":s="*":o&&P?(m&&(n=0),p=0,o===">"?(o=">=",m?(i=+i+1,n=0,p=0):(n=+n+1,p=0)):o==="<="&&(o="<",m?i=+i+1:n=+n+1),o==="<"&&(u="-0"),s=`${o+i}.${n}.${p}${u}`):m?s=`>=${i}.0.0${u} <${+i+1}.0.0-0`:f&&(s=`>=${i}.${n}.0${u} <${i}.${+n+1}.0-0`),T("xRange return",s),s})},Nn=(r,e)=>(T("replaceStars",r,e),r.trim().replace(B[D.STAR],"")),An=(r,e)=>(T("replaceGTE0",r,e),r.trim().replace(B[e.includePrerelease?D.GTE0PRE:D.GTE0],"")),kn=r=>(e,t,s,o,i,n,p,u,l,m,f,P)=>(q(s)?t="":q(o)?t=`>=${s}.0.0${r?"-0":""}`:q(i)?t=`>=${s}.${o}.0${r?"-0":""}`:n?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,q(l)?u="":q(m)?u=`<${+l+1}.0.0-0`:q(f)?u=`<${l}.${+m+1}.0-0`:P?u=`<=${l}.${m}.${f}-${P}`:r?u=`<${l}.${m}.${+f+1}-0`:u=`<=${u}`,`${t} ${u}`.trim()),Dn=(r,e,t)=>{for(let s=0;s<r.length;s++)if(!r[s].test(e))return!1;if(e.prerelease.length&&!t.includePrerelease){for(let s=0;s<r.length;s++)if(T(r[s].semver),r[s].semver!==It.ANY&&r[s].semver.prerelease.length>0){let o=r[s].semver;if(o.major===e.major&&o.minor===e.minor&&o.patch===e.patch)return!0}return!1}return!0}});var he=v((Nu,Io)=>{"use strict";a();var Ee=Symbol("SemVer ANY"),Ot=class r{static get ANY(){return Ee}constructor(e,t){if(t=Ro(t),e instanceof r){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),Tt("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Ee?this.value="":this.value=this.operator+this.semver.version,Tt("comp",this)}parse(e){let t=this.options.loose?bo[So.COMPARATORLOOSE]:bo[So.COMPARATOR],s=e.match(t);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:"",this.operator==="="&&(this.operator=""),s[2]?this.semver=new wo(s[2],this.options.loose):this.semver=Ee}toString(){return this.value}test(e){if(Tt("Comparator.test",e,this.options.loose),this.semver===Ee||e===Ee)return!0;if(typeof e=="string")try{e=new wo(e,this.options)}catch{return!1}return Lt(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Co(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new Co(this.value,t).test(e.semver):(t=Ro(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||Lt(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||Lt(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};Io.exports=Ot;var Ro=ke(),{safeRe:bo,t:So}=se(),Lt=St(),Tt=de(),wo=k(),Co=F()});var ye=v((ku,Lo)=>{"use strict";a();var Bn=F(),qn=(r,e,t)=>{try{e=new Bn(e,t)}catch{return!1}return e.test(r)};Lo.exports=qn});var Oo=v((Bu,To)=>{"use strict";a();var jn=F(),Mn=(r,e)=>new jn(r,e).set.map(t=>t.map(s=>s.value).join(" ").trim().split(" "));To.exports=Mn});var Ao=v((ju,No)=>{"use strict";a();var Fn=k(),_n=F(),Gn=(r,e,t)=>{let s=null,o=null,i=null;try{i=new _n(e,t)}catch{return null}return r.forEach(n=>{i.test(n)&&(!s||o.compare(n)===-1)&&(s=n,o=new Fn(s,t))}),s};No.exports=Gn});var Do=v((Fu,ko)=>{"use strict";a();var Hn=k(),Vn=F(),Un=(r,e,t)=>{let s=null,o=null,i=null;try{i=new Vn(e,t)}catch{return null}return r.forEach(n=>{i.test(n)&&(!s||o.compare(n)===1)&&(s=n,o=new Hn(s,t))}),s};ko.exports=Un});var jo=v((Gu,qo)=>{"use strict";a();var Nt=k(),Xn=F(),Bo=ge(),zn=(r,e)=>{r=new Xn(r,e);let t=new Nt("0.0.0");if(r.test(t)||(t=new Nt("0.0.0-0"),r.test(t)))return t;t=null;for(let s=0;s<r.set.length;++s){let o=r.set[s],i=null;o.forEach(n=>{let p=new Nt(n.semver.version);switch(n.operator){case">":p.prerelease.length===0?p.patch++:p.prerelease.push(0),p.raw=p.format();case"":case">=":(!i||Bo(p,i))&&(i=p);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${n.operator}`)}}),i&&(!t||Bo(t,i))&&(t=i)}return t&&r.test(t)?t:null};qo.exports=zn});var Fo=v((Vu,Mo)=>{"use strict";a();var Wn=F(),Yn=(r,e)=>{try{return new Wn(r,e).range||"*"}catch{return null}};Mo.exports=Yn});var Ue=v((Xu,Vo)=>{"use strict";a();var Kn=k(),Ho=he(),{ANY:Jn}=Ho,Zn=F(),Qn=ye(),_o=ge(),Go=Fe(),ea=Ge(),ta=_e(),ra=(r,e,t,s)=>{r=new Kn(r,s),e=new Zn(e,s);let o,i,n,p,u;switch(t){case">":o=_o,i=ea,n=Go,p=">",u=">=";break;case"<":o=Go,i=ta,n=_o,p="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Qn(r,e,s))return!1;for(let l=0;l<e.set.length;++l){let m=e.set[l],f=null,P=null;if(m.forEach(d=>{d.semver===Jn&&(d=new Ho(">=0.0.0")),f=f||d,P=P||d,o(d.semver,f.semver,s)?f=d:n(d.semver,P.semver,s)&&(P=d)}),f.operator===p||f.operator===u||(!P.operator||P.operator===p)&&i(r,P.semver))return!1;if(P.operator===u&&n(r,P.semver))return!1}return!0};Vo.exports=ra});var Xo=v((Wu,Uo)=>{"use strict";a();var oa=Ue(),sa=(r,e,t)=>oa(r,e,">",t);Uo.exports=sa});var Wo=v((Ku,zo)=>{"use strict";a();var ia=Ue(),na=(r,e,t)=>ia(r,e,"<",t);zo.exports=na});var Jo=v((Zu,Ko)=>{"use strict";a();var Yo=F(),aa=(r,e,t)=>(r=new Yo(r,t),e=new Yo(e,t),r.intersects(e,t));Ko.exports=aa});var Qo=v((ep,Zo)=>{"use strict";a();var la=ye(),ca=M();Zo.exports=(r,e,t)=>{let s=[],o=null,i=null,n=r.sort((m,f)=>ca(m,f,t));for(let m of n)la(m,e,t)?(i=m,o||(o=m)):(i&&s.push([o,i]),i=null,o=null);o&&s.push([o,null]);let p=[];for(let[m,f]of s)m===f?p.push(m):!f&&m===n[0]?p.push("*"):f?m===n[0]?p.push(`<=${f}`):p.push(`${m} - ${f}`):p.push(`>=${m}`);let u=p.join(" || "),l=typeof e.raw=="string"?e.raw:String(e);return u.length<l.length?u:e}});var is=v((rp,ss)=>{"use strict";a();var es=F(),kt=he(),{ANY:At}=kt,Pe=ye(),Dt=M(),ua=(r,e,t={})=>{if(r===e)return!0;r=new es(r,t),e=new es(e,t);let s=!1;e:for(let o of r.set){for(let i of e.set){let n=fa(o,i,t);if(s=s||n!==null,n)continue e}if(s)return!1}return!0},pa=[new kt(">=0.0.0-0")],ts=[new kt(">=0.0.0")],fa=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===At){if(e.length===1&&e[0].semver===At)return!0;t.includePrerelease?r=pa:r=ts}if(e.length===1&&e[0].semver===At){if(t.includePrerelease)return!0;e=ts}let s=new Set,o,i;for(let d of r)d.operator===">"||d.operator===">="?o=rs(o,d,t):d.operator==="<"||d.operator==="<="?i=os(i,d,t):s.add(d.semver);if(s.size>1)return null;let n;if(o&&i){if(n=Dt(o.semver,i.semver,t),n>0)return null;if(n===0&&(o.operator!==">="||i.operator!=="<="))return null}for(let d of s){if(o&&!Pe(d,String(o),t)||i&&!Pe(d,String(i),t))return null;for(let L of e)if(!Pe(d,String(L),t))return!1;return!0}let p,u,l,m,f=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1,P=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;f&&f.prerelease.length===1&&i.operator==="<"&&f.prerelease[0]===0&&(f=!1);for(let d of e){if(m=m||d.operator===">"||d.operator===">=",l=l||d.operator==="<"||d.operator==="<=",o){if(P&&d.semver.prerelease&&d.semver.prerelease.length&&d.semver.major===P.major&&d.semver.minor===P.minor&&d.semver.patch===P.patch&&(P=!1),d.operator===">"||d.operator===">="){if(p=rs(o,d,t),p===d&&p!==o)return!1}else if(o.operator===">="&&!Pe(o.semver,String(d),t))return!1}if(i){if(f&&d.semver.prerelease&&d.semver.prerelease.length&&d.semver.major===f.major&&d.semver.minor===f.minor&&d.semver.patch===f.patch&&(f=!1),d.operator==="<"||d.operator==="<="){if(u=os(i,d,t),u===d&&u!==i)return!1}else if(i.operator==="<="&&!Pe(i.semver,String(d),t))return!1}if(!d.operator&&(i||o)&&n!==0)return!1}return!(o&&l&&!i&&n!==0||i&&m&&!o&&n!==0||P||f)},rs=(r,e,t)=>{if(!r)return e;let s=Dt(r.semver,e.semver,t);return s>0?r:s<0||e.operator===">"&&r.operator===">="?e:r},os=(r,e,t)=>{if(!r)return e;let s=Dt(r.semver,e.semver,t);return s<0?r:s>0||e.operator==="<"&&r.operator==="<="?e:r};ss.exports=ua});var cs=v((sp,ls)=>{"use strict";a();var Bt=se(),ns=me(),ma=k(),as=xt(),da=Q(),ga=Nr(),ha=kr(),Ea=qr(),ya=Fr(),Pa=Gr(),xa=Vr(),$a=Xr(),va=Wr(),Ra=M(),ba=Zr(),Sa=eo(),wa=Me(),Ca=so(),Ia=no(),La=ge(),Ta=Fe(),Oa=Rt(),Na=bt(),Aa=_e(),ka=Ge(),Da=St(),Ba=ho(),qa=he(),ja=F(),Ma=ye(),Fa=Oo(),_a=Ao(),Ga=Do(),Ha=jo(),Va=Fo(),Ua=Ue(),Xa=Xo(),za=Wo(),Wa=Jo(),Ya=Qo(),Ka=is();ls.exports={parse:da,valid:ga,clean:ha,inc:Ea,diff:ya,major:Pa,minor:xa,patch:$a,prerelease:va,compare:Ra,rcompare:ba,compareLoose:Sa,compareBuild:wa,sort:Ca,rsort:Ia,gt:La,lt:Ta,eq:Oa,neq:Na,gte:Aa,lte:ka,cmp:Da,coerce:Ba,Comparator:qa,Range:ja,satisfies:Ma,toComparators:Fa,maxSatisfying:_a,minSatisfying:Ga,minVersion:Ha,validRange:Va,outside:Ua,gtr:Xa,ltr:za,intersects:Wa,simplifyRange:Ya,subset:Ka,SemVer:ma,re:Bt.re,src:Bt.src,tokens:Bt.t,SEMVER_SPEC_VERSION:ns.SEMVER_SPEC_VERSION,RELEASE_TYPES:ns.RELEASE_TYPES,compareIdentifiers:as.compareIdentifiers,rcompareIdentifiers:as.rcompareIdentifiers}});import{z as G}from"zod";import Ja from"path";function ps(r,e){let t=[],s=new Set;for(let o of r){let i=Za.safeParse(o);if(!i.success)throw new oe(o.name||"unknown",i.error.issues.map(p=>`${p.path.join(".")}: ${p.message}`).join(", "));let n=i.data;if(s.has(n.name))throw new oe(n.name,"Duplicate plugin name detected");if(s.add(n.name),n.boltdocsVersion&&!us.default.satisfies(e,n.boltdocsVersion))throw new Oe(n.name,`Plugin expects Boltdocs version ${n.boltdocsVersion}, but current is ${e}`);if(n.components){for(let[p,u]of Object.entries(n.components))if((u.includes("..")||Ja.isAbsolute(u))&&u.includes(".."))throw new oe(n.name,`Component '${p}' has an invalid path: traversal sequences are not allowed.`)}t.push(n)}return t}function ie(r,e){return r.permissions?r.permissions.includes(e):!1}var us,Za,qt=I(()=>{"use strict";a();us=As(cs());ct();fe();Za=lt.extend({version:G.string().optional(),boltdocsVersion:G.string().optional(),permissions:G.array(G.string()).optional(),hooks:G.object({beforeBuild:G.function().optional(),afterBuild:G.function().optional(),beforeDev:G.function().optional(),afterDev:G.function().optional(),configResolved:G.function().optional(),buildEnd:G.function().optional()}).optional()})});var W,jt=I(()=>{"use strict";a();fe();qt();W=class{static checkPermission(e,t){if(!ie(e,t))throw new pe(e.name,t)}static getSanitizedCapabilities(e){return{remarkPlugins:ie(e,"mdx:remark")?e.remarkPlugins:[],rehypePlugins:ie(e,"mdx:rehype")?e.rehypePlugins:[],vitePlugins:ie(e,"vite:config")?e.vitePlugins:[],components:ie(e,"components")?e.components:{}}}static async executeWithIsolation(e,t,s,o){try{return this.checkPermission(e,t),await o()}catch(i){if(i instanceof pe){console.warn(`[boltdocs] Skipping hook '${s}' for plugin '${e.name}': ${i.message}`);return}throw i}}}});var Xe,fs=I(()=>{"use strict";a();fe();Et();jt();Xe=class{plugins;config;store;constructor(e,t){this.plugins=e,this.config=t,this.store=new Ae}async runHook(e,...t){let s=this.getSortedPlugins();for(let o of s){if(!o.hooks?.[e])continue;let i=this.createContext(o),n=e.toLowerCase().includes("build"),p=e.toLowerCase().includes("dev"),u=n?"hooks:build":p?"hooks:dev":void 0;try{u?await W.executeWithIsolation(o,u,e,()=>o.hooks[e](i,...t)):await o.hooks[e](i,...t)}catch(l){let m=new Ne(o.name,e,l instanceof Error?l:new Error(String(l)));i.logger.error(m)}}}getSortedPlugins(){let e=this.plugins.filter(o=>o.enforce==="pre"),t=this.plugins.filter(o=>!o.enforce),s=this.plugins.filter(o=>o.enforce==="post");return[...e,...t,...s]}createContext(e){return{config:Object.freeze({...this.config}),meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(t,s)=>this.store.get(t,s),set:(t,s,o)=>this.store.set(t,s,o),has:(t,s)=>this.store.has(t,s)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:s=>console.log(`${t} INFO: ${s}`),warn:s=>console.warn(`${t} WARN: ${s}`),error:s=>{let o=s instanceof Error?s.message:s;console.error(`${t} ERROR: ${o}`)},debug:s=>console.debug(`${t} DEBUG: ${s}`)}}}});function $p(r){return r}var ze=I(()=>{"use strict";a();Pr();fe();Et();qt();jt();fs()});var ms=I(()=>{"use strict";a()});import{loadEnv as Qa}from"vite";import{ViteImageOptimizer as el}from"vite-plugin-image-optimizer";import V from"path";import ds from"fs";function gs(r={},e){let t=V.resolve(process.cwd(),r.docsDir||"docs"),s=_(t),o=e,i,n=!1,p,u=[];return[{name:"vite-plugin-boltdocs",enforce:"pre",async config(l,m){n=m.command==="build";let f=l.envDir||process.cwd(),P=Qa(m.mode,f,"");Object.assign(process.env,P),o||(o=await Z(t));let d=(await import("./package-QFIAETHR.mjs")).version,L=ps(o.plugins||[],d);return o.plugins=L,p=new Xe(L,o),u=L.flatMap($=>W.getSanitizedCapabilities($).vitePlugins||[]),n&&await p.runHook("beforeBuild"),{resolve:{alias:[{find:/^(.*)\/?use-sync-external-store\/shim(?:.*)$/,replacement:"\0virtual:boltdocs-usesync-shim"},{find:/^(.*)\/?use-sync-external-store$/,replacement:"\0virtual:boltdocs-usesync-shim"}]},optimizeDeps:{include:["react","react-dom"],exclude:["boltdocs","boltdocs/client","boltdocs/hooks","boltdocs/primitives","boltdocs/base-ui","boltdocs/mdx","boltdocs/integrations","boltdocs/client/hooks","boltdocs/client/primitives"]}}},configResolved(l){i=l,p?.runHook("configResolved",o)},async configureServer(l){await p?.runHook("beforeDev"),l.middlewares.use((b,w,S)=>{process.env.NODE_ENV==="production"&&Object.entries(Le).forEach(([A,C])=>{w.setHeader(A,C)}),o.security?.enableCSP&&w.setHeader("Content-Security-Policy",Te(o)),S()}),l.middlewares.use((b,w,S)=>{if(b.url==="/robots.txt"){let O=Ce(o);w.statusCode=200,w.setHeader("Content-Type","text/plain"),w.end(O);return}S()}),l.middlewares.use(async(b,w,S)=>{let O=b.url?.split("?")[0]||"/",A=b.headers.accept||"",C=O==="/"||O.startsWith("/docs")||o.i18n&&Object.keys(o.i18n.locales).some(j=>O.startsWith(`/${j}/docs`)||O===`/${j}`)||!0,Y=/\.(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(O);if(A.includes("text/html")&&!Y&&C){let j=gr(o);j=dt(j,o),j=await l.transformIndexHtml(b.url||"/",j),w.statusCode=200,w.setHeader("Content-Type","text/html"),w.end(j);return}S()});let m=Se.map(b=>V.resolve(process.cwd(),b)),f=["tsx","jsx"],P=f.map(b=>V.resolve(t,`layout.${b}`)),d=["tsx","ts","jsx","js"],L=d.map(b=>V.resolve(t,`mdx-components.${b}`)),$=d.map(b=>V.resolve(t,`pages-external/index.${b}`));l.watcher.add([...m,...L,...P,...$]);let x=async(b,w)=>{try{let S=_(b);if(Se.some(C=>S.endsWith(C))){l.restart();return}if(d.some(C=>S.endsWith(`mdx-components.${C}`))){let C=l.moduleGraph.getModuleById("\0virtual:boltdocs-mdx-components");C&&l.moduleGraph.invalidateModule(C),l.ws.send({type:"full-reload"});return}if(f.some(C=>S.endsWith(`layout.${C}`))){let C=l.moduleGraph.getModuleById("\0virtual:boltdocs-layout");C&&l.moduleGraph.invalidateModule(C),l.ws.send({type:"full-reload"});return}if(S.includes("/pages-external/")||S.includes("\\pages-external\\")){let C=l.moduleGraph.getModuleById("\0virtual:boltdocs-entry");C&&l.moduleGraph.invalidateModule(C),l.ws.send({type:"full-reload"});return}if(!S.startsWith(s)||!Xt(S))return;if(w==="add"||w==="unlink"){st(),o=await Z(t);let C=l.moduleGraph.getModuleById("\0virtual:boltdocs-config");C&&l.moduleGraph.invalidateModule(C),l.ws.send({type:"custom",event:"boltdocs:config-update",data:{theme:o?.theme,i18n:o?.i18n,versions:o?.versions,siteUrl:o?.siteUrl}})}else it(b);let O=await te(t,o,"/docs",w!=="change"),A=l.moduleGraph.getModuleById("\0virtual:boltdocs-routes");A&&l.moduleGraph.invalidateModule(A),l.ws.send({type:"custom",event:"boltdocs:routes-update",data:O})}catch(S){console.error(`[boltdocs] HMR error during ${w} event:`,S)}};l.watcher.on("add",b=>x(b,"add")),l.watcher.on("unlink",b=>x(b,"unlink")),l.watcher.on("change",b=>x(b,"change")),await p?.runHook("afterDev")},resolveId(l){if(l==="virtual:boltdocs-routes"||l==="virtual:boltdocs-config"||l==="virtual:boltdocs-entry"||l==="virtual:boltdocs-mdx-components"||l==="virtual:boltdocs-layout"||l==="virtual:boltdocs-search")return"\0"+l;if((l.includes("use-sync-external-store/shim")||l==="use-sync-external-store"||l.endsWith("use-sync-external-store/index.js"))&&!l.includes("with-selector"))return"\0virtual:boltdocs-usesync-shim"},async load(l){if(l==="\0virtual:boltdocs-usesync-shim")return`import * as React from 'react';
71
- export const useSyncExternalStore = React.useSyncExternalStore;
72
- export default React.useSyncExternalStore;`;if(l==="\0virtual:boltdocs-routes"){let m=await te(t,o);return`export default ${JSON.stringify(m,null,2)};`}if(l==="\0virtual:boltdocs-config"){let m={theme:o?.theme,i18n:o?.i18n,versions:o?.versions,siteUrl:o?.siteUrl,plugins:o?.plugins?.map(f=>({name:f.name}))};return`export default ${JSON.stringify(m,null,2)};`}if(l==="\0virtual:boltdocs-entry")return mr(r,o);if(l==="\0virtual:boltdocs-mdx-components"){let m=["tsx","ts","jsx","js"],f=null;for(let P of m){let d=V.resolve(t,`mdx-components.${P}`);if(ds.existsSync(d)){f=d;break}}if(f){let P=_(f);return`import * as components from '${P}';
73
- const mdxComponents = components.default || components;
74
- export default mdxComponents;
75
- export * from '${P}';`}return"export default {};"}if(l==="\0virtual:boltdocs-layout"){let m=["tsx","jsx"],f=null;for(let P of m){let d=V.resolve(t,`layout.${P}`);if(ds.existsSync(d)){f=d;break}}return f?`import UserLayout from '${_(f)}';
76
- export default UserLayout;`:`import { DefaultLayout } from 'boltdocs/client';
77
- export default DefaultLayout;`}if(l==="\0virtual:boltdocs-search"){let m=await te(t,o),f=Er(m);return`export default ${JSON.stringify(f,null,2)};`}},transformIndexHtml:{order:"pre",handler(l){return dt(l,o)}},async closeBundle(){if(!n)return;let l=i?.build?.outDir?V.resolve(i.root,i.build.outDir):V.resolve(process.cwd(),"dist"),m=V.basename(t||"docs");await ft({docsDir:t,docsDirName:m,outDir:l,config:o});let{flushCache:f}=await import("./cache-3FOEPC2P.mjs");await f(),await p?.runHook("afterBuild"),await p?.runHook("buildEnd")}},el({includePublic:!0,png:{quality:80},jpeg:{quality:80},jpg:{quality:80},webp:{quality:80},avif:{quality:80},svg:{multipass:!0,plugins:[{name:"preset-default"}]}}),{name:"vite-plugin-boltdocs-extra-plugins",async configResolved(){}},...u]}var hs=I(()=>{"use strict";a();at();we();mt();J();dr();hr();pt();yr();gt();ht();ze();ms()});var Es,ne,ys=I(()=>{"use strict";a();Jt();Es="v4",ne=new Kt("mdx")});import{createHighlighter as tl}from"shiki";async function Ye(r){if(We)return We;let e=typeof r=="object"?[r.light,r.dark]:[r??"github-dark"];return["github-light","github-dark"].forEach(t=>{e.includes(t)||e.push(t)}),We=await tl({themes:e,langs:["tsx","jsx","ts","js","json","md","mdx","css","html","bash","sh","yaml","yml"]}),We}var We,Mt=I(()=>{"use strict";a();We=null});import{visit as rl}from"unist-util-visit";function Ps(r){return async e=>{let t=r?.theme?.codeTheme??{light:"github-light",dark:"github-dark"},s=await Ye(t);rl(e,["mdxJsxFlowElement","mdxJsxTextElement"],o=>{if(o.name!=="ComponentPreview")return;let i=o.attributes?.find(l=>l.name==="code"),n="";if(i){if(typeof i.value=="string")n=i.value;else if(i.value?.type==="mdxJsxAttributeValueExpression"){let l=i.value.value??"";n=l.match(/^[`'"]([\s\S]+)[`'"]$/)?.[1]??l}}if(!n)return;let p=typeof t=="object"?{themes:{light:t.light,dark:t.dark},lang:"tsx"}:{theme:t,lang:"tsx"},u=s.codeToHtml(n,p);o.attributes=(o.attributes??[]).filter(l=>l.name!=="highlightedHtml"),o.attributes.push({type:"mdxJsxAttribute",name:"highlightedHtml",value:u})})}}var xs=I(()=>{"use strict";a();Mt()});import{visit as ol}from"unist-util-visit";function $s(r){return async e=>{let t=r?.theme?.codeTheme||{light:"github-light",dark:"github-dark"},s=await Ye(t);ol(e,"element",o=>{if(o.tagName==="pre"&&o.children?.[0]?.tagName==="code"){let i=o.children[0],p=(i.properties?.className||[]).find($=>$.startsWith("language-")),u=p?p.slice(9):"text",l=i.children[0]?.value||"",f=(i.data?.meta||i.properties?.metastring||"").match(/title\s*=\s*"([^"]*)"/),P=f?f[1]:void 0,d={lang:u};typeof t=="object"?d.themes={light:t.light,dark:t.dark}:d.theme=t;let L=s.codeToHtml(l,d);o.properties["data-highlighted"]="true",o.properties["data-highlighted-html"]=L,o.properties["data-lang"]=u,P&&(o.properties.title=P),o.children=[]}})}}var vs=I(()=>{"use strict";a();Mt()});import{visit as sl}from"unist-util-visit";function Rs(){return r=>{sl(r,"code",e=>{if(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.lang&&(e.data.hProperties["data-lang"]=e.lang),!e.meta)return;let t=e.meta,s=t.match(/title\s*=\s*"([^"]*)"/);s&&(e.data.hProperties.title=s[1]),e.data.hProperties.metastring=t})}}var bs=I(()=>{"use strict";a()});import il from"@mdx-js/rollup";import nl from"remark-gfm";import al from"remark-frontmatter";import ll from"rehype-slug";import cl from"crypto";function ws(r,e=il){let t=r?.plugins?.flatMap(i=>W.getSanitizedCapabilities(i).remarkPlugins||[])||[],s=r?.plugins?.flatMap(i=>W.getSanitizedCapabilities(i).rehypePlugins||[])||[],o=e({remarkPlugins:[nl,al,Rs,[Ps,r],...t],rehypePlugins:[ll,[$s,r],...s],jsxRuntime:"automatic"});return{...o,name:"vite-plugin-boltdocs-mdx",async buildStart(){Ke=0,xe=0,Ss||(ne.load(),Ss=!0),o.buildStart&&await o.buildStart.call(this)},async transform(i,n,p){if(!n.endsWith(".md")&&!n.endsWith(".mdx"))return o.transform?.call(this,i,n,p);console.log(`[boltdocs] Transforming MDX: ${n}`),xe++;let u=cl.createHash("md5").update(i).digest("hex"),l=`${n}:${u}:${Es}`,m=ne.get(l);if(m)return Ke++,{code:m,map:null};let f=await o.transform.call(this,i,n,p);return f&&typeof f=="object"&&f.code&&ne.set(l,f.code),f},async buildEnd(){xe>0&&console.log(`[boltdocs] MDX Cache Performance: ${Ke}/${xe} hits (${Math.round(Ke/xe*100)||0}%)`),ne.save(),await ne.flush(),o.buildEnd&&await o.buildEnd.call(this)}}}var Ss,Ke,xe,Cs=I(()=>{"use strict";a();ys();xs();vs();bs();ze();Ss=!1,Ke=0,xe=0});import ul from"@vitejs/plugin-react";import pl from"@tailwindcss/vite";async function Is(r){let e=r?.docsDir||"docs",t=await Z(e),s={...r,homePage:r?.homePage||t.homePage};return[...gs(s,t),ws(t)]}async function Nf(r,e="development"){let t=await Z("docs",r),o=e==="production"?{...Le}:{};return t.security?.enableCSP&&(o["Content-Security-Policy"]=Te(t)),{root:r,mode:e,plugins:[ul(),pl(),await Is({docsDir:t.docsDir,homePage:t.homePage})],server:{headers:{...o,...t.vite?.server?.headers},...t.vite?.server},preview:{headers:{...o,...t.vite?.preview?.headers},...t.vite?.preview},...t.vite}}var fl=I(()=>{a();hs();Cs();gt();ht();we();mt();we();ze()});export{Js as a,Z as b,we as c,ft as d,gr as e,hr as f,re as g,oe as h,Oe as i,pe as j,Ne as k,Ae as l,Za as m,ps as n,ie as o,W as p,Xe as q,$p as r,Is as s,Nf as t,fl as u};