boltdocs 3.0.1 → 3.0.2

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.
@@ -9,7 +9,7 @@ const require_image = require('../image-CR6UlaI5.cjs');
9
9
  const require_mdx = require('../mdx-DJBg5DuL.cjs');
10
10
  const require_docs_layout = require('../docs-layout-3TpAt6MB.cjs');
11
11
  const require_search_dialog = require('../search-dialog-D4rplZMv.cjs');
12
- const require_search_dialog$1 = require('../search-dialog-CwNh8lIN.cjs');
12
+ const require_search_dialog$1 = require('../search-dialog-Cx7aGW3U.cjs');
13
13
  let react = require("react");
14
14
  let react_router_dom = require("react-router-dom");
15
15
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1439,7 +1439,7 @@ function I18nSelector({ className }) {
1439
1439
 
1440
1440
  //#endregion
1441
1441
  //#region src/client/components/ui-base/navbar.tsx
1442
- const SearchDialog$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("../search-dialog-cHJoKjts.cjs")).then((m) => ({ default: m.SearchDialog })));
1442
+ const SearchDialog$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("../search-dialog-CW1f6dn6.cjs")).then((m) => ({ default: m.SearchDialog })));
1443
1443
  function Navbar() {
1444
1444
  const { links, title, logo, logoProps, github, social, config } = useNavbar();
1445
1445
  const { routes, currentRoute, isCollectionPage, currentVersion, currentLocale } = require_icons_dev.useRoutes();
@@ -2495,14 +2495,26 @@ function DocsLayoutComponent({ children }) {
2495
2495
  * @returns The posts of the collection.
2496
2496
  */
2497
2497
  function usePosts(collection) {
2498
- return useCollectionsData()[collection] || [];
2498
+ const data = useCollectionsData();
2499
+ const { currentLocale, currentVersion } = require_icons_dev.useRoutes();
2500
+ const config = require_icons_dev.useConfig();
2501
+ const posts = data[collection] || [];
2502
+ const defaultLocale = config.i18n?.defaultLocale;
2503
+ const defaultVersion = config.versions?.defaultVersion;
2504
+ return (0, react.useMemo)(() => {
2505
+ return posts.filter((post) => {
2506
+ const postLocale = post.locale || defaultLocale;
2507
+ const postVersion = post.version || defaultVersion;
2508
+ return (!currentLocale || postLocale === currentLocale) && (!currentVersion || postVersion === currentVersion);
2509
+ });
2510
+ }, [
2511
+ posts,
2512
+ currentLocale,
2513
+ currentVersion,
2514
+ defaultLocale,
2515
+ defaultVersion
2516
+ ]);
2499
2517
  }
2500
- /**
2501
- * Returns a post by its slug.
2502
- * @param collection - The name of the collection.
2503
- * @param slug - The slug of the post.
2504
- * @returns The post with the given slug.
2505
- */
2506
2518
  function usePost(collection, slug) {
2507
2519
  const posts = usePosts(collection);
2508
2520
  return (0, react.useMemo)(() => posts.find((p) => p.path === `/${collection}/${slug}` || p.path.endsWith(`/${slug}`) || p.path === slug), [
@@ -19,6 +19,8 @@ interface CollectionPost$1 {
19
19
  author?: string;
20
20
  coverImage?: string;
21
21
  filePath: string;
22
+ locale?: string;
23
+ version?: string;
22
24
  frontmatter?: Record<string, any>;
23
25
  }
24
26
  type CollectionsData = Record<string, CollectionPost$1[]>;
@@ -339,12 +341,6 @@ declare function DocsLayoutComponent({
339
341
  * @returns The posts of the collection.
340
342
  */
341
343
  declare function usePosts(collection: string): CollectionPost$1[];
342
- /**
343
- * Returns a post by its slug.
344
- * @param collection - The name of the collection.
345
- * @param slug - The slug of the post.
346
- * @returns The post with the given slug.
347
- */
348
344
  declare function usePost(collection: string, slug: string): CollectionPost$1 | undefined;
349
345
  /**
350
346
  * Returns the recent posts of a collection.
@@ -19,6 +19,8 @@ interface CollectionPost$1 {
19
19
  author?: string;
20
20
  coverImage?: string;
21
21
  filePath: string;
22
+ locale?: string;
23
+ version?: string;
22
24
  frontmatter?: Record<string, any>;
23
25
  }
24
26
  type CollectionsData = Record<string, CollectionPost$1[]>;
@@ -339,12 +341,6 @@ declare function DocsLayoutComponent({
339
341
  * @returns The posts of the collection.
340
342
  */
341
343
  declare function usePosts(collection: string): CollectionPost$1[];
342
- /**
343
- * Returns a post by its slug.
344
- * @param collection - The name of the collection.
345
- * @param slug - The slug of the post.
346
- * @returns The post with the given slug.
347
- */
348
344
  declare function usePost(collection: string, slug: string): CollectionPost$1 | undefined;
349
345
  /**
350
346
  * Returns the recent posts of a collection.
@@ -8,7 +8,7 @@ import { c as ThemeProvider, l as useTheme } from "../image-C9md50h2.js";
8
8
  import { n as useCodeBlock, r as copyToClipboard, t as mdx_components_default } from "../mdx-DhyMkc35.js";
9
9
  import { A as useUI, C as useSidebar, D as ButtonGroup, O as Breadcrumbs$2, S as useLocation, T as Menu$1, f as PageNav$1, k as UIProvider, m as OnThisPage$1, n as Sidebar$1, t as DocsLayout$1, w as Tabs$1, x as useSearchHighlight } from "../docs-layout-6FQ8__ok.js";
10
10
  import { a as Button$1, n as Navbar$1, r as ErrorBoundary$1 } from "../search-dialog-DaeSPvEo.js";
11
- import { n as useSearch, r as InternalErrorBoundary, t as SearchDialog } from "../search-dialog-DoGobmuG.js";
11
+ import { n as useSearch, r as InternalErrorBoundary, t as SearchDialog } from "../search-dialog-DDopgbKM.js";
12
12
  import { ViteReactSSG } from "@bdocs/ssg";
13
13
  import { Suspense, createContext, isValidElement, lazy, use, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
14
14
  import { Link, Outlet, useLoaderData, useLocation as useLocation$1, useMatches, useNavigate } from "react-router-dom";
@@ -1433,7 +1433,7 @@ function I18nSelector({ className }) {
1433
1433
 
1434
1434
  //#endregion
1435
1435
  //#region src/client/components/ui-base/navbar.tsx
1436
- const SearchDialog$1 = lazy(() => import("../search-dialog-CQneRo8T.js").then((m) => ({ default: m.SearchDialog })));
1436
+ const SearchDialog$1 = lazy(() => import("../search-dialog-BNdRV60O.js").then((m) => ({ default: m.SearchDialog })));
1437
1437
  function Navbar() {
1438
1438
  const { links, title, logo, logoProps, github, social, config } = useNavbar();
1439
1439
  const { routes, currentRoute, isCollectionPage, currentVersion, currentLocale } = useRoutes();
@@ -2489,14 +2489,26 @@ function DocsLayoutComponent({ children }) {
2489
2489
  * @returns The posts of the collection.
2490
2490
  */
2491
2491
  function usePosts(collection) {
2492
- return useCollectionsData()[collection] || [];
2492
+ const data = useCollectionsData();
2493
+ const { currentLocale, currentVersion } = useRoutes();
2494
+ const config = useConfig();
2495
+ const posts = data[collection] || [];
2496
+ const defaultLocale = config.i18n?.defaultLocale;
2497
+ const defaultVersion = config.versions?.defaultVersion;
2498
+ return useMemo(() => {
2499
+ return posts.filter((post) => {
2500
+ const postLocale = post.locale || defaultLocale;
2501
+ const postVersion = post.version || defaultVersion;
2502
+ return (!currentLocale || postLocale === currentLocale) && (!currentVersion || postVersion === currentVersion);
2503
+ });
2504
+ }, [
2505
+ posts,
2506
+ currentLocale,
2507
+ currentVersion,
2508
+ defaultLocale,
2509
+ defaultVersion
2510
+ ]);
2493
2511
  }
2494
- /**
2495
- * Returns a post by its slug.
2496
- * @param collection - The name of the collection.
2497
- * @param slug - The slug of the post.
2498
- * @returns The post with the given slug.
2499
- */
2500
2512
  function usePost(collection, slug) {
2501
2513
  const posts = usePosts(collection);
2502
2514
  return useMemo(() => posts.find((p) => p.path === `/${collection}/${slug}` || p.path.endsWith(`/${slug}`) || p.path === slug), [
@@ -4,7 +4,7 @@
4
4
  * Copyright (c) 2026 Jesus Alcala
5
5
  * Licensed under the MIT License.
6
6
  */
7
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-Ds5LZdWN.cjs`),t=require(`../node-joF9IMNr.cjs`),n=require(`../cache-DETwlACe.cjs`),r=require(`../config-B5uVv5q4.cjs`);let i=require(`node:path`);i=e.n(i);let a=require(`node:fs`);a=e.n(a);let o=require(`@bdocs/dui`),s=require(`node:fs/promises`);s=e.n(s);let c=require(`node:module`),l=require(`@bdocs/ssg/node`),u=require(`cac`);u=e.n(u);let d=require(`node:os`);d=e.n(d);let f=require(`node:url`),p=require(`vite`);function m(e){let t=e;for(;t&&t!==i.default.dirname(t);){if(a.default.existsSync(i.default.join(t,`.git`))||a.default.existsSync(i.default.join(t,`pnpm-workspace.yaml`)))return t;t=i.default.dirname(t)}t=e;let n=e;for(;t&&t!==i.default.dirname(t);)a.default.existsSync(i.default.join(t,`package.json`))&&(n=t),t=i.default.dirname(t);return n}let h=m(process.cwd());function g(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=i.default.resolve(h,t),r=i.default.relative(h,n),a=r.startsWith(`..`)||i.default.isAbsolute(r),o=n.split(i.default.sep),s=o.some(e=>e.startsWith(`.env`)),c=o.some((e,t)=>{if(e===`node_modules`){let e=o[t+1];return!e||!e.startsWith(`.`)}return!1});if(a||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function _(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function v(){let e=a.default.writeFile;a.default.writeFile=((t,...n)=>{try{g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(a.default,t,...n)});let t=a.default.writeFileSync;a.default.writeFileSync=(e,...n)=>(g(e),t.call(a.default,e,...n));let n=a.default.rm;a.default.rm=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(a.default,e,...t)});let r=a.default.rmSync;a.default.rmSync=(e,...t)=>(g(e),r.call(a.default,e,...t));let i=a.default.unlink;a.default.unlink=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(a.default,e,...t)});let o=a.default.unlinkSync;a.default.unlinkSync=(e,...t)=>(g(e),o.call(a.default,e,...t));let c=a.default.mkdir;a.default.mkdir=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return c.call(a.default,e,...t)});let l=a.default.mkdirSync;a.default.mkdirSync=(e,...t)=>(g(e),l.call(a.default,e,...t));let u=a.default.rmdir;a.default.rmdir=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return u.call(a.default,e,...t)});let d=a.default.rmdirSync;a.default.rmdirSync=(e,...t)=>(g(e),d.call(a.default,e,...t));let f=a.default.appendFile;a.default.appendFile=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return f.call(a.default,e,...t)});let p=a.default.appendFileSync;a.default.appendFileSync=(e,...t)=>(g(e),p.call(a.default,e,...t));let m=a.default.copyFile;a.default.copyFile=((e,t,...n)=>{try{g(e),g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return m.call(a.default,e,t,...n)});let h=a.default.copyFileSync;a.default.copyFileSync=(e,t,...n)=>(g(e),g(t),h.call(a.default,e,t,...n));let v=a.default.rename;a.default.rename=((e,t,...n)=>{try{g(e),g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return v.call(a.default,e,t,...n)});let y=a.default.renameSync;a.default.renameSync=(e,t,...n)=>(g(e),g(t),y.call(a.default,e,t,...n));let b=a.default.createWriteStream;a.default.createWriteStream=(e,...t)=>(g(e),b.call(a.default,e,...t));let x=a.default.open;a.default.open=((e,t,...n)=>{if(_(typeof t==`function`?void 0:t))try{g(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return x.call(a.default,e,t,...n)});let S=a.default.openSync;a.default.openSync=(e,t,...n)=>(_(t)&&g(e),S.call(a.default,e,t,...n));let C=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(g(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(g(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(g(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(g(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(g(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(g(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(g(t),g(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(g(t),g(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(_(n)&&g(t),l.call(e,t,n,...r)))};C(a.default.promises),C(s.default)}function y(e,t){let n=t?` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.cyan(t)}`:` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.gray(`use --host to expose`)}`;return`
7
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-Ds5LZdWN.cjs`),t=require(`../node-Cedquois.cjs`),n=require(`../cache-DETwlACe.cjs`),r=require(`../config-B5uVv5q4.cjs`);let i=require(`node:path`);i=e.n(i);let a=require(`node:fs`);a=e.n(a);let o=require(`@bdocs/dui`),s=require(`node:fs/promises`);s=e.n(s);let c=require(`node:module`),l=require(`@bdocs/ssg/node`),u=require(`cac`);u=e.n(u);let d=require(`node:os`);d=e.n(d);let f=require(`node:url`),p=require(`vite`);function m(e){let t=e;for(;t&&t!==i.default.dirname(t);){if(a.default.existsSync(i.default.join(t,`.git`))||a.default.existsSync(i.default.join(t,`pnpm-workspace.yaml`)))return t;t=i.default.dirname(t)}t=e;let n=e;for(;t&&t!==i.default.dirname(t);)a.default.existsSync(i.default.join(t,`package.json`))&&(n=t),t=i.default.dirname(t);return n}let h=m(process.cwd());function g(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=i.default.resolve(h,t),r=i.default.relative(h,n),a=r.startsWith(`..`)||i.default.isAbsolute(r),o=n.split(i.default.sep),s=o.some(e=>e.startsWith(`.env`)),c=o.some((e,t)=>{if(e===`node_modules`){let e=o[t+1];return!e||!e.startsWith(`.`)}return!1});if(a||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function _(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function v(){let e=a.default.writeFile;a.default.writeFile=((t,...n)=>{try{g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(a.default,t,...n)});let t=a.default.writeFileSync;a.default.writeFileSync=(e,...n)=>(g(e),t.call(a.default,e,...n));let n=a.default.rm;a.default.rm=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(a.default,e,...t)});let r=a.default.rmSync;a.default.rmSync=(e,...t)=>(g(e),r.call(a.default,e,...t));let i=a.default.unlink;a.default.unlink=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(a.default,e,...t)});let o=a.default.unlinkSync;a.default.unlinkSync=(e,...t)=>(g(e),o.call(a.default,e,...t));let c=a.default.mkdir;a.default.mkdir=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return c.call(a.default,e,...t)});let l=a.default.mkdirSync;a.default.mkdirSync=(e,...t)=>(g(e),l.call(a.default,e,...t));let u=a.default.rmdir;a.default.rmdir=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return u.call(a.default,e,...t)});let d=a.default.rmdirSync;a.default.rmdirSync=(e,...t)=>(g(e),d.call(a.default,e,...t));let f=a.default.appendFile;a.default.appendFile=((e,...t)=>{try{g(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return f.call(a.default,e,...t)});let p=a.default.appendFileSync;a.default.appendFileSync=(e,...t)=>(g(e),p.call(a.default,e,...t));let m=a.default.copyFile;a.default.copyFile=((e,t,...n)=>{try{g(e),g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return m.call(a.default,e,t,...n)});let h=a.default.copyFileSync;a.default.copyFileSync=(e,t,...n)=>(g(e),g(t),h.call(a.default,e,t,...n));let v=a.default.rename;a.default.rename=((e,t,...n)=>{try{g(e),g(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return v.call(a.default,e,t,...n)});let y=a.default.renameSync;a.default.renameSync=(e,t,...n)=>(g(e),g(t),y.call(a.default,e,t,...n));let b=a.default.createWriteStream;a.default.createWriteStream=(e,...t)=>(g(e),b.call(a.default,e,...t));let x=a.default.open;a.default.open=((e,t,...n)=>{if(_(typeof t==`function`?void 0:t))try{g(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return x.call(a.default,e,t,...n)});let S=a.default.openSync;a.default.openSync=(e,t,...n)=>(_(t)&&g(e),S.call(a.default,e,t,...n));let C=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(g(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(g(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(g(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(g(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(g(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(g(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(g(t),g(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(g(t),g(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(_(n)&&g(t),l.call(e,t,n,...r)))};C(a.default.promises),C(s.default)}function y(e,t){let n=t?` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.cyan(t)}`:` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.gray(`use --host to expose`)}`;return`
8
8
  `+(0,o.double)([` ${o.colors.green(`➜`)} ${o.colors.green(`Local:`)} ${o.colors.cyan(e)}`,n,``,` ${o.colors.dim(`press h + enter for help`)}`],{title:`boltdocs dev server`})+`
9
9
  `}function b(e,t){let n=t?` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.cyan(t)}`:` ${o.colors.green(`➜`)} ${o.colors.green(`Network:`)} ${o.colors.gray(`use --host to expose`)}`;return`
10
10
  `+(0,o.double)([` ${o.colors.green(`➜`)} ${o.colors.green(`Local:`)} ${o.colors.cyan(e)}`,n],{title:`boltdocs preview server`})+`
@@ -4,7 +4,7 @@
4
4
  * Copyright (c) 2026 Jesus Alcala
5
5
  * Licensed under the MIT License.
6
6
  */
7
- import{S as e,b as t,n}from"../node-Ct4PB0S_.mjs";import{i as r}from"../cache-SF59enb3.mjs";import{r as i}from"../config-D3_zDkHh.mjs";import{createRequire as a}from"node:module";import o from"node:path";import s from"node:fs";import{colors as c,configure as l,double as u,error as d,info as f,padCenter as p,success as m,table as h,warn as g}from"@bdocs/dui";import _ from"node:fs/promises";import{createServer as v}from"@bdocs/ssg/node";import y from"cac";import b from"node:os";import{fileURLToPath as x}from"node:url";import{preview as S}from"vite";function C(e){let t=e;for(;t&&t!==o.dirname(t);){if(s.existsSync(o.join(t,`.git`))||s.existsSync(o.join(t,`pnpm-workspace.yaml`)))return t;t=o.dirname(t)}t=e;let n=e;for(;t&&t!==o.dirname(t);)s.existsSync(o.join(t,`package.json`))&&(n=t),t=o.dirname(t);return n}let w=C(process.cwd());function T(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=o.resolve(w,t),r=o.relative(w,n),i=r.startsWith(`..`)||o.isAbsolute(r),a=n.split(o.sep),s=a.some(e=>e.startsWith(`.env`)),c=a.some((e,t)=>{if(e===`node_modules`){let e=a[t+1];return!e||!e.startsWith(`.`)}return!1});if(i||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function E(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function D(){let e=s.writeFile;s.writeFile=((t,...n)=>{try{T(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(s,t,...n)});let t=s.writeFileSync;s.writeFileSync=(e,...n)=>(T(e),t.call(s,e,...n));let n=s.rm;s.rm=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(s,e,...t)});let r=s.rmSync;s.rmSync=(e,...t)=>(T(e),r.call(s,e,...t));let i=s.unlink;s.unlink=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(s,e,...t)});let a=s.unlinkSync;s.unlinkSync=(e,...t)=>(T(e),a.call(s,e,...t));let o=s.mkdir;s.mkdir=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return o.call(s,e,...t)});let c=s.mkdirSync;s.mkdirSync=(e,...t)=>(T(e),c.call(s,e,...t));let l=s.rmdir;s.rmdir=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return l.call(s,e,...t)});let u=s.rmdirSync;s.rmdirSync=(e,...t)=>(T(e),u.call(s,e,...t));let d=s.appendFile;s.appendFile=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return d.call(s,e,...t)});let f=s.appendFileSync;s.appendFileSync=(e,...t)=>(T(e),f.call(s,e,...t));let p=s.copyFile;s.copyFile=((e,t,...n)=>{try{T(e),T(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return p.call(s,e,t,...n)});let m=s.copyFileSync;s.copyFileSync=(e,t,...n)=>(T(e),T(t),m.call(s,e,t,...n));let h=s.rename;s.rename=((e,t,...n)=>{try{T(e),T(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return h.call(s,e,t,...n)});let g=s.renameSync;s.renameSync=(e,t,...n)=>(T(e),T(t),g.call(s,e,t,...n));let v=s.createWriteStream;s.createWriteStream=(e,...t)=>(T(e),v.call(s,e,...t));let y=s.open;s.open=((e,t,...n)=>{if(E(typeof t==`function`?void 0:t))try{T(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return y.call(s,e,t,...n)});let b=s.openSync;s.openSync=(e,t,...n)=>(E(t)&&T(e),b.call(s,e,t,...n));let x=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(T(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(T(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(T(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(T(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(T(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(T(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(T(t),T(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(T(t),T(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(E(n)&&T(t),l.call(e,t,n,...r)))};x(s.promises),x(_)}function O(e,t){let n=t?` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.cyan(t)}`:` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.gray(`use --host to expose`)}`;return`
7
+ import{S as e,b as t,n}from"../node-B9JSyEIU.mjs";import{i as r}from"../cache-SF59enb3.mjs";import{r as i}from"../config-D3_zDkHh.mjs";import{createRequire as a}from"node:module";import o from"node:path";import s from"node:fs";import{colors as c,configure as l,double as u,error as d,info as f,padCenter as p,success as m,table as h,warn as g}from"@bdocs/dui";import _ from"node:fs/promises";import{createServer as v}from"@bdocs/ssg/node";import y from"cac";import b from"node:os";import{fileURLToPath as x}from"node:url";import{preview as S}from"vite";function C(e){let t=e;for(;t&&t!==o.dirname(t);){if(s.existsSync(o.join(t,`.git`))||s.existsSync(o.join(t,`pnpm-workspace.yaml`)))return t;t=o.dirname(t)}t=e;let n=e;for(;t&&t!==o.dirname(t);)s.existsSync(o.join(t,`package.json`))&&(n=t),t=o.dirname(t);return n}let w=C(process.cwd());function T(e){if(!e)return;let t;if(typeof e==`string`)t=e;else if(e instanceof URL){if(e.protocol!==`file:`)return;t=e.pathname}else if(Buffer.isBuffer(e))t=e.toString();else return;let n=o.resolve(w,t),r=o.relative(w,n),i=r.startsWith(`..`)||o.isAbsolute(r),a=n.split(o.sep),s=a.some(e=>e.startsWith(`.env`)),c=a.some((e,t)=>{if(e===`node_modules`){let e=a[t+1];return!e||!e.startsWith(`.`)}return!1});if(i||s||c)throw Error(`[Boltdocs Security] Write/delete operation blocked on path: "${n}". Modifications are restricted to the project root, and cannot access .env or non-cache node_modules folders.`)}function E(e){return e==null?!1:typeof e==`number`?e!==0:typeof e==`string`?e.includes(`w`)||e.includes(`a`)||e.includes(`+`):!0}function D(){let e=s.writeFile;s.writeFile=((t,...n)=>{try{T(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return e.call(s,t,...n)});let t=s.writeFileSync;s.writeFileSync=(e,...n)=>(T(e),t.call(s,e,...n));let n=s.rm;s.rm=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return n.call(s,e,...t)});let r=s.rmSync;s.rmSync=(e,...t)=>(T(e),r.call(s,e,...t));let i=s.unlink;s.unlink=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return i.call(s,e,...t)});let a=s.unlinkSync;s.unlinkSync=(e,...t)=>(T(e),a.call(s,e,...t));let o=s.mkdir;s.mkdir=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return o.call(s,e,...t)});let c=s.mkdirSync;s.mkdirSync=(e,...t)=>(T(e),c.call(s,e,...t));let l=s.rmdir;s.rmdir=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return l.call(s,e,...t)});let u=s.rmdirSync;s.rmdirSync=(e,...t)=>(T(e),u.call(s,e,...t));let d=s.appendFile;s.appendFile=((e,...t)=>{try{T(e)}catch(e){let n=t[t.length-1];if(typeof n==`function`){process.nextTick(()=>n(e));return}throw e}return d.call(s,e,...t)});let f=s.appendFileSync;s.appendFileSync=(e,...t)=>(T(e),f.call(s,e,...t));let p=s.copyFile;s.copyFile=((e,t,...n)=>{try{T(e),T(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return p.call(s,e,t,...n)});let m=s.copyFileSync;s.copyFileSync=(e,t,...n)=>(T(e),T(t),m.call(s,e,t,...n));let h=s.rename;s.rename=((e,t,...n)=>{try{T(e),T(t)}catch(e){let t=n[n.length-1];if(typeof t==`function`){process.nextTick(()=>t(e));return}throw e}return h.call(s,e,t,...n)});let g=s.renameSync;s.renameSync=(e,t,...n)=>(T(e),T(t),g.call(s,e,t,...n));let v=s.createWriteStream;s.createWriteStream=(e,...t)=>(T(e),v.call(s,e,...t));let y=s.open;s.open=((e,t,...n)=>{if(E(typeof t==`function`?void 0:t))try{T(e)}catch(e){let r=n[n.length-1],i=typeof t==`function`?t:typeof r==`function`?r:void 0;if(i){process.nextTick(()=>i(e));return}throw e}return y.call(s,e,t,...n)});let b=s.openSync;s.openSync=(e,t,...n)=>(E(t)&&T(e),b.call(s,e,t,...n));let x=e=>{if(!e)return;let t=e.writeFile;t&&(e.writeFile=async(n,...r)=>(T(n),t.call(e,n,...r)));let n=e.rm;n&&(e.rm=async(t,...r)=>(T(t),n.call(e,t,...r)));let r=e.mkdir;r&&(e.mkdir=async(t,...n)=>(T(t),r.call(e,t,...n)));let i=e.rmdir;i&&(e.rmdir=async(t,...n)=>(T(t),i.call(e,t,...n)));let a=e.unlink;a&&(e.unlink=async(t,...n)=>(T(t),a.call(e,t,...n)));let o=e.appendFile;o&&(e.appendFile=async(t,...n)=>(T(t),o.call(e,t,...n)));let s=e.copyFile;s&&(e.copyFile=async(t,n,...r)=>(T(t),T(n),s.call(e,t,n,...r)));let c=e.rename;c&&(e.rename=async(t,n,...r)=>(T(t),T(n),c.call(e,t,n,...r)));let l=e.open;l&&(e.open=async(t,n,...r)=>(E(n)&&T(t),l.call(e,t,n,...r)))};x(s.promises),x(_)}function O(e,t){let n=t?` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.cyan(t)}`:` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.gray(`use --host to expose`)}`;return`
8
8
  `+u([` ${c.green(`➜`)} ${c.green(`Local:`)} ${c.cyan(e)}`,n,``,` ${c.dim(`press h + enter for help`)}`],{title:`boltdocs dev server`})+`
9
9
  `}function k(e,t){let n=t?` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.cyan(t)}`:` ${c.green(`➜`)} ${c.green(`Network:`)} ${c.gray(`use --host to expose`)}`;return`
10
10
  `+u([` ${c.green(`➜`)} ${c.green(`Local:`)} ${c.cyan(e)}`,n],{title:`boltdocs preview server`})+`
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../chunk-Ds5LZdWN.cjs`);const e=require(`../utils-Bz1tG9Dg.cjs`),t=require(`../node-joF9IMNr.cjs`),n=require(`../cache-DETwlACe.cjs`),r=require(`../routes-D6Tuu7Fs.cjs`),i=require(`../config-B5uVv5q4.cjs`),a=require(`../shiki-adapter-CGTmrR6S.cjs`),o=require(`../handler-Dzf4dSnV.cjs`),s=require(`../adapters-C5AWWGfb.cjs`);let c=require(`unist-util-visit`);exports.BoltdocsPluginStore=t.S,exports.EXIT=c.EXIT,exports.MDX_NODES=a.o,exports.PluginCompatibilityError=t.C,exports.PluginError=t.w,exports.PluginHookError=t.T,exports.PluginLifecycleManager=t._,exports.PluginValidationError=t.E,exports.SKIP=c.SKIP,exports.addNodeClass=t.i,exports.createMdxAttribute=t.a,exports.createMdxElement=t.o,exports.createPlugin=t.r,exports.createRehypeElement=t.s,exports.createViteConfig=t.n,exports.default=t.t,exports.defineConfig=i.a,exports.flushCache=n.i,exports.generateEntryCode=t.D,exports.generateRoutes=r.t,exports.getNodeProperty=t.c,exports.handleAwsFeedback=s.t,exports.handleFeedback=o.t,exports.handleNetlifyFeedback=s.r,exports.handleVercelFeedback=s.i,exports.handleWebFeedback=s.n,exports.hasNodeClass=t.l,exports.invalidateRouteCache=r.r,exports.normalizePath=e.u,exports.parseMetaString=a.r,exports.removeNodeClass=t.u,exports.resolveConfig=i.n,exports.sanitizeFilename=e.f,exports.setNodeProperty=t.d,exports.validatePlugins=t.x,exports.visitMdxElements=t.f,exports.visitNodes=t.p,exports.visitRehypeElements=t.m,exports.visitRemarkHeadings=t.h,exports.visitRemarkLinks=t.g;
6
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../chunk-Ds5LZdWN.cjs`);const e=require(`../utils-Bz1tG9Dg.cjs`),t=require(`../node-Cedquois.cjs`),n=require(`../cache-DETwlACe.cjs`),r=require(`../routes-D6Tuu7Fs.cjs`),i=require(`../config-B5uVv5q4.cjs`),a=require(`../shiki-adapter-CGTmrR6S.cjs`),o=require(`../handler-Dzf4dSnV.cjs`),s=require(`../adapters-C5AWWGfb.cjs`);let c=require(`unist-util-visit`);exports.BoltdocsPluginStore=t.S,exports.EXIT=c.EXIT,exports.MDX_NODES=a.o,exports.PluginCompatibilityError=t.C,exports.PluginError=t.w,exports.PluginHookError=t.T,exports.PluginLifecycleManager=t._,exports.PluginValidationError=t.E,exports.SKIP=c.SKIP,exports.addNodeClass=t.i,exports.createMdxAttribute=t.a,exports.createMdxElement=t.o,exports.createPlugin=t.r,exports.createRehypeElement=t.s,exports.createViteConfig=t.n,exports.default=t.t,exports.defineConfig=i.a,exports.flushCache=n.i,exports.generateEntryCode=t.D,exports.generateRoutes=r.t,exports.getNodeProperty=t.c,exports.handleAwsFeedback=s.t,exports.handleFeedback=o.t,exports.handleNetlifyFeedback=s.r,exports.handleVercelFeedback=s.i,exports.handleWebFeedback=s.n,exports.hasNodeClass=t.l,exports.invalidateRouteCache=r.r,exports.normalizePath=e.u,exports.parseMetaString=a.r,exports.removeNodeClass=t.u,exports.resolveConfig=i.n,exports.sanitizeFilename=e.f,exports.setNodeProperty=t.d,exports.validatePlugins=t.x,exports.visitMdxElements=t.f,exports.visitNodes=t.p,exports.visitRehypeElements=t.m,exports.visitRemarkHeadings=t.h,exports.visitRemarkLinks=t.g;
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- import{f as e,u as t}from"../utils-B3xYMrpK.mjs";import{C as n,D as r,E as i,O as a,T as o,_ as s,a as c,c as l,d as u,f as d,g as f,h as p,i as m,k as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C,u as w,v as T,w as E,y as D}from"../node-Ct4PB0S_.mjs";import{i as O}from"../cache-SF59enb3.mjs";import{r as k,t as A}from"../routes-CyrnmVuG.mjs";import{a as j,r as M}from"../config-D3_zDkHh.mjs";import{n as N,o as P}from"../shiki-adapter-CXEGRnjr.mjs";import{t as F}from"../handler-Btd4t_67.mjs";import{i as I,n as L,r as R,t as z}from"../adapters-DEXNIv3x.mjs";export{E as BoltdocsPluginStore,m as EXIT,P as MDX_NODES,o as PluginCompatibilityError,i as PluginError,r as PluginHookError,D as PluginLifecycleManager,a as PluginValidationError,c as SKIP,y as addNodeClass,S as createMdxAttribute,l as createMdxElement,x as createPlugin,g as createRehypeElement,v as createViteConfig,C as default,j as defineConfig,O as flushCache,h as generateEntryCode,A as generateRoutes,w as getNodeProperty,z as handleAwsFeedback,F as handleFeedback,R as handleNetlifyFeedback,I as handleVercelFeedback,L as handleWebFeedback,u as hasNodeClass,k as invalidateRouteCache,t as normalizePath,N as parseMetaString,d as removeNodeClass,M as resolveConfig,e as sanitizeFilename,b as setNodeProperty,n as validatePlugins,_ as visitMdxElements,p as visitNodes,f as visitRehypeElements,s as visitRemarkHeadings,T as visitRemarkLinks};
6
+ import{f as e,u as t}from"../utils-B3xYMrpK.mjs";import{C as n,D as r,E as i,O as a,T as o,_ as s,a as c,c as l,d as u,f as d,g as f,h as p,i as m,k as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,t as C,u as w,v as T,w as E,y as D}from"../node-B9JSyEIU.mjs";import{i as O}from"../cache-SF59enb3.mjs";import{r as k,t as A}from"../routes-CyrnmVuG.mjs";import{a as j,r as M}from"../config-D3_zDkHh.mjs";import{n as N,o as P}from"../shiki-adapter-CXEGRnjr.mjs";import{t as F}from"../handler-Btd4t_67.mjs";import{i as I,n as L,r as R,t as z}from"../adapters-DEXNIv3x.mjs";export{E as BoltdocsPluginStore,m as EXIT,P as MDX_NODES,o as PluginCompatibilityError,i as PluginError,r as PluginHookError,D as PluginLifecycleManager,a as PluginValidationError,c as SKIP,y as addNodeClass,S as createMdxAttribute,l as createMdxElement,x as createPlugin,g as createRehypeElement,v as createViteConfig,C as default,j as defineConfig,O as flushCache,h as generateEntryCode,A as generateRoutes,w as getNodeProperty,z as handleAwsFeedback,F as handleFeedback,R as handleNetlifyFeedback,I as handleVercelFeedback,L as handleWebFeedback,u as hasNodeClass,k as invalidateRouteCache,t as normalizePath,N as parseMetaString,d as removeNodeClass,M as resolveConfig,e as sanitizeFilename,b as setNodeProperty,n as validatePlugins,_ as visitMdxElements,p as visitNodes,f as visitRehypeElements,s as visitRemarkHeadings,T as visitRemarkLinks};
@@ -102,4 +102,4 @@ ${t.filter(e=>e.seo?.noindex||typeof e.seo?.robots==`string`&&e.seo.robots.inclu
102
102
 
103
103
  `),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
104
104
  `);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
105
- `)}var R=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=I(e.ssgRoutes,e.config),n=u.resolve(e.root,e.outDir);t&&d.writeFileSync(u.join(n,`sitemap.xml`),t,`utf-8`);let r=L(e.config);d.writeFileSync(u.join(n,`robots.txt`),r,`utf-8`)}};function z(){return new B().addStep(new A).addStep(new M).addStep(new N).addStep(new P).addStep(new F).addStep(new R)}var B=class{steps=[];addStep(e){return this.steps.push(e),this}async run(e){let t=[],n=performance.now(),r={...e,timing:{}};for(let e of this.steps){let i=performance.now();try{await e.execute(r);let n=performance.now()-i;t.push({name:e.name,duration:n,success:!0}),r.timing[e.name]=n}catch(a){let o=performance.now()-i;t.push({name:e.name,duration:o,success:!1,error:a instanceof Error?a:Error(String(a))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.find(t=>t.name===e.name);if(t?.rollback)try{await t.rollback(r)}catch(t){console.error(`[pipeline] rollback failed for step "${e.name}":`,t)}}let s=performance.now()-n;return{success:!1,failedStep:e.name,error:a instanceof Error?a:Error(String(a)),timing:{total:s,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}},V=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new E,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new B;for(let i of n)i.hooks?.[e]&&r.addStep(this.createStep(i,e,t));await r.run({})}async runChain(e,t){let n=this.getSortedPlugins(),r=t;for(let t of n){if(!t.hooks?.[e])continue;let n=this.createContext(t);try{let i=t.hooks[e],a=await i(n,r);a!==void 0&&(r=a)}catch(r){let i=new T(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i)}}return r}getSortedPlugins(){let e=this.plugins.filter(e=>e.enforce===`pre`),t=this.plugins.filter(e=>!e.enforce),n=this.plugins.filter(e=>e.enforce===`post`);return[...e,...t,...n]}createStep(e,t,n){return{name:`${e.name}:${String(t)}`,execute:async()=>{let r=this.createContext(e);try{let i=e.hooks[t];await i(r,...n)}catch(n){let i=new T(e.name,t,n instanceof Error?n:Error(String(n)));r.logger.error(i)}},rollback:async()=>{let t=e.hooks?.buildEnd;if(t){let n=this.createContext(e);try{await t(n)}catch{}}}}}createContext(e){return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(e,t)=>this.store.get(e,t),set:(e,t,n)=>this.store.set(e,t,n),has:(e,t)=>this.store.has(e,t)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>p.info(`${t} ${e}`),warn:e=>p.warn(`${t} ${e}`),error:e=>{p.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>p.debug(`${t} ${e}`)}}};function H(e,t,n){e&&b(e,typeof t==`function`?t:e=>Array.isArray(t)?t.includes(e.type):e.type===t,(e,t,r)=>{if(t!==void 0&&r!==void 0)return n(e,t,r)})}function U(e,t,n){H(e,c.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function W(e,t,n){let r=Array.isArray(t)?t:[t],i=[c.JSX_FLOW_ELEMENT,c.JSX_TEXT_ELEMENT];H(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function G(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function K(e,t){return e?.data?.hProperties?.[t]}function q(e,t){return typeof t==`object`&&t?{type:c.JSX_ATTRIBUTE,name:e,value:t}:{type:c.JSX_ATTRIBUTE,name:e,value:String(t)}}function J(e,t={},n=[]){return{type:c.ELEMENT,tagName:e,properties:t,children:n}}function Y(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>q(e,t));return{type:r?c.JSX_FLOW_ELEMENT:c.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function X(e,t){e&&b(e,c.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Z(e,t){e&&b(e,c.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Q(e,t){if(!e)return;e.properties=e.properties||{};let n=e.properties.className;Array.isArray(n)?n.includes(t)||n.push(t):typeof n==`string`?n!==t&&(e.properties.className=[n,t]):e.properties.className=[t]}function te(e,t){if(!e||!e.properties||!e.properties.className)return;let n=e.properties.className;Array.isArray(n)?e.properties.className=n.filter(e=>e!==t):typeof n==`string`&&n===t&&delete e.properties.className}function ne(e,t){if(!e||!e.properties||!e.properties.className)return!1;let n=e.properties.className;return Array.isArray(n)?n.includes(t):typeof n==`string`?n===t:!1}function re(e){return e}async function ie(e){let{resolveConfig:t}=await import(`./config-D3_zDkHh.mjs`).then(e=>e.n),{generateRoutes:n,getExternalRoutePaths:r}=await import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),{generateProjectTypes:i,writeLinkTree:a}=await import(`./types-generator-DVOnRVKU.mjs`).then(e=>e.n),{boltdocsPlugin:o}=await import(`./plugin-IBKz7CRF.mjs`),s=e?.docsDir||`docs`,c=await t(s),l=(await n(s,c)).map(e=>e.path),u=(c.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u);let d=r(s,c);for(let e of d)l.includes(e)||l.push(e);return i(c,s,void 0,l),a(l),o({...e},c)}async function $(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:s},{getCSPHeader:c},{resolveConfig:l},{generateRoutes:d,getExternalRoutePaths:f},{generateProjectTypes:p,writeLinkTree:m},{normalizePath:h}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),import(`./plugin-IBKz7CRF.mjs`),import(`./headers-CXyf0auY.mjs`).then(e=>e.n),import(`./csp-gaZ51xzq.mjs`).then(e=>e.t),import(`./config-D3_zDkHh.mjs`).then(e=>e.n),import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),import(`./types-generator-DVOnRVKU.mjs`).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),g=r.default,_=i.default,v=n||await l(`docs`,e),y=(await d(`docs`,v)).map(e=>e.path),b=(v.base||`/docs`).replace(/\/$/,``);y.includes(b)||y.push(b);let x=f(`docs`,v);for(let e of x)y.includes(e)||y.push(e);p(v,`docs`,e,y),m(y);let S=t===`production`,C=S?{...s}:{};return v.security?.enableCSP&&(C[`Content-Security-Policy`]=c(v)),{root:e,mode:t,oxc:{jsx:{development:!S,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[g(),_(),...a({docsDir:`docs`,root:e},v)],resolve:{alias:[{find:`boltdocs/entry`,replacement:h(u.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:h(u.resolve(e,`boltdocs-client.mjs`))},{find:`use-sync-external-store/shim/index.js`,replacement:`react`},{find:`use-sync-external-store/shim`,replacement:`react`},{find:`use-sync-external-store`,replacement:`react`},{find:`@`,replacement:h(u.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...o()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,...v.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{watch:{ignored:[`**/.boltdocs/**`,...Array.isArray(v.vite?.server?.watch?.ignored)?v.vite.server.watch.ignored:v.vite?.server?.watch?.ignored?[v.vite.server.watch.ignored]:[]]},headers:{...C,...v.vite?.server?.headers},...v.vite?.server},preview:{headers:{...C,...v.vite?.preview?.headers},...v.vite?.preview},...v.vite}}export{O as C,T as D,S as E,C as O,k as S,w as T,X as _,y as a,z as b,Y as c,ne as d,te as f,U as g,H as h,v as i,x as k,J as l,W as m,$ as n,Q as o,G as p,re as r,q as s,ie as t,K as u,Z as v,E as w,j as x,V as y};
105
+ `)}var R=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=I(e.ssgRoutes,e.config),n=u.resolve(e.root,e.outDir);t&&d.writeFileSync(u.join(n,`sitemap.xml`),t,`utf-8`);let r=L(e.config);d.writeFileSync(u.join(n,`robots.txt`),r,`utf-8`)}};function z(){return new B().addStep(new A).addStep(new M).addStep(new N).addStep(new P).addStep(new F).addStep(new R)}var B=class{steps=[];addStep(e){return this.steps.push(e),this}async run(e){let t=[],n=performance.now(),r={...e,timing:{}};for(let e of this.steps){let i=performance.now();try{await e.execute(r);let n=performance.now()-i;t.push({name:e.name,duration:n,success:!0}),r.timing[e.name]=n}catch(a){let o=performance.now()-i;t.push({name:e.name,duration:o,success:!1,error:a instanceof Error?a:Error(String(a))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.find(t=>t.name===e.name);if(t?.rollback)try{await t.rollback(r)}catch(t){console.error(`[pipeline] rollback failed for step "${e.name}":`,t)}}let s=performance.now()-n;return{success:!1,failedStep:e.name,error:a instanceof Error?a:Error(String(a)),timing:{total:s,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}},V=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new E,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new B;for(let i of n)i.hooks?.[e]&&r.addStep(this.createStep(i,e,t));await r.run({})}async runChain(e,t){let n=this.getSortedPlugins(),r=t;for(let t of n){if(!t.hooks?.[e])continue;let n=this.createContext(t);try{let i=t.hooks[e],a=await i(n,r);a!==void 0&&(r=a)}catch(r){let i=new T(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i)}}return r}getSortedPlugins(){let e=this.plugins.filter(e=>e.enforce===`pre`),t=this.plugins.filter(e=>!e.enforce),n=this.plugins.filter(e=>e.enforce===`post`);return[...e,...t,...n]}createStep(e,t,n){return{name:`${e.name}:${String(t)}`,execute:async()=>{let r=this.createContext(e);try{let i=e.hooks[t];await i(r,...n)}catch(n){let i=new T(e.name,t,n instanceof Error?n:Error(String(n)));r.logger.error(i)}},rollback:async()=>{let t=e.hooks?.buildEnd;if(t){let n=this.createContext(e);try{await t(n)}catch{}}}}}createContext(e){return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(e,t)=>this.store.get(e,t),set:(e,t,n)=>this.store.set(e,t,n),has:(e,t)=>this.store.has(e,t)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>p.info(`${t} ${e}`),warn:e=>p.warn(`${t} ${e}`),error:e=>{p.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>p.debug(`${t} ${e}`)}}};function H(e,t,n){e&&b(e,typeof t==`function`?t:e=>Array.isArray(t)?t.includes(e.type):e.type===t,(e,t,r)=>{if(t!==void 0&&r!==void 0)return n(e,t,r)})}function U(e,t,n){H(e,c.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function W(e,t,n){let r=Array.isArray(t)?t:[t],i=[c.JSX_FLOW_ELEMENT,c.JSX_TEXT_ELEMENT];H(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function G(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function K(e,t){return e?.data?.hProperties?.[t]}function q(e,t){return typeof t==`object`&&t?{type:c.JSX_ATTRIBUTE,name:e,value:t}:{type:c.JSX_ATTRIBUTE,name:e,value:String(t)}}function J(e,t={},n=[]){return{type:c.ELEMENT,tagName:e,properties:t,children:n}}function Y(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>q(e,t));return{type:r?c.JSX_FLOW_ELEMENT:c.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function X(e,t){e&&b(e,c.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Z(e,t){e&&b(e,c.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function Q(e,t){if(!e)return;e.properties=e.properties||{};let n=e.properties.className;Array.isArray(n)?n.includes(t)||n.push(t):typeof n==`string`?n!==t&&(e.properties.className=[n,t]):e.properties.className=[t]}function te(e,t){if(!e||!e.properties||!e.properties.className)return;let n=e.properties.className;Array.isArray(n)?e.properties.className=n.filter(e=>e!==t):typeof n==`string`&&n===t&&delete e.properties.className}function ne(e,t){if(!e||!e.properties||!e.properties.className)return!1;let n=e.properties.className;return Array.isArray(n)?n.includes(t):typeof n==`string`?n===t:!1}function re(e){return e}async function ie(e){let{resolveConfig:t}=await import(`./config-D3_zDkHh.mjs`).then(e=>e.n),{generateRoutes:n,getExternalRoutePaths:r}=await import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),{generateProjectTypes:i,writeLinkTree:a}=await import(`./types-generator-DVOnRVKU.mjs`).then(e=>e.n),{boltdocsPlugin:o}=await import(`./plugin-YWNVRpws.mjs`),s=e?.docsDir||`docs`,c=await t(s),l=(await n(s,c)).map(e=>e.path),u=(c.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u);let d=r(s,c);for(let e of d)l.includes(e)||l.push(e);return i(c,s,void 0,l),a(l),o({...e},c)}async function $(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:s},{getCSPHeader:c},{resolveConfig:l},{generateRoutes:d,getExternalRoutePaths:f},{generateProjectTypes:p,writeLinkTree:m},{normalizePath:h}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),import(`./plugin-YWNVRpws.mjs`),import(`./headers-CXyf0auY.mjs`).then(e=>e.n),import(`./csp-gaZ51xzq.mjs`).then(e=>e.t),import(`./config-D3_zDkHh.mjs`).then(e=>e.n),import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),import(`./types-generator-DVOnRVKU.mjs`).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),g=r.default,_=i.default,v=n||await l(`docs`,e),y=(await d(`docs`,v)).map(e=>e.path),b=(v.base||`/docs`).replace(/\/$/,``);y.includes(b)||y.push(b);let x=f(`docs`,v);for(let e of x)y.includes(e)||y.push(e);p(v,`docs`,e,y),m(y);let S=t===`production`,C=S?{...s}:{};return v.security?.enableCSP&&(C[`Content-Security-Policy`]=c(v)),{root:e,mode:t,oxc:{jsx:{development:!S,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[g(),_(),...a({docsDir:`docs`,root:e},v)],resolve:{alias:[{find:`boltdocs/entry`,replacement:h(u.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:h(u.resolve(e,`boltdocs-client.mjs`))},{find:`use-sync-external-store/shim/index.js`,replacement:`react`},{find:`use-sync-external-store/shim`,replacement:`react`},{find:`use-sync-external-store`,replacement:`react`},{find:`@`,replacement:h(u.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`invariant`,...o()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,...v.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{watch:{ignored:[`**/.boltdocs/**`,...Array.isArray(v.vite?.server?.watch?.ignored)?v.vite.server.watch.ignored:v.vite?.server?.watch?.ignored?[v.vite.server.watch.ignored]:[]]},headers:{...C,...v.vite?.server?.headers},...v.vite?.server},preview:{headers:{...C,...v.vite?.preview?.headers},...v.vite?.preview},...v.vite}}export{O as C,T as D,S as E,C as O,k as S,w as T,X as _,y as a,z as b,Y as c,ne as d,te as f,U as g,H as h,v as i,x as k,J as l,W as m,$ as n,Q as o,G as p,re as r,q as s,ie as t,K as u,Z as v,E as w,j as x,V as y};
@@ -102,4 +102,4 @@ ${e.filter(e=>e.seo?.noindex||typeof e.seo?.robots==`string`&&e.seo.robots.inclu
102
102
 
103
103
  `),a=[...n?[n]:[],...r].map(e=>`Sitemap: ${e}`).join(`
104
104
  `);return`${i}${a?`\n\n${a}`:``}`}return[`User-agent: *`,`Allow: /`,``,n?`Sitemap: ${n}`:``].filter(Boolean).join(`
105
- `)}var N=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=j(e.ssgRoutes,e.config),n=s.default.resolve(e.root,e.outDir);t&&c.default.writeFileSync(s.default.join(n,`sitemap.xml`),t,`utf-8`);let r=M(e.config);c.default.writeFileSync(s.default.join(n,`robots.txt`),r,`utf-8`)}};function P(){return new F().addStep(new w).addStep(new E).addStep(new O).addStep(new k).addStep(new A).addStep(new N)}var F=class{steps=[];addStep(e){return this.steps.push(e),this}async run(e){let t=[],n=performance.now(),r={...e,timing:{}};for(let e of this.steps){let i=performance.now();try{await e.execute(r);let n=performance.now()-i;t.push({name:e.name,duration:n,success:!0}),r.timing[e.name]=n}catch(a){let o=performance.now()-i;t.push({name:e.name,duration:o,success:!1,error:a instanceof Error?a:Error(String(a))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.find(t=>t.name===e.name);if(t?.rollback)try{await t.rollback(r)}catch(t){console.error(`[pipeline] rollback failed for step "${e.name}":`,t)}}let s=performance.now()-n;return{success:!1,failedStep:e.name,error:a instanceof Error?a:Error(String(a)),timing:{total:s,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}},I=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new b,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new F;for(let i of n)i.hooks?.[e]&&r.addStep(this.createStep(i,e,t));await r.run({})}async runChain(e,t){let n=this.getSortedPlugins(),r=t;for(let t of n){if(!t.hooks?.[e])continue;let n=this.createContext(t);try{let i=t.hooks[e],a=await i(n,r);a!==void 0&&(r=a)}catch(r){let i=new y(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i)}}return r}getSortedPlugins(){let e=this.plugins.filter(e=>e.enforce===`pre`),t=this.plugins.filter(e=>!e.enforce),n=this.plugins.filter(e=>e.enforce===`post`);return[...e,...t,...n]}createStep(e,t,n){return{name:`${e.name}:${String(t)}`,execute:async()=>{let r=this.createContext(e);try{let i=e.hooks[t];await i(r,...n)}catch(n){let i=new y(e.name,t,n instanceof Error?n:Error(String(n)));r.logger.error(i)}},rollback:async()=>{let t=e.hooks?.buildEnd;if(t){let n=this.createContext(e);try{await t(n)}catch{}}}}}createContext(e){return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(e,t)=>this.store.get(e,t),set:(e,t,n)=>this.store.set(e,t,n),has:(e,t)=>this.store.has(e,t)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>u.info(`${t} ${e}`),warn:e=>u.warn(`${t} ${e}`),error:e=>{u.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>u.debug(`${t} ${e}`)}}};function L(e,t,n){e&&(0,m.visit)(e,typeof t==`function`?t:e=>Array.isArray(t)?t.includes(e.type):e.type===t,(e,t,r)=>{if(t!==void 0&&r!==void 0)return n(e,t,r)})}function R(e,t,n){L(e,o.o.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function z(e,t,n){let r=Array.isArray(t)?t:[t],i=[o.o.JSX_FLOW_ELEMENT,o.o.JSX_TEXT_ELEMENT];L(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function B(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function V(e,t){return e?.data?.hProperties?.[t]}function H(e,t){return typeof t==`object`&&t?{type:o.o.JSX_ATTRIBUTE,name:e,value:t}:{type:o.o.JSX_ATTRIBUTE,name:e,value:String(t)}}function U(e,t={},n=[]){return{type:o.o.ELEMENT,tagName:e,properties:t,children:n}}function W(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>H(e,t));return{type:r?o.o.JSX_FLOW_ELEMENT:o.o.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function G(e,t){e&&(0,m.visit)(e,o.o.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function K(e,t){e&&(0,m.visit)(e,o.o.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function q(e,t){if(!e)return;e.properties=e.properties||{};let n=e.properties.className;Array.isArray(n)?n.includes(t)||n.push(t):typeof n==`string`?n!==t&&(e.properties.className=[n,t]):e.properties.className=[t]}function J(e,t){if(!e||!e.properties||!e.properties.className)return;let n=e.properties.className;Array.isArray(n)?e.properties.className=n.filter(e=>e!==t):typeof n==`string`&&n===t&&delete e.properties.className}function Y(e,t){if(!e||!e.properties||!e.properties.className)return!1;let n=e.properties.className;return Array.isArray(n)?n.includes(t):typeof n==`string`?n===t:!1}function X(e){return e}async function Z(e){let{resolveConfig:t}=await Promise.resolve().then(()=>require(`./config-JGkMJoJQ.cjs`)),{generateRoutes:n,getExternalRoutePaths:r}=await Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),{generateProjectTypes:i,writeLinkTree:a}=await Promise.resolve().then(()=>require(`./types-generator-CYcHkDzZ.cjs`)).then(e=>e.n),{boltdocsPlugin:o}=await Promise.resolve().then(()=>require(`./plugin-DeOYQvry.cjs`)),s=e?.docsDir||`docs`,c=await t(s),l=(await n(s,c)).map(e=>e.path),u=(c.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u);let d=r(s,c);for(let e of d)l.includes(e)||l.push(e);return i(c,s,void 0,l),a(l),o({...e},c)}async function Q(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:c},{getCSPHeader:l},{resolveConfig:u},{generateRoutes:d,getExternalRoutePaths:f},{generateProjectTypes:p,writeLinkTree:m},{normalizePath:h}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),Promise.resolve().then(()=>require(`./plugin-DeOYQvry.cjs`)),Promise.resolve().then(()=>require(`./headers-BXKxiPUv.cjs`)).then(e=>e.n),Promise.resolve().then(()=>require(`./csp-CBysWlAf.cjs`)).then(e=>e.t),Promise.resolve().then(()=>require(`./config-JGkMJoJQ.cjs`)),Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),Promise.resolve().then(()=>require(`./types-generator-CYcHkDzZ.cjs`)).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),g=r.default,_=i.default,v=n||await u(`docs`,e),y=(await d(`docs`,v)).map(e=>e.path),b=(v.base||`/docs`).replace(/\/$/,``);y.includes(b)||y.push(b);let x=f(`docs`,v);for(let e of x)y.includes(e)||y.push(e);p(v,`docs`,e,y),m(y);let S=t===`production`,C=S?{...c}:{};return v.security?.enableCSP&&(C[`Content-Security-Policy`]=l(v)),{root:e,mode:t,oxc:{jsx:{development:!S,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[g(),_(),...a({docsDir:`docs`,root:e},v)],resolve:{alias:[{find:`boltdocs/entry`,replacement:h(s.default.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:h(s.default.resolve(e,`boltdocs-client.mjs`))},{find:`use-sync-external-store/shim/index.js`,replacement:`react`},{find:`use-sync-external-store/shim`,replacement:`react`},{find:`use-sync-external-store`,replacement:`react`},{find:`@`,replacement:h(s.default.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...o()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,...v.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{watch:{ignored:[`**/.boltdocs/**`,...Array.isArray(v.vite?.server?.watch?.ignored)?v.vite.server.watch.ignored:v.vite?.server?.watch?.ignored?[v.vite.server.watch.ignored]:[]]},headers:{...C,...v.vite?.server?.headers},...v.vite?.server},preview:{headers:{...C,...v.vite?.preview?.headers},...v.vite?.preview},...v.vite}}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return T}});
105
+ `)}var N=class{name=`SEOWrite`;async execute(e){if(!e.ssgRoutes||!e.config||!e.outDir)throw Error(`SSG Routes, Config, or OutDir not initialized.`);let t=j(e.ssgRoutes,e.config),n=s.default.resolve(e.root,e.outDir);t&&c.default.writeFileSync(s.default.join(n,`sitemap.xml`),t,`utf-8`);let r=M(e.config);c.default.writeFileSync(s.default.join(n,`robots.txt`),r,`utf-8`)}};function P(){return new F().addStep(new w).addStep(new E).addStep(new O).addStep(new k).addStep(new A).addStep(new N)}var F=class{steps=[];addStep(e){return this.steps.push(e),this}async run(e){let t=[],n=performance.now(),r={...e,timing:{}};for(let e of this.steps){let i=performance.now();try{await e.execute(r);let n=performance.now()-i;t.push({name:e.name,duration:n,success:!0}),r.timing[e.name]=n}catch(a){let o=performance.now()-i;t.push({name:e.name,duration:o,success:!1,error:a instanceof Error?a:Error(String(a))});for(let e of t.filter(e=>e.success).reverse()){let t=this.steps.find(t=>t.name===e.name);if(t?.rollback)try{await t.rollback(r)}catch(t){console.error(`[pipeline] rollback failed for step "${e.name}":`,t)}}let s=performance.now()-n;return{success:!1,failedStep:e.name,error:a instanceof Error?a:Error(String(a)),timing:{total:s,steps:r.timing},stepResults:t}}}return{success:!0,timing:{total:performance.now()-n,steps:r.timing},stepResults:t}}},I=class{plugins;config;store;docsDir;rootDir;constructor(e,t,n,r){this.plugins=e,this.config=t,this.store=new b,this.docsDir=n||process.cwd(),this.rootDir=r||process.cwd()}async runHook(e,...t){let n=this.getSortedPlugins(),r=new F;for(let i of n)i.hooks?.[e]&&r.addStep(this.createStep(i,e,t));await r.run({})}async runChain(e,t){let n=this.getSortedPlugins(),r=t;for(let t of n){if(!t.hooks?.[e])continue;let n=this.createContext(t);try{let i=t.hooks[e],a=await i(n,r);a!==void 0&&(r=a)}catch(r){let i=new y(t.name,e,r instanceof Error?r:Error(String(r)));n.logger.error(i)}}return r}getSortedPlugins(){let e=this.plugins.filter(e=>e.enforce===`pre`),t=this.plugins.filter(e=>!e.enforce),n=this.plugins.filter(e=>e.enforce===`post`);return[...e,...t,...n]}createStep(e,t,n){return{name:`${e.name}:${String(t)}`,execute:async()=>{let r=this.createContext(e);try{let i=e.hooks[t];await i(r,...n)}catch(n){let i=new y(e.name,t,n instanceof Error?n:Error(String(n)));r.logger.error(i)}},rollback:async()=>{let t=e.hooks?.buildEnd;if(t){let n=this.createContext(e);try{await t(n)}catch{}}}}}createContext(e){return{config:Object.freeze({...this.config}),docsDir:this.docsDir,rootDir:this.rootDir,meta:{name:e.name,version:e.version,boltdocsVersion:e.boltdocsVersion},store:{get:(e,t)=>this.store.get(e,t),set:(e,t,n)=>this.store.set(e,t,n),has:(e,t)=>this.store.has(e,t)},logger:this.createLogger(e.name)}}createLogger(e){let t=`[plugin:${e}]`;return{info:e=>u.info(`${t} ${e}`),warn:e=>u.warn(`${t} ${e}`),error:e=>{u.error(`${t} ${e instanceof Error?e.message:e}`)},debug:e=>u.debug(`${t} ${e}`)}}};function L(e,t,n){e&&(0,m.visit)(e,typeof t==`function`?t:e=>Array.isArray(t)?t.includes(e.type):e.type===t,(e,t,r)=>{if(t!==void 0&&r!==void 0)return n(e,t,r)})}function R(e,t,n){L(e,o.o.ELEMENT,(e,r,i)=>{if(e.tagName===t)return n(e,r,i)})}function z(e,t,n){let r=Array.isArray(t)?t:[t],i=[o.o.JSX_FLOW_ELEMENT,o.o.JSX_TEXT_ELEMENT];L(e,e=>i.includes(e.type),(e,t,i)=>{if(e.name&&r.includes(e.name))return n(e,t,i)})}function B(e,t,n){e&&(e.data=e.data||{},e.data.hProperties=e.data.hProperties||{},e.data.hProperties[t]=n)}function V(e,t){return e?.data?.hProperties?.[t]}function H(e,t){return typeof t==`object`&&t?{type:o.o.JSX_ATTRIBUTE,name:e,value:t}:{type:o.o.JSX_ATTRIBUTE,name:e,value:String(t)}}function U(e,t={},n=[]){return{type:o.o.ELEMENT,tagName:e,properties:t,children:n}}function W(e,t={},n=[],r=!0){let i=Object.entries(t).map(([e,t])=>H(e,t));return{type:r?o.o.JSX_FLOW_ELEMENT:o.o.JSX_TEXT_ELEMENT,name:e,attributes:i,children:n}}function G(e,t){e&&(0,m.visit)(e,o.o.HEADING,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function K(e,t){e&&(0,m.visit)(e,o.o.LINK,(e,n,r)=>{if(n!==void 0&&r!==void 0)return t(e,n,r)})}function q(e,t){if(!e)return;e.properties=e.properties||{};let n=e.properties.className;Array.isArray(n)?n.includes(t)||n.push(t):typeof n==`string`?n!==t&&(e.properties.className=[n,t]):e.properties.className=[t]}function J(e,t){if(!e||!e.properties||!e.properties.className)return;let n=e.properties.className;Array.isArray(n)?e.properties.className=n.filter(e=>e!==t):typeof n==`string`&&n===t&&delete e.properties.className}function Y(e,t){if(!e||!e.properties||!e.properties.className)return!1;let n=e.properties.className;return Array.isArray(n)?n.includes(t):typeof n==`string`?n===t:!1}function X(e){return e}async function Z(e){let{resolveConfig:t}=await Promise.resolve().then(()=>require(`./config-JGkMJoJQ.cjs`)),{generateRoutes:n,getExternalRoutePaths:r}=await Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),{generateProjectTypes:i,writeLinkTree:a}=await Promise.resolve().then(()=>require(`./types-generator-CYcHkDzZ.cjs`)).then(e=>e.n),{boltdocsPlugin:o}=await Promise.resolve().then(()=>require(`./plugin-WYNORxp1.cjs`)),s=e?.docsDir||`docs`,c=await t(s),l=(await n(s,c)).map(e=>e.path),u=(c.base||`/docs`).replace(/\/$/,``);l.includes(u)||l.push(u);let d=r(s,c);for(let e of d)l.includes(e)||l.push(e);return i(c,s,void 0,l),a(l),o({...e},c)}async function Q(e,t=`development`,n){let[r,i,{boltdocsPlugin:a,getExternalAbsolutePaths:o},{SECURITY_HEADERS:c},{getCSPHeader:l},{resolveConfig:u},{generateRoutes:d,getExternalRoutePaths:f},{generateProjectTypes:p,writeLinkTree:m},{normalizePath:h}]=await Promise.all([import(`@vitejs/plugin-react`),import(`@tailwindcss/vite`),Promise.resolve().then(()=>require(`./plugin-WYNORxp1.cjs`)),Promise.resolve().then(()=>require(`./headers-BXKxiPUv.cjs`)).then(e=>e.n),Promise.resolve().then(()=>require(`./csp-CBysWlAf.cjs`)).then(e=>e.t),Promise.resolve().then(()=>require(`./config-JGkMJoJQ.cjs`)),Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),Promise.resolve().then(()=>require(`./types-generator-CYcHkDzZ.cjs`)).then(e=>e.n),import(`vite`).then(e=>({normalizePath:e.normalizePath}))]),g=r.default,_=i.default,v=n||await u(`docs`,e),y=(await d(`docs`,v)).map(e=>e.path),b=(v.base||`/docs`).replace(/\/$/,``);y.includes(b)||y.push(b);let x=f(`docs`,v);for(let e of x)y.includes(e)||y.push(e);p(v,`docs`,e,y),m(y);let S=t===`production`,C=S?{...c}:{};return v.security?.enableCSP&&(C[`Content-Security-Policy`]=l(v)),{root:e,mode:t,oxc:{jsx:{development:!S,runtime:`automatic`,importSource:`react`}},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-helmet-async`,`react-router-dom`,`react-fast-compare`,`invariant`,`use-sync-external-store/shim`]},build:{},plugins:[g(),_(),...a({docsDir:`docs`,root:e},v)],resolve:{alias:[{find:`boltdocs/entry`,replacement:h(s.default.resolve(e,`boltdocs-entry.tsx`))},{find:`boltdocs/client`,replacement:h(s.default.resolve(e,`boltdocs-client.mjs`))},{find:`use-sync-external-store/shim/index.js`,replacement:`react`},{find:`use-sync-external-store/shim`,replacement:`react`},{find:`use-sync-external-store`,replacement:`react`},{find:`@`,replacement:h(s.default.resolve(e,`../packages/core/src`))}],dedupe:[`react`,`react-dom`]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`invariant`,...o()],optimizeDeps:{include:[`react`,`react-dom`,`react-fast-compare`,`invariant`,...v.vite?.ssr?.optimizeDeps?.include||[]]},noExternal:[`boltdocs`,/@bdocs\/(?!ssg).*/,`react-aria-components`,`@react-aria/collections`,`@react-aria/utils`,`react-router-dom`]},server:{watch:{ignored:[`**/.boltdocs/**`,...Array.isArray(v.vite?.server?.watch?.ignored)?v.vite.server.watch.ignored:v.vite?.server?.watch?.ignored?[v.vite.server.watch.ignored]:[]]},headers:{...C,...v.vite?.server?.headers},...v.vite?.server},preview:{headers:{...C,...v.vite?.preview?.headers},...v.vite?.preview},...v.vite}}Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return T}});
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- var e=`3.0.1`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
6
+ var e=`3.0.2`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
@@ -3,4 +3,4 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- var e=`3.0.1`;export{e as version};
6
+ var e=`3.0.2`;export{e as version};
@@ -3,7 +3,7 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- const e=require(`./chunk-Ds5LZdWN.cjs`),t=require(`./utils-Bz1tG9Dg.cjs`),n=require(`./node-joF9IMNr.cjs`),r=require(`./cache-DETwlACe.cjs`),i=require(`./routes-D6Tuu7Fs.cjs`),a=require(`./pages-external-CX2uyW95.cjs`),o=require(`./config-B5uVv5q4.cjs`),s=require(`./types-generator-CYcHkDzZ.cjs`),c=require(`./shiki-adapter-CGTmrR6S.cjs`),l=require(`./doctor-DQxLM202.cjs`),u=require(`./headers-BXKxiPUv.cjs`),d=require(`./csp-CBysWlAf.cjs`);let f=require(`node:path`);f=e.n(f);let p=require(`node:fs`);p=e.n(p);let m=require(`@bdocs/dui`),h=require(`node:crypto`);h=e.n(h);let g=require(`node:module`);g=e.n(g);let _=require(`vite`),ee=require(`@bdocs/plugin-image-optimizer`),v=require(`@mdx-js/rollup`);v=e.n(v);let y=require(`remark-gfm`);y=e.n(y);let b=require(`remark-frontmatter`);b=e.n(b);let x=require(`rehype-slug`);x=e.n(x);let S=require(`unist-util-visit`);function C(e){let n=e.theme?.title;return`<!doctype html>
6
+ const e=require(`./chunk-Ds5LZdWN.cjs`),t=require(`./utils-Bz1tG9Dg.cjs`),n=require(`./node-Cedquois.cjs`),r=require(`./cache-DETwlACe.cjs`),i=require(`./routes-D6Tuu7Fs.cjs`),a=require(`./pages-external-CX2uyW95.cjs`),o=require(`./config-B5uVv5q4.cjs`),s=require(`./types-generator-CYcHkDzZ.cjs`),c=require(`./shiki-adapter-CGTmrR6S.cjs`),l=require(`./doctor-DQxLM202.cjs`),u=require(`./headers-BXKxiPUv.cjs`),d=require(`./csp-CBysWlAf.cjs`);let f=require(`node:path`);f=e.n(f);let p=require(`node:fs`);p=e.n(p);let m=require(`@bdocs/dui`),h=require(`node:crypto`);h=e.n(h);let g=require(`node:module`);g=e.n(g);let _=require(`vite`),ee=require(`@bdocs/plugin-image-optimizer`),v=require(`@mdx-js/rollup`);v=e.n(v);let y=require(`remark-gfm`);y=e.n(y);let b=require(`remark-frontmatter`);b=e.n(b);let x=require(`rehype-slug`);x=e.n(x);let S=require(`unist-util-visit`);function C(e){let n=e.theme?.title;return`<!doctype html>
7
7
  <html lang="en">
8
8
  <head>
9
9
  <meta charset="UTF-8" />
@@ -61,8 +61,8 @@ const e=require(`./chunk-Ds5LZdWN.cjs`),t=require(`./utils-Bz1tG9Dg.cjs`),n=requ
61
61
  <script defer src="/_vercel/speed-insights/script.js"><\/script>
62
62
  `),i}function T(e,n){let r=t.n(n);return e.includes(`<title>`)?e.replace(/<title>.*?<\/title>/,`<title>${r}</title>`):e.replace(`</head>`,` <title>${r}</title>\n </head>`)}function le(e,t){return e.replace(`<head>`,`<head>\n${t}`)}function E(e,t){return e.replace(`</head>`,` ${t}</head>`)}function D(e,t){return t?e.replace(/<body([^>]*)>/,`<body$1>\n${t}`):e}function O(e){return e.includes(`src/main`)||e.includes(`virtual:boltdocs-entry`)?e:e.replace(`</body>`,` <script type="module">import "virtual:boltdocs-entry";<\/script>
63
63
  </body>`)}function k(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=C(t));let n=process.env.NODE_ENV===`production`,r=te(t),i=ne(r),a=re(t.seo?.verification),o=ie(t),s=ae(),c=oe(t.integrations?.analytics?.ga4,n),l=se(t.integrations?.analytics?.gtm,n),u=[a,o,i,c,ce(t.integrations?.analytics?.vercel,n),l.script].filter(Boolean).join(`
64
- `);return e=T(e,r.title),e=le(e,s),e=E(e,u),e=D(e,l.noScript),e=O(e),e}function A(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(A):e&&typeof e==`object`?Object.values(e).flatMap(A):[]}const ue=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function de(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=A(Object.entries(n.frontmatter).filter(([e])=>!ue.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}let j=null,M=null,N=null,P=null;function F(){j=null,M=null,N=null,P=null}function I(e,r,a,o){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let n=a()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?t.u(f.default.resolve(n,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?t.u(f.default.resolve(n,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(a){let s=r();if(a.includes(`boltdocs-entry.tsx`)||a===`\0virtual:boltdocs-entry`)return n.D(e,s);if(a.includes(`boltdocs-client.mjs`)||a===`\0virtual:boltdocs-client.ts`||a===`virtual:boltdocs-client`){let e=__dirname,n=e;for(;e!==f.default.parse(e).root;){if(p.default.existsSync(f.default.join(e,`package.json`))&&JSON.parse(p.default.readFileSync(f.default.join(e,`package.json`),`utf-8`)).name===`boltdocs`){n=e;break}e=f.default.dirname(e)}let r=f.default.join(n,`src/client/index.ts`),i=f.default.join(n,`dist/client/index.js`);return`export * from '${t.u(p.default.existsSync(r)?r:i)}';`}if(!a.startsWith(`\0virtual:boltdocs-`))return;let c=a.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(c===`routes`){if(!N){let e=n.y(await i.t(o,s));N=`export default ${JSON.stringify(e,null,2)};`}return N}if(c===`collections`){if(!P){let e=n.y(await i.t(o,s)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,frontmatter:n.frontmatter}));P=`export default ${JSON.stringify(t,null,2)};`}return P}if(c===`config`){if(j===null){let{loadDirectoryMeta:e}=await Promise.resolve().then(()=>require(`./meta-loader-C9MKjAs0.cjs`));j=await e(o)}let e=j,t={base:s?.base,theme:s?.theme,i18n:s?.i18n,versions:s?.versions,siteUrl:s?.siteUrl,integrations:s?.integrations,plugins:s?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(c===`entry`)return n.D(e,s);if(c===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],n=null;for(let t of e){let e=f.default.resolve(o,`mdx-components.${t}`);if(p.default.existsSync(e)){n=e;break}}if(n){let e=t.u(n);return`import * as components from '${e}';
64
+ `);return e=T(e,r.title),e=le(e,s),e=E(e,u),e=D(e,l.noScript),e=O(e),e}function A(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(A):e&&typeof e==`object`?Object.values(e).flatMap(A):[]}const ue=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function de(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=A(Object.entries(n.frontmatter).filter(([e])=>!ue.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}let j=null,M=null,N=null,P=null;function F(){j=null,M=null,N=null,P=null}function I(e,r,a,o){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let n=a()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?t.u(f.default.resolve(n,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?t.u(f.default.resolve(n,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(a){let s=r();if(a.includes(`boltdocs-entry.tsx`)||a===`\0virtual:boltdocs-entry`)return n.D(e,s);if(a.includes(`boltdocs-client.mjs`)||a===`\0virtual:boltdocs-client.ts`||a===`virtual:boltdocs-client`){let e=__dirname,n=e;for(;e!==f.default.parse(e).root;){if(p.default.existsSync(f.default.join(e,`package.json`))&&JSON.parse(p.default.readFileSync(f.default.join(e,`package.json`),`utf-8`)).name===`boltdocs`){n=e;break}e=f.default.dirname(e)}let r=f.default.join(n,`src/client/index.ts`),i=f.default.join(n,`dist/client/index.js`);return`export * from '${t.u(p.default.existsSync(r)?r:i)}';`}if(!a.startsWith(`\0virtual:boltdocs-`))return;let c=a.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(c===`routes`){if(!N){let e=n.y(await i.t(o,s));N=`export default ${JSON.stringify(e,null,2)};`}return N}if(c===`collections`){if(!P){let e=n.y(await i.t(o,s)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,locale:n.locale,version:n.version,frontmatter:n.frontmatter}));P=`export default ${JSON.stringify(t,null,2)};`}return P}if(c===`config`){if(j===null){let{loadDirectoryMeta:e}=await Promise.resolve().then(()=>require(`./meta-loader-C9MKjAs0.cjs`));j=await e(o)}let e=j,t={base:s?.base,theme:s?.theme,i18n:s?.i18n,versions:s?.versions,siteUrl:s?.siteUrl,integrations:s?.integrations,plugins:s?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(c===`entry`)return n.D(e,s);if(c===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],n=null;for(let t of e){let e=f.default.resolve(o,`mdx-components.${t}`);if(p.default.existsSync(e)){n=e;break}}if(n){let e=t.u(n);return`import * as components from '${e}';
65
65
  const mdxComponents = components.default || components;
66
66
  export default mdxComponents;
67
67
  export * from '${e}';`}return`export default {};`}if(c===`layout`){let e=[`tsx`,`jsx`],n=null;for(let t of e){let e=f.default.resolve(o,`layout.${t}`);if(p.default.existsSync(e)){n=e;break}}if(n)return`import UserLayout from '${t.u(n)}';
68
- export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(c===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],n=null;for(let t of e){let e=f.default.resolve(o,`icons.${t}`);if(p.default.existsSync(e)){n=e;break}}return n?`import * as icons from '${t.u(n)}';\nexport default icons;`:`export default {};`}if(c===`search`){if(!M){let e=de(await i.t(o,s));M=`export default ${JSON.stringify(e,null,2)};`}return M}if(c===`client`){let e=__dirname,n=``;for(;e&&e!==f.default.parse(e).root;){let r=f.default.join(e,`src/client/index.ts`),i=f.default.join(e,`dist/client/index.mjs`),a=f.default.join(e,`client/index.ts`);if(p.default.existsSync(r)){n=t.u(r);break}if(p.default.existsSync(i)){n=t.u(i);break}if(p.default.existsSync(a)){n=t.u(a);break}e=f.default.dirname(e)}if(!n)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${__dirname}`);return`export * from '${n}';`}}}}function L(e){return(t,n,r)=>{let i=e().integrations?.feedback?.custom,a=i?.endpoint||`/api/feedback`;if(!i?.enabled||t.method!==`POST`||t.url?.split(`?`)[0]!==a)return r();let o=``,s=0;t.on(`data`,e=>{if(s+=e.length,s>10240){n.statusCode=413,n.end(JSON.stringify({error:`Request body too large`})),t.destroy();return}o+=e}),t.on(`end`,async()=>{n.setHeader(`Content-Type`,`application/json`);try{let{handleFeedback:e}=await Promise.resolve().then(()=>require(`./handler-Dzf4dSnV.cjs`)).then(e=>e.n),t=await e(JSON.parse(o),process.env,{owner:i.owner,repo:i.repo,categorySlug:i.categorySlug});n.statusCode=200,n.end(JSON.stringify(t))}catch(e){n.statusCode=500;let t=e instanceof Error?e.message:`Failed to submit feedback`;n.end(JSON.stringify({error:t}))}})}}function R(e){return(t,n,r)=>{let i=t.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(f.default.extname(a))return r();let o=e(),s=f.default.resolve(o?.root||process.cwd(),o?.build?.outDir||`dist`),c=a.replace(/\/$/,``)||`/`,l=f.default.join(s,c,`index.html`);c!==`/`&&p.default.existsSync(l)&&(t.url=`${c}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()}}const z=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function B(e,t,n){let r=process.env.NODE_ENV===`production`;e.middlewares.use(L(n)),e.middlewares.use((e,t,i)=>{r&&Object.entries(u.t).forEach(([e,n])=>{t.setHeader(e,n)});let a=n();a.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,d.n(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(t,r,i)=>{let a=t.url?.split(`?`)[0]||`/`,o=t.headers.accept||``,s=n();if(o.includes(`text/html`)&&!z.test(a)){let n=C(s);n=k(n,s),n=await e.transformIndexHtml(t.url||`/`,n),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(n);return}i()})}function V(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=32){let n=i.slice(t,t+32);await Promise.allSettled(n.map(t=>{let n=f.default.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},0)}const H=[`tsx`,`jsx`],U=[`tsx`,`ts`,`jsx`,`js`];function fe(e,t){let n=o.t.map(e=>f.default.resolve(process.cwd(),e)),r=H.map(e=>f.default.resolve(t,`layout.${e}`)),i=U.map(e=>f.default.resolve(t,`mdx-components.${e}`)),a=U.map(e=>f.default.resolve(t,`pages-external/index.${e}`)),s=U.map(e=>f.default.resolve(t,`icons.${e}`));e.watcher.add([...n,...i,...r,...a,...s])}const W=new Map;function G(e){let{lastUpdated:t,...n}=e;return h.default.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function pe(e){try{let{data:n}=await t.d(e);return G(n)}catch{return``}}function me(e){let t=W.get(e);if(t===void 0){let n=i.i.getStale(e);n?.route?.frontmatter&&(t=G(n.route.frontmatter),W.set(e,t))}return t}function he(e,t){W.set(e,t)}function ge(e){W.delete(e)}const K=[`tsx`,`ts`,`jsx`,`js`];function q(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function _e(e,n,r,a){let c=new Map,u=r.toLowerCase(),d=async(r,d)=>{try{let p=t.u(r);if(o.t.some(e=>p.endsWith(e))){e.restart();return}if(K.some(e=>p.endsWith(`mdx-components.${e}`))){s.t(a(),n),q(e,`mdx-components.tsx`),e.ws.send({type:`full-reload`});return}if(K.some(e=>p.endsWith(`icons.${e}`))){q(e,`icons.tsx`),e.ws.send({type:`full-reload`});return}if(p.endsWith(`layout.tsx`)||p.endsWith(`layout.jsx`)){q(e,`layout.tsx`),e.ws.send({type:`full-reload`});return}if(p.includes(`/pages-external/`)||p.includes(`\\pages-external\\`)){q(e,`entry`),e.ws.send({type:`full-reload`});return}if(!p.toLowerCase().startsWith(u))return;let h=p.endsWith(`meta.json`)||p.endsWith(`_meta.json`);if(!h&&!t.c(p))return;if(d===`add`||d===`unlink`||h){d===`unlink`&&ge(r),i.r(),F();let t=a();s.t(t,n),q(e,`config`),q(e,`routes`),q(e,`search`),q(e,`collections`),l.c(n,process.cwd(),t).catch(e=>{(0,m.error)(`Failed to update link tree:`,e)}),e.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:t?.theme,i18n:t?.i18n,versions:t?.versions,siteUrl:t?.siteUrl}}),e.ws.send({type:`full-reload`});return}c.has(p)&&clearTimeout(c.get(p)),c.set(p,setTimeout(async()=>{c.delete(p);try{let a=me(r),o=await pe(r);if(he(r,o),i.n(r),a!==void 0&&a!==o){F(),q(e,`routes`),q(e,`search`),q(e,`collections`),e.ws.send({type:`full-reload`});return}let s=t.u(f.default.relative(n,r)),c=e.moduleGraph.getModulesByFile(p);if(!c||c.size===0){let t=p.toLowerCase();for(let[n,r]of e.moduleGraph.fileToModulesMap.entries())try{if(decodeURIComponent(n).toLowerCase()===t){c=r;break}}catch{}}if(c&&c.size>0)for(let t of c)e.moduleGraph.invalidateModule(t);else{e.ws.send({type:`full-reload`});return}e.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:p,relPath:s}})}catch(e){(0,m.error)(`HMR error processing content change:`,e)}},150))}catch(e){(0,m.error)(`HMR error during ${d} event:`,e)}};e.watcher.on(`add`,e=>d(e,`add`)),e.watcher.on(`unlink`,e=>d(e,`unlink`)),e.watcher.on(`change`,e=>d(e,`change`))}function ve(e){let n=e.toLowerCase();return({file:e})=>{let r=e.toLowerCase();if(r.startsWith(n)&&(t.c(e)||r.endsWith(`meta.json`)))return[]}}function ye(e,t,n,r,i){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let a=i();await a?.runHook(`beforeDev`),l.c(e,process.cwd(),n()).catch(e=>{(0,m.error)(`Failed to generate initial link tree:`,e)}),V(r,e,n),B(r,e,n),fe(r,e),_e(r,e,t,n),await a?.runHook(`afterDev`)},hotUpdate:ve(t)}}const J=new r.r(`mdx`);function be(e){let t=c.n(e);return async e=>{let r=await t.getHighlighter();n.p(e,c.o.ELEMENT,e=>{if(e.tagName!==`pre`)return;let n=e.children?.[0];if(!n||n.type!==c.o.ELEMENT||n.tagName!==`code`)return;let i=(n.properties?.className||[]).find(e=>e.startsWith(`language-`)),a=i?i.slice(9):c.a.MDX_DEFAULT_LANG;if(a===`mermaid`)return;let o=c.r(n.properties?.metastring||n.data?.meta||``),s=t.getOptions(a,o),l=n.children?.[0]?.value||``;try{let t=r.codeToHast(l,s),n=t.type===`root`?t.children[0]:t;e.children=n.children,e.properties={...e.properties,...n.properties,[c.i.HIGHLIGHTED]:`true`,[c.i.LANG]:a}}catch(t){(0,m.error)(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],c.s.FALLBACK],e.properties[c.i.HIGHLIGHTED]=`false`,e.properties[c.i.LANG]=a}return o.title&&(e.properties[c.i.TITLE]=o.title),S.SKIP})}}function xe(){return e=>{n.p(e,c.o.CODE,e=>{e.meta&&n.d(e,`metastring`,e.meta)})}}let Se=!1;function Ce(e,t,n=v.default){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[y.default,b.default,xe,...r],rehypePlugins:[x.default,[be,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Se||=(await J.load(),!0),a.buildStart&&await a.buildStart.call(this)},async load(e,n){if(e.endsWith(`.md`)||e.endsWith(`.mdx`))try{let n=p.default.readFileSync(e,`utf-8`),r=t?.();return r&&(n=(await r.runChain(`transformSource`,{code:n,filePath:e})).code),n}catch{return null}return a.load?a.load.call(this,e,n):null},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${h.default.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await J.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),J.set(o,e),{code:e,map:null}}return c},async buildEnd(){J.save(),await J.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Y=g.createRequire(require(`url`).pathToFileURL(__filename).href),we=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],Te=[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`];function X(e=Y){try{let e=f.default.join(process.cwd(),`node_modules/boltdocs/package.json`);return p.default.existsSync(e)?g.createRequire(p.default.realpathSync(e)):g.createRequire(f.default.join(process.cwd(),`package.json`))}catch{return e}}function Z(e,t=Y){try{let n=e.split(`/`),r=e.startsWith(`@`)?n.slice(0,2).join(`/`):n[0],i=e.startsWith(`@`)?n.slice(2).join(`/`):n.slice(1).join(`/`),a=``;try{a=t.resolve(`${r}/package.json`)}catch{let e=t.resolve(r),n=f.default.dirname(e);for(;n&&n!==f.default.dirname(n);){let e=f.default.join(n,`package.json`);if(p.default.existsSync(e)){a=e;break}n=f.default.dirname(n)}}if(!a)throw Error();let o=f.default.dirname(a),s=JSON.parse(p.default.readFileSync(a,`utf-8`)),c=i?`./${i}`:`.`,l=s.exports?.[c]||s.exports?.[i]||``;typeof l==`object`&&l&&(l=l.import||l.default||l.require||``),!l&&!i&&(l=s.module||s.main||`index.js`);let u=f.default.resolve(o,l);if(p.default.existsSync(u))return u}catch{}return t.resolve(e)}function Q(e=Y){let n=[],r=X(e),i=new Set([r,e]);for(let e of i){for(let t of we)try{let r=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(t)?Z(t,e):e.resolve(t);r&&n.push(p.default.realpathSync(r))}catch{}for(let t of Te)try{n.push(p.default.realpathSync(e.resolve(t)))}catch{}}return Array.from(new Set(n)).map(e=>t.u(e))}const $=g.createRequire(require(`url`).pathToFileURL(__filename).href),Ee=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`];function De(e={},r){let c=f.default.resolve(process.cwd(),e.docsDir||`docs`),l=t.u(c),u=r,d,m=!1,h,g=[];if(u?.plugins?.length)try{let{version:e}=JSON.parse(p.default.readFileSync(f.default.resolve(__dirname,`../../../package.json`),`utf-8`)),t=n.x(u.plugins,e);u.plugins=t,h=new n._(t,u),g=t.flatMap(e=>e.vitePlugins||[])}catch{}let v=()=>u,y=e=>{u=e},b=()=>d,x=()=>h;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){m=t.command===`build`;let r=!!(t.isSsrBuild||e.build?.ssr);if(Object.assign(process.env,(0,_.loadEnv)(t.mode,e.envDir||process.cwd(),``)),!u){u=await o.n(c);let e=(await i.t(c,u)).map(e=>e.path),t=(u.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t);let n=a.t(c,u);for(let t of n)e.includes(t)||e.push(t);s.t(u,c,void 0,e),s.r(e)}Promise.resolve().then(()=>require(`./shiki-adapter-Mr8_oT_9.cjs`)).then(({getShikiAdapter:e})=>{e(u).getHighlighter().catch(()=>{})}).catch(()=>{});let{version:l}=await Promise.resolve().then(()=>require(`./package-DnyxhwD-.cjs`)),d=n.x(u.plugins||[],l);return u.plugins=d,h=new n._(d,u),g=d.flatMap(e=>e.vitePlugins||[]),m&&await h.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:m},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:Z(`react-router-dom`)},{find:`react-helmet-async`,replacement:Z(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:Z(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...r?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Q($)],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){d=e},resolveId(e,t,n){let r=Ee.find(t=>e===t||e.startsWith(`${t}/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,f.default.sep)}/`));if(r&&n?.ssr&&!f.default.isAbsolute(e)&&r!==`react`&&r!==`react-dom`){let t=X($),n=e;try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,t):t.resolve(e)}catch{try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,$):$.resolve(e)}catch{}}try{n=p.default.realpathSync(n)}catch{}return{id:n,external:!0}}return null},transformIndexHtml:{order:`pre`,handler:e=>k(e,u)},async closeBundle(){!m||d?.build?.ssr||(await h?.runHook(`afterBuild`),await h?.runHook(`buildEnd`))},configurePreviewServer(e){e.middlewares.use(L(v)),e.middlewares.use(R(b))}},I(e,v,b,c),ye(c,l,v,y,x),Ce(u,x),(0,ee.ViteImageOptimizer)({includePublic:!0}),...g]}exports.boltdocsPlugin=De,exports.getBaseRequire=X,exports.getExternalAbsolutePaths=Q,exports.resolveEsm=Z;
68
+ export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(c===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],n=null;for(let t of e){let e=f.default.resolve(o,`icons.${t}`);if(p.default.existsSync(e)){n=e;break}}return n?`import * as icons from '${t.u(n)}';\nexport default icons;`:`export default {};`}if(c===`search`){if(!M){let e=de(await i.t(o,s));M=`export default ${JSON.stringify(e,null,2)};`}return M}if(c===`client`){let e=__dirname,n=``;for(;e&&e!==f.default.parse(e).root;){let r=f.default.join(e,`src/client/index.ts`),i=f.default.join(e,`dist/client/index.mjs`),a=f.default.join(e,`client/index.ts`);if(p.default.existsSync(r)){n=t.u(r);break}if(p.default.existsSync(i)){n=t.u(i);break}if(p.default.existsSync(a)){n=t.u(a);break}e=f.default.dirname(e)}if(!n)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${__dirname}`);return`export * from '${n}';`}}}}function L(e){return(t,n,r)=>{let i=e().integrations?.feedback?.custom,a=i?.endpoint||`/api/feedback`;if(!i?.enabled||t.method!==`POST`||t.url?.split(`?`)[0]!==a)return r();let o=``,s=0;t.on(`data`,e=>{if(s+=e.length,s>10240){n.statusCode=413,n.end(JSON.stringify({error:`Request body too large`})),t.destroy();return}o+=e}),t.on(`end`,async()=>{n.setHeader(`Content-Type`,`application/json`);try{let{handleFeedback:e}=await Promise.resolve().then(()=>require(`./handler-Dzf4dSnV.cjs`)).then(e=>e.n),t=await e(JSON.parse(o),process.env,{owner:i.owner,repo:i.repo,categorySlug:i.categorySlug});n.statusCode=200,n.end(JSON.stringify(t))}catch(e){n.statusCode=500;let t=e instanceof Error?e.message:`Failed to submit feedback`;n.end(JSON.stringify({error:t}))}})}}function R(e){return(t,n,r)=>{let i=t.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(f.default.extname(a))return r();let o=e(),s=f.default.resolve(o?.root||process.cwd(),o?.build?.outDir||`dist`),c=a.replace(/\/$/,``)||`/`,l=f.default.join(s,c,`index.html`);c!==`/`&&p.default.existsSync(l)&&(t.url=`${c}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()}}const z=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function B(e,t,n){let r=process.env.NODE_ENV===`production`;e.middlewares.use(L(n)),e.middlewares.use((e,t,i)=>{r&&Object.entries(u.t).forEach(([e,n])=>{t.setHeader(e,n)});let a=n();a.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,d.n(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(t,r,i)=>{let a=t.url?.split(`?`)[0]||`/`,o=t.headers.accept||``,s=n();if(o.includes(`text/html`)&&!z.test(a)){let n=C(s);n=k(n,s),n=await e.transformIndexHtml(t.url||`/`,n),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(n);return}i()})}function V(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await Promise.resolve().then(()=>require(`./routes-BajCwrvX.cjs`)),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=32){let n=i.slice(t,t+32);await Promise.allSettled(n.map(t=>{let n=f.default.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},0)}const H=[`tsx`,`jsx`],U=[`tsx`,`ts`,`jsx`,`js`];function fe(e,t){let n=o.t.map(e=>f.default.resolve(process.cwd(),e)),r=H.map(e=>f.default.resolve(t,`layout.${e}`)),i=U.map(e=>f.default.resolve(t,`mdx-components.${e}`)),a=U.map(e=>f.default.resolve(t,`pages-external/index.${e}`)),s=U.map(e=>f.default.resolve(t,`icons.${e}`));e.watcher.add([...n,...i,...r,...a,...s])}const W=new Map;function G(e){let{lastUpdated:t,...n}=e;return h.default.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function pe(e){try{let{data:n}=await t.d(e);return G(n)}catch{return``}}function me(e){let t=W.get(e);if(t===void 0){let n=i.i.getStale(e);n?.route?.frontmatter&&(t=G(n.route.frontmatter),W.set(e,t))}return t}function he(e,t){W.set(e,t)}function ge(e){W.delete(e)}const K=[`tsx`,`ts`,`jsx`,`js`];function q(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function _e(e,n,r,a){let c=new Map,u=r.toLowerCase(),d=async(r,d)=>{try{let p=t.u(r);if(o.t.some(e=>p.endsWith(e))){e.restart();return}if(K.some(e=>p.endsWith(`mdx-components.${e}`))){s.t(a(),n),q(e,`mdx-components.tsx`),e.ws.send({type:`full-reload`});return}if(K.some(e=>p.endsWith(`icons.${e}`))){q(e,`icons.tsx`),e.ws.send({type:`full-reload`});return}if(p.endsWith(`layout.tsx`)||p.endsWith(`layout.jsx`)){q(e,`layout.tsx`),e.ws.send({type:`full-reload`});return}if(p.includes(`/pages-external/`)||p.includes(`\\pages-external\\`)){q(e,`entry`),e.ws.send({type:`full-reload`});return}if(!p.toLowerCase().startsWith(u))return;let h=p.endsWith(`meta.json`)||p.endsWith(`_meta.json`);if(!h&&!t.c(p))return;if(d===`add`||d===`unlink`||h){d===`unlink`&&ge(r),i.r(),F();let t=a();s.t(t,n),q(e,`config`),q(e,`routes`),q(e,`search`),q(e,`collections`),l.c(n,process.cwd(),t).catch(e=>{(0,m.error)(`Failed to update link tree:`,e)}),e.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:t?.theme,i18n:t?.i18n,versions:t?.versions,siteUrl:t?.siteUrl}}),e.ws.send({type:`full-reload`});return}c.has(p)&&clearTimeout(c.get(p)),c.set(p,setTimeout(async()=>{c.delete(p);try{let a=me(r),o=await pe(r);if(he(r,o),i.n(r),a!==void 0&&a!==o){F(),q(e,`routes`),q(e,`search`),q(e,`collections`),e.ws.send({type:`full-reload`});return}let s=t.u(f.default.relative(n,r)),c=e.moduleGraph.getModulesByFile(p);if(!c||c.size===0){let t=p.toLowerCase();for(let[n,r]of e.moduleGraph.fileToModulesMap.entries())try{if(decodeURIComponent(n).toLowerCase()===t){c=r;break}}catch{}}if(c&&c.size>0)for(let t of c)e.moduleGraph.invalidateModule(t);else{e.ws.send({type:`full-reload`});return}e.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:p,relPath:s}})}catch(e){(0,m.error)(`HMR error processing content change:`,e)}},150))}catch(e){(0,m.error)(`HMR error during ${d} event:`,e)}};e.watcher.on(`add`,e=>d(e,`add`)),e.watcher.on(`unlink`,e=>d(e,`unlink`)),e.watcher.on(`change`,e=>d(e,`change`))}function ve(e){let n=e.toLowerCase();return({file:e})=>{let r=e.toLowerCase();if(r.startsWith(n)&&(t.c(e)||r.endsWith(`meta.json`)))return[]}}function ye(e,t,n,r,i){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let a=i();await a?.runHook(`beforeDev`),l.c(e,process.cwd(),n()).catch(e=>{(0,m.error)(`Failed to generate initial link tree:`,e)}),V(r,e,n),B(r,e,n),fe(r,e),_e(r,e,t,n),await a?.runHook(`afterDev`)},hotUpdate:ve(t)}}const J=new r.r(`mdx`);function be(e){let t=c.n(e);return async e=>{let r=await t.getHighlighter();n.p(e,c.o.ELEMENT,e=>{if(e.tagName!==`pre`)return;let n=e.children?.[0];if(!n||n.type!==c.o.ELEMENT||n.tagName!==`code`)return;let i=(n.properties?.className||[]).find(e=>e.startsWith(`language-`)),a=i?i.slice(9):c.a.MDX_DEFAULT_LANG;if(a===`mermaid`)return;let o=c.r(n.properties?.metastring||n.data?.meta||``),s=t.getOptions(a,o),l=n.children?.[0]?.value||``;try{let t=r.codeToHast(l,s),n=t.type===`root`?t.children[0]:t;e.children=n.children,e.properties={...e.properties,...n.properties,[c.i.HIGHLIGHTED]:`true`,[c.i.LANG]:a}}catch(t){(0,m.error)(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],c.s.FALLBACK],e.properties[c.i.HIGHLIGHTED]=`false`,e.properties[c.i.LANG]=a}return o.title&&(e.properties[c.i.TITLE]=o.title),S.SKIP})}}function xe(){return e=>{n.p(e,c.o.CODE,e=>{e.meta&&n.d(e,`metastring`,e.meta)})}}let Se=!1;function Ce(e,t,n=v.default){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[y.default,b.default,xe,...r],rehypePlugins:[x.default,[be,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Se||=(await J.load(),!0),a.buildStart&&await a.buildStart.call(this)},async load(e,n){if(e.endsWith(`.md`)||e.endsWith(`.mdx`))try{let n=p.default.readFileSync(e,`utf-8`),r=t?.();return r&&(n=(await r.runChain(`transformSource`,{code:n,filePath:e})).code),n}catch{return null}return a.load?a.load.call(this,e,n):null},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${h.default.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await J.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),J.set(o,e),{code:e,map:null}}return c},async buildEnd(){J.save(),await J.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Y=g.createRequire(require(`url`).pathToFileURL(__filename).href),we=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`invariant`],Te=[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`];function X(e=Y){try{let e=f.default.join(process.cwd(),`node_modules/boltdocs/package.json`);return p.default.existsSync(e)?g.createRequire(p.default.realpathSync(e)):g.createRequire(f.default.join(process.cwd(),`package.json`))}catch{return e}}function Z(e,t=Y){try{let n=e.split(`/`),r=e.startsWith(`@`)?n.slice(0,2).join(`/`):n[0],i=e.startsWith(`@`)?n.slice(2).join(`/`):n.slice(1).join(`/`),a=``;try{a=t.resolve(`${r}/package.json`)}catch{let e=t.resolve(r),n=f.default.dirname(e);for(;n&&n!==f.default.dirname(n);){let e=f.default.join(n,`package.json`);if(p.default.existsSync(e)){a=e;break}n=f.default.dirname(n)}}if(!a)throw Error();let o=f.default.dirname(a),s=JSON.parse(p.default.readFileSync(a,`utf-8`)),c=i?`./${i}`:`.`,l=s.exports?.[c]||s.exports?.[i]||``;typeof l==`object`&&l&&(l=l.import||l.default||l.require||``),!l&&!i&&(l=s.module||s.main||`index.js`);let u=f.default.resolve(o,l);if(p.default.existsSync(u))return u}catch{}return t.resolve(e)}function Q(e=Y){let n=[],r=X(e),i=new Set([r,e]);for(let e of i){for(let t of we)try{let r=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(t)?Z(t,e):e.resolve(t);r&&n.push(p.default.realpathSync(r))}catch{}for(let t of Te)try{n.push(p.default.realpathSync(e.resolve(t)))}catch{}}return Array.from(new Set(n)).map(e=>t.u(e))}const $=g.createRequire(require(`url`).pathToFileURL(__filename).href),Ee=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`];function De(e={},r){let c=f.default.resolve(process.cwd(),e.docsDir||`docs`),l=t.u(c),u=r,d,m=!1,h,g=[];if(u?.plugins?.length)try{let{version:e}=JSON.parse(p.default.readFileSync(f.default.resolve(__dirname,`../../../package.json`),`utf-8`)),t=n.x(u.plugins,e);u.plugins=t,h=new n._(t,u),g=t.flatMap(e=>e.vitePlugins||[])}catch{}let v=()=>u,y=e=>{u=e},b=()=>d,x=()=>h;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){m=t.command===`build`;let r=!!(t.isSsrBuild||e.build?.ssr);if(Object.assign(process.env,(0,_.loadEnv)(t.mode,e.envDir||process.cwd(),``)),!u){u=await o.n(c);let e=(await i.t(c,u)).map(e=>e.path),t=(u.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t);let n=a.t(c,u);for(let t of n)e.includes(t)||e.push(t);s.t(u,c,void 0,e),s.r(e)}Promise.resolve().then(()=>require(`./shiki-adapter-Mr8_oT_9.cjs`)).then(({getShikiAdapter:e})=>{e(u).getHighlighter().catch(()=>{})}).catch(()=>{});let{version:l}=await Promise.resolve().then(()=>require(`./package-CEDhVAfO.cjs`)),d=n.x(u.plugins||[],l);return u.plugins=d,h=new n._(d,u),g=d.flatMap(e=>e.vitePlugins||[]),m&&await h.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:m},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:Z(`react-router-dom`)},{find:`react-helmet-async`,replacement:Z(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:Z(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...r?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`invariant`,...Q($)],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){d=e},resolveId(e,t,n){let r=Ee.find(t=>e===t||e.startsWith(`${t}/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,f.default.sep)}/`));if(r&&n?.ssr&&!f.default.isAbsolute(e)&&r!==`react`&&r!==`react-dom`){let t=X($),n=e;try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,t):t.resolve(e)}catch{try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,$):$.resolve(e)}catch{}}try{n=p.default.realpathSync(n)}catch{}return{id:n,external:!0}}return null},transformIndexHtml:{order:`pre`,handler:e=>k(e,u)},async closeBundle(){!m||d?.build?.ssr||(await h?.runHook(`afterBuild`),await h?.runHook(`buildEnd`))},configurePreviewServer(e){e.middlewares.use(L(v)),e.middlewares.use(R(b))}},I(e,v,b,c),ye(c,l,v,y,x),Ce(u,x),(0,ee.ViteImageOptimizer)({includePublic:!0}),...g]}exports.boltdocsPlugin=De,exports.getBaseRequire=X,exports.getExternalAbsolutePaths=Q,exports.resolveEsm=Z;
@@ -3,7 +3,7 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- import{c as e,d as t,n,u as r}from"./utils-B3xYMrpK.mjs";import{C as i,a,h as o,k as s,p as c,x as l,y as u}from"./node-Ct4PB0S_.mjs";import{r as d}from"./cache-SF59enb3.mjs";import{a as f,n as p,r as m,t as h}from"./routes-CyrnmVuG.mjs";import{t as ee}from"./pages-external-BYa4JSda.mjs";import{r as te,t as g}from"./config-D3_zDkHh.mjs";import{r as ne,t as _}from"./types-generator-DVOnRVKU.mjs";import{a as re,i as v,n as ie,o as y,s as ae,t as oe}from"./shiki-adapter-CXEGRnjr.mjs";import{n as b}from"./doctor-3MheVMwd.mjs";import{t as se}from"./headers-CXyf0auY.mjs";import{n as ce}from"./csp-gaZ51xzq.mjs";import*as x from"node:module";import S from"node:path";import C from"node:fs";import{error as w}from"@bdocs/dui";import T from"node:crypto";import{fileURLToPath as le}from"node:url";import{loadEnv as ue}from"vite";import{ViteImageOptimizer as de}from"@bdocs/plugin-image-optimizer";import fe from"@mdx-js/rollup";import pe from"remark-gfm";import me from"remark-frontmatter";import he from"rehype-slug";const E=S.dirname(le(import.meta.url));function D(e){let t=e.theme?.title;return`<!doctype html>
6
+ import{c as e,d as t,n,u as r}from"./utils-B3xYMrpK.mjs";import{C as i,a,h as o,k as s,p as c,x as l,y as u}from"./node-B9JSyEIU.mjs";import{r as d}from"./cache-SF59enb3.mjs";import{a as f,n as p,r as m,t as h}from"./routes-CyrnmVuG.mjs";import{t as ee}from"./pages-external-BYa4JSda.mjs";import{r as te,t as g}from"./config-D3_zDkHh.mjs";import{r as ne,t as _}from"./types-generator-DVOnRVKU.mjs";import{a as re,i as v,n as ie,o as y,s as ae,t as oe}from"./shiki-adapter-CXEGRnjr.mjs";import{n as b}from"./doctor-3MheVMwd.mjs";import{t as se}from"./headers-CXyf0auY.mjs";import{n as ce}from"./csp-gaZ51xzq.mjs";import*as x from"node:module";import S from"node:path";import C from"node:fs";import{error as w}from"@bdocs/dui";import T from"node:crypto";import{fileURLToPath as le}from"node:url";import{loadEnv as ue}from"vite";import{ViteImageOptimizer as de}from"@bdocs/plugin-image-optimizer";import fe from"@mdx-js/rollup";import pe from"remark-gfm";import me from"remark-frontmatter";import he from"rehype-slug";const E=S.dirname(le(import.meta.url));function D(e){let t=e.theme?.title;return`<!doctype html>
7
7
  <html lang="en">
8
8
  <head>
9
9
  <meta charset="UTF-8" />
@@ -61,8 +61,8 @@ import{c as e,d as t,n,u as r}from"./utils-B3xYMrpK.mjs";import{C as i,a,h as o,
61
61
  <script defer src="/_vercel/speed-insights/script.js"><\/script>
62
62
  `),i}function M(e,t){let r=n(t);return e.includes(`<title>`)?e.replace(/<title>.*?<\/title>/,`<title>${r}</title>`):e.replace(`</head>`,` <title>${r}</title>\n </head>`)}function N(e,t){return e.replace(`<head>`,`<head>\n${t}`)}function xe(e,t){return e.replace(`</head>`,` ${t}</head>`)}function Se(e,t){return t?e.replace(/<body([^>]*)>/,`<body$1>\n${t}`):e}function Ce(e){return e.includes(`src/main`)||e.includes(`virtual:boltdocs-entry`)?e:e.replace(`</body>`,` <script type="module">import "virtual:boltdocs-entry";<\/script>
63
63
  </body>`)}function P(e,t){(!e||!e.includes(`<body`)||!e.includes(`<head`))&&(e=D(t));let n=process.env.NODE_ENV===`production`,r=ge(t),i=_e(r),a=ve(t.seo?.verification),o=ye(t),s=be(),c=k(t.integrations?.analytics?.ga4,n),l=A(t.integrations?.analytics?.gtm,n),u=[a,o,i,c,j(t.integrations?.analytics?.vercel,n),l.script].filter(Boolean).join(`
64
- `);return e=M(e,r.title),e=N(e,s),e=xe(e,u),e=Se(e,l.noScript),e=Ce(e),e}function F(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(F):e&&typeof e==`object`?Object.values(e).flatMap(F):[]}const we=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function Te(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=F(Object.entries(n.frontmatter).filter(([e])=>!we.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}let I=null,L=null,R=null,z=null;function B(){I=null,L=null,R=null,z=null}function Ee(e,t,n,i){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let t=n()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?r(S.resolve(t,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?r(S.resolve(t,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(n){let a=t();if(n.includes(`boltdocs-entry.tsx`)||n===`\0virtual:boltdocs-entry`)return s(e,a);if(n.includes(`boltdocs-client.mjs`)||n===`\0virtual:boltdocs-client.ts`||n===`virtual:boltdocs-client`){let e=E,t=e;for(;e!==S.parse(e).root;){if(C.existsSync(S.join(e,`package.json`))&&JSON.parse(C.readFileSync(S.join(e,`package.json`),`utf-8`)).name===`boltdocs`){t=e;break}e=S.dirname(e)}let n=S.join(t,`src/client/index.ts`),i=S.join(t,`dist/client/index.js`);return`export * from '${r(C.existsSync(n)?n:i)}';`}if(!n.startsWith(`\0virtual:boltdocs-`))return;let o=n.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(o===`routes`){if(!R){let e=l(await h(i,a));R=`export default ${JSON.stringify(e,null,2)};`}return R}if(o===`collections`){if(!z){let e=l(await h(i,a)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,frontmatter:n.frontmatter}));z=`export default ${JSON.stringify(t,null,2)};`}return z}if(o===`config`){if(I===null){let{loadDirectoryMeta:e}=await import(`./meta-loader-C4Hu9RN9.mjs`);I=await e(i)}let e=I,t={base:a?.base,theme:a?.theme,i18n:a?.i18n,versions:a?.versions,siteUrl:a?.siteUrl,integrations:a?.integrations,plugins:a?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(o===`entry`)return s(e,a);if(o===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],t=null;for(let n of e){let e=S.resolve(i,`mdx-components.${n}`);if(C.existsSync(e)){t=e;break}}if(t){let e=r(t);return`import * as components from '${e}';
64
+ `);return e=M(e,r.title),e=N(e,s),e=xe(e,u),e=Se(e,l.noScript),e=Ce(e),e}function F(e){return typeof e==`string`?[e]:Array.isArray(e)?e.flatMap(F):e&&typeof e==`object`?Object.values(e).flatMap(F):[]}const we=new Set([`title`,`description`,`permalink`,`sidebarPosition`,`sidebarLabel`,`sidebarHidden`,`hidden`,`category`,`order`,`badge`,`icon`,`date`,`lastUpdated`,`groupTitle`,`groupPosition`,`seo`]);function Te(e){let t=[];for(let n of e){let e=``;n.frontmatter&&(e=F(Object.entries(n.frontmatter).filter(([e])=>!we.has(e)).map(([e,t])=>t)).join(` `));let r=e?`${n._content||``} ${e}`:n._content||``;if(t.push({id:n.path,title:n.title,content:r,url:n.path,display:n.groupTitle?`${n.groupTitle} > ${n.title}`:n.title,locale:n.locale,version:n.version}),n.headings)for(let e of n.headings)t.push({id:`${n.path}#${e.id}`,title:e.text,content:`${e.text} in ${n.title}`,url:`${n.path}#${e.id}`,display:`${n.title} > ${e.text}`,locale:n.locale,version:n.version})}return t}let I=null,L=null,R=null,z=null;function B(){I=null,L=null,R=null,z=null}function Ee(e,t,n,i){return{name:`vite-plugin-boltdocs-virtual-modules`,resolveId(e){let t=n()?.root||process.cwd();return e.includes(`boltdocs-entry.tsx`)||e===`virtual:boltdocs-entry`||e===`boltdocs-entry`||e===`\0virtual:boltdocs-entry`?r(S.resolve(t,`boltdocs-entry.tsx`)):e.includes(`boltdocs-client.mjs`)||e===`virtual:boltdocs-client`||e===`boltdocs-client`||e===`\0virtual:boltdocs-client.ts`?r(S.resolve(t,`boltdocs-client.mjs`)):e.startsWith(`virtual:boltdocs-`)?`\0`+e:e.startsWith(`\0virtual:boltdocs-`)?e:null},async load(n){let a=t();if(n.includes(`boltdocs-entry.tsx`)||n===`\0virtual:boltdocs-entry`)return s(e,a);if(n.includes(`boltdocs-client.mjs`)||n===`\0virtual:boltdocs-client.ts`||n===`virtual:boltdocs-client`){let e=E,t=e;for(;e!==S.parse(e).root;){if(C.existsSync(S.join(e,`package.json`))&&JSON.parse(C.readFileSync(S.join(e,`package.json`),`utf-8`)).name===`boltdocs`){t=e;break}e=S.dirname(e)}let n=S.join(t,`src/client/index.ts`),i=S.join(t,`dist/client/index.js`);return`export * from '${r(C.existsSync(n)?n:i)}';`}if(!n.startsWith(`\0virtual:boltdocs-`))return;let o=n.replace(`\0virtual:boltdocs-`,``).replace(/\.tsx?$/,``);if(o===`routes`){if(!R){let e=l(await h(i,a));R=`export default ${JSON.stringify(e,null,2)};`}return R}if(o===`collections`){if(!z){let e=l(await h(i,a)),t={};for(let n of e)n.collection&&(t[n.collection]||(t[n.collection]=[]),t[n.collection].push({path:n.path,title:n.title,date:n.date,excerpt:n.excerpt,tags:n.tags,author:n.author,coverImage:n.coverImage,filePath:n.filePath,locale:n.locale,version:n.version,frontmatter:n.frontmatter}));z=`export default ${JSON.stringify(t,null,2)};`}return z}if(o===`config`){if(I===null){let{loadDirectoryMeta:e}=await import(`./meta-loader-C4Hu9RN9.mjs`);I=await e(i)}let e=I,t={base:a?.base,theme:a?.theme,i18n:a?.i18n,versions:a?.versions,siteUrl:a?.siteUrl,integrations:a?.integrations,plugins:a?.plugins?.map(e=>({name:e.name})),directoryMeta:e};return`export default ${JSON.stringify(t,null,2)};`}if(o===`entry`)return s(e,a);if(o===`mdx-components`){let e=[`tsx`,`ts`,`jsx`,`js`],t=null;for(let n of e){let e=S.resolve(i,`mdx-components.${n}`);if(C.existsSync(e)){t=e;break}}if(t){let e=r(t);return`import * as components from '${e}';
65
65
  const mdxComponents = components.default || components;
66
66
  export default mdxComponents;
67
67
  export * from '${e}';`}return`export default {};`}if(o===`layout`){let e=[`tsx`,`jsx`],t=null;for(let n of e){let e=S.resolve(i,`layout.${n}`);if(C.existsSync(e)){t=e;break}}if(t)return`import UserLayout from '${r(t)}';
68
- export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(o===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],t=null;for(let n of e){let e=S.resolve(i,`icons.${n}`);if(C.existsSync(e)){t=e;break}}return t?`import * as icons from '${r(t)}';\nexport default icons;`:`export default {};`}if(o===`search`){if(!L){let e=Te(await h(i,a));L=`export default ${JSON.stringify(e,null,2)};`}return L}if(o===`client`){let e=E,t=``;for(;e&&e!==S.parse(e).root;){let n=S.join(e,`src/client/index.ts`),i=S.join(e,`dist/client/index.mjs`),a=S.join(e,`client/index.ts`);if(C.existsSync(n)){t=r(n);break}if(C.existsSync(i)){t=r(i);break}if(C.existsSync(a)){t=r(a);break}e=S.dirname(e)}if(!t)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${E}`);return`export * from '${t}';`}}}}function V(e){return(t,n,r)=>{let i=e().integrations?.feedback?.custom,a=i?.endpoint||`/api/feedback`;if(!i?.enabled||t.method!==`POST`||t.url?.split(`?`)[0]!==a)return r();let o=``,s=0;t.on(`data`,e=>{if(s+=e.length,s>10240){n.statusCode=413,n.end(JSON.stringify({error:`Request body too large`})),t.destroy();return}o+=e}),t.on(`end`,async()=>{n.setHeader(`Content-Type`,`application/json`);try{let{handleFeedback:e}=await import(`./handler-Btd4t_67.mjs`).then(e=>e.n),t=await e(JSON.parse(o),process.env,{owner:i.owner,repo:i.repo,categorySlug:i.categorySlug});n.statusCode=200,n.end(JSON.stringify(t))}catch(e){n.statusCode=500;let t=e instanceof Error?e.message:`Failed to submit feedback`;n.end(JSON.stringify({error:t}))}})}}function De(e){return(t,n,r)=>{let i=t.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(S.extname(a))return r();let o=e(),s=S.resolve(o?.root||process.cwd(),o?.build?.outDir||`dist`),c=a.replace(/\/$/,``)||`/`,l=S.join(s,c,`index.html`);c!==`/`&&C.existsSync(l)&&(t.url=`${c}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()}}const Oe=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function ke(e,t,n){let r=process.env.NODE_ENV===`production`;e.middlewares.use(V(n)),e.middlewares.use((e,t,i)=>{r&&Object.entries(se).forEach(([e,n])=>{t.setHeader(e,n)});let a=n();a.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,ce(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(t,r,i)=>{let a=t.url?.split(`?`)[0]||`/`,o=t.headers.accept||``,s=n();if(o.includes(`text/html`)&&!Oe.test(a)){let n=D(s);n=P(n,s),n=await e.transformIndexHtml(t.url||`/`,n),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(n);return}i()})}function Ae(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=32){let n=i.slice(t,t+32);await Promise.allSettled(n.map(t=>{let n=S.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},0)}const je=[`tsx`,`jsx`],H=[`tsx`,`ts`,`jsx`,`js`];function Me(e,t){let n=g.map(e=>S.resolve(process.cwd(),e)),r=je.map(e=>S.resolve(t,`layout.${e}`)),i=H.map(e=>S.resolve(t,`mdx-components.${e}`)),a=H.map(e=>S.resolve(t,`pages-external/index.${e}`)),o=H.map(e=>S.resolve(t,`icons.${e}`));e.watcher.add([...n,...i,...r,...a,...o])}const U=new Map;function W(e){let{lastUpdated:t,...n}=e;return T.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function Ne(e){try{let{data:n}=await t(e);return W(n)}catch{return``}}function Pe(e){let t=U.get(e);if(t===void 0){let n=f.getStale(e);n?.route?.frontmatter&&(t=W(n.route.frontmatter),U.set(e,t))}return t}function Fe(e,t){U.set(e,t)}function Ie(e){U.delete(e)}const G=[`tsx`,`ts`,`jsx`,`js`];function K(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function Le(t,n,i,a){let o=new Map,s=i.toLowerCase(),c=async(i,c)=>{try{let l=r(i);if(g.some(e=>l.endsWith(e))){t.restart();return}if(G.some(e=>l.endsWith(`mdx-components.${e}`))){_(a(),n),K(t,`mdx-components.tsx`),t.ws.send({type:`full-reload`});return}if(G.some(e=>l.endsWith(`icons.${e}`))){K(t,`icons.tsx`),t.ws.send({type:`full-reload`});return}if(l.endsWith(`layout.tsx`)||l.endsWith(`layout.jsx`)){K(t,`layout.tsx`),t.ws.send({type:`full-reload`});return}if(l.includes(`/pages-external/`)||l.includes(`\\pages-external\\`)){K(t,`entry`),t.ws.send({type:`full-reload`});return}if(!l.toLowerCase().startsWith(s))return;let u=l.endsWith(`meta.json`)||l.endsWith(`_meta.json`);if(!u&&!e(l))return;if(c===`add`||c===`unlink`||u){c===`unlink`&&Ie(i),m(),B();let e=a();_(e,n),K(t,`config`),K(t,`routes`),K(t,`search`),K(t,`collections`),b(n,process.cwd(),e).catch(e=>{w(`Failed to update link tree:`,e)}),t.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:e?.theme,i18n:e?.i18n,versions:e?.versions,siteUrl:e?.siteUrl}}),t.ws.send({type:`full-reload`});return}o.has(l)&&clearTimeout(o.get(l)),o.set(l,setTimeout(async()=>{o.delete(l);try{let e=Pe(i),a=await Ne(i);if(Fe(i,a),p(i),e!==void 0&&e!==a){B(),K(t,`routes`),K(t,`search`),K(t,`collections`),t.ws.send({type:`full-reload`});return}let o=r(S.relative(n,i)),s=t.moduleGraph.getModulesByFile(l);if(!s||s.size===0){let e=l.toLowerCase();for(let[n,r]of t.moduleGraph.fileToModulesMap.entries())try{if(decodeURIComponent(n).toLowerCase()===e){s=r;break}}catch{}}if(s&&s.size>0)for(let e of s)t.moduleGraph.invalidateModule(e);else{t.ws.send({type:`full-reload`});return}t.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:l,relPath:o}})}catch(e){w(`HMR error processing content change:`,e)}},150))}catch(e){w(`HMR error during ${c} event:`,e)}};t.watcher.on(`add`,e=>c(e,`add`)),t.watcher.on(`unlink`,e=>c(e,`unlink`)),t.watcher.on(`change`,e=>c(e,`change`))}function Re(t){let n=t.toLowerCase();return({file:t})=>{let r=t.toLowerCase();if(r.startsWith(n)&&(e(t)||r.endsWith(`meta.json`)))return[]}}function ze(e,t,n,r,i){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let a=i();await a?.runHook(`beforeDev`),b(e,process.cwd(),n()).catch(e=>{w(`Failed to generate initial link tree:`,e)}),Ae(r,e,n),ke(r,e,n),Me(r,e),Le(r,e,t,n),await a?.runHook(`afterDev`)},hotUpdate:Re(t)}}const q=new d(`mdx`);function J(e){let t=oe(e);return async e=>{let n=await t.getHighlighter();o(e,y.ELEMENT,e=>{if(e.tagName!==`pre`)return;let r=e.children?.[0];if(!r||r.type!==y.ELEMENT||r.tagName!==`code`)return;let i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),o=i?i.slice(9):re.MDX_DEFAULT_LANG;if(o===`mermaid`)return;let s=ie(r.properties?.metastring||r.data?.meta||``),c=t.getOptions(o,s),l=r.children?.[0]?.value||``;try{let t=n.codeToHast(l,c),r=t.type===`root`?t.children[0]:t;e.children=r.children,e.properties={...e.properties,...r.properties,[v.HIGHLIGHTED]:`true`,[v.LANG]:o}}catch(t){w(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],ae.FALLBACK],e.properties[v.HIGHLIGHTED]=`false`,e.properties[v.LANG]=o}return s.title&&(e.properties[v.TITLE]=s.title),a})}}function Be(){return e=>{o(e,y.CODE,e=>{e.meta&&c(e,`metastring`,e.meta)})}}let Ve=!1;function He(e,t,n=fe){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[pe,me,Be,...r],rehypePlugins:[he,[J,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Ve||=(await q.load(),!0),a.buildStart&&await a.buildStart.call(this)},async load(e,n){if(e.endsWith(`.md`)||e.endsWith(`.mdx`))try{let n=C.readFileSync(e,`utf-8`),r=t?.();return r&&(n=(await r.runChain(`transformSource`,{code:n,filePath:e})).code),n}catch{return null}return a.load?a.load.call(this,e,n):null},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${T.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await q.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),q.set(o,e),{code:e,map:null}}return c},async buildEnd(){q.save(),await q.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Y=x.createRequire(import.meta.url),Ue=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`],We=[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`];function X(e=Y){try{let e=S.join(process.cwd(),`node_modules/boltdocs/package.json`);return C.existsSync(e)?x.createRequire(C.realpathSync(e)):x.createRequire(S.join(process.cwd(),`package.json`))}catch{return e}}function Z(e,t=Y){try{let n=e.split(`/`),r=e.startsWith(`@`)?n.slice(0,2).join(`/`):n[0],i=e.startsWith(`@`)?n.slice(2).join(`/`):n.slice(1).join(`/`),a=``;try{a=t.resolve(`${r}/package.json`)}catch{let e=t.resolve(r),n=S.dirname(e);for(;n&&n!==S.dirname(n);){let e=S.join(n,`package.json`);if(C.existsSync(e)){a=e;break}n=S.dirname(n)}}if(!a)throw Error();let o=S.dirname(a),s=JSON.parse(C.readFileSync(a,`utf-8`)),c=i?`./${i}`:`.`,l=s.exports?.[c]||s.exports?.[i]||``;typeof l==`object`&&l&&(l=l.import||l.default||l.require||``),!l&&!i&&(l=s.module||s.main||`index.js`);let u=S.resolve(o,l);if(C.existsSync(u))return u}catch{}return t.resolve(e)}function Q(e=Y){let t=[],n=X(e),i=new Set([n,e]);for(let e of i){for(let n of Ue)try{let r=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(n)?Z(n,e):e.resolve(n);r&&t.push(C.realpathSync(r))}catch{}for(let n of We)try{t.push(C.realpathSync(e.resolve(n)))}catch{}}return Array.from(new Set(t)).map(e=>r(e))}const $=x.createRequire(import.meta.url),Ge=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`];function Ke(e={},t){let n=S.resolve(process.cwd(),e.docsDir||`docs`),a=r(n),o=t,s,c=!1,l,d=[];if(o?.plugins?.length)try{let{version:e}=JSON.parse(C.readFileSync(S.resolve(E,`../../../package.json`),`utf-8`)),t=i(o.plugins,e);o.plugins=t,l=new u(t,o),d=t.flatMap(e=>e.vitePlugins||[])}catch{}let f=()=>o,p=e=>{o=e},m=()=>s,g=()=>l;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){c=t.command===`build`;let r=!!(t.isSsrBuild||e.build?.ssr);if(Object.assign(process.env,ue(t.mode,e.envDir||process.cwd(),``)),!o){o=await te(n);let e=(await h(n,o)).map(e=>e.path),t=(o.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t);let r=ee(n,o);for(let t of r)e.includes(t)||e.push(t);_(o,n,void 0,e),ne(e)}import(`./shiki-adapter-CXEGRnjr.mjs`).then(e=>e.r).then(({getShikiAdapter:e})=>{e(o).getHighlighter().catch(()=>{})}).catch(()=>{});let{version:a}=await import(`./package-BovY3RQH.mjs`),s=i(o.plugins||[],a);return o.plugins=s,l=new u(s,o),d=s.flatMap(e=>e.vitePlugins||[]),c&&await l.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:c},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:Z(`react-router-dom`)},{find:`react-helmet-async`,replacement:Z(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:Z(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...r?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`react-fast-compare`,`invariant`,...Q($)],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){s=e},resolveId(e,t,n){let r=Ge.find(t=>e===t||e.startsWith(`${t}/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,S.sep)}/`));if(r&&n?.ssr&&!S.isAbsolute(e)&&r!==`react`&&r!==`react-dom`){let t=X($),n=e;try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,t):t.resolve(e)}catch{try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,$):$.resolve(e)}catch{}}try{n=C.realpathSync(n)}catch{}return{id:n,external:!0}}return null},transformIndexHtml:{order:`pre`,handler:e=>P(e,o)},async closeBundle(){!c||s?.build?.ssr||(await l?.runHook(`afterBuild`),await l?.runHook(`buildEnd`))},configurePreviewServer(e){e.middlewares.use(V(f)),e.middlewares.use(De(m))}},Ee(e,f,m,n),ze(n,a,f,p,g),He(o,g),de({includePublic:!0}),...d]}export{Ke as boltdocsPlugin,X as getBaseRequire,Q as getExternalAbsolutePaths,Z as resolveEsm};
68
+ export default UserLayout;`;throw Error(`[Boltdocs] Layout file not found. A 'layout.tsx' or 'layout.jsx' file is mandatory in your docs directory. Please create one to define your site structure.`)}if(o===`icons`){let e=[`tsx`,`jsx`,`ts`,`js`],t=null;for(let n of e){let e=S.resolve(i,`icons.${n}`);if(C.existsSync(e)){t=e;break}}return t?`import * as icons from '${r(t)}';\nexport default icons;`:`export default {};`}if(o===`search`){if(!L){let e=Te(await h(i,a));L=`export default ${JSON.stringify(e,null,2)};`}return L}if(o===`client`){let e=E,t=``;for(;e&&e!==S.parse(e).root;){let n=S.join(e,`src/client/index.ts`),i=S.join(e,`dist/client/index.mjs`),a=S.join(e,`client/index.ts`);if(C.existsSync(n)){t=r(n);break}if(C.existsSync(i)){t=r(i);break}if(C.existsSync(a)){t=r(a);break}e=S.dirname(e)}if(!t)throw Error(`[boltdocs] Could not resolve boltdocs/client entry point starting from ${E}`);return`export * from '${t}';`}}}}function V(e){return(t,n,r)=>{let i=e().integrations?.feedback?.custom,a=i?.endpoint||`/api/feedback`;if(!i?.enabled||t.method!==`POST`||t.url?.split(`?`)[0]!==a)return r();let o=``,s=0;t.on(`data`,e=>{if(s+=e.length,s>10240){n.statusCode=413,n.end(JSON.stringify({error:`Request body too large`})),t.destroy();return}o+=e}),t.on(`end`,async()=>{n.setHeader(`Content-Type`,`application/json`);try{let{handleFeedback:e}=await import(`./handler-Btd4t_67.mjs`).then(e=>e.n),t=await e(JSON.parse(o),process.env,{owner:i.owner,repo:i.repo,categorySlug:i.categorySlug});n.statusCode=200,n.end(JSON.stringify(t))}catch(e){n.statusCode=500;let t=e instanceof Error?e.message:`Failed to submit feedback`;n.end(JSON.stringify({error:t}))}})}}function De(e){return(t,n,r)=>{let i=t.url||`/`,a=i.split(`?`)[0].split(`#`)[0];if(S.extname(a))return r();let o=e(),s=S.resolve(o?.root||process.cwd(),o?.build?.outDir||`dist`),c=a.replace(/\/$/,``)||`/`,l=S.join(s,c,`index.html`);c!==`/`&&C.existsSync(l)&&(t.url=`${c}/index.html${i.includes(`?`)?`?${i.split(`?`)[1]}`:``}`),r()}}const Oe=/\.(js|css|png|jpe?g|gif|svg|ico|webp|woff2?|ttf|otf|mp4|webm|ogg|mp3|wav|flac|aac|pdf|zip|gz|map|json)$/i;function ke(e,t,n){let r=process.env.NODE_ENV===`production`;e.middlewares.use(V(n)),e.middlewares.use((e,t,i)=>{r&&Object.entries(se).forEach(([e,n])=>{t.setHeader(e,n)});let a=n();a.security?.enableCSP&&t.setHeader(`Content-Security-Policy`,ce(a)),i()}),e.middlewares.use((e,t,n)=>{if(e.url===`/robots.txt`){n();return}n()}),e.middlewares.use(async(t,r,i)=>{let a=t.url?.split(`?`)[0]||`/`,o=t.headers.accept||``,s=n();if(o.includes(`text/html`)&&!Oe.test(a)){let n=D(s);n=P(n,s),n=await e.transformIndexHtml(t.url||`/`,n),r.statusCode=200,r.setHeader(`Content-Type`,`text/html`),r.end(n);return}i()})}function Ae(e,t,n){setTimeout(async()=>{try{let{generateRoutes:r}=await import(`./routes-CyrnmVuG.mjs`).then(e=>e.i),i=(await r(t,n())).filter(e=>e.filePath).map(e=>e.filePath);for(let t=0;t<i.length;t+=32){let n=i.slice(t,t+32);await Promise.allSettled(n.map(t=>{let n=S.relative(process.cwd(),t).replace(/\\/g,`/`),r=n.startsWith(`/`)?n:`/${n}`;return e.transformRequest(r)}))}}catch{}},0)}const je=[`tsx`,`jsx`],H=[`tsx`,`ts`,`jsx`,`js`];function Me(e,t){let n=g.map(e=>S.resolve(process.cwd(),e)),r=je.map(e=>S.resolve(t,`layout.${e}`)),i=H.map(e=>S.resolve(t,`mdx-components.${e}`)),a=H.map(e=>S.resolve(t,`pages-external/index.${e}`)),o=H.map(e=>S.resolve(t,`icons.${e}`));e.watcher.add([...n,...i,...r,...a,...o])}const U=new Map;function W(e){let{lastUpdated:t,...n}=e;return T.createHash(`md5`).update(JSON.stringify(n)).digest(`hex`)}async function Ne(e){try{let{data:n}=await t(e);return W(n)}catch{return``}}function Pe(e){let t=U.get(e);if(t===void 0){let n=f.getStale(e);n?.route?.frontmatter&&(t=W(n.route.frontmatter),U.set(e,t))}return t}function Fe(e,t){U.set(e,t)}function Ie(e){U.delete(e)}const G=[`tsx`,`ts`,`jsx`,`js`];function K(e,t){let n=e.moduleGraph.getModuleById(`\0virtual:boltdocs-${t}.ts`);n&&e.moduleGraph.invalidateModule(n)}function Le(t,n,i,a){let o=new Map,s=i.toLowerCase(),c=async(i,c)=>{try{let l=r(i);if(g.some(e=>l.endsWith(e))){t.restart();return}if(G.some(e=>l.endsWith(`mdx-components.${e}`))){_(a(),n),K(t,`mdx-components.tsx`),t.ws.send({type:`full-reload`});return}if(G.some(e=>l.endsWith(`icons.${e}`))){K(t,`icons.tsx`),t.ws.send({type:`full-reload`});return}if(l.endsWith(`layout.tsx`)||l.endsWith(`layout.jsx`)){K(t,`layout.tsx`),t.ws.send({type:`full-reload`});return}if(l.includes(`/pages-external/`)||l.includes(`\\pages-external\\`)){K(t,`entry`),t.ws.send({type:`full-reload`});return}if(!l.toLowerCase().startsWith(s))return;let u=l.endsWith(`meta.json`)||l.endsWith(`_meta.json`);if(!u&&!e(l))return;if(c===`add`||c===`unlink`||u){c===`unlink`&&Ie(i),m(),B();let e=a();_(e,n),K(t,`config`),K(t,`routes`),K(t,`search`),K(t,`collections`),b(n,process.cwd(),e).catch(e=>{w(`Failed to update link tree:`,e)}),t.ws.send({type:`custom`,event:`boltdocs:config-update`,data:{theme:e?.theme,i18n:e?.i18n,versions:e?.versions,siteUrl:e?.siteUrl}}),t.ws.send({type:`full-reload`});return}o.has(l)&&clearTimeout(o.get(l)),o.set(l,setTimeout(async()=>{o.delete(l);try{let e=Pe(i),a=await Ne(i);if(Fe(i,a),p(i),e!==void 0&&e!==a){B(),K(t,`routes`),K(t,`search`),K(t,`collections`),t.ws.send({type:`full-reload`});return}let o=r(S.relative(n,i)),s=t.moduleGraph.getModulesByFile(l);if(!s||s.size===0){let e=l.toLowerCase();for(let[n,r]of t.moduleGraph.fileToModulesMap.entries())try{if(decodeURIComponent(n).toLowerCase()===e){s=r;break}}catch{}}if(s&&s.size>0)for(let e of s)t.moduleGraph.invalidateModule(e);else{t.ws.send({type:`full-reload`});return}t.ws.send({type:`custom`,event:`boltdocs:mdx-update`,data:{file:l,relPath:o}})}catch(e){w(`HMR error processing content change:`,e)}},150))}catch(e){w(`HMR error during ${c} event:`,e)}};t.watcher.on(`add`,e=>c(e,`add`)),t.watcher.on(`unlink`,e=>c(e,`unlink`)),t.watcher.on(`change`,e=>c(e,`change`))}function Re(t){let n=t.toLowerCase();return({file:t})=>{let r=t.toLowerCase();if(r.startsWith(n)&&(e(t)||r.endsWith(`meta.json`)))return[]}}function ze(e,t,n,r,i){return{name:`vite-plugin-boltdocs-dev-server`,apply:`serve`,async configureServer(r){let a=i();await a?.runHook(`beforeDev`),b(e,process.cwd(),n()).catch(e=>{w(`Failed to generate initial link tree:`,e)}),Ae(r,e,n),ke(r,e,n),Me(r,e),Le(r,e,t,n),await a?.runHook(`afterDev`)},hotUpdate:Re(t)}}const q=new d(`mdx`);function J(e){let t=oe(e);return async e=>{let n=await t.getHighlighter();o(e,y.ELEMENT,e=>{if(e.tagName!==`pre`)return;let r=e.children?.[0];if(!r||r.type!==y.ELEMENT||r.tagName!==`code`)return;let i=(r.properties?.className||[]).find(e=>e.startsWith(`language-`)),o=i?i.slice(9):re.MDX_DEFAULT_LANG;if(o===`mermaid`)return;let s=ie(r.properties?.metastring||r.data?.meta||``),c=t.getOptions(o,s),l=r.children?.[0]?.value||``;try{let t=n.codeToHast(l,c),r=t.type===`root`?t.children[0]:t;e.children=r.children,e.properties={...e.properties,...r.properties,[v.HIGHLIGHTED]:`true`,[v.LANG]:o}}catch(t){w(`[rehypeShiki] Failed to highlight code block:`,t),e.properties=e.properties||{},e.properties.className=[...e.properties.className||[],ae.FALLBACK],e.properties[v.HIGHLIGHTED]=`false`,e.properties[v.LANG]=o}return s.title&&(e.properties[v.TITLE]=s.title),a})}}function Be(){return e=>{o(e,y.CODE,e=>{e.meta&&c(e,`metastring`,e.meta)})}}let Ve=!1;function He(e,t,n=fe){let r=e?.plugins?.flatMap(e=>e.remarkPlugins||[])||[],i=e?.plugins?.flatMap(e=>e.rehypePlugins||[])||[],a=n({remarkPlugins:[pe,me,Be,...r],rehypePlugins:[he,[J,e],...i],jsxRuntime:`automatic`});return{...a,name:`vite-plugin-boltdocs-mdx`,async buildStart(){Ve||=(await q.load(),!0),a.buildStart&&await a.buildStart.call(this)},async load(e,n){if(e.endsWith(`.md`)||e.endsWith(`.mdx`))try{let n=C.readFileSync(e,`utf-8`),r=t?.();return r&&(n=(await r.runChain(`transformSource`,{code:n,filePath:e})).code),n}catch{return null}return a.load?a.load.call(this,e,n):null},async transform(e,n,r){let[i]=n.split(`?`);if(!i.endsWith(`.md`)&&!i.endsWith(`.mdx`))return a.transform?.call(this,e,n,r);let o=`${i}:${T.createHash(`md5`).update(e).digest(`hex`)}:${process.env.NODE_ENV===`production`?`prod`:`dev`}:v3`,s=await q.getAsync(o);if(s)return{code:s,map:null};let c=await a.transform.call(this,e,i,r);if(c&&typeof c==`object`&&c.code){let e=c.code,n=t?.();return n&&(e=(await n.runChain(`transformMdx`,{code:e,filePath:i})).code),q.set(o,e),{code:e,map:null}}return c},async buildEnd(){q.save(),await q.flush(),a.buildEnd&&await a.buildEnd.call(this)}}}const Y=x.createRequire(import.meta.url),Ue=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`,`invariant`],We=[`react/jsx-runtime`,`react/jsx-dev-runtime`,`react-dom/client`];function X(e=Y){try{let e=S.join(process.cwd(),`node_modules/boltdocs/package.json`);return C.existsSync(e)?x.createRequire(C.realpathSync(e)):x.createRequire(S.join(process.cwd(),`package.json`))}catch{return e}}function Z(e,t=Y){try{let n=e.split(`/`),r=e.startsWith(`@`)?n.slice(0,2).join(`/`):n[0],i=e.startsWith(`@`)?n.slice(2).join(`/`):n.slice(1).join(`/`),a=``;try{a=t.resolve(`${r}/package.json`)}catch{let e=t.resolve(r),n=S.dirname(e);for(;n&&n!==S.dirname(n);){let e=S.join(n,`package.json`);if(C.existsSync(e)){a=e;break}n=S.dirname(n)}}if(!a)throw Error();let o=S.dirname(a),s=JSON.parse(C.readFileSync(a,`utf-8`)),c=i?`./${i}`:`.`,l=s.exports?.[c]||s.exports?.[i]||``;typeof l==`object`&&l&&(l=l.import||l.default||l.require||``),!l&&!i&&(l=s.module||s.main||`index.js`);let u=S.resolve(o,l);if(C.existsSync(u))return u}catch{}return t.resolve(e)}function Q(e=Y){let t=[],n=X(e),i=new Set([n,e]);for(let e of i){for(let n of Ue)try{let r=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(n)?Z(n,e):e.resolve(n);r&&t.push(C.realpathSync(r))}catch{}for(let n of We)try{t.push(C.realpathSync(e.resolve(n)))}catch{}}return Array.from(new Set(t)).map(e=>r(e))}const $=x.createRequire(import.meta.url),Ge=[`react`,`react-dom`,`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`];function Ke(e={},t){let n=S.resolve(process.cwd(),e.docsDir||`docs`),a=r(n),o=t,s,c=!1,l,d=[];if(o?.plugins?.length)try{let{version:e}=JSON.parse(C.readFileSync(S.resolve(E,`../../../package.json`),`utf-8`)),t=i(o.plugins,e);o.plugins=t,l=new u(t,o),d=t.flatMap(e=>e.vitePlugins||[])}catch{}let f=()=>o,p=e=>{o=e},m=()=>s,g=()=>l;return[{name:`vite-plugin-boltdocs`,enforce:`pre`,async config(e,t){c=t.command===`build`;let r=!!(t.isSsrBuild||e.build?.ssr);if(Object.assign(process.env,ue(t.mode,e.envDir||process.cwd(),``)),!o){o=await te(n);let e=(await h(n,o)).map(e=>e.path),t=(o.base||`/docs`).replace(/\/$/,``);e.includes(t)||e.push(t);let r=ee(n,o);for(let t of r)e.includes(t)||e.push(t);_(o,n,void 0,e),ne(e)}import(`./shiki-adapter-CXEGRnjr.mjs`).then(e=>e.r).then(({getShikiAdapter:e})=>{e(o).getHighlighter().catch(()=>{})}).catch(()=>{});let{version:a}=await import(`./package-_dCCKVvG.mjs`),s=i(o.plugins||[],a);return o.plugins=s,l=new u(s,o),d=s.flatMap(e=>e.vitePlugins||[]),c&&await l.runHook(`beforeBuild`),{ssgOptions:{entry:`boltdocs/entry`,htmlEntry:`index.html`,dirStyle:`flat`,includeAllRoutes:!0,mock:!0,script:`async`,beastiesOptions:{preload:`media`}},build:{ssrManifest:c},optimizeDeps:{include:[`react`,`react-dom`,`react-dom/client`,`react-router-dom`,`react-helmet-async`,`react-fast-compare`,`invariant`],exclude:[`boltdocs`,`boltdocs/client`]},resolve:{alias:[{find:`react-router-dom`,replacement:Z(`react-router-dom`)},{find:`react-helmet-async`,replacement:Z(`react-helmet-async`)},{find:`@bdocs/ssg`,replacement:Z(`@bdocs/ssg`)}],dedupe:[`react`,`react-dom`,...r?[]:[`react-router-dom`,`react-helmet-async`,`@bdocs/ssg`]]},ssr:{external:[`react`,`react-dom`,`react-helmet-async`,`@bdocs/ssg`,`invariant`,...Q($)],optimizeDeps:{include:[`react-fast-compare`,`invariant`]},noExternal:[`react-router-dom`]}}},configResolved(e){s=e},resolveId(e,t,n){let r=Ge.find(t=>e===t||e.startsWith(`${t}/`)||e.includes(`/node_modules/${t}/`)||t.startsWith(`@`)&&e.includes(`/node_modules/${t.replace(`/`,S.sep)}/`));if(r&&n?.ssr&&!S.isAbsolute(e)&&r!==`react`&&r!==`react-dom`){let t=X($),n=e;try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,t):t.resolve(e)}catch{try{n=[`@bdocs/ssg`,`react-router-dom`,`react-helmet-async`].includes(r)?Z(e,$):$.resolve(e)}catch{}}try{n=C.realpathSync(n)}catch{}return{id:n,external:!0}}return null},transformIndexHtml:{order:`pre`,handler:e=>P(e,o)},async closeBundle(){!c||s?.build?.ssr||(await l?.runHook(`afterBuild`),await l?.runHook(`buildEnd`))},configurePreviewServer(e){e.middlewares.use(V(f)),e.middlewares.use(De(m))}},Ee(e,f,m,n),ze(n,a,f,p,g),He(o,g),de({includePublic:!0}),...d]}export{Ke as boltdocsPlugin,X as getBaseRequire,Q as getExternalAbsolutePaths,Z as resolveEsm};
@@ -3,6 +3,6 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- import { t as SearchDialog } from "./search-dialog-DoGobmuG.js";
6
+ import { t as SearchDialog } from "./search-dialog-DDopgbKM.js";
7
7
 
8
8
  export { SearchDialog };
@@ -3,6 +3,6 @@
3
3
  * Copyright (c) 2026 Jesus Alcala
4
4
  * Licensed under the MIT License.
5
5
  */
6
- const require_search_dialog = require('./search-dialog-CwNh8lIN.cjs');
6
+ const require_search_dialog = require('./search-dialog-Cx7aGW3U.cjs');
7
7
 
8
8
  exports.SearchDialog = require_search_dialog.SearchDialog;
@@ -46,7 +46,8 @@ function InternalErrorBoundary({ children, fallback }) {
46
46
  //#region src/client/hooks/use-search.ts
47
47
  function useSearch(routes) {
48
48
  const { currentLocale, currentVersion } = require_icons_dev.useRoutes();
49
- const algoliaConfig = require_icons_dev.useConfig().integrations?.search?.algolia;
49
+ const config = require_icons_dev.useConfig();
50
+ const algoliaConfig = config.integrations?.search?.algolia;
50
51
  const [isOpen, setIsOpen] = (0, react.useState)(false);
51
52
  const [query, setQuery] = (0, react.useState)("");
52
53
  const [index, setIndex] = (0, react.useState)(null);
@@ -164,9 +165,9 @@ function useSearch(routes) {
164
165
  setQuery,
165
166
  list: (0, react.useMemo)(() => {
166
167
  if (!query) return routes.filter((r) => {
167
- const localeMatch = !currentLocale || r.locale === currentLocale;
168
- const versionMatch = !currentVersion || r.version === currentVersion;
169
- return localeMatch && versionMatch;
168
+ const routeLocale = r.locale || config.i18n?.defaultLocale;
169
+ const routeVersion = r.version || config.versions?.defaultVersion;
170
+ return (!currentLocale || routeLocale === currentLocale) && (!currentVersion || routeVersion === currentVersion);
170
171
  }).slice(0, 10).map((r) => ({
171
172
  id: r.path,
172
173
  title: r.title,
@@ -185,9 +186,9 @@ function useSearch(routes) {
185
186
  for (const id of searchResults) {
186
187
  const doc = searchDataMap.get(id);
187
188
  if (!doc) continue;
188
- const localeMatch = !currentLocale || doc.locale === currentLocale;
189
- const versionMatch = !currentVersion || doc.version === currentVersion;
190
- if (!localeMatch || !versionMatch) continue;
189
+ const docLocale = doc.locale || config.i18n?.defaultLocale;
190
+ const docVersion = doc.version || config.versions?.defaultVersion;
191
+ if (!(!currentLocale || docLocale === currentLocale) || !(!currentVersion || docVersion === currentVersion)) continue;
191
192
  if (seen.has(doc.url)) continue;
192
193
  seen.add(doc.url);
193
194
  results.push({
@@ -208,7 +209,8 @@ function useSearch(routes) {
208
209
  routes,
209
210
  searchDataMap,
210
211
  algoliaConfig,
211
- algoliaResults
212
+ algoliaResults,
213
+ config
212
214
  ]),
213
215
  handleSelect,
214
216
  input: {
@@ -45,7 +45,8 @@ function InternalErrorBoundary({ children, fallback }) {
45
45
  //#region src/client/hooks/use-search.ts
46
46
  function useSearch(routes) {
47
47
  const { currentLocale, currentVersion } = useRoutes();
48
- const algoliaConfig = useConfig().integrations?.search?.algolia;
48
+ const config = useConfig();
49
+ const algoliaConfig = config.integrations?.search?.algolia;
49
50
  const [isOpen, setIsOpen] = useState(false);
50
51
  const [query, setQuery] = useState("");
51
52
  const [index, setIndex] = useState(null);
@@ -163,9 +164,9 @@ function useSearch(routes) {
163
164
  setQuery,
164
165
  list: useMemo(() => {
165
166
  if (!query) return routes.filter((r) => {
166
- const localeMatch = !currentLocale || r.locale === currentLocale;
167
- const versionMatch = !currentVersion || r.version === currentVersion;
168
- return localeMatch && versionMatch;
167
+ const routeLocale = r.locale || config.i18n?.defaultLocale;
168
+ const routeVersion = r.version || config.versions?.defaultVersion;
169
+ return (!currentLocale || routeLocale === currentLocale) && (!currentVersion || routeVersion === currentVersion);
169
170
  }).slice(0, 10).map((r) => ({
170
171
  id: r.path,
171
172
  title: r.title,
@@ -184,9 +185,9 @@ function useSearch(routes) {
184
185
  for (const id of searchResults) {
185
186
  const doc = searchDataMap.get(id);
186
187
  if (!doc) continue;
187
- const localeMatch = !currentLocale || doc.locale === currentLocale;
188
- const versionMatch = !currentVersion || doc.version === currentVersion;
189
- if (!localeMatch || !versionMatch) continue;
188
+ const docLocale = doc.locale || config.i18n?.defaultLocale;
189
+ const docVersion = doc.version || config.versions?.defaultVersion;
190
+ if (!(!currentLocale || docLocale === currentLocale) || !(!currentVersion || docVersion === currentVersion)) continue;
190
191
  if (seen.has(doc.url)) continue;
191
192
  seen.add(doc.url);
192
193
  results.push({
@@ -207,7 +208,8 @@ function useSearch(routes) {
207
208
  routes,
208
209
  searchDataMap,
209
210
  algoliaConfig,
210
- algoliaResults
211
+ algoliaResults,
212
+ config
211
213
  ]),
212
214
  handleSelect,
213
215
  input: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "boltdocs",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "A lightweight documentation generator for React projects.",
5
5
  "main": "dist/node/index.mjs",
6
6
  "module": "dist/node/index.mjs",
@@ -92,9 +92,9 @@
92
92
  "unist-util-visit": "5.1.0",
93
93
  "vite": "7.0.0 || 8.0.0",
94
94
  "zod": "4.3.6",
95
- "@bdocs/plugin-image-optimizer": "0.2.1",
96
95
  "@bdocs/parser": "1.0.0",
97
- "@bdocs/ssg": "0.1.1"
96
+ "@bdocs/ssg": "0.1.1",
97
+ "@bdocs/plugin-image-optimizer": "0.2.1"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "react": "19.0.0",