@bdocs/ssg 0.4.1 → 0.4.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.
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-C-zNXMYg.mjs";var t=e({DEFAULT_CRITICAL_CSS_MAX_SIZE:()=>r,createZigCrittersEngine:()=>o,getBeasties:()=>n,getZigCritters:()=>a,resolveCriticalCssMaxSize:()=>i});async function n(e,t={}){try{let n=await import(`beasties`);return new(n.default||n)({path:e,logLevel:`warn`,external:!0,inlineFonts:!0,preloadFonts:!0,...t})}catch{return}}const r=32*1024;function i(e){return typeof e==`number`&&e>=0?e:r}async function a(){try{let e=await import(`@bdocs/zig-critters`),t=e.extractCriticalCss||e.default?.extractCriticalCss;return t?{extractCriticalCss:t,getEngineIdentity:()=>{let t=e.getEngineIdentity||e.default?.getEngineIdentity;return t?t().then(e=>String(e)).catch(()=>`unknown`):Promise.resolve(`unknown`)}}:void 0}catch{return}}async function o(e={}){try{let{createZigCrittersPool:t}=await import(`./zig-pool-C14JyXVw.mjs`),n=await t(e);if(n){let e=await a().then(e=>e?.getEngineIdentity());return{extractCriticalCss:(e,t,r)=>n.extractCriticalCss(e,t,r),getEngineIdentity:async()=>e??`unknown`,dispose:()=>n.dispose()}}}catch{}return a()}export{i,t as n,n as r,o as t};
@@ -0,0 +1 @@
1
+ var e=require(`./chunk-D-qHiVGv.cjs`).t({DEFAULT_CRITICAL_CSS_MAX_SIZE:()=>n,createZigCrittersEngine:()=>a,getBeasties:()=>t,getZigCritters:()=>i,resolveCriticalCssMaxSize:()=>r});async function t(e,t={}){try{let n=await import(`beasties`);return new(n.default||n)({path:e,logLevel:`warn`,external:!0,inlineFonts:!0,preloadFonts:!0,...t})}catch{return}}const n=32*1024;function r(e){return typeof e==`number`&&e>=0?e:n}async function i(){try{let e=await import(`@bdocs/zig-critters`),t=e.extractCriticalCss||e.default?.extractCriticalCss;return t?{extractCriticalCss:t,getEngineIdentity:()=>{let t=e.getEngineIdentity||e.default?.getEngineIdentity;return t?t().then(e=>String(e)).catch(()=>`unknown`):Promise.resolve(`unknown`)}}:void 0}catch{return}}async function a(e={}){try{let{createZigCrittersPool:t}=await Promise.resolve().then(()=>require(`./zig-pool-DumgDn4A.cjs`)),n=await t(e);if(n){let e=await i().then(e=>e?.getEngineIdentity());return{extractCriticalCss:(e,t,r)=>n.extractCriticalCss(e,t,r),getEngineIdentity:async()=>e??`unknown`,dispose:()=>n.dispose()}}}catch{}return i()}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react-helmet-async`);t=e.t(t);let n=require(`react/jsx-runtime`),r=require(`react-dom`);r=e.t(r,1);let i=require(`react-dom/client`),a=require(`react`);const{version:o,render:s,hydrate:c}={...r},l=Number((o||``).split(`.`)[0])>17;function u(e,t,n={}){let{useLegacyRender:r}=n;r||!l?s(e,t):(0,i.createRoot)(t).render(e)}function d(e,t,n={}){let{useLegacyRender:r}=n;r||!l?c(e,t):(0,i.hydrateRoot)(t,e)}function f(e){return document.readyState===`loading`?new Promise(t=>{document.addEventListener(`DOMContentLoaded`,()=>t(e))}):Promise.resolve(e)}function p(e){try{return JSON.parse(e||`{}`)}catch(e){return console.error(`On state deserialization - ${e instanceof Error?e.message:String(e)}`),{}}}function m(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{t(!0)},[]),e}function h({children:e,fallback:t}){if(m()){if(typeof e!=`function`&&process.env.NODE_ENV===`development`)throw Error(`vite-react-ssg error: The children of <ClientOnly> must be a "render function", e.g. <ClientOnly>{() => <span>{window.location.href}</span>}</ClientOnly>.
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-D-qHiVGv.cjs`);let t=require(`react-helmet-async`);t=e.n(t);let n=require(`react/jsx-runtime`),r=require(`react-dom`);r=e.n(r,1);let i=require(`react-dom/client`),a=require(`react`);const{version:o,render:s,hydrate:c}={...r},l=Number((o||``).split(`.`)[0])>17;function u(e,t,n={}){let{useLegacyRender:r}=n;r||!l?s(e,t):(0,i.createRoot)(t).render(e)}function d(e,t,n={}){let{useLegacyRender:r}=n;r||!l?c(e,t):(0,i.hydrateRoot)(t,e)}function f(e){return document.readyState===`loading`?new Promise(t=>{document.addEventListener(`DOMContentLoaded`,()=>t(e))}):Promise.resolve(e)}function p(e){try{return JSON.parse(e||`{}`)}catch(e){return console.error(`On state deserialization - ${e instanceof Error?e.message:String(e)}`),{}}}function m(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{t(!0)},[]),e}function h({children:e,fallback:t}){if(m()){if(typeof e!=`function`&&process.env.NODE_ENV===`development`)throw Error(`vite-react-ssg error: The children of <ClientOnly> must be a "render function", e.g. <ClientOnly>{() => <span>{window.location.href}</span>}</ClientOnly>.
2
2
  Current type: ${(0,a.isValidElement)(e)?`React element`:typeof e}`);return(0,n.jsx)(n.Fragment,{children:e?.()})}return t??null}const g=t,_=g.Helmet||g.default?.Helmet||(()=>null);function v(e){return(0,n.jsx)(_,{...e})}const{HelmetProvider:y}=t;function b(e,t,r={}){let{transformState:i,rootContainer:a=`#root`,ssrWhenDev:o,getStyleCollector:s=null}=r;process.env.NODE_ENV===`development`&&o!==void 0&&console.warn("[vite-react-ssg] `ssrWhenDev` option is no longer needed. If you want to use csr, just replace `vite-react-ssg dev` with `vite`.");let c=typeof window<`u`;async function l(n=!1,r){let a=[],o={isClient:c,onSSRAppRendered:n?()=>{}:e=>a.push(e),triggerOnSSRAppRendered:()=>Promise.all(a.map(e=>e())),initialState:{},transformState:i,routePath:r,getStyleCollector:s,routes:Array.isArray(e)?e:e?.routes||[],routerOptions:void 0,base:`/`,app:e,routerType:`single-page`};o.RouteRenderer=e?.RouteRenderer,o.matchRouteBranch=e?.matchRouteBranch,o.matchRouteBranchWithParams=e?.matchRouteBranchWithParams,o.resolveRouteBranch=e?.resolveRouteBranch,n&&(await f(),o.initialState=i?.(window.__INITIAL_STATE__||{})||p(window.__INITIAL_STATE__)),await t?.(o);let l=o.initialState;return{...o,initialState:l}}return c&&(async()=>{let t=typeof a==`string`?document.querySelector(a):a;if(!t){typeof $jsdom>`u`&&console.warn(`[vite-react-ssg] Root container not found.`);return}let i=await l(!0);window.__VITE_REACT_SSG_CONTEXT__=i;let o=e,s=o.RouteRenderer,c=o.matchRouteBranch,f=o.resolveRouteBranch,p=e?.routes||(Array.isArray(e)?e:[]),m;if(s&&c&&f){let e=await f(c(p,window.location.pathname));m=(0,n.jsx)(y,{children:(0,n.jsx)(s,{routes:p,pathname:window.location.pathname,hasLoaderData:!1,resolvedBranch:e})})}else if(Array.isArray(e))throw Error(`An array of routes requires RouteRenderer, matchRouteBranch, and resolveRouteBranch on the application entry`);else m=(0,n.jsx)(y,{children:e});document.querySelector(`[data-server-rendered=true]`)===null&&process.env.NODE_ENV===`development`?u(m,t,r):d(m,t,r)})(),l}exports.ClientOnly=h,exports.Head=v,exports.ViteReactSSG=b;
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as RouterFutureConfig, c as ViteReactSSGClientOptions, i as Router, l as ViteReactSSGContext, n as NonIndexRouteRecord, o as RouterOptions, r as RouteRecord, s as StyleCollector, t as IndexRouteRecord, u as ViteReactSSGOptions } from "./types-5bBDTafc.mjs";
1
+ import { a as RouterFutureConfig, c as ViteReactSSGClientOptions, i as Router, l as ViteReactSSGContext, n as NonIndexRouteRecord, o as RouterOptions, r as RouteRecord, s as StyleCollector, t as IndexRouteRecord, u as ViteReactSSGOptions } from "./types-CipD5Jrk.mjs";
2
2
  import { HelmetProps } from "react-helmet-async";
3
3
  import { ReactNode } from "react";
4
4
 
@@ -1 +1 @@
1
- const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`jsdom`);t=e.t(t,1);const n=[];function r(e=`<!doctype html><html><head><meta charset="utf-8"></head><body></body></html>`,r={}){if(global.navigator&&global.navigator.userAgent&&global.navigator.userAgent.includes(`Node.js`)&&global.document&&typeof global.document.destroy==`function`)return global.document.destroy;`url`in r||Object.assign(r,{url:`http://localhost:3000`}),`pretendToBeVisual`in r||Object.assign(r,{pretendToBeVisual:!0});let i=new t.default.JSDOM(e,r),{window:a}=i,{document:o}=a;n.length===0&&(n.push(...Object.getOwnPropertyNames(a).filter(e=>!e.startsWith(`_`)).filter(e=>!(e in global))),n.push(`$jsdom`)),n.forEach(e=>global[e]=a[e]),global.document=o,global.window=a,a.console=global.console,global.$jsdom=i;let s=()=>{n.forEach(e=>delete global[e]);try{a.close()}catch{}};return o.destroy=s,s}exports.jsdomGlobal=r;
1
+ const e=require(`./chunk-D-qHiVGv.cjs`);let t=require(`jsdom`);t=e.n(t,1);const n=[];function r(e=`<!doctype html><html><head><meta charset="utf-8"></head><body></body></html>`,r={}){if(global.navigator&&global.navigator.userAgent&&global.navigator.userAgent.includes(`Node.js`)&&global.document&&typeof global.document.destroy==`function`)return global.document.destroy;`url`in r||Object.assign(r,{url:`http://localhost:3000`}),`pretendToBeVisual`in r||Object.assign(r,{pretendToBeVisual:!0});let i=new t.default.JSDOM(e,r),{window:a}=i,{document:o}=a;n.length===0&&(n.push(...Object.getOwnPropertyNames(a).filter(e=>!e.startsWith(`_`)).filter(e=>!(e in global))),n.push(`$jsdom`)),n.forEach(e=>global[e]=a[e]),global.document=o,global.window=a,a.console=global.console,global.$jsdom=i;let s=()=>{n.forEach(e=>delete global[e]);try{a.close()}catch{}};return o.destroy=s,s}exports.jsdomGlobal=r;
package/dist/node.cjs CHANGED
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./router-adapter-DtnukOfG.cjs`),n=require(`./ssg-worker-payload-B_9N9o5p.cjs`);let r=require(`@bdocs/dui`),i=require(`node:module`),a=require(`node:os`);a=e.t(a,1);let o=require(`node:path`);o=e.t(o,1);let s=require(`fs-extra`);s=e.t(s,1);let c=require(`vite`),l=require(`node:crypto`);l=e.t(l,1);let u=require(`node:fs/promises`);u=e.t(u,1);let d=require(`node:fs`);d=e.t(d,1);const f=/import\("([^)]+)"\)/g;function p(e,t){let n=new Set;if(!t)return n;for(let r of t)m(e,r,n);return n}function m(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{m(e,t,n)}),n):n}function h(e,t,n,r){let i=e?.map(e=>e.route.entry).filter(Boolean)??[],a=new Set;e?.forEach(e=>{let t=``;e.route.lazy&&(t+=e.route.lazy.toString()),e.route.Component?._payload?._result&&(t+=e.route.Component._payload._result.toString());let n=t.matchAll(f);for(let e of n)a.add(e[1].split(`/`).at(-1)??``)});let o=new Set(i);for(let e of a){let t=n.find(([t,n])=>n.file.endsWith(e));t&&o.add(t[0])}let s=new Set;for(let e of o){let n=r.get(e);if(!n){let i=p(t.manifest,new Set([e]));n=new Set;for(let e of i)for(let r of t.ssrManifest[e]||[])n.add(r);r.set(e,n)}for(let e of n)s.add(e)}return s}function g(e){let t=Object.entries(e.serverManifest),n=new Map,r=new Map;return i=>{let a=r.get(i);if(a)return a;let o=Promise.resolve().then(()=>{let r=h(e.matchRouteBranchWithParams([...e.routes],i,e.base),e,t,n);return new Set(r)});return r.set(i,o),o.catch(()=>{r.get(i)===o&&r.delete(i)}),o}}async function ee(e,t={}){try{let n=await import(`beasties`);return new(n.default||n)({path:e,logLevel:`warn`,external:!0,inlineFonts:!0,preloadFonts:!0,...t})}catch{return}}async function _(){try{let e=await import(`@bdocs/zig-critters`),t=e.extractCriticalCss||e.default?.extractCriticalCss;return t?{extractCriticalCss:t}:void 0}catch{return}}async function te(e={}){try{let{createZigCrittersPool:t}=await Promise.resolve().then(()=>require(`./zig-pool-Cpw16nuK.cjs`)),n=await t(e);if(n)return{extractCriticalCss:(e,t,r)=>n.extractCriticalCss(e,t,r),dispose:()=>n.dispose()}}catch{}return _()}function ne(e,t,n,r){let i=e.replace(/<!--[\s\S]*?-->/g,``).replace(/>([^<]+)</g,`><`).replace(/\s+/g,` `).trim();return l.default.createHash(`sha256`).update(r).update(`\0`).update(i).update(`\0`).update(t||n).digest(`hex`)}function v(e){return e.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi)??[]}function re(e,t){let n=new Set(v(e)),r=v(t).filter(e=>!n.has(e));return r.length>0?r.join(`
2
- `):null}var y=class{constructor(e=512){this.maxEntries=e,this.entries=new Map}getOrCreate(e,t){let n=this.entries.get(e);if(n)return n.promise;let r={promise:Promise.resolve(null),settled:!1},i=Promise.resolve().then(t).catch(t=>{throw this.entries.delete(e),t}).finally(()=>{r.settled=!0,this.evictSettledEntries()});return r.promise=i,this.entries.set(e,r),this.evictSettledEntries(),i}get size(){return this.entries.size}evictSettledEntries(){for(;this.entries.size>this.maxEntries;){let e=!1;for(let[t,n]of this.entries)if(n.settled){this.entries.delete(t),e=!0;break}if(!e)return}}};const ie=new Set([`.js`,`.mjs`,`.css`]);function b(e){let t=o.default.extname(e).toLowerCase();return ie.has(t)}function x(e){let t=new Map,n=new Map;for(let r of Object.values(e))t.set(r.file,r),r.src&&n.set(r.src,r);return{byFile:t,bySrc:n}}function S(e,t,n){if(n.has(t))return;let r=e.get(t);if(r){n.add(t);for(let t of r.imports||[])b(t)&&S(e,t,n);for(let e of r.css||[])n.add(e);for(let t of r.dynamicImports||[])b(t)&&!n.has(t)&&S(e,t,n)}}async function C(e,t,n){if(n){let e=l.default.createHash(`md5`);for(let r of t){let t=n.get(r);t&&e.update(t)}return e.digest(`hex`)}let r=new Map;await Promise.all(t.map(async t=>{try{let n=await(0,u.readFile)(o.default.join(e,t));r.set(t,n)}catch{}}));let i=l.default.createHash(`md5`);for(let e of Array.from(r.keys()).sort()){let t=r.get(e);t&&i.update(t)}return i.digest(`hex`)}async function ae(e){let{outDir:t,indexes:n,manifest:r,ssrManifest:i,routeSourceFile:a,root:s,clientHash:c,assetHashes:l}=e,u=n;if(!u){if(!r)throw Error(`computeRouteClientAssetHash requires either indexes or manifest`);u=x(r)}let{byFile:d,bySrc:f}=u,p=o.default.relative(s,a).replace(/\\/g,`/`),m=new Set,h=f.get(p);if(h)S(d,h.file,m);else{let e=[p,a.replace(/\\/g,`/`)];for(let t of e){let e=i[t];if(Array.isArray(e))for(let t of e)b(t)&&S(d,t,m)}}if(m.size===0){if(!c)throw Error(`No client chunk found for ${a} and no global client hash was provided`);return c}return C(t,Array.from(m).sort(),l)}const oe=`/* SCRIPT_COMMENT_PLACEHOLDER */`;function w(e,t,n){let r=n.trim();if(!r)return e;let i=RegExp(`<${t}\\b([^>]*)>`,`i`).exec(e);if(!i)return e;let a=[...r.matchAll(/(?:^|\s)([A-Za-z_:][\w:.-]*)\s*=/g)].map(e=>e[1]),o=i[1];for(let e of a){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);o=o.replace(RegExp(`\\s+${t}\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s>]*)`,`gi`),``)}let s=o.trim()?`${o.trim()} ${r}`:r;return e.replace(i[0],`<${t} ${s}>`)}function T({rootContainerId:e,indexHTML:t}){let n=[{token:`<html`,kind:`html`},{token:`<head>`,kind:`head`},{token:`<body`,kind:`body`},{token:`<div id="${e}"></div>`,kind:`container`}].map(({token:e,kind:n})=>({kind:n,token:e,index:t.indexOf(e),lastIndex:t.lastIndexOf(e)})).sort((e,t)=>e.index-t.index);if(n.some(e=>e.index<0||e.index!==e.lastIndex))return null;let r=[],i=0;for(let e of n)r.push({text:t.slice(i,e.index)}),r.push({kind:e.kind,text:``}),i=e.index+e.token.length;return r.push({text:t.slice(i)}),({appHTML:t,metaAttributes:n,bodyAttributes:i,htmlAttributes:a,initialState:o})=>{let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${oe}<\/script>`,l=n.join(``),u=`<div id="${e}" data-server-rendered="true">${t}</div>${s}${c}`;return w(w(r.map(e=>{if(!e.kind)return e.text;switch(e.kind){case`html`:return`<html`;case`head`:return`<head>${l}`;case`body`:return`<body`;case`container`:return u;default:return e.text}}).join(``),`html`,a),`body`,i)}}async function se({rootContainerId:e,indexHTML:t,appHTML:n,metaAttributes:r,bodyAttributes:i,htmlAttributes:a,initialState:o}){let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${oe}<\/script>`,l=r.join(``),u=`<div id="${e}"></div>`;if(t.includes(u))return w(w(t.replace(`<head>`,`<head>${l}`).replace(u,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`),`html`,a),`body`,i);let d=await import(`html5parser`),f=d.parse(t),p;if(d.walk(f,{enter:r=>{if(!p&&r?.type===d.SyntaxKind.Tag&&Array.isArray(r.attributes)&&r.attributes.length>0&&r.attributes.some(t=>t.name.value===`id`&&t.value?.value===e)){let e=[...r.attributes.map(({name:{value:e},value:t})=>`${e}="${t.value}"`)].join(` `),i=t.slice(0,r.start),a=t.slice(r.end);p=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!p)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return w(w(p,`html`,a),`body`,i)}async function ce(e,t=`index.html`){let[,n]=[...(await s.default.readFile((0,o.join)(e,t),`utf-8`)).matchAll(/<script(?:.*?)src=["'](.+?)["'](?!<)(?:.*)>(?:[\n\r\s]*?)(?:<\/script>)/gim)].find(e=>{let[t]=e,[,n]=t.match(/.*\stype=(?:'|")?([^>'"\s]+)/i)||[];return n===`module`})||[];return n||`src/main.ts`}function le(e){return`<link rel="stylesheet" href="${e}">`}function ue(e){let t=new Set,n=[];return e&&e.forEach(e=>{if(!t.has(e)){t.add(e);let r=E(e);r&&n.push(r)}}),n.join(``)}function E(e){return e.endsWith(`.js`)?`<link rel="modulepreload" crossorigin href="${e}">`:e.endsWith(`.css`)?`<link rel="stylesheet" crossorigin href="${e}">`:e.endsWith(`.woff`)||e.endsWith(`.woff2`)||e.endsWith(`.ttf`)?`<link rel="preload" as="font" type="font/woff2" crossorigin href="${e}">`:e.endsWith(`.png`)||e.endsWith(`.jpg`)||e.endsWith(`.jpeg`)||e.endsWith(`.webp`)||e.endsWith(`.gif`)||e.endsWith(`.ico`)||e.endsWith(`.svg`)?`<link rel="preload" as="image" crossorigin href="${e}">`:null}var D=`0.4.1`;async function de(e){if(!e||e.length===0)return{paths:[`/`]};let t=new Set,n=async(e,i=``)=>{i=i.replace(/\/$/g,``);for(let a of e){if(a.lazy){let e=await a.lazy();e&&(a={...a,...e})}let e=a.path;if(e=r(e,i),a.getStaticPaths&&pe(e)){let e=await a.getStaticPaths();for(let t of e)t=r(t,i),Array.isArray(a.children)&&await n(a.children,t)}a.index&&!e&&t.add(i||`/`),Array.isArray(a.children)&&await n(a.children,e)}};return await n(e),{paths:Array.from(t)};function r(e,n){if(e!=null){if(e===`.`){let e=n||`/`;return t.add(e),e}e=n&&!e.startsWith(`/`)?`${n}${e?`/${e}`:``}`:e,t.add(e)}return e}}async function fe(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)||t.includes(`boltdocs/entry`)||t.includes(`boltdocs-entry`)?t:(0,o.join)(e.root,t))}const O=/[:*?]/;function pe(e){return e?O.test(e):!1}async function k(e,t){if(e!==t){await s.default.ensureDir((0,o.dirname)(t)),await s.default.remove(t);try{await s.default.link(e,t)}catch{await s.default.copy(e,t)}}}async function A(e){let t=new Set,n=[];for(let r of e)t.has(r.destination)||(t.add(r.destination),n.push(k(r.source,r.destination)));await Promise.all(n)}function me({batchSize:e=64,maxBytes:t=8388608,writeFile:n}){let r=Math.max(1,Math.floor(e)),i=Math.max(1,Math.floor(t)),a=[],o=0,s=Promise.resolve(),c=0,l=()=>{if(a.length===0)return s;let e=a;return a=[],o=0,s=s.then(async()=>{let t=performance.now();await Promise.all(e.map(({filePath:e,content:t})=>n(e,t))),c+=performance.now()-t}),s};return{enqueue(e,t){let u=Buffer.byteLength(t,`utf8`);return u>i?(s=l().then(async()=>{let r=performance.now();await n(e,t),c+=performance.now()-r}),s):(a.push({filePath:e,content:t}),o+=u,a.length>=r||o>=i?l():Promise.resolve())},flush:l,pendingCount(){return a.length},writeTimeMs(){return c}}}function j(e,t,n,r=[]){return{cacheHash:e,clientFiles:[...new Set(t)].sort(),pageFiles:[...new Set(n)].sort(),auxiliaryFiles:[...new Set(r)].sort()}}function he(e,t,n,r,i,a=e?.auxiliaryFiles||[]){if(!e||e.cacheHash!==t)return!1;let o=(e,t)=>e.length===t.length?e.every((e,n)=>e===t[n]):!1,c=[...new Set(r)].sort(),l=[...new Set(i)].sort(),u=[...new Set(a)].sort();if(!o(e.clientFiles,c)||!o(e.pageFiles,l)||!o(e.auxiliaryFiles||[],u))return!1;let d=[...c,...l,...u];return o(be(n),[...new Set(d)].sort())?d.every(e=>s.default.existsSync(`${n}/${e}`)):!1}function ge(e,t,n){if(!e)return!1;let r=e.clientFiles.filter(e=>e!==n).sort(),i=t.filter(e=>e!==n).sort();return r.length===i.length&&r.every((e,t)=>e===i[t])}async function _e(e){try{let t=await s.default.readJson(e);return!t||typeof t.cacheHash!=`string`||!Array.isArray(t.clientFiles)||!Array.isArray(t.pageFiles)||!Array.isArray(t.auxiliaryFiles)||t.clientFiles.some(e=>typeof e!=`string`)||t.pageFiles.some(e=>typeof e!=`string`)||t.auxiliaryFiles.some(e=>typeof e!=`string`)?void 0:j(t.cacheHash,t.clientFiles,t.pageFiles,t.auxiliaryFiles)}catch{return}}async function ve(e,t,n,r,i=[],a){let o=a||be(n),s=new Set(r),c=new Set(i);return Ce(e,j(t,i.length>0?[...c]:o.filter(e=>!s.has(e)),r,i.length>0?o.filter(e=>!s.has(e)&&!c.has(e)):[]))}function ye(e,t,n){let r=[];for(let i of e){let e=i.replace(/^\/+/,``).replace(/\/+$/,``),a=n===`nested`?`${e?`${e}/`:``}index.html`:`${(i.endsWith(`/`)?`${i}index`:i).replace(/^\/+/,``)}.html`;r.push(a);let o=t[M(i)]?.loaderDataFilePath;o&&r.push(o)}return[...new Set(r)]}function be(e){let t=[],n=r=>{let i;try{i=s.default.readdirSync(r,{withFileTypes:!0})}catch{return}for(let a of i){if(a.name===`.vite`)continue;let i=`${r}/${a.name}`;a.isDirectory()?n(i):a.isFile()&&t.push((0,o.relative)(e,i).split(o.sep).join(`/`))}};return n(e),t.sort()}function M(e){return!e||e===`/`?``:t.a(e).replace(/\/+$/,``)}function xe(e,t){let n=new Set(t.map(M)),r={};for(let[t,i]of Object.entries(e)){let e=M(t);n.has(e)&&(r[e]=i)}return r}async function Se(e,t){try{if(await s.default.readFile(e,`utf8`)===t)return!1}catch{}return await s.default.ensureDir((0,o.dirname)(e)),await s.default.writeFile(e,t,`utf8`),!0}async function Ce(e,t,n=2){try{let n=await s.default.readJson(e);if(JSON.stringify(n)===JSON.stringify(t))return!1}catch{}return await s.default.ensureDir((0,o.dirname)(e)),await s.default.writeJson(e,t,{spaces:n}),!0}const N=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.svg`,`.webp`,`.avif`,`.ico`]),P=new Set([`.woff`,`.woff2`,`.ttf`,`.otf`,`.eot`]);function F(e){try{return d.default.statSync(e).size}catch{return 0}}const I=`boltdocs-metrics.json`;function L(e){if(!e)return null;try{let t=(0,o.join)(e,I);return d.default.existsSync(t)?JSON.parse(d.default.readFileSync(t,`utf-8`)):null}catch{return null}}function we(e,t){try{let n=o.default.resolve(e,`..`,`reports`);d.default.existsSync(n)||d.default.mkdirSync(n,{recursive:!0}),d.default.writeFileSync((0,o.join)(e,I),JSON.stringify(t))}catch{}}async function Te(e,t,n,r={}){if(!r.outputFiles&&!r.manifestPath){let e=L(n);if(e)return e.buildTime=t,e}let i=(0,o.join)(e,`.vite`),a=(0,o.join)(e,`assets`),s={},c=r.manifestPath||(0,o.join)(i,`manifest.json`);d.default.existsSync(c)&&(s=JSON.parse(await d.default.readFileSync(c,`utf-8`)));let l=0,u=0;for(let[,t]of Object.entries(s)){let{file:n,css:r=[]}=t,i=F((0,o.join)(e,n));l+=i;for(let t of r)u+=F((0,o.join)(e,t))}let f=0,p=0;if(d.default.existsSync(a)){let e=d.default.readdirSync(a,{withFileTypes:!0});for(let t of e){if(!t.isFile())continue;let e=o.default.extname(t.name).toLowerCase(),n=(0,o.join)(a,t.name);N.has(e)?f+=F(n):P.has(e)&&p++}}let m=(0,o.join)(e,`index.html`),h=0,g=[];if(d.default.existsSync(m)){let e=F(m);h+=e,g.push({route:`/`,htmlSize:e,htmlFile:`index.html`})}let ee=r.outputFiles?[...r.outputFiles]:(()=>{try{return d.default.readdirSync(e,{recursive:!0})}catch{return[]}})();for(let t of ee){if(!t.endsWith(`.html`)||t===`index.html`)continue;let n=F((0,o.join)(e,t));if(n>0){let e=`/`+t.replace(/\\/g,`/`).replace(/\/index\.html$/,``).replace(/\.html$/,``);h+=n,g.push({route:e,htmlSize:n,htmlFile:t})}}let _={buildTime:t,totalJSBundleSize:l,totalCSSBundleSize:u,totalImagesSize:f,totalHTMLSize:h,fontCount:p,pages:g};return n&&we(n,_),_}function Ee(e,t){let n=o.default.resolve(e,`..`,`.boltdocs`,`reports`);d.default.existsSync(n)||d.default.mkdirSync(n,{recursive:!0});let r=(0,o.join)(n,`performance.json`);d.default.writeFileSync(r,JSON.stringify(t,null,2))}function De(e,t){try{if(!s.default.existsSync(e))return!1;let n=s.default.readFileSync(e);return t.update(n),!0}catch{return!1}}const Oe=new Set([`node_modules`,`.git`,`.boltdocs`,`.turbo`,`dist`,`coverage`,`__tests__`,`test`,`tests`,`.next`,`.cache`]),ke=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.css`,`.json`,`.md`,`.mdx`,`.html`,`.svg`,`.yaml`,`.yml`,`.webp`,`.png`,`.jpg`,`.jpeg`,`.gif`,`.ico`]);function R(e){let t=e.lastIndexOf(`.`);if(t===-1)return!1;let n=e.slice(t).toLowerCase();return ke.has(n)}function z(e,t,n){let r;try{r=s.default.readdirSync(e)}catch{return}r.sort();for(let i of r){if(i.startsWith(`.`))continue;let r=(0,o.join)(e,i),a;try{a=s.default.statSync(r)}catch{continue}if(a.isDirectory()){if(Oe.has(i))continue;z(r,t,n)}else if(a.isFile()&&R(i)){let e=(0,o.relative)(t,r).replace(/\\/g,`/`);n.update(`${e}:${a.mtimeMs}:${a.size}\n`)}}}function B(e,t){let n=(0,i.createRequire)(n(`url`).pathToFileURL(__filename).href);for(let r of[`boltdocs`,`@bdocs/ssg`])try{let i=(0,o.join)((0,o.dirname)(n.resolve(`${r}/package.json`,{paths:[e]})),`dist`);s.default.existsSync(i)&&z(i,e,t)}catch{}}function Ae(e,t,n){let r=[(0,o.join)(e,t,`public`),(0,o.join)(e,t,`src`)];for(let t of r)try{s.default.existsSync(t)&&z(t,e,n)}catch{}}const je=[`boltdocs.config.ts`,`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.cjs`,`package.json`,`tsconfig.json`,`pnpm-lock.yaml`,`package-lock.json`,`yarn.lock`];function Me(e,t){for(let n of je){let r=(0,o.join)(e,n);try{if(s.default.existsSync(r)){let e=s.default.statSync(r);t.update(`${n}:${e.mtimeMs}:${e.size}\n`)}}catch{}}}function Ne(e,t,n){try{s.default.removeSync((0,o.join)(n,`hash-merkle.json`))}catch{}try{let n=(0,l.createHash)(`sha256`);if(B(e,n),De((0,o.join)(e,`.boltdocs`,`compiled`,`manifest.json`),n))Ae(e,t,n);else{let r=(0,o.join)(e,t);s.default.existsSync(r)&&z(r,e,n)}return Me(e,n),n.digest(`hex`)}catch(e){return(0,r.warn)(`[client-hash] Failed to compute client code hash: ${e instanceof Error?e.message:String(e)}`),(0,l.createHash)(`sha256`).update(`__client_hash_error__`).digest(`hex`)}}function V(e){return l.default.createHash(`md5`).update(e).digest(`hex`)}function Pe(e,t){return!!(e&&e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs&&e.ino===t.ino)}async function Fe(e){if(e)try{let t=await s.default.readJson(e);return!t||t.version!==1||typeof t.files!=`object`?void 0:t}catch{return}}async function Ie(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await s.default.ensureDir((0,o.dirname)(e)),await s.default.writeJson(n,{version:1,files:t},{spaces:0}),await s.default.move(n,e,{overwrite:!0})}catch{await s.default.remove(n).catch(()=>{})}}async function Le(e,t,n){let r=await Fe(n),i=new Map,a={};return await Promise.all([...new Set(t)].map(async t=>{let n=(0,o.join)(e,t);try{let e=await s.default.stat(n);if(!e.isFile())return;let o=r?.files[t];if(Pe(o,e)){i.set(t,o.hash),a[t]=o;return}let c=V(await s.default.readFile(n));i.set(t,c),a[t]={hash:c,size:e.size,mtimeMs:e.mtimeMs,ctimeMs:e.ctimeMs,ino:e.ino}}catch{}})),n&&await Ie(n,a),i}function Re(e,t){if(e)try{let t=s.default.statSync(e);return`${t.mtimeMs}:${t.size}`}catch{}return t}function ze({routePath:e,cacheItem:t,sourceContentHash:n,expectedAssetHash:r,ssgPagesDir:i,requireAssetHash:a=!1}){if(!t||t.contentHash!==n||a&&!t.assetHash||r!==void 0&&t.assetHash!==r)return!1;let c=l.default.createHash(`md5`).update(e).digest(`hex`);return!(!s.default.existsSync((0,o.join)(i,`${c}.html`))||t.loaderDataFilePath&&!s.default.existsSync((0,o.join)(i,`${c}.json`)))}function Be(e){return e===null?null:e.poolMetrics()}function Ve(e,t){return(0,o.isAbsolute)(t)?t:(0,o.join)(e,t)}function He(e,t={}){let n={};for(let[r,i]of Object.entries(t)){let t=M(r);n[t]=Ve(e,i)}return Object.freeze(n)}function Ue(e){return Object.freeze({root:e.root,outDir:e.outDir,cacheDir:e.cacheDir,base:e.base,mode:e.mode,entry:e.entry,htmlEntry:e.htmlEntry,docsDirName:e.docsDirName,clientHash:e.clientHash,sourceFiles:He(e.root,e.routeToSourceFileMap)})}function We(e,t,n={}){let r=He(e,n),i=t.map(t=>{let i=M(t.path),a=n[t.path],o=a?Ve(e,a):r[i]||t.componentPath;return{path:t.path,key:i,sourceFile:o,componentPath:t.componentPath,locale:t.locale,version:t.version,collection:t.collection}}),a=new Map;for(let e of i)a.has(e.key)||a.set(e.key,e);return Object.freeze({routes:Object.freeze(i),byPath:a,sourceFiles:r})}function Ge(e,t){return Object.freeze({...e,routeManifest:t})}const Ke=[/^@bdocs\//,/^boltdocs(?:\/|$)/,/^react-helmet-async(?:\/|$)/],qe=[`react`,`react-dom`];function Je(e){return Number.parseInt(c.version,10)>=8?{rolldownOptions:e}:{rollupOptions:e}}function Ye(){let e=`\0virtual:ssr-empty-css`;return{name:`vite-react-ssg:ssr-skip-css`,enforce:`pre`,resolveId(t){return t.endsWith(`.css`)&&!t.startsWith(`\0`)?e+t:null},load(t){return t.startsWith(e)?{code:`export default undefined`,map:null}:null}}}function Xe(e,t){let n=[],r=i=>{let a;try{a=s.default.readdirSync(i,{withFileTypes:!0})}catch{return}for(let s of a){if(s.name===`.vite`)continue;let a=(0,o.join)(i,s.name);if(s.isDirectory())r(a);else if(s.isFile()){let r=(0,o.relative)(e,a).split(o.sep).join(`/`);r!==t&&n.push(r)}}};return r(e),n.sort()}function Ze(e){return e.map(e=>{if(Array.isArray(e))return Ze(e);if(e&&typeof e==`object`&&`name`in e){let t=e.name;if(t===`vite:react-babel`||t===`vite:react-refresh`||t===`vite:react-jsx`||typeof t==`string`&&t.includes(`tailwind`)||t===`vite-plugin-image-optimizer`||t===`vite-plugin-boltdocs-dev-server`)return null}return e}).filter(Boolean)}async function Qe(e){let t=[],n=async r=>{let i;try{i=await s.default.readdir(r,{withFileTypes:!0})}catch{return}for(let a of i){let i=(0,o.join)(r,a.name);a.isDirectory()?await n(i):(a.isFile()||a.isSymbolicLink())&&t.push((0,o.relative)(e,i).split(o.sep).join(`/`))}};return await n(e),t.sort()}async function $e(e){try{let t=await s.default.readFile(e);return(0,l.createHash)(`sha256`).update(t.toString()).digest(`hex`)}catch{return}}function et(e,t){if(!t||(0,o.isAbsolute)(t))return;let n=(0,o.resolve)(e),r=(0,o.resolve)(n,t),i=(0,o.relative)(n,r);if(!(!i||i===`..`||i.startsWith(`..${o.sep}`)||(0,o.isAbsolute)(i)))return r}async function tt(e,t){let n=(0,o.join)((0,o.resolve)(t,`..`),`.boltdocs-public-assets.json`),r={};try{let e=await s.default.readJson(n);if(Array.isArray(e))for(let t of e)typeof t==`string`&&(r[t]=``);else if(e&&typeof e==`object`){let t=e.files;if(t&&typeof t==`object`)for(let[e,n]of Object.entries(t))typeof n==`string`&&(r[e]=n)}}catch{}let i=e&&s.default.existsSync(e)?await Qe(e):[],a={};for(let t of i){let n=await $e((0,o.join)(e,t));n&&(a[t]=n)}for(let[e,n]of Object.entries(r)){if(a[e]!==void 0||!n)continue;let r=et(t,e);r&&await $e(r)===n&&await s.default.remove(r)}e&&s.default.existsSync(e)&&(await s.default.ensureDir(t),await s.default.copy(e,t,{overwrite:!0,errorOnExist:!1})),await s.default.ensureDir((0,o.resolve)(t,`..`)),await s.default.writeJson(n,{version:1,files:a})}function nt(e){return(0,c.mergeConfig)(e.viteConfig,{logLevel:`warn`,build:{manifest:!0,ssrManifest:!0,chunkSizeWarningLimit:2e3,reportCompressedSize:!1,sourcemap:!1,cssMinify:`esbuild`,...Je({input:{app:(0,o.join)(e.root,e.htmlEntry||`./index.html`)},output:{manualChunks(e){if(!(!e.includes(`node_modules`)&&!e.includes(`.boltdocs`))){if(e.includes(`/node_modules/react/`)||e.includes(`/node_modules/react-dom/`)||e.includes(`/node_modules/scheduler/`))return`react-vendor`;if(e.includes(`/node_modules/react-router`))return`react-router`;if(e.includes(`/node_modules/lucide-react`))return`lucide-icons`;if(e.includes(`/node_modules/react-helmet-async`))return`react-helmet`}}},onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(t){e.onResolvedOutputDir((0,o.isAbsolute)(t.build.outDir||``)?t.build.outDir||`dist`:(0,o.resolve)(e.root,t.build.outDir||`dist`))}}]})}function rt(e){return(0,c.mergeConfig)(e.viteConfig,{logLevel:`warn`,build:{ssr:e.entry.includes(`boltdocs`)||e.entry.startsWith(`virtual:`)?`virtual:boltdocs-entry`:!e.canSkipSsrImport&&e.ssrEntry?e.ssrEntry:e.entry,manifest:!0,outDir:e.ssgOut,reportCompressedSize:!1,target:`es2022`,minify:!1,cssCodeSplit:!1,cssMinify:!1,...Je({output:e.format===`esm`?{entryFileNames:`combined.mjs`,format:`esm`}:{entryFileNames:`combined.cjs`,format:`cjs`},platform:`node`,onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,ssr:{noExternal:[...Ke],external:[...qe]},plugins:[...Ze(e.viteConfig.plugins||[]),Ye()]})}async function it(e,t){let n=e.outDir,r=e.clientCacheDir,i=e.initialClientHash??t(),a=i,l=[],u=performance.now();if(e.canBypassClientBuild){e.onStep?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),s.default.existsSync(e.outDir)&&await s.default.remove(e.outDir);let t=(0,o.join)(e.clientCacheDir,`dist`);await tt(e.viteConfig.publicDir,t),H(t,e.outDir),l=Xe((0,o.join)(e.clientCacheDir,`dist`),e.htmlEntry)}else{await(0,c.build)(nt({...e,onResolvedOutputDir:e=>{n=e}}));let d=performance.now()-u;e.onStep?.({name:`Client build`,duration:d,success:!0,details:`Vite production build`}),i=t(),a=i,r=(0,o.join)(e.finalCacheDir,`client-cache`,i);let f=(0,o.join)(r,`client-hash.txt`);await s.default.ensureDir(r);let p=(0,o.join)(r,`dist`);s.default.existsSync(p)&&await s.default.remove(p),await s.default.copy(n,p,{overwrite:!0,errorOnExist:!1}),await tt(e.viteConfig.publicDir,p),l=Xe(p,e.htmlEntry),await s.default.writeFile(f,i,`utf-8`),await ct((0,o.join)(e.finalCacheDir,`client-cache`))}return{outDir:n,durationMs:e.canBypassClientBuild?0:performance.now()-u,resolvedClientCacheDir:r,resolvedClientHash:i,pageContentFallbackHash:a,clientFiles:l}}async function at(e){if(e.serverBuildSkipped)return e.onStep?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),{durationMs:0};s.default.existsSync(e.ssgOut)&&await s.default.remove(e.ssgOut),process.env.VITE_SSG=`true`;let t=performance.now();await(0,c.build)(rt(e));let n=performance.now()-t;return e.onStep?.({name:`Server build`,duration:n,success:!0,details:`Vite SSR bundle`}),{durationMs:n}}function ot(e,t){if(!t||(0,o.isAbsolute)(t))return;let n=(0,o.resolve)(e,t),r=(0,o.relative)((0,o.resolve)(e),n);if(!(r===`..`||r.startsWith(`..${o.sep}`)||(0,o.isAbsolute)(r)))try{let t=s.default.realpathSync(e),r=s.default.realpathSync(n),i=(0,o.relative)(t,r);return i===`..`||i.startsWith(`..${o.sep}`)||(0,o.isAbsolute)(i)||!s.default.readdirSync(r).some(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`))?void 0:r}catch{return}}function st(e){return e.startsWith(`dist/`)||e.startsWith(`.boltdocs/build/ssr/`)||e.startsWith(`rendering chunks`)||e===`computing gzip size...`||e.includes(`built in`)&&e.includes(`s`)}function H(e,t){let n=s.default.readdirSync(e,{withFileTypes:!0});s.default.mkdirSync(t,{recursive:!0});for(let r of n){let n=(0,o.join)(e,r.name),i=(0,o.join)(t,r.name);if(r.isDirectory())H(n,i);else if(r.isFile())try{s.default.linkSync(n,i)}catch{s.default.copyFileSync(n,i)}}}async function ct(e,t=5,n){try{if(!s.default.existsSync(e))return;let r=await s.default.readdir(e,{withFileTypes:!0}),i=[];for(let t of r){if(!t.isDirectory())continue;let n=(0,o.join)(e,t.name),r=await s.default.stat(n);i.push({name:t.name,mtime:r.mtimeMs})}i.sort((e,t)=>t.mtime-e.mtime);let a=new Set(i.slice(0,t).map(e=>e.name));for(let t of i)n&&t.name===n||a.has(t.name)||await s.default.remove((0,o.join)(e,t.name))}catch{}}function lt(e,t){let n=e.warn;e.warn=(e,r)=>{e.includes(`externalized for browser compatibility`)||e.includes(`can't be bundled without type`)||t(e)||n(e,r)};let r=e.info;return e.info=(e,n)=>{t(e)||r(e,n)},e}function ut(e,t){return t===`nested`?(0,o.join)(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`}function dt(e){return Object.freeze(e)}function ft(e){let n=new Map;for(let r of e.routes){let i=l.default.createHash(`md5`).update(r).digest(`hex`),a=M(r),s=e.routeToSourceFileMap[a]||e.routeToSourceFileMap[r],c=s?e.sourceMeta.get(s):void 0;n.set(r,dt({path:r,pathHash:i,cachedHtmlFile:(0,o.join)(e.ssgPagesDir,`${i}.html`),cachedLoaderFile:(0,o.join)(e.ssgPagesDir,`${i}.json`),finalOutFile:(0,o.join)(e.outDir,ut(r,e.dirStyle)),normalizedKey:a,sourceContentHash:c?.hash||e.fallbackHash,sourceMtimeMs:c?.mtimeMs||0,routeAssetHash:e.routeToAssetHash[r]??e.fallbackHash,fetchUrl:`${t.o(e.contextBase)}${t.r(r)}`}))}return n}function pt(e,t){let n=e.get(t);if(!n)throw Error(`Missing render plan for route: ${t}`);return n}function mt(e){return e.then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e}))}function ht(e){return!Number.isFinite(e)||e<=0?2:Math.max(2,Math.min(32,Math.ceil(e)*2))}function U(e,t){return e>4&&!t}function W(e,t){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`&&(t===void 0||e.path===t)}function gt(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return n.path===t&&typeof n.appHTML==`string`&&Array.isArray(n.metaAttributes)&&typeof n.bodyAttributes==`string`&&typeof n.htmlAttributes==`string`&&(n.routerContext===null||typeof n.routerContext==`object`&&!Array.isArray(n.routerContext))}async function _t(e){let t=[],n=new Set,r=e.getPool(),i=ht(r?e.getWorkerCount?.()??0:0),a=0,o=0,s=!1,c=async()=>{if(t.length===0)return;let e=(await Promise.all(t)).find(e=>!e.ok);if(e&&!e.ok)throw e.error},l=e=>{let r;r=mt(e).finally(()=>{n.delete(r)}),t.push(r),n.add(r)};try{if(U(e.routes.length,e.canBypassClientBuild)&&(await e.ensurePool(),r=e.getPool(),r&&(i=ht(e.getWorkerCount?.()??0))),r?.renderBatch){let t=[];for(let n of e.routes){let r=e.getPlan(n);await e.isCached(r)?(await e.onCacheHit(r),o++):(await e.prepareRoute?.(r),t.push({path:n,plan:r}))}let c=Math.max(2,e.batchSize??(e.getWorkerCount?.()??1)*2);for(let o=0;o<t.length;o+=c){let u=t.slice(o,o+c);if(!r){for(let{path:n,plan:r}of t.slice(o))e.scheduleMainThread(n,r),a++;break}s=!0;let d=r,f=performance.now(),p=async t=>{for(let{path:n,plan:r}of u){let i=await e.onWorkerFailure(n,r,t,d);if(!gt(i,n))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(n,r,i,performance.now()-f),a++}r=e.getPool()};l((async()=>{let t;try{t=await d.renderBatch(u.map(({path:e})=>e))}catch(e){await p(e);return}if(!Array.isArray(t)||t.length!==u.length){await p(Error(`SSG worker returned an invalid batch payload`));return}for(let n=0;n<u.length;n++){let{path:r,plan:i}=u[n],o=t[n],s;if(s=W(o,r)?await e.onWorkerFailure(r,i,Error(o.error),d):gt(o,r)?o:await e.onWorkerFailure(r,i,Error(`SSG worker returned an invalid batch item`),d),!gt(s,r))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(r,i,s,performance.now()-f),a++}r=e.getPool()})()),n.size>=i&&await Promise.race(n)}}else for(let t of e.routes){let c=e.getPlan(t);if(await e.isCached(c)){await e.onCacheHit(c),o++;continue}if(await e.prepareRoute?.(c),!r&&e.routes.length>4&&(await e.ensurePool(),r=e.getPool(),r&&(i=ht(e.getWorkerCount?.()??0))),r){s=!0;let o=r,u=performance.now();l(o.render(t).catch(async n=>{let i=await e.onWorkerFailure(t,c,n,o);return r=e.getPool(),i}).then(async n=>{if(!gt(n,t))throw Error(`SSG worker returned an invalid render result`);await e.onWorkerResult(t,c,n,performance.now()-u),a++})),n.size>=i&&await Promise.race(n)}else e.scheduleMainThread(t,c),a++}return await c(),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),{renderedCount:a,cachedCount:o,workerTaskCount:t.length,usedWorker:s}}catch(n){throw await Promise.all(t),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),await e.cleanupAfterFailure(),n}finally{await e.destroyPool()}}const vt=Number.parseInt(c.version)>=5?[`.vite`]:[];function yt(e){let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t)));return JSON.stringify(t)}function bt(e,n){return`static-loader-data${t.a(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${n}.json`}function xt(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.js`||t===`.mjs`||t===`.css`}function St(e){let t=new Set;for(let n of Object.values(e)){xt(n.file)&&t.add(n.file);for(let e of n.css||[])xt(e)&&t.add(e);for(let e of n.imports||[])xt(e)&&t.add(e);for(let e of n.dynamicImports||[])xt(e)&&t.add(e)}return[...t]}async function Ct(e,t,n){return Le(e,St(t),n?(0,o.join)(n,`chunk-hashes.json`):void 0)}function wt(e,n=`/`){let r=t.a(e);return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Tt(e,t,n){let r=t?.[n];if(r)return(0,o.isAbsolute)(r)?r:(0,o.join)(e,r)}function Et(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,(0,o.isAbsolute)(n)?(0,o.relative)(e,n):n]))}function Dt(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function G(e={},u={}){let d=process.env.MODE||process.env.NODE_ENV||e.mode||`production`;d!==process.env.NODE_ENV&&(process.env.NODE_ENV=d);let f=process.cwd(),p=u.root||f,m=u.build?.outDir||`dist`,h=u.base||`/`,_=performance.now(),v=0,ie=0,b=0,{onFinished:S,onStep:C,routeToSourceFileMap:w={},cacheDir:le=`.boltdocs/build`,htmlEntry:E=`index.html`,entry:D=await ce(p,E)}=e,O=`docs`,pe=Object.values(w);if(pe.length>0){let e=pe[0],t=(0,o.relative)(p,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(O=t[0])}let k=(0,o.isAbsolute)(m)?m:(0,o.join)(p,m),j=(0,o.isAbsolute)(le)?le:(0,o.join)(p,le),N=Ne(p,O,j),P=Ue({root:p,outDir:k,cacheDir:j,base:h,mode:d,entry:D,htmlEntry:E,docsDirName:O,clientHash:N,routeToSourceFileMap:w}),F=P.clientHash.substring(0,12),I=(0,o.join)(P.cacheDir,`ssr`,F),L=(0,o.join)(P.cacheDir,`client-cache`,P.clientHash),we=L,De=N,Oe=N,ke=(0,o.join)(L,`client-hash.txt`),R=!1;try{s.default.existsSync(ke)&&s.default.existsSync((0,o.join)(L,`dist`))&&(R=(await s.default.readFile(ke,`utf-8`)).trim()===N)}catch{}let z=(0,o.join)(j,`ssg-pages`),B=(0,o.join)(j,`ssg-cache.json`),Ae=(0,o.join)(j,`ssg-output.json`),je=await _e(Ae),Me=je!==void 0&&je.auxiliaryFiles.length===0;R&&(ge(je,be((0,o.join)(L,`dist`)),E)||(R=!1));let V=[],Pe=!1,Fe=(e.dirStyle||u.ssgOptions?.dirStyle)??`flat`;if(R&&Me&&Fe!==`nested`){let e=(0,o.join)(j,`routes-cache.json`);try{if(s.default.existsSync(e)&&s.default.existsSync(B)){let t=JSON.parse(s.default.readFileSync(e,`utf-8`)),n=xe(JSON.parse(s.default.readFileSync(B,`utf-8`)),t.paths);if(t.dirStyle===Fe&&t.base===h){let e=t.paths.every(e=>{let r=M(e),i=n[r];return ze({routePath:e,cacheItem:i,sourceContentHash:Re(w[r]||w[e]||Tt(p,t.sourceFiles,r)||Tt(p,t.sourceFiles,e),Oe),ssgPagesDir:z,requireAssetHash:!0})});t.paths.length>0&&e&&(V=t.paths,Pe=!0)}}}catch{}}if(Pe){let e=performance.now(),t={};try{s.default.existsSync(B)&&(t=xe(JSON.parse(s.default.readFileSync(B,`utf-8`)),V))}catch{}let n=[...ye(V,t,Fe===`nested`?`nested`:`flat`),`static-loader-data-manifest-${F}.json`],r=be((0,o.join)(L,`dist`)).filter(e=>e!==E),i=await _e(Ae),a=i?.auxiliaryFiles.length===0&&he(i,N,k,r,n,[]),c={};if(!a){s.default.existsSync(k)&&await s.default.remove(k);let e=(0,o.join)(L,`dist`);await tt(u.publicDir,e),await s.default.copy(e,k);let n=[];for(let e of V){let r=l.default.createHash(`md5`).update(e).digest(`hex`),i=(0,o.join)(z,`${r}.html`),a=(0,o.join)(z,`${r}.json`),u=`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;if(n.push({source:i,destination:(0,o.join)(k,u)}),s.default.existsSync(a)){let r=M(e),i=t[r];i?.loaderDataFilePath&&(n.push({source:a,destination:(0,o.join)(k,i.loaderDataFilePath)}),c[wt(e,h)]=i.loaderDataFilePath)}}await A(n),await Se((0,o.join)(k,`static-loader-data-manifest-${F}.json`),yt(c))}await Ot(z,t,V);let d=Math.round(performance.now()-_);C?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),C?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),C?.({name:`Render pages`,duration:0,success:!0,details:`${V.length} pages (all cached)`}),C?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(d/1e3).toFixed(1)}s, all cached`});let f=Math.round(performance.now()-e),p={renderedPageCount:0,cachedPageCount:V.length,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,routePreparationMs:0,workerTransportMs:0,workerRoundTripMs:0,workerTransportAvgMs:0,finalizeP50Ms:0,finalizeP95Ms:0,assetCollectionMs:0,beforeHookMs:0,htmlAssemblyMs:0,onPageRenderedHookMs:0,criticalCssP50Ms:0,criticalCssP95Ms:0,cacheWriteMs:0,cachedOutputMs:f,renderQueueDrainMs:0,renderPipelineSettleMs:0,outputLinkMs:f};process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:0,success:!0,details:`${V.length} pages / 0 new / ${V.length} cached`,metrics:{renderedCount:0,cachedCount:V.length,renderedSize:0,totalPages:V.length,prunedCount:0,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,workerUsed:!1,workerCount:0,fallbackMainThread:!1,ssrP50Ms:0,ssrP95Ms:0,ssrP99Ms:0,crittersP50Ms:0,crittersP95Ms:0,writeP50Ms:0,writeP95Ms:0,routerTimingCount:0,routerMatchAvgMs:0,routerResolveAvgMs:0,routerLoadersAvgMs:0,routerRenderAvgMs:0,routerHelmetAvgMs:0,routerTotalAvgMs:0,pagesPerSecond:0,pipeline:p}})}`),await S?.(m),await kt(k),await ve((0,o.join)(j,`ssg-output.json`),N,k,n,r);return}let Ie=await(0,c.resolveConfig)(u,`build`,d,d),Le=Object.assign({},Ie.ssgOptions||{},e),{script:Ve=`sync`,mock:He=!1,formatting:Ke=`none`,includedRoutes:qe=Dt,onBeforePageRender:Je,onPageRendered:Ye,dirStyle:Xe=`flat`,includeAllRoutes:Ze=!1,format:Qe=`esm`,concurrency:$e=20,rootContainerId:et=`root`,beastiesOptions:nt={}}=Le,rt=nt,H=Le.turbo??!1,ut=(0,o.join)(j,`ssr`),dt=(0,o.join)(j,`ssr-cache-index.json`);if(I=(0,o.join)(ut,H?`turbo-ssr`:F),!H&&R)try{let e=(await s.default.readJson(dt))[N];if(typeof e==`string`){let t=ot(ut,e);t&&(I=t)}}catch{}let mt=lt((0,c.createLogger)(),st),ht=()=>{};if(He){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-TVNgh-Jn.cjs`));ht=e()}let U={};try{if(s.default.existsSync(B)){let e=await s.default.readJson(B);U=xe(e,Object.keys(e))}}catch{}let W=!1;if(R)try{let e=(0,o.join)(j,`routes-cache.json`);if(s.default.existsSync(e)){let t=JSON.parse(s.default.readFileSync(e,`utf-8`));t.paths.length>0&&t.paths.every(e=>{let n=M(e),r=U[n];return ze({routePath:e,cacheItem:r,sourceContentHash:Re(w[n]||w[e]||Tt(p,t.sourceFiles,n)||Tt(p,t.sourceFiles,e),Oe),ssgPagesDir:z,requireAssetHash:!0})})&&(V=t.paths,W=!0)}}catch{}let gt=W?``:await fe(Ie,D),xt=(H||R)&&s.default.existsSync(I)&&s.default.readdirSync(I).filter(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`)).length>0,St=performance.now(),[G,Mt]=await Promise.all([it({viteConfig:u,resolvedMode:Ie.mode,root:p,htmlEntry:E,outDir:k,clientCacheDir:L,finalCacheDir:j,docsDirName:O,initialClientHash:N,canBypassClientBuild:R,customLogger:mt,onStep:C,shouldSuppressLog:st},()=>Ne(p,O,j)),at({viteConfig:u,resolvedMode:Ie.mode,entry:D,ssrEntry:gt,ssgOut:I,format:Qe,canSkipSsrImport:W,serverBuildSkipped:xt,customLogger:mt,onStep:C,shouldSuppressLog:st})]);if(m=G.outDir,we=G.resolvedClientCacheDir,De=G.resolvedClientHash,Oe=G.pageContentFallbackHash,F=De.substring(0,12),v=G.durationMs,ie=Mt.durationMs,!H)try{let e={};try{e=await s.default.readJson(dt)}catch{}e[De]=(0,o.relative)(ut,I),await Ce(dt,e)}catch{}let Nt=Qe===`esm`&&process.platform===`win32`?`file://`:``,Pt=Qe===`esm`?`.mjs`:`.cjs`;gt.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`);let Ft=`combined`+Pt;try{if(s.default.existsSync(I)){let e=s.default.readdirSync(I).filter(e=>e.endsWith(Pt));e.length>0&&(Ft=e[0])}}catch{}let It=Nt+(0,o.join)(I,Ft).replace(/\\/g,`/`),Lt=Ft.replace(/\.[^/.]+$/,``),Rt=JSON.parse(await s.default.readFile((0,o.join)(I,...vt,`manifest.json`),`utf-8`)),zt=null,Bt=null,K=[],Vt,Ht=`/`,Ut,Wt=null,Gt,Kt=qe;if(!W){let e=typeof require<`u`?require:(0,i.createRequire)(require(`url`).pathToFileURL(__filename).href),n=performance.now(),r=Qe===`esm`?await import(It):e(It);b=performance.now()-n,Vt=r.matchRouteBranchWithParams;let{createRoot:a,includedRoutes:o}=r;Kt=o||qe,zt=await a(!1);let s=zt;if(K=s.routes,Ht=s.base,Ut=s.triggerOnSSRAppRendered,Wt=s.app,Gt=s.routerType,K&&K.length>0)for(let e of K)e.path&&(e.filePath||e.entry)&&!w[e.path]&&(w[e.path]=e.filePath||e.entry);P=Ge(P,We(p,K,w)),Bt=t.t(s,r)}let qt=``,Jt=0,q=null,Yt=null,Xt=null,Zt=!1;async function Qt(){if(Xt){await Xt;return}let e=Yt;e&&(Xt=e.destroy(),await Xt)}if(!W){let e=performance.now(),{paths:t}=await de(K);V=Ze?t:await Kt(t,K||[]),V=Dt(V,K||[]),V=Array.from(new Set(V)),Jt+=performance.now()-e;try{await Ce((0,o.join)(j,`routes-cache.json`),{paths:V,dirStyle:Xe,base:h,sourceFiles:Et(p,w)},0)}catch{}qt=(0,o.join)(I,Lt+Pt)}async function $t(){if(q||Zt||V.length<=4)return;Zt=!0;let e=performance.now();try{qt=(0,o.join)(I,Lt+Pt);let{SsgWorkerPool:t}=await Promise.resolve().then(()=>require(`./ssg-worker-pool-CZPcmzdb.cjs`));q=new t({ssrEntryPath:qt,format:Qe===`esm`?`esm`:`cjs`}),Yt=q,await q.ready(),In=performance.now()-e}catch{In=performance.now()-e,q=null}}let en=Le.criticalCss??`zig-critters`,J,tn;en===`zig-critters`?(J=await te({concurrency:Math.max(1,Math.min($e,a.default.cpus().length,8))}),J||(0,r.warn)("[zig-critters] WASM unavailable; critical CSS disabled for this build. Set `criticalCss: 'beasties'` to enable JS-based critical CSS.")):en===`beasties`&&rt!==!1&&(tn=await ee(m,{publicPath:h,...rt}));let Y=``,nn=``;if(J){let e=(0,o.join)(k,`assets`);if(s.default.existsSync(e)){let t=s.default.readdirSync(e).filter(e=>e.endsWith(`.css`));for(let n of t)Y+=s.default.readFileSync((0,o.join)(e,n),`utf-8`)+`
3
- `}Y&&(nn=l.default.createHash(`sha256`).update(Y).digest())}let rn={},an={},on={},sn=null;if(W)for(let e of V){let t=M(e);on[e]=U[t]?.assetHash||N}else{let[e,t]=await Promise.all([s.default.readFile((0,o.join)(k,...vt,`ssr-manifest.json`),`utf-8`),s.default.readFile((0,o.join)(k,...vt,`manifest.json`),`utf-8`)]);rn=JSON.parse(e),an=JSON.parse(t),sn=x(an);let n=await Ct(k,an,j);await Promise.all(Object.entries(w).map(async([e,t])=>{on[e]=await ae({outDir:k,indexes:sn,ssrManifest:rn,routeSourceFile:t,root:p,clientHash:N,assetHashes:n})}));for(let e of V)on[e]||(on[e]=Oe)}let X=await s.default.readFile((0,o.join)(k,E),`utf-8`);s.default.rmSync((0,o.join)(k,E)),X=At(X,Ve);let cn=Je?null:T({rootContainerId:et,indexHTML:X}),ln=(await import(`p-queue`)).default||await import(`p-queue`),un=new ln({concurrency:$e}),dn=new ln({concurrency:Math.min(a.default.cpus().length,4)}),fn=new ln({concurrency:Math.max(2,Math.min(a.default.cpus().length,6))}),pn={},mn=0,hn=new Map,gn=new Set;for(let e of V){let n=w[t.a(e).replace(/\/$/,``)]||w[e];n&&gn.add(n)}for(let e of gn)try{if(s.default.existsSync(e)){let t=s.default.statSync(e);hn.set(e,{hash:`${t.mtimeMs}:${t.size}`,mtimeMs:t.mtimeMs})}}catch{}let _n=null;!W&&Vt&&(_n=g({routes:[...K],base:Ht,matchRouteBranchWithParams:Vt,serverManifest:Rt,manifest:an,ssrManifest:rn}));let vn=ft({routes:V,outDir:k,ssgPagesDir:z,dirStyle:Xe,contextBase:Ht,fallbackHash:Oe,routeToSourceFileMap:w,sourceMeta:hn,routeToAssetHash:on}),yn=new y,bn=[],xn=[],Sn=[],Cn=[],wn=0,Tn=0,En=0,Dn=0,On=0,kn=0,An=0,jn=0,Mn=0,Nn=0,Pn=0,Z={count:0,matchMs:0,resolveMs:0,loadersMs:0,renderMs:0,helmetMs:0,totalMs:0};function Fn(e){e&&(Z.count++,Z.matchMs+=e.matchMs,Z.resolveMs+=e.resolveMs,Z.loadersMs+=e.loadersMs,Z.renderMs+=e.renderMs,Z.helmetMs+=e.helmetMs,Z.totalMs+=e.totalMs)}let In=0,Ln=!1;function Q(e,t){if(e.length===0)return 0;let n=[...e].sort((e,t)=>e-t),r=Math.ceil(t/100*n.length)-1;return n[Math.max(0,Math.min(r,n.length-1))]}let Rn=0,zn=0,Bn=0,Vn=new Set,Hn=new Set,Un=[],Wn=me({writeFile:async(e,t)=>{await s.default.ensureDir((0,o.dirname)(e)),await s.default.writeFile(e,t,`utf-8`)}}),Gn=JSON.stringify(U),$=xe(U,V),Kn=new Map,qn=new Set;qn.add(z);for(let e of V){let t=Xe===`nested`?(0,o.join)(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;qn.add((0,o.join)(k,(0,o.dirname)(t)));let n=e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e;qn.add((0,o.join)(k,`static-loader-data`,(0,o.dirname)(n)))}qn.add((0,o.join)(k,`static-loader-data`)),await Promise.all([...qn].map(e=>s.default.ensureDir(e)));async function Jn(e,t,i,a,c,l,u,d,f,p,m,g,ee,_,te){let v=performance.now(),{path:y,cachedHtmlFile:ie,cachedLoaderFile:b,normalizedKey:x,sourceContentHash:S,sourceMtimeMs:C,fetchUrl:ae}=e,w;if(!ee&&_===`remix`){if(!_n)throw Error(`The SSR entry must expose matchRouteBranchWithParams for asset collection`);let e=performance.now();w=new Set(await(Kn.get(y)||_n(ae))),wn+=performance.now()-e}else w=new Set;let T;if(d&&Object.keys(d).length>0){let e=bt(y,F);T=e,H&&await s.default.writeFile((0,o.join)(k,e),JSON.stringify(d)),pn[wt(y,h)]=e,mn++}await g?.(y,t,f);let ce=performance.now(),le=cn&&te===X?cn({appHTML:t,metaAttributes:i,bodyAttributes:a,htmlAttributes:c,initialState:null}):await se({rootContainerId:et,appHTML:t,indexHTML:te,metaAttributes:i,bodyAttributes:a,htmlAttributes:c,initialState:null});En+=performance.now()-ce;let E=ee?``:ue(w),D=u?le.replace(/<script[^>]*>(?:(?!<\/script>)[\s\S])*__staticRouterHydrationData(?:(?!<\/script>)[\s\S])*<\/script>/g,``):le;E&&(D=D.replace(`<head>`,`<head>${E}`));let de=performance.now(),fe=await Ye?.(y,D,f)||D;Dn+=performance.now()-de;let O=``;if(d&&Object.keys(d).length>0){let e=JSON.stringify(d).replace(/</g,`\\u003c`);O=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${wt(y,h)}': ${e} };`}let pe=n.t(u),A=fe,me=`<script>window.__VITE_REACT_SSG_HASH__ = '${F}';${O}${pe}<\/script>`,j=performance.now();if(A=A.replace(`<script>${oe}<\/script>`,``),J){if(Y){let e=ne(A,nn,Y,`zig-critters`);try{let t=await yn.getOrCreate(e,async()=>{let{criticalCss:e,stats:t}=await J.extractCriticalCss(A,Y);return e?`<style data-zig-critters>${e}</style>`:(t.truncated&&(0,r.warn)(`[zig-critters] Critical CSS for "${y}" exceeded maxSize (${t.originalSize} bytes) and was skipped.`),null)});t&&!A.includes(`data-zig-critters`)&&(A=A.replace(`</head>`,`${t}</head>`))}catch(e){(0,r.warn)(`[zig-critters] Failed to inline CSS for "${y}": ${e instanceof Error?e.message:String(e)}`)}}A=A.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}else if(tn){let e=ne(A,nn,Y,`beasties`),t=await yn.getOrCreate(e,async()=>{let e=await dn.add(()=>tn.process(A));return re(A,e)});t&&!A.includes(t)&&(A=A.replace(`</head>`,`${t}</head>`)),A=A.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}let he=me+(l||``);he&&(A=A.replace(`<head>`,`<head>${he}`));let ge=Ke===`none`?A:await jt(A,Ke);Sn.push(Math.round(performance.now()-j));let _e=performance.now();H?d&&Object.keys(d).length>0&&T&&await Wn.enqueue((0,o.join)(k,T),JSON.stringify(d)):(await Wn.enqueue(ie,ge),d&&Object.keys(d).length>0&&T?(await Wn.enqueue(b,JSON.stringify(d)),$[x]={contentHash:S,mtime:C?Math.round(C):0,loaderDataFilePath:T,assetHash:e.routeAssetHash}):$[x]={contentHash:S,mtime:C?Math.round(C):0,assetHash:e.routeAssetHash});let ve=performance.now()-_e;Cn.push(Math.round(ve)),xn.push(Math.round(performance.now()-v)),Rn++,jn++,Bn+=ge.length}let Yn=performance.now(),Xn=[];await _t({routes:V,canBypassClientBuild:R,getPlan:e=>pt(vn,e),isCached:e=>{if(H||!R)return!1;try{return ze({routePath:e.path,cacheItem:U[e.normalizedKey],sourceContentHash:e.sourceContentHash,expectedAssetHash:e.routeAssetHash,ssgPagesDir:z})}catch{return!1}},onCacheHit:async e=>{let t=U[e.normalizedKey]?.loaderDataFilePath,n=t?(0,o.join)(k,t):void 0,r=!Vn.has(e.finalOutFile),i=!!n&&!Hn.has(n);r&&Vn.add(e.finalOutFile),i&&n&&Hn.add(n);let a=performance.now();try{r&&Un.push({source:e.cachedHtmlFile,destination:e.finalOutFile}),n&&t&&s.default.existsSync(e.cachedLoaderFile)&&(i&&Un.push({source:e.cachedLoaderFile,destination:n}),pn[wt(e.path,h)]=t,mn++),zn++,Mn++,On+=performance.now()-a}catch(t){throw r&&Vn.delete(e.finalOutFile),i&&n&&Hn.delete(n),Error(`Error on cached page: ${e.path}\n${t.stack}`)}},prepareRoute:e=>{!Wt&&Gt===`remix`&&_n&&Kn.set(e.path,_n(e.fetchUrl))},ensurePool:$t,getPool:()=>q,getWorkerCount:()=>Be(q)?.totalWorkers??0,onWorkerFailure:async(e,t,i,a)=>{if(!Bt)throw Error(`Error on page: ${e}\n${String(i)}`);(0,r.warn)(`[ssg-worker] Retrying ${e} on the main thread after worker failure`),Ln=!0;try{await Qt()}catch{}q=null,Zt=!0;let o=await Bt.render(e);return{path:e,appHTML:o.appHTML,metaAttributes:o.metaAttributes,bodyAttributes:o.bodyAttributes,htmlAttributes:o.htmlAttributes,styleTag:o.styleTag,timings:o.timings,routerContext:n.n(o.routerContext)}},onWorkerResult:async(e,t,n,r)=>{kn+=Math.max(0,r-(n.timings?.totalMs??0)),An++,n.timings&&(bn.push(Math.round(n.timings.totalMs)),Fn(n.timings));let i={...zt,routePath:e},a=performance.now(),o=await Je?.(e,X,i)||X;Tn+=performance.now()-a;let s=n.routerContext?.loaderData?n.routerContext.loaderData:null;await fn.add(()=>Jn(t,n.appHTML,n.metaAttributes,n.bodyAttributes,n.htmlAttributes,n.styleTag,n.routerContext,s,i,Ht,K,Ut,Wt,Gt??`remix`,o))},scheduleMainThread:(e,t)=>{Xn.push(un.add(async()=>{try{let r={...zt,routePath:e},i=performance.now(),a=await Je?.(e,X,r)||X;Tn+=performance.now()-i;let o=performance.now(),{appHTML:s,bodyAttributes:c,htmlAttributes:l,metaAttributes:u,styleTag:d,routerContext:f,timings:p}=await Bt.render(e);bn.push(Math.round(performance.now()-o)),Fn(p);let m=f?.loaderData;await Jn(t,s,u,c,l,d,n.n(f),m||null,r,Ht,K,Ut,Wt,Gt??`remix`,a)}catch(t){throw Error(`Error on page: ${e}\n${t.stack}`)}}))},drainFinalizers:()=>fn.onIdle(),drainMainThread:async()=>{await Promise.all(Xn),await un.onIdle()},drainWrites:()=>Wn.flush(),cleanupAfterFailure:async()=>{try{s.default.existsSync(k)&&await s.default.remove(k)}catch{}},destroyPool:Qt,onNoRenderer:e=>{(0,r.warn)(`[ssg] No SSR context available for ${e}, skipping`)}}),Pn+=performance.now()-Yn;let Zn=performance.now();for(let e of V){if(H)continue;let t=vn.get(e);if(!t||!s.default.existsSync(t.cachedHtmlFile))continue;Vn.has(t.finalOutFile)||Un.push({source:t.cachedHtmlFile,destination:t.finalOutFile});let n=$[t.normalizedKey];if(!n?.loaderDataFilePath||!s.default.existsSync(t.cachedLoaderFile))continue;let r=(0,o.join)(k,n.loaderDataFilePath);Hn.has(r)||Un.push({source:t.cachedLoaderFile,destination:r})}await A(Un);let Qn=Math.round(performance.now()-Zn);Nn+=Qn;let $n=Rn+zn,er=(Bn/1024/1024).toFixed(2),tr=0;if(!H)try{let e=JSON.stringify($)!==Gn;e&&await Ce(B,$),tr=await Ot(z,$,V,e)}catch{}let nr=performance.now()-St,rr=Be(Yt),ir={renderedCount:Rn,cachedCount:zn,renderedSize:Bn,totalPages:$n,prunedCount:tr,clientBuildMs:Math.round(v),serverBuildMs:Math.round(ie),ssrImportMs:Math.round(b),workerPoolSetupMs:Math.round(In),workerUsed:rr!==null&&!Ln,workerCount:rr?.totalWorkers??0,fallbackMainThread:Ln,ssrP50Ms:Q(bn,50),ssrP95Ms:Q(bn,95),ssrP99Ms:Q(bn,99),crittersP50Ms:Q(Sn,50),crittersP95Ms:Q(Sn,95),writeP50Ms:Q(Cn,50),writeP95Ms:Q(Cn,95),routerTimingCount:Z.count,routerMatchAvgMs:Z.count>0?Z.matchMs/Z.count:0,routerResolveAvgMs:Z.count>0?Z.resolveMs/Z.count:0,routerLoadersAvgMs:Z.count>0?Z.loadersMs/Z.count:0,routerRenderAvgMs:Z.count>0?Z.renderMs/Z.count:0,routerHelmetAvgMs:Z.count>0?Z.helmetMs/Z.count:0,routerTotalAvgMs:Z.count>0?Z.totalMs/Z.count:0,pagesPerSecond:$n>0&&nr>0?Math.round($n/(nr/1e3)*10)/10:0,pipeline:{renderedPageCount:jn,cachedPageCount:Mn,clientBuildMs:Math.round(v),serverBuildMs:Math.round(ie),ssrImportMs:Math.round(b),workerPoolSetupMs:Math.round(In),routePreparationMs:Math.round(Jt),workerTransportMs:Math.round(kn),workerRoundTripMs:Math.round(kn),workerTransportAvgMs:An>0?Math.round(kn/An):0,finalizeP50Ms:Q(xn,50),finalizeP95Ms:Q(xn,95),assetCollectionMs:Math.round(wn),beforeHookMs:Math.round(Tn),htmlAssemblyMs:Math.round(En),onPageRenderedHookMs:Math.round(Dn),criticalCssP50Ms:Q(Sn,50),criticalCssP95Ms:Q(Sn,95),cacheWriteMs:Math.round(0+Wn.writeTimeMs()),cachedOutputMs:Math.round(On),renderQueueDrainMs:Math.round(Pn),renderPipelineSettleMs:Math.round(Pn),outputLinkMs:Math.round(Nn)}};C?.({name:`Render pages`,duration:nr,success:!0,details:`${$n} pages (${Rn} new, ${zn} cached, ${er} MB)`,metrics:ir}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:Math.round(nr),success:!0,details:`${$n} pages / ${Rn} new / ${zn} cached / ${er} MB`,metrics:ir})}`);let ar=performance.now(),or=yt(pn);if(await Se((0,o.join)(k,`static-loader-data-manifest-${F}.json`),or),await ct((0,o.join)(j,`ssr`),5,H?`turbo-ssr`:(0,o.basename)(I)),ht(),J?.dispose)try{await J.dispose()}catch{}let sr=Ie.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;sr&&!sr.disabled&&sr.generateSW&&await sr.generateSW();let cr=Math.round(performance.now()-_);C?.({name:`Static loader data`,duration:performance.now()-ar,success:!0,details:`${mn} loader data files`,metrics:{loaderDataFileCount:mn}}),await S?.(m),await kt(k);let lr=be(k),ur=await Te(k,cr,j,{outputFiles:lr,manifestPath:(0,o.join)(we,`dist`,...vt,`manifest.json`)});Ee(k,ur),C?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(cr/1e3).toFixed(1)}s, JS: ${(ur.totalJSBundleSize/1024).toFixed(0)} kB, CSS: ${(ur.totalCSSBundleSize/1024).toFixed(0)} kB`,metrics:{buildTime:cr,totalPages:ur.pages.length,jsSize:ur.totalJSBundleSize,cssSize:ur.totalCSSBundleSize}}),await ve((0,o.join)(j,`ssg-output.json`),De,k,ye(V,$,Xe).concat(`static-loader-data-manifest-${F}.json`),G.clientFiles,lr)}async function Ot(e,t,n=[],r=!1){try{if(!s.default.existsSync(e))return 0;let i=(0,o.join)(e,`.prune-state`);if(!r)try{let e=await s.default.stat(i);if(Date.now()-e.mtimeMs<6e4)return 0}catch{}let a=await s.default.readdir(e),c=new Set,u=new Set([...Object.keys(t),...n]);for(let e of u){let t=l.default.createHash(`md5`).update(e).digest(`hex`);c.add(`${t}.html`),c.add(`${t}.json`)}let d=0;for(let t of a)(t.endsWith(`.html`)||t.endsWith(`.json`))&&!c.has(t)&&(await s.default.remove((0,o.join)(e,t)),d++);return await s.default.writeFile(i,String(Date.now()),`utf8`),d}catch{return 0}}async function kt(e){try{vt.length>0?await s.default.remove((0,o.join)(e,...vt)):await Promise.all([s.default.remove((0,o.join)(e,`manifest.json`)),s.default.remove((0,o.join)(e,`ssr-manifest.json`))])}catch{}}function At(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function jt(e,t){if(t===`prettify`)try{let t=(await import(`prettier/esm/standalone.mjs`)).default,n=(await import(`prettier/esm/parser-html.mjs`)).default;return t.format(e,{semi:!1,parser:`html`,plugins:[n]})}catch(t){return(0,r.error)(`Error formatting html: ${t?.message}`),e}return e}function Mt(e,t,n){if(e.url)try{let t=e.url,n=t.indexOf(`?`),r=n>=0?t.slice(0,n):t,i=n>=0?t.slice(n):``;if(/%[0-9A-Fa-f]{2}/.test(r)){let t=decodeURI(r);if(t!==r){let n=t+i;e.url=n,e.originalUrl&&=n}}}catch{}n()}function Nt({template:e,ssrEntry:n,onBeforePageRender:i,entry:a,rootContainerId:o,onPageRendered:s}){return{name:`vite-react-ssg:dev-server`,configureServer(l){let u=async(u,d)=>{try{let r=u.originalUrl??u.url??`/`,f=await l.ssrLoadModule(n),p=f.createRoot,m=await p(!1,r),h=t.t(m,f),{app:g,base:ee}=m,[_=`/`,te=``]=r.split(`?`),ne=new URLSearchParams(te);if(!g&&ne.has(`_data`))return h.handleLoader(u,d);let v=await l.transformIndexHtml(r,e),re=await i?.(r,v,m)||v,{appHTML:y,bodyAttributes:ie,htmlAttributes:b,metaAttributes:x,styleTag:S}=await h.render(t.i(_,ee));x.push(S);let C=await Promise.all([n,a].map(async e=>await l.moduleGraph.getModuleByUrl(e))),ae=new Set,oe=new Set,w=async e=>{if(!e?.ssrTransformResult||oe.has(e))return;oe.add(e);let{deps:t=[],dynamicDeps:n=[]}=e.ssrTransformResult,r=[...t,...n];for(let e of r)if(e.endsWith(`.css`)||e.endsWith(`.scss`)||e.endsWith(`.sass`)||e.endsWith(`.less`))ae.add(e);else if(e.endsWith(`.ts`)||e.endsWith(`.tsx`)){let t=await l.moduleGraph.getModuleByUrl(e);t&&await w(t)}};await Promise.all(C.map(async e=>w(e)));let T=[...ae].map(e=>le(t.n(l.config.base,e)));x.push(...T);let ce=await se({rootContainerId:o,appHTML:y,indexHTML:re,metaAttributes:x,bodyAttributes:ie,htmlAttributes:b,initialState:null}),ue=await s?.(r,ce,m)||ce;d.statusCode=200,d.setHeader(`Content-Type`,`text/html`),(0,c.send)(u,d,ue,`html`,{headers:`pluginContainer`in l?l.config.server.headers:l.config.preview.headers})}catch(e){let t=e instanceof Error?e:Error(String(e));l.ssrFixStacktrace(t),(0,r.error)(`SSR render error`,t),d.statusCode=500,d.end(t.stack??t.message)}};return l.middlewares.use(Mt),()=>{l.middlewares.use(u)}}}}async function Pt(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,{skipResolveConfig:r,...i}=t,a=process.cwd(),s,l,d,f;if(r){s=e.root||a,l={...e.ssgOptions,...i};let{htmlEntry:t=`index.html`}=l,n=l.entry||await ce(s,t);d=n.startsWith(`virtual:`)||n.includes(`\0`)||n.includes(`boltdocs/entry`)||n.includes(`boltdocs-entry`)?n:(0,o.join)(s,n),f=await u.default.readFile((0,o.join)(s,t),`utf-8`)}else{let t=await(0,c.resolveConfig)(e,`serve`,n,n);s=t.root||a,l={...t.ssgOptions,...i};let{htmlEntry:r=`index.html`}=l,p=l.entry||await ce(s,r),[m,h]=await Promise.all([fe(t,p),u.default.readFile((0,o.join)(s,r),`utf-8`)]);d=m,f=h}let{onBeforePageRender:p,onPageRendered:m,rootContainerId:h=`root`,mock:g=!1}=l;if(process.env.__DEV_MODE_SSR=`true`,g){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-TVNgh-Jn.cjs`));e()}return await(0,c.createServer)({...e,plugins:[...e.plugins??[],Nt({template:f,ssrEntry:d,onBeforePageRender:p,onPageRendered:m,entry:l.entry||`src/main.ts`,rootContainerId:h})]})}catch(e){throw Error(`[vite-react-ssg] Failed to create dev server: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function Ft(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await Pt(t,e);return await r.listen(),It(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){(0,r.error)(`failed to start server: ${e?.message??e}`),process.exit(1)}}function It(e,t=!1){if(t){e.printUrls();return}let n=e.config.logger.info,i=` -- SSR`;if(globalThis.__ssr_start_time){let e=Math.round(performance.now()-globalThis.__ssr_start_time);i+=` ready in ${r.colors.bold(`${e}ms`)}`}n(`\n ${r.colors.cyan(` VITE-REACT-SSG v${D} `)}`,{clear:!e.config.logger.hasWarned}),n(`${r.colors.cyan(`\n VITE v${c.version}`)+r.colors.dim(i)}\n`),n(r.colors.green(` dev server running at:`)),e.printUrls()}var Lt=class{constructor(e){this.template=e.template}stitch(e){let t=this.template;return e.content!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:CONTENT-->/g,e.content)),e.toc!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TOC-->/g,e.toc)),e.meta!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:META-->/g,e.meta)),e.breadcrumbs!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:BREADCRUMBS-->/g,e.breadcrumbs)),e.pageNav!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:PAGENAV-->/g,e.pageNav)),e.title!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TITLE-->/g,e.title)),t}};exports.ShellStitcher=Lt,exports.build=G,exports.createServer=Pt,exports.dev=Ft;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-D-qHiVGv.cjs`),t=require(`./router-adapter-DR3BzW_i.cjs`),n=require(`./critical-FFUmobto.cjs`),r=require(`./ssg-worker-payload-D6kDQQtE.cjs`);let i=require(`@bdocs/dui`),a=require(`node:module`),o=require(`node:os`);o=e.n(o,1);let s=require(`node:path`);s=e.n(s,1);let c=require(`fs-extra`);c=e.n(c,1);let l=require(`vite`),u=require(`node:crypto`);u=e.n(u,1);let d=require(`node:fs/promises`);d=e.n(d,1);let f=require(`node:fs`);f=e.n(f,1);const p=/import\("([^)]+)"\)/g;function m(e,t){let n=new Set;if(!t)return n;for(let r of t)h(e,r,n);return n}function h(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{h(e,t,n)}),n):n}function g(e,t,n,r){let i=e?.map(e=>e.route.entry).filter(Boolean)??[],a=new Set;e?.forEach(e=>{let t=``;e.route.lazy&&(t+=e.route.lazy.toString()),e.route.Component?._payload?._result&&(t+=e.route.Component._payload._result.toString());let n=t.matchAll(p);for(let e of n)a.add(e[1].split(`/`).at(-1)??``)});let o=new Set(i);for(let e of a){let t=n.find(([t,n])=>n.file.endsWith(e));t&&o.add(t[0])}let s=new Set;for(let e of o){let n=r.get(e);if(!n){let i=m(t.manifest,new Set([e]));n=new Set;for(let e of i)for(let r of t.ssrManifest[e]||[])n.add(r);r.set(e,n)}for(let e of n)s.add(e)}return s}function ee(e){let t=Object.entries(e.serverManifest),n=new Map,r=new Map;return i=>{let a=r.get(i);if(a)return a;let o=Promise.resolve().then(()=>{let r=g(e.matchRouteBranchWithParams([...e.routes],i,e.base),e,t,n);return new Set(r)});return r.set(i,o),o.catch(()=>{r.get(i)===o&&r.delete(i)}),o}}function te(e,t,n,r){let i=e.replace(/<!--[\s\S]*?-->/g,``).replace(/>([^<]+)</g,`><`).replace(/\s+/g,` `).trim();return u.default.createHash(`sha256`).update(r).update(`\0`).update(i).update(`\0`).update(t||n).digest(`hex`)}function ne(e){return e.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi)??[]}function re(e,t){let n=new Set(ne(e)),r=ne(t).filter(e=>!n.has(e));return r.length>0?r.join(`
2
+ `):null}var ie=class{constructor(e={}){this.entries=new Map,this.cacheDir=e.cacheDir,this.maxEntries=e.maxEntries??1024}getOrCreate(e,t,n={}){let r=this.entries.get(e);if(r)return r.promise;let i=n.engine??`zig-critters`,a={promise:Promise.resolve(null),settled:!1},o=Promise.resolve().then(async()=>{if(this.cacheDir){let t=await this.readDisk(e,i);if(t!==void 0)return t}return t()}).then(t=>(this.cacheDir&&this.writeDisk(e,i,t).catch(()=>{}),t)).catch(t=>{throw this.entries.delete(e),t}).finally(()=>{a.settled=!0,this.evictSettledEntries()});return a.promise=o,this.entries.set(e,a),this.evictSettledEntries(),o}get size(){return this.entries.size}diskPath(e){return(0,s.join)(this.cacheDir,`critical-css-${e}.json`)}async readDisk(e,t){try{let n=await c.default.readFile(this.diskPath(e),`utf-8`),r=JSON.parse(n);if(r?.v!==2||r?.engine!==t||!(r.style===null||typeof r.style==`string`))return;let i=new Date;return c.default.utimes(this.diskPath(e),i,i).catch(()=>{}),r.style}catch{return}}async writeDisk(e,t,n){if(!this.cacheDir||n!==null&&n.length>262144)return;let r={v:2,engine:t,style:n};await c.default.ensureDir(this.cacheDir),await c.default.writeFile(this.diskPath(e),JSON.stringify(r),`utf-8`)}evictSettledEntries(){for(;this.entries.size>this.maxEntries;){let e=!1;for(let[t,n]of this.entries)if(n.settled){this.entries.delete(t),e=!0;break}if(!e)return}}};async function ae(e,t={}){let n=t.maxAgeMs??720*60*60*1e3,r=t.maxEntries??5e3;try{if(!c.default.existsSync(e))return 0;let t=Date.now()-n,i=[];for(let n of await c.default.readdir(e)){if(!n.startsWith(`critical-css-`)||!n.endsWith(`.json`))continue;let r=(0,s.join)(e,n);try{let e=await c.default.stat(r),a=Math.max(e.mtimeMs,e.atimeMs);a<t?(await c.default.remove(r),i.push({file:n,usedAt:0})):i.push({file:n,usedAt:a})}catch{}}let a=i.filter(e=>e.usedAt===0).length;if(i.length>r){let t=i.filter(e=>e.usedAt>0).sort((e,t)=>t.usedAt-e.usedAt);for(let n of t.slice(r))try{await c.default.remove((0,s.join)(e,n.file)),a++}catch{}}return a}catch{return 0}}const _=new Set([`.js`,`.mjs`,`.css`]);function v(e){let t=s.default.extname(e).toLowerCase();return _.has(t)}function oe(e){let t=new Map,n=new Map;for(let r of Object.values(e))t.set(r.file,r),r.src&&n.set(r.src,r);return{byFile:t,bySrc:n}}function y(e,t,n){if(n.has(t))return;let r=e.get(t);if(r){n.add(t);for(let t of r.imports||[])v(t)&&y(e,t,n);for(let e of r.css||[])n.add(e);for(let t of r.dynamicImports||[])v(t)&&!n.has(t)&&y(e,t,n)}}async function se(e,t,n){if(n){let e=u.default.createHash(`md5`);for(let r of t){let t=n.get(r);t&&e.update(t)}return e.digest(`hex`)}let r=new Map;await Promise.all(t.map(async t=>{try{let n=await(0,d.readFile)(s.default.join(e,t));r.set(t,n)}catch{}}));let i=u.default.createHash(`md5`);for(let e of Array.from(r.keys()).sort()){let t=r.get(e);t&&i.update(t)}return i.digest(`hex`)}async function ce(e){let{outDir:t,indexes:n,manifest:r,ssrManifest:i,routeSourceFile:a,root:o,clientHash:c,assetHashes:l,chunkPackMaps:u}=e,d=n;if(!d){if(!r)throw Error(`computeRouteClientAssetHash requires either indexes or manifest`);d=oe(r)}let{byFile:f,bySrc:p}=d,m=s.default.relative(o,a).replace(/\\/g,`/`),h=new Set,g=p.get(m);if(g)y(f,g.file,h);else if(u){let e=s.default.isAbsolute(a)?a:s.default.resolve(o,a),t=u.chunkMap[a]??u.chunkMap[e]??u.chunkMap[`/${e}`];if(t!==void 0){for(let e of f.values())if((e.src||``).includes(`chunk-${t}.mjs`)||e.file.includes(`chunk-${t}`)){y(f,e.file,h);break}}}if(h.size===0){let e=[m,a.replace(/\\/g,`/`)];for(let t of e){let e=i[t];if(Array.isArray(e))for(let t of e)v(t)&&y(f,t,h)}}if(h.size===0){if(!c)throw Error(`No client chunk found for ${a} and no global client hash was provided`);return c}return se(t,Array.from(h).sort(),l)}const le=`/* SCRIPT_COMMENT_PLACEHOLDER */`;function b(e,t,n){let r=n.trim();if(!r)return e;let i=RegExp(`<${t}\\b([^>]*)>`,`i`).exec(e);if(!i)return e;let a=[...r.matchAll(/(?:^|\s)([A-Za-z_:][\w:.-]*)\s*=/g)].map(e=>e[1]),o=i[1];for(let e of a){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);o=o.replace(RegExp(`\\s+${t}\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s>]*)`,`gi`),``)}let s=o.trim()?`${o.trim()} ${r}`:r;return e.replace(i[0],`<${t} ${s}>`)}function ue({rootContainerId:e,indexHTML:t}){let n=[{token:`<html`,kind:`html`},{token:`<head>`,kind:`head`},{token:`<body`,kind:`body`},{token:`<div id="${e}"></div>`,kind:`container`}].map(({token:e,kind:n})=>({kind:n,token:e,index:t.indexOf(e),lastIndex:t.lastIndexOf(e)})).sort((e,t)=>e.index-t.index);if(n.some(e=>e.index<0||e.index!==e.lastIndex))return null;let r=[],i=0;for(let e of n)r.push({text:t.slice(i,e.index)}),r.push({kind:e.kind,text:``}),i=e.index+e.token.length;return r.push({text:t.slice(i)}),({appHTML:t,metaAttributes:n,bodyAttributes:i,htmlAttributes:a,initialState:o})=>{let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${le}<\/script>`,l=n.join(``),u=`<div id="${e}" data-server-rendered="true">${t}</div>${s}${c}`;return b(b(r.map(e=>{if(!e.kind)return e.text;switch(e.kind){case`html`:return`<html`;case`head`:return`<head>${l}`;case`body`:return`<body`;case`container`:return u;default:return e.text}}).join(``),`html`,a),`body`,i)}}async function de({rootContainerId:e,indexHTML:t,appHTML:n,metaAttributes:r,bodyAttributes:i,htmlAttributes:a,initialState:o}){let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${le}<\/script>`,l=r.join(``),u=`<div id="${e}"></div>`;if(t.includes(u))return b(b(t.replace(`<head>`,`<head>${l}`).replace(u,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`),`html`,a),`body`,i);let d=await import(`html5parser`),f=d.parse(t),p;if(d.walk(f,{enter:r=>{if(!p&&r?.type===d.SyntaxKind.Tag&&Array.isArray(r.attributes)&&r.attributes.length>0&&r.attributes.some(t=>t.name.value===`id`&&t.value?.value===e)){let e=[...r.attributes.map(({name:{value:e},value:t})=>`${e}="${t.value}"`)].join(` `),i=t.slice(0,r.start),a=t.slice(r.end);p=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!p)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return b(b(p,`html`,a),`body`,i)}async function x(e,t=`index.html`){let[,n]=[...(await c.default.readFile((0,s.join)(e,t),`utf-8`)).matchAll(/<script(?:.*?)src=["'](.+?)["'](?!<)(?:.*)>(?:[\n\r\s]*?)(?:<\/script>)/gim)].find(e=>{let[t]=e,[,n]=t.match(/.*\stype=(?:'|")?([^>'"\s]+)/i)||[];return n===`module`})||[];return n||`src/main.ts`}function S(e){return`<link rel="stylesheet" href="${e}">`}function fe(e){let t=new Set,n=[];return e&&e.forEach(e=>{if(!t.has(e)){t.add(e);let r=C(e);r&&n.push(r)}}),n.join(``)}function C(e){return e.endsWith(`.js`)?`<link rel="modulepreload" crossorigin href="${e}">`:e.endsWith(`.css`)?`<link rel="stylesheet" crossorigin href="${e}">`:e.endsWith(`.woff`)||e.endsWith(`.woff2`)||e.endsWith(`.ttf`)?`<link rel="preload" as="font" type="font/woff2" crossorigin href="${e}">`:e.endsWith(`.png`)||e.endsWith(`.jpg`)||e.endsWith(`.jpeg`)||e.endsWith(`.webp`)||e.endsWith(`.gif`)||e.endsWith(`.ico`)||e.endsWith(`.svg`)?`<link rel="preload" as="image" crossorigin href="${e}">`:null}var w=`0.4.2`;async function pe(e){if(!e||e.length===0)return{paths:[`/`]};let t=new Set,n=async(e,i=``)=>{i=i.replace(/\/$/g,``);for(let a of e){if(a.lazy){let e=await a.lazy();e&&(a={...a,...e})}let e=a.path;if(e=r(e,i),a.getStaticPaths&&T(e)){let e=await a.getStaticPaths();for(let t of e)t=r(t,i),Array.isArray(a.children)&&await n(a.children,t)}a.index&&!e&&t.add(i||`/`),Array.isArray(a.children)&&await n(a.children,e)}};return await n(e),{paths:Array.from(t)};function r(e,n){if(e!=null){if(e===`.`){let e=n||`/`;return t.add(e),e}e=n&&!e.startsWith(`/`)?`${n}${e?`/${e}`:``}`:e,t.add(e)}return e}}async function me(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)||t.includes(`boltdocs/entry`)||t.includes(`boltdocs-entry`)?t:(0,s.join)(e.root,t))}const he=/[:*?]/;function T(e){return e?he.test(e):!1}async function ge(e,t){if(e!==t){await c.default.ensureDir((0,s.dirname)(t)),await c.default.remove(t);try{await c.default.link(e,t)}catch{await c.default.copy(e,t)}}}async function E(e){let t=new Set,n=[];for(let r of e)t.has(r.destination)||(t.add(r.destination),n.push(ge(r.source,r.destination)));await Promise.all(n)}function _e({batchSize:e=64,maxBytes:t=8388608,writeFile:n}){let r=Math.max(1,Math.floor(e)),i=Math.max(1,Math.floor(t)),a=[],o=0,s=Promise.resolve(),c=0,l=()=>{if(a.length===0)return s;let e=a;return a=[],o=0,s=s.then(async()=>{let t=performance.now();await Promise.all(e.map(({filePath:e,content:t})=>n(e,t))),c+=performance.now()-t}),s};return{enqueue(e,t){let u=Buffer.byteLength(t,`utf8`);return u>i?(s=l().then(async()=>{let r=performance.now();await n(e,t),c+=performance.now()-r}),s):(a.push({filePath:e,content:t}),o+=u,a.length>=r||o>=i?l():Promise.resolve())},flush:l,pendingCount(){return a.length},writeTimeMs(){return c}}}function D(e,t,n,r=[]){return{cacheHash:e,clientFiles:[...new Set(t)].sort(),pageFiles:[...new Set(n)].sort(),auxiliaryFiles:[...new Set(r)].sort()}}function ve(e,t,n,r,i,a=e?.auxiliaryFiles||[]){if(!e||e.cacheHash!==t)return!1;let o=(e,t)=>e.length===t.length?e.every((e,n)=>e===t[n]):!1,s=[...new Set(r)].sort(),l=[...new Set(i)].sort(),u=[...new Set(a)].sort();if(!o(e.clientFiles,s)||!o(e.pageFiles,l)||!o(e.auxiliaryFiles||[],u))return!1;let d=[...s,...l,...u];return o(Ce(n),[...new Set(d)].sort())?d.every(e=>c.default.existsSync(`${n}/${e}`)):!1}function ye(e,t,n){if(!e)return!1;let r=e.clientFiles.filter(e=>e!==n).sort(),i=t.filter(e=>e!==n).sort();return r.length===i.length&&r.every((e,t)=>e===i[t])}async function be(e){try{let t=await c.default.readJson(e);return!t||typeof t.cacheHash!=`string`||!Array.isArray(t.clientFiles)||!Array.isArray(t.pageFiles)||!Array.isArray(t.auxiliaryFiles)||t.clientFiles.some(e=>typeof e!=`string`)||t.pageFiles.some(e=>typeof e!=`string`)||t.auxiliaryFiles.some(e=>typeof e!=`string`)?void 0:D(t.cacheHash,t.clientFiles,t.pageFiles,t.auxiliaryFiles)}catch{return}}async function xe(e,t,n,r,i=[],a){let o=a||Ce(n),s=new Set(r),c=new Set(i);return Ee(e,D(t,i.length>0?[...c]:o.filter(e=>!s.has(e)),r,i.length>0?o.filter(e=>!s.has(e)&&!c.has(e)):[]))}function Se(e,t,n){let r=[];for(let i of e){let e=i.replace(/^\/+/,``).replace(/\/+$/,``),a=n===`nested`?`${e?`${e}/`:``}index.html`:`${(i.endsWith(`/`)?`${i}index`:i).replace(/^\/+/,``)}.html`;r.push(a);let o=t[O(i)]?.loaderDataFilePath;o&&r.push(o)}return[...new Set(r)]}function Ce(e){let t=[],n=r=>{let i;try{i=c.default.readdirSync(r,{withFileTypes:!0})}catch{return}for(let a of i){if(a.name===`.vite`)continue;let i=`${r}/${a.name}`;a.isDirectory()?n(i):a.isFile()&&t.push((0,s.relative)(e,i).split(s.sep).join(`/`))}};return n(e),t.sort()}function O(e){return!e||e===`/`?``:t.a(e).replace(/\/+$/,``)}function we(e,t){let n=new Set(t.map(O)),r={};for(let[t,i]of Object.entries(e)){let e=O(t);n.has(e)&&(r[e]=i)}return r}async function Te(e,t){try{if(await c.default.readFile(e,`utf8`)===t)return!1}catch{}return await c.default.ensureDir((0,s.dirname)(e)),await c.default.writeFile(e,t,`utf8`),!0}async function Ee(e,t,n=2){try{let n=await c.default.readJson(e);if(JSON.stringify(n)===JSON.stringify(t))return!1}catch{}return await c.default.ensureDir((0,s.dirname)(e)),await c.default.writeJson(e,t,{spaces:n}),!0}const k=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.svg`,`.webp`,`.avif`,`.ico`]),A=new Set([`.woff`,`.woff2`,`.ttf`,`.otf`,`.eot`]);function j(e){try{return f.default.statSync(e).size}catch{return 0}}const M=`boltdocs-metrics.json`;function N(e){if(!e)return null;try{let t=(0,s.join)(e,M);return f.default.existsSync(t)?JSON.parse(f.default.readFileSync(t,`utf-8`)):null}catch{return null}}function P(e,t){try{let n=s.default.resolve(e,`..`,`reports`);f.default.existsSync(n)||f.default.mkdirSync(n,{recursive:!0}),f.default.writeFileSync((0,s.join)(e,M),JSON.stringify(t))}catch{}}async function De(e,t,n,r={}){if(!r.outputFiles&&!r.manifestPath){let e=N(n);if(e)return e.buildTime=t,e}let i=(0,s.join)(e,`.vite`),a=(0,s.join)(e,`assets`),o={},c=r.manifestPath||(0,s.join)(i,`manifest.json`);f.default.existsSync(c)&&(o=JSON.parse(await f.default.readFileSync(c,`utf-8`)));let l=0,u=0;for(let[,t]of Object.entries(o)){let{file:n,css:r=[]}=t,i=j((0,s.join)(e,n));l+=i;for(let t of r)u+=j((0,s.join)(e,t))}let d=0,p=0;if(f.default.existsSync(a)){let e=f.default.readdirSync(a,{withFileTypes:!0});for(let t of e){if(!t.isFile())continue;let e=s.default.extname(t.name).toLowerCase(),n=(0,s.join)(a,t.name);k.has(e)?d+=j(n):A.has(e)&&p++}}let m=(0,s.join)(e,`index.html`),h=0,g=[];if(f.default.existsSync(m)){let e=j(m);h+=e,g.push({route:`/`,htmlSize:e,htmlFile:`index.html`})}let ee=r.outputFiles?[...r.outputFiles]:(()=>{try{return f.default.readdirSync(e,{recursive:!0})}catch{return[]}})();for(let t of ee){if(!t.endsWith(`.html`)||t===`index.html`)continue;let n=j((0,s.join)(e,t));if(n>0){let e=`/`+t.replace(/\\/g,`/`).replace(/\/index\.html$/,``).replace(/\.html$/,``);h+=n,g.push({route:e,htmlSize:n,htmlFile:t})}}let te={buildTime:t,totalJSBundleSize:l,totalCSSBundleSize:u,totalImagesSize:d,totalHTMLSize:h,fontCount:p,pages:g};return n&&P(n,te),te}function Oe(e,t){let n=s.default.resolve(e,`..`,`.boltdocs`,`reports`);f.default.existsSync(n)||f.default.mkdirSync(n,{recursive:!0});let r=(0,s.join)(n,`performance.json`);f.default.writeFileSync(r,JSON.stringify(t,null,2))}const ke=new Set([`node_modules`,`dist`,`coverage`]);function Ae(e,t){return(0,s.relative)(e,t).replace(/\\/g,`/`)}function F(e,t,n){try{let r=c.default.readFileSync(t),i=new Uint8Array(r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)),a=(0,u.createHash)(`sha1`).update(i).digest(`hex`);n.update(`${Ae(e,t)}\0${a}\0`)}catch{}}function I(e,t,n){let r;try{r=c.default.readdirSync(e)}catch{return}r.sort();for(let i of r){if(i.startsWith(`.`)||ke.has(i))continue;let r=(0,s.join)(e,i),a;try{a=c.default.statSync(r)}catch{continue}a.isDirectory()?I(r,t,n):a.isFile()&&F(t,r,n)}}function je(e,t){let n=(0,a.createRequire)(n(`url`).pathToFileURL(__filename).href);for(let r of[`boltdocs`,`@bdocs/ssg`])try{let i=(0,s.join)((0,s.dirname)(n.resolve(`${r}/package.json`,{paths:[e]})),`dist`);c.default.existsSync(i)&&I(i,e,t)}catch{}}const L=[`boltdocs.config.ts`,`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.cjs`,`package.json`,`tsconfig.json`];function R(e,t){for(let n of L){let r=(0,s.join)(e,n);c.default.existsSync(r)&&F(e,r,t)}}function Me(e,t,n){try{c.default.removeSync((0,s.join)(n,`hash-merkle.json`))}catch{}try{let n=(0,u.createHash)(`sha256`);je(e,n);let r=(0,s.join)(e,t);return c.default.existsSync(r)&&I(r,e,n),R(e,n),n.update(`v4\0`),n.digest(`hex`)}catch(e){return(0,i.warn)(`[client-hash] Failed to compute client code hash: ${e instanceof Error?e.message:String(e)}`),(0,u.createHash)(`sha256`).update(`__client_hash_error__`).digest(`hex`)}}function Ne(e){return u.default.createHash(`md5`).update(e).digest(`hex`)}function Pe(e,t){return!!(e&&e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs&&e.ino===t.ino)}async function Fe(e){if(e)try{let t=await c.default.readJson(e);return!t||t.version!==1||typeof t.files!=`object`?void 0:t}catch{return}}async function z(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await c.default.ensureDir((0,s.dirname)(e)),await c.default.writeJson(n,{version:1,files:t},{spaces:0}),await c.default.move(n,e,{overwrite:!0})}catch{await c.default.remove(n).catch(()=>{})}}async function B(e,t,n){let r=await Fe(n),i=new Map,a={};return await Promise.all([...new Set(t)].map(async t=>{let n=(0,s.join)(e,t);try{let e=await c.default.stat(n);if(!e.isFile())return;let o=r?.files[t];if(Pe(o,e)){i.set(t,o.hash),a[t]=o;return}let s=Ne(await c.default.readFile(n));i.set(t,s),a[t]={hash:s,size:e.size,mtimeMs:e.mtimeMs,ctimeMs:e.ctimeMs,ino:e.ino}}catch{}})),n&&await z(n,a),i}function Ie(e){let t=u.default.createHash(`sha1`);return t.update(`v4`),t.update(`\0`),t.update(c.default.readFileSync(e)),t.digest(`hex`)}function Le(e,t){if(e)try{return Ie(e)}catch{}return t}function Re(e,t){try{return Ie(e)}catch{return t}}function ze({routePath:e,cacheItem:t,sourceContentHash:n,expectedAssetHash:r,ssgPagesDir:i,requireAssetHash:a=!1}){if(!t||t.contentHash!==n||a&&!t.assetHash||r!==void 0&&t.assetHash!==r)return!1;let o=u.default.createHash(`md5`).update(e).digest(`hex`);return!(!c.default.existsSync((0,s.join)(i,`${o}.html`))||t.loaderDataFilePath&&!c.default.existsSync((0,s.join)(i,`${o}.json`)))}function Be(e){return e===null?null:e.poolMetrics()}function Ve(e,t){return(0,s.isAbsolute)(t)?t:(0,s.join)(e,t)}function He(e,t={}){let n={};for(let[r,i]of Object.entries(t)){let t=O(r);n[t]=Ve(e,i)}return Object.freeze(n)}function Ue(e){return Object.freeze({root:e.root,outDir:e.outDir,cacheDir:e.cacheDir,base:e.base,mode:e.mode,entry:e.entry,htmlEntry:e.htmlEntry,docsDirName:e.docsDirName,clientHash:e.clientHash,sourceFiles:He(e.root,e.routeToSourceFileMap)})}function We(e,t,n={}){let r=He(e,n),i=t.map(t=>{let i=O(t.path),a=n[t.path],o=a?Ve(e,a):r[i]||t.componentPath;return{path:t.path,key:i,sourceFile:o,componentPath:t.componentPath,locale:t.locale,version:t.version,collection:t.collection}}),a=new Map;for(let e of i)a.has(e.key)||a.set(e.key,e);return Object.freeze({routes:Object.freeze(i),byPath:a,sourceFiles:r})}function Ge(e,t){return Object.freeze({...e,routeManifest:t})}const V=[/^@bdocs\//,/^boltdocs(?:\/|$)/,/^react-helmet-async(?:\/|$)/],Ke=[`react`,`react-dom`];function qe(e){return Number.parseInt(l.version,10)>=8?{rolldownOptions:e}:{rollupOptions:e}}function Je(){let e=`\0virtual:ssr-empty-css`;return{name:`vite-react-ssg:ssr-skip-css`,enforce:`pre`,resolveId(t){return t.endsWith(`.css`)&&!t.startsWith(`\0`)?e+t:null},load(t){return t.startsWith(e)?{code:`export default undefined`,map:null}:null}}}function Ye(e,t){let n=[],r=i=>{let a;try{a=c.default.readdirSync(i,{withFileTypes:!0})}catch{return}for(let o of a){if(o.name===`.vite`)continue;let a=(0,s.join)(i,o.name);if(o.isDirectory())r(a);else if(o.isFile()){let r=(0,s.relative)(e,a).split(s.sep).join(`/`);r!==t&&n.push(r)}}};return r(e),n.sort()}function Xe(e){return e.map(e=>{if(Array.isArray(e))return Xe(e);if(e&&typeof e==`object`&&`name`in e){let t=e.name;if(t===`vite:react-babel`||t===`vite:react-refresh`||t===`vite:react-jsx`||typeof t==`string`&&t.includes(`tailwind`)||t===`vite-plugin-image-optimizer`||t===`vite-plugin-boltdocs-dev-server`)return null}return e}).filter(Boolean)}async function Ze(e){let t=[],n=async r=>{let i;try{i=await c.default.readdir(r,{withFileTypes:!0})}catch{return}for(let a of i){let i=(0,s.join)(r,a.name);a.isDirectory()?await n(i):(a.isFile()||a.isSymbolicLink())&&t.push((0,s.relative)(e,i).split(s.sep).join(`/`))}};return await n(e),t.sort()}async function Qe(e){try{let t=await c.default.readFile(e);return(0,u.createHash)(`sha256`).update(t.toString()).digest(`hex`)}catch{return}}function $e(e,t){if(!t||(0,s.isAbsolute)(t))return;let n=(0,s.resolve)(e),r=(0,s.resolve)(n,t),i=(0,s.relative)(n,r);if(!(!i||i===`..`||i.startsWith(`..${s.sep}`)||(0,s.isAbsolute)(i)))return r}async function et(e,t){let n=(0,s.join)((0,s.resolve)(t,`..`),`.boltdocs-public-assets.json`),r={};try{let e=await c.default.readJson(n);if(Array.isArray(e))for(let t of e)typeof t==`string`&&(r[t]=``);else if(e&&typeof e==`object`){let t=e.files;if(t&&typeof t==`object`)for(let[e,n]of Object.entries(t))typeof n==`string`&&(r[e]=n)}}catch{}let i=e&&c.default.existsSync(e)?await Ze(e):[],a={};for(let t of i){let n=await Qe((0,s.join)(e,t));n&&(a[t]=n)}for(let[e,n]of Object.entries(r)){if(a[e]!==void 0||!n)continue;let r=$e(t,e);r&&await Qe(r)===n&&await c.default.remove(r)}e&&c.default.existsSync(e)&&(await c.default.ensureDir(t),await c.default.copy(e,t,{overwrite:!0,errorOnExist:!1})),await c.default.ensureDir((0,s.resolve)(t,`..`)),await c.default.writeJson(n,{version:1,files:a})}function tt(e){return(0,l.mergeConfig)(e.viteConfig,{logLevel:`warn`,build:{manifest:!0,ssrManifest:!0,chunkSizeWarningLimit:2e3,reportCompressedSize:!1,sourcemap:!1,cssMinify:`esbuild`,...qe({input:{app:(0,s.join)(e.root,e.htmlEntry||`./index.html`)},output:{manualChunks(e){if(!(!e.includes(`node_modules`)&&!e.includes(`.boltdocs`))){if(e.includes(`/node_modules/react/`)||e.includes(`/node_modules/react-dom/`)||e.includes(`/node_modules/scheduler/`))return`react-vendor`;if(e.includes(`/node_modules/react-router`))return`react-router`;if(e.includes(`/node_modules/lucide-react`))return`lucide-icons`;if(e.includes(`/node_modules/react-helmet-async`))return`react-helmet`}}},onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(t){e.onResolvedOutputDir((0,s.isAbsolute)(t.build.outDir||``)?t.build.outDir||`dist`:(0,s.resolve)(e.root,t.build.outDir||`dist`))}}]})}function nt(e){return(0,l.mergeConfig)(e.viteConfig,{logLevel:`warn`,build:{ssr:e.entry.includes(`boltdocs`)||e.entry.startsWith(`virtual:`)?`virtual:boltdocs-entry`:!e.canSkipSsrImport&&e.ssrEntry?e.ssrEntry:e.entry,manifest:!0,outDir:e.ssgOut,reportCompressedSize:!1,target:`es2022`,minify:!1,cssCodeSplit:!1,cssMinify:!1,...qe({output:e.format===`esm`?{entryFileNames:`combined.mjs`,format:`esm`}:{entryFileNames:`combined.cjs`,format:`cjs`},platform:`node`,onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,ssr:{noExternal:[...V],external:[...Ke]},plugins:[...Xe(e.viteConfig.plugins||[]),Je()]})}async function rt(e,t){let n=e.outDir,r=e.clientCacheDir,i=e.initialClientHash??t(),a=i,o=[],u=performance.now();if(e.canBypassClientBuild){e.onStep?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),c.default.existsSync(e.outDir)&&await c.default.remove(e.outDir);let t=(0,s.join)(e.clientCacheDir,`dist`);await et(e.viteConfig.publicDir,t),st(t,e.outDir),o=Ye((0,s.join)(e.clientCacheDir,`dist`),e.htmlEntry)}else{await(0,l.build)(tt({...e,onResolvedOutputDir:e=>{n=e}}));let d=performance.now()-u;e.onStep?.({name:`Client build`,duration:d,success:!0,details:`Vite production build`}),i=t(),a=i,r=(0,s.join)(e.finalCacheDir,`client-cache`,i);let f=(0,s.join)(r,`client-hash.txt`);await c.default.ensureDir(r);let p=(0,s.join)(r,`dist`);c.default.existsSync(p)&&await c.default.remove(p),await c.default.copy(n,p,{overwrite:!0,errorOnExist:!1}),await et(e.viteConfig.publicDir,p),o=Ye(p,e.htmlEntry),await c.default.writeFile(f,i,`utf-8`),await ct((0,s.join)(e.finalCacheDir,`client-cache`))}return{outDir:n,durationMs:e.canBypassClientBuild?0:performance.now()-u,resolvedClientCacheDir:r,resolvedClientHash:i,pageContentFallbackHash:a,clientFiles:o}}async function it(e){if(e.serverBuildSkipped)return e.onStep?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),{durationMs:0};c.default.existsSync(e.ssgOut)&&await c.default.remove(e.ssgOut),process.env.VITE_SSG=`true`;let t=performance.now();await(0,l.build)(nt(e));let n=performance.now()-t;return e.onStep?.({name:`Server build`,duration:n,success:!0,details:`Vite SSR bundle`}),{durationMs:n}}function at(e,t){if(!t||(0,s.isAbsolute)(t))return;let n=(0,s.resolve)(e,t),r=(0,s.relative)((0,s.resolve)(e),n);if(!(r===`..`||r.startsWith(`..${s.sep}`)||(0,s.isAbsolute)(r)))try{let t=c.default.realpathSync(e),r=c.default.realpathSync(n),i=(0,s.relative)(t,r);return i===`..`||i.startsWith(`..${s.sep}`)||(0,s.isAbsolute)(i)||!c.default.readdirSync(r).some(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`))?void 0:r}catch{return}}function ot(e){return e.startsWith(`dist/`)||e.startsWith(`.boltdocs/build/ssr/`)||e.startsWith(`rendering chunks`)||e===`computing gzip size...`||e.includes(`built in`)&&e.includes(`s`)}function st(e,t){let n=c.default.readdirSync(e,{withFileTypes:!0});c.default.mkdirSync(t,{recursive:!0});for(let r of n){let n=(0,s.join)(e,r.name),i=(0,s.join)(t,r.name);if(r.isDirectory())st(n,i);else if(r.isFile())try{c.default.linkSync(n,i)}catch{c.default.copyFileSync(n,i)}}}async function ct(e,t=5,n){try{if(!c.default.existsSync(e))return;let r=await c.default.readdir(e,{withFileTypes:!0}),i=[];for(let t of r){if(!t.isDirectory())continue;let n=(0,s.join)(e,t.name),r=await c.default.stat(n);i.push({name:t.name,mtime:r.mtimeMs})}i.sort((e,t)=>t.mtime-e.mtime);let a=new Set(i.slice(0,t).map(e=>e.name));for(let t of i)n&&t.name===n||a.has(t.name)||await c.default.remove((0,s.join)(e,t.name))}catch{}}function lt(e,t){let n=e.warn;e.warn=(e,r)=>{e.includes(`externalized for browser compatibility`)||e.includes(`can't be bundled without type`)||t(e)||n(e,r)};let r=e.info;return e.info=(e,n)=>{t(e)||r(e,n)},e}function ut(e,t){return t===`nested`?(0,s.join)(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`}function H(e){return Object.freeze(e)}function dt(e){let n=new Map;for(let r of e.routes){let i=u.default.createHash(`md5`).update(r).digest(`hex`),a=O(r),o=e.routeToSourceFileMap[a]||e.routeToSourceFileMap[r],c=o?e.sourceMeta.get(o):void 0;n.set(r,H({path:r,pathHash:i,cachedHtmlFile:(0,s.join)(e.ssgPagesDir,`${i}.html`),cachedLoaderFile:(0,s.join)(e.ssgPagesDir,`${i}.json`),finalOutFile:(0,s.join)(e.outDir,ut(r,e.dirStyle)),normalizedKey:a,sourceContentHash:c?.hash||e.fallbackHash,sourceMtimeMs:c?.mtimeMs||0,routeAssetHash:e.routeToAssetHash[r]??e.fallbackHash,fetchUrl:`${t.o(e.contextBase)}${t.r(r)}`}))}return n}function ft(e,t){let n=e.get(t);if(!n)throw Error(`Missing render plan for route: ${t}`);return n}function pt(e){return e.then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e}))}function mt(e){return!Number.isFinite(e)||e<=0?2:Math.max(2,Math.min(32,Math.ceil(e)*2))}function ht(e,t){return e>4&&!t}function gt(e,t){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`&&(t===void 0||e.path===t)}function _t(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return n.path===t&&typeof n.appHTML==`string`&&Array.isArray(n.metaAttributes)&&typeof n.bodyAttributes==`string`&&typeof n.htmlAttributes==`string`&&(n.routerContext===null||typeof n.routerContext==`object`&&!Array.isArray(n.routerContext))}async function vt(e){let t=[],n=new Set,r=e.getPool(),i=mt(r?e.getWorkerCount?.()??0:0),a=0,o=0,s=!1,c=async()=>{if(t.length===0)return;let e=(await Promise.all(t)).find(e=>!e.ok);if(e&&!e.ok)throw e.error},l=e=>{let r;r=pt(e).finally(()=>{n.delete(r)}),t.push(r),n.add(r)};try{if(ht(e.routes.length,e.canBypassClientBuild)&&(await e.ensurePool(),r=e.getPool(),r&&(i=mt(e.getWorkerCount?.()??0))),r?.renderBatch){let t=[];for(let n of e.routes){let r=e.getPlan(n);await e.isCached(r)?(await e.onCacheHit(r),o++):(await e.prepareRoute?.(r),t.push({path:n,plan:r}))}let c=Math.max(2,e.batchSize??(e.getWorkerCount?.()??1)*2);for(let o=0;o<t.length;o+=c){let u=t.slice(o,o+c);if(!r){for(let{path:n,plan:r}of t.slice(o))e.scheduleMainThread(n,r),a++;break}s=!0;let d=r,f=performance.now(),p=async t=>{for(let{path:n,plan:r}of u){let i=await e.onWorkerFailure(n,r,t,d);if(!_t(i,n))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(n,r,i,performance.now()-f),a++}r=e.getPool()};l((async()=>{let t;try{t=await d.renderBatch(u.map(({path:e})=>e))}catch(e){await p(e);return}if(!Array.isArray(t)||t.length!==u.length){await p(Error(`SSG worker returned an invalid batch payload`));return}for(let n=0;n<u.length;n++){let{path:r,plan:i}=u[n],o=t[n],s;if(s=gt(o,r)?await e.onWorkerFailure(r,i,Error(o.error),d):_t(o,r)?o:await e.onWorkerFailure(r,i,Error(`SSG worker returned an invalid batch item`),d),!_t(s,r))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(r,i,s,performance.now()-f),a++}r=e.getPool()})()),n.size>=i&&await Promise.race(n)}}else for(let t of e.routes){let c=e.getPlan(t);if(await e.isCached(c)){await e.onCacheHit(c),o++;continue}if(await e.prepareRoute?.(c),!r&&e.routes.length>4&&(await e.ensurePool(),r=e.getPool(),r&&(i=mt(e.getWorkerCount?.()??0))),r){s=!0;let o=r,u=performance.now();l(o.render(t).catch(async n=>{let i=await e.onWorkerFailure(t,c,n,o);return r=e.getPool(),i}).then(async n=>{if(!_t(n,t))throw Error(`SSG worker returned an invalid render result`);await e.onWorkerResult(t,c,n,performance.now()-u),a++})),n.size>=i&&await Promise.race(n)}else e.scheduleMainThread(t,c),a++}return await c(),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),{renderedCount:a,cachedCount:o,workerTaskCount:t.length,usedWorker:s}}catch(n){throw await Promise.all(t),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),await e.cleanupAfterFailure(),n}finally{await e.destroyPool()}}const yt=Number.parseInt(l.version)>=5?[`.vite`]:[];function bt(e){let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t)));return JSON.stringify(t)}function xt(e,n){return`static-loader-data${t.a(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${n}.json`}function St(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.js`||t===`.mjs`||t===`.css`}function U(e){let t=new Set;for(let n of Object.values(e)){St(n.file)&&t.add(n.file);for(let e of n.css||[])St(e)&&t.add(e);for(let e of n.imports||[])St(e)&&t.add(e);for(let e of n.dynamicImports||[])St(e)&&t.add(e)}return[...t]}async function Ct(e,t,n){return B(e,U(t),n?(0,s.join)(n,`chunk-hashes.json`):void 0)}function wt(e,n=`/`){let r=t.a(e);return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Tt(e,t,n){let r=t?.[n];if(r)return(0,s.isAbsolute)(r)?r:(0,s.join)(e,r)}function Et(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,(0,s.isAbsolute)(n)?(0,s.relative)(e,n):n]))}function Dt(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function Ot(e={},d={}){let f=process.env.MODE||process.env.NODE_ENV||e.mode||`production`;f!==process.env.NODE_ENV&&(process.env.NODE_ENV=f);let p=process.cwd(),m=d.root||p,h=d.build?.outDir||`dist`,g=d.base||`/`,ne=performance.now(),_=0,v=0,y=0,{onFinished:se,onStep:b,routeToSourceFileMap:S={},cacheDir:C=`.boltdocs/build`,htmlEntry:w=`index.html`,entry:he=await x(m,w)}=e,T=`docs`,ge=Object.values(S);if(ge.length>0){let e=ge[0],t=(0,s.relative)(m,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(T=t[0])}let D=(0,s.isAbsolute)(h)?h:(0,s.join)(m,h),k=(0,s.isAbsolute)(C)?C:(0,s.join)(m,C),A=Me(m,T,k),j=Ue({root:m,outDir:D,cacheDir:k,base:g,mode:f,entry:he,htmlEntry:w,docsDirName:T,clientHash:A,routeToSourceFileMap:S}),M=j.clientHash.substring(0,12),N=(0,s.join)(j.cacheDir,`ssr`,M),P=(0,s.join)(j.cacheDir,`client-cache`,j.clientHash),ke=P,Ae=A,F=A,I=``;try{let{getZigCritters:e}=await Promise.resolve().then(()=>require(`./critical-FFUmobto.cjs`)).then(e=>e.n),t=await e();if(t){let e=await t.getEngineIdentity();e&&e!==`unknown`&&(I=e.slice(0,16))}}catch{}I&&(F=`${A}-${I}`);let je=(0,s.join)(P,`client-hash.txt`),L=!1;try{c.default.existsSync(je)&&c.default.existsSync((0,s.join)(P,`dist`))&&(L=(await c.default.readFile(je,`utf-8`)).trim()===A)}catch{}let R={server:``,css:``},Ne=()=>{let e=``,t=``;try{let t=[],n=(e,r)=>{let i;try{i=c.default.readdirSync(e,{withFileTypes:!0})}catch{return}for(let a of i){let i=r?`${r}/${a.name}`:a.name;i!==`.vite`&&(i.startsWith(`.vite/`)||/^assets\/combined-.*\.js$/.test(i)||(a.isDirectory()?n((0,s.join)(e,a.name),i):a.isFile()&&t.push(i)))}};if(n(N,``),t.length>0){t.sort();let n=u.default.createHash(`sha256`);for(let e of t){n.update(e),n.update(`\0`);let t=c.default.readFileSync((0,s.join)(N,e));e===`combined.mjs`&&(t=Buffer.from(t.toString(`utf-8`).replace(/combined-[A-Za-z0-9_-]+\.js/g,`combined.js`))),n.update(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),n.update(`\0`)}e=n.digest(`hex`).slice(0,16)}}catch{}try{let e=L?(0,s.join)(P,`dist`,`assets`):(0,s.join)(D,`assets`);if(c.default.existsSync(e)){let n=c.default.readdirSync(e).filter(e=>e.endsWith(`.css`)).sort();if(n.length>0){let r=u.default.createHash(`sha256`);for(let t of n){r.update(t),r.update(`\0`);let n=c.default.readFileSync((0,s.join)(e,t));r.update(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)),r.update(`\0`)}t=r.digest(`hex`).slice(0,16)}}}catch{}return{server:e,css:t}},Pe=()=>{let e=A;I&&(e=`${e}-${I}`),(R.server||R.css)&&(e=`${e}-${R.server}-${R.css}`),F=e},Fe=!1;if(L){try{let e=(await c.default.readJson((0,s.join)(k,`ssr-cache-index.json`)))[A];if(typeof e==`string`){let t=at((0,s.join)(k,`ssr`),e);t&&(N=t)}}catch{}if(c.default.existsSync(N)){let e=Ne();R.server=e.server,R.css=e.css,(e.server||e.css)&&(Pe(),Fe=!0)}}let z=(0,s.join)(k,`ssg-pages`),B=(0,s.join)(k,`ssg-cache.json`),Ie=(0,s.join)(k,`ssg-output.json`),Ve=await be(Ie),He=Ve!==void 0&&Ve.auxiliaryFiles.length===0;L&&(ye(Ve,Ce((0,s.join)(P,`dist`)),w)||(L=!1));let V=[],Ke=!1,qe=(e.dirStyle||d.ssgOptions?.dirStyle)??`flat`;if(L&&He&&qe!==`nested`){let e=(0,s.join)(k,`routes-cache.json`);try{if(c.default.existsSync(e)&&c.default.existsSync(B)){let t=JSON.parse(c.default.readFileSync(e,`utf-8`)),n=we(JSON.parse(c.default.readFileSync(B,`utf-8`)),t.paths);if(t.dirStyle===qe&&t.base===g){let e=t.paths.every(e=>{let r=O(e),i=n[r];return ze({routePath:e,cacheItem:i,sourceContentHash:Le(S[r]||S[e]||Tt(m,t.sourceFiles,r)||Tt(m,t.sourceFiles,e),F),ssgPagesDir:z,requireAssetHash:!0})});t.paths.length>0&&e&&(V=t.paths,Ke=!0)}}}catch{}}if(Ke){let e=performance.now(),t={};try{c.default.existsSync(B)&&(t=we(JSON.parse(c.default.readFileSync(B,`utf-8`)),V))}catch{}let n=[...Se(V,t,qe===`nested`?`nested`:`flat`),`static-loader-data-manifest-${M}.json`,`page-source.json`],r=Ce((0,s.join)(P,`dist`)).filter(e=>e!==w),i=await be(Ie),a=i?.auxiliaryFiles.length===0&&ve(i,A,D,r,n,[]),o={};if(!a){c.default.existsSync(D)&&await c.default.remove(D);let e=(0,s.join)(P,`dist`);await et(d.publicDir,e),await c.default.copy(e,D);let n=[];for(let e of V){let r=u.default.createHash(`md5`).update(e).digest(`hex`),i=(0,s.join)(z,`${r}.html`),a=(0,s.join)(z,`${r}.json`),l=`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;if(n.push({source:i,destination:(0,s.join)(D,l)}),c.default.existsSync(a)){let r=O(e),i=t[r];i?.loaderDataFilePath&&(n.push({source:a,destination:(0,s.join)(D,i.loaderDataFilePath)}),o[wt(e,g)]=i.loaderDataFilePath)}}await E(n),await Te((0,s.join)(D,`static-loader-data-manifest-${M}.json`),bt(o))}await kt(z,t,V);let l=Math.round(performance.now()-ne);b?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),b?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),b?.({name:`Render pages`,duration:0,success:!0,details:`${V.length} pages (all cached)`}),b?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(l/1e3).toFixed(1)}s, all cached`});let f=Math.round(performance.now()-e),p={renderedPageCount:0,cachedPageCount:V.length,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,routePreparationMs:0,workerTransportMs:0,workerRoundTripMs:0,workerTransportAvgMs:0,finalizeP50Ms:0,finalizeP95Ms:0,assetCollectionMs:0,beforeHookMs:0,htmlAssemblyMs:0,onPageRenderedHookMs:0,criticalCssP50Ms:0,criticalCssP95Ms:0,cacheWriteMs:0,cachedOutputMs:f,renderQueueDrainMs:0,renderPipelineSettleMs:0,outputLinkMs:f};process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:0,success:!0,details:`${V.length} pages / 0 new / ${V.length} cached`,metrics:{renderedCount:0,cachedCount:V.length,renderedSize:0,totalPages:V.length,prunedCount:0,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,workerUsed:!1,workerCount:0,fallbackMainThread:!1,ssrP50Ms:0,ssrP95Ms:0,ssrP99Ms:0,crittersP50Ms:0,crittersP95Ms:0,writeP50Ms:0,writeP95Ms:0,routerTimingCount:0,routerMatchAvgMs:0,routerResolveAvgMs:0,routerLoadersAvgMs:0,routerRenderAvgMs:0,routerHelmetAvgMs:0,routerTotalAvgMs:0,pagesPerSecond:0,pipeline:p}})}`),await se?.(h),await At(D),await xe((0,s.join)(k,`ssg-output.json`),A,D,n,r);return}let Je=await(0,l.resolveConfig)(d,`build`,f,f),Ye=Object.assign({},Je.ssgOptions||{},e),{script:Xe=`sync`,mock:Ze=!1,formatting:Qe=`none`,includedRoutes:$e=Dt,onBeforePageRender:tt,onPageRendered:nt,dirStyle:st=`flat`,includeAllRoutes:ut=!1,format:H=`esm`,concurrency:pt=20,rootContainerId:mt=`root`,beastiesOptions:ht={},criticalCssMaxSize:gt}=Ye,_t=ht,St=n.i(gt),U=Ye.turbo??!1,Ot=(0,s.join)(k,`ssr`),Nt=(0,s.join)(k,`ssr-cache-index.json`);if(N=(0,s.join)(Ot,U?`turbo-ssr`:M),!U&&L)try{let e=(await c.default.readJson(Nt))[A];if(typeof e==`string`){let t=at(Ot,e);t&&(N=t)}}catch{}let Pt=lt((0,l.createLogger)(),ot),Ft=()=>{};if(Ze){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-9nTqUjri.cjs`));Ft=e()}let W={};try{if(c.default.existsSync(B)){let e=await c.default.readJson(B);W=we(e,Object.keys(e))}}catch{}let G=!1;if(L)try{let e=(0,s.join)(k,`routes-cache.json`);if(c.default.existsSync(e)){let t=JSON.parse(c.default.readFileSync(e,`utf-8`));t.paths.length>0&&t.paths.every(e=>{let n=O(e),r=W[n];return ze({routePath:e,cacheItem:r,sourceContentHash:Le(S[n]||S[e]||Tt(m,t.sourceFiles,n)||Tt(m,t.sourceFiles,e),F),ssgPagesDir:z,requireAssetHash:!0})})&&(V=t.paths,G=!0)}}catch{}let It=G?``:await me(Je,he),Lt=(U||L)&&c.default.existsSync(N)&&c.default.readdirSync(N).filter(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`)).length>0,Rt=null;if(!G&&Lt&&H===`esm`){let e=process.platform===`win32`?`file://`:``;try{let t=N,n=c.default.existsSync(t)?c.default.readdirSync(t).filter(e=>e.endsWith(`.mjs`)):[];n.length>0&&(Rt=import(e+(0,s.join)(t,n[0]).replace(/\\/g,`/`)).catch(()=>{}))}catch{}}let zt=performance.now(),[Bt,Vt]=await Promise.all([rt({viteConfig:d,resolvedMode:Je.mode,root:m,htmlEntry:w,outDir:D,clientCacheDir:P,finalCacheDir:k,docsDirName:T,initialClientHash:A,canBypassClientBuild:L,customLogger:Pt,onStep:b,shouldSuppressLog:ot},()=>Me(m,T,k)),it({viteConfig:d,resolvedMode:Je.mode,entry:he,ssrEntry:It,ssgOut:N,format:H,canSkipSsrImport:G,serverBuildSkipped:Lt,customLogger:Pt,onStep:b,shouldSuppressLog:ot})]);if(h=Bt.outDir,ke=Bt.resolvedClientCacheDir,Ae=Bt.resolvedClientHash,F=Bt.pageContentFallbackHash,I&&(F=`${F}-${I}`),!Fe){let e=Ne();R.server=e.server,R.css=e.css,(e.server||e.css)&&Pe(),Fe=!0}if(M=Ae.substring(0,12),_=Bt.durationMs,v=Vt.durationMs,!U)try{let e={};try{e=await c.default.readJson(Nt)}catch{}e[Ae]=(0,s.relative)(Ot,N),await Ee(Nt,e)}catch{}let Ht=H===`esm`&&process.platform===`win32`?`file://`:``,Ut=H===`esm`?`.mjs`:`.cjs`;It.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`);let Wt=`combined`+Ut;try{if(c.default.existsSync(N)){let e=c.default.readdirSync(N).filter(e=>e.endsWith(Ut));e.length>0&&(Wt=e[0])}}catch{}let Gt=Ht+(0,s.join)(N,Wt).replace(/\\/g,`/`),Kt=Wt.replace(/\.[^/.]+$/,``),qt=JSON.parse(await c.default.readFile((0,s.join)(N,...yt,`manifest.json`),`utf-8`)),Jt=null,Yt=null,K=[],Xt,Zt=`/`,Qt,$t=null,en,tn=$e;if(!G){let e=typeof require<`u`?require:(0,a.createRequire)(require(`url`).pathToFileURL(__filename).href),n=performance.now(),r=H===`esm`?await import(Gt):e(Gt);Rt&&await Rt.catch(()=>{}),y=performance.now()-n,Xt=r.matchRouteBranchWithParams;let{createRoot:i,includedRoutes:o}=r;tn=o||$e,Jt=await i(!1);let s=Jt;if(K=s.routes,Zt=s.base,Qt=s.triggerOnSSRAppRendered,$t=s.app,en=s.routerType,K&&K.length>0)for(let e of K)e.path&&(e.filePath||e.entry)&&!S[e.path]&&(S[e.path]=e.filePath||e.entry);j=Ge(j,We(m,K,S)),Yt=t.t(s,r)}let nn=``,rn=0,q=null,an=null,on=null,sn=!1;async function cn(){if(on){await on;return}let e=an;e&&(on=e.destroy(),await on)}if(!G){let e=performance.now(),{paths:t}=await pe(K);V=ut?t:await tn(t,K||[]),V=Dt(V,K||[]),V=Array.from(new Set(V)),rn+=performance.now()-e;try{await Ee((0,s.join)(k,`routes-cache.json`),{paths:V,dirStyle:st,base:g,sourceFiles:Et(m,S)},0)}catch{}nn=(0,s.join)(N,Kt+Ut)}async function ln(){if(q||sn||V.length<=4)return;sn=!0;let e=performance.now();try{nn=(0,s.join)(N,Kt+Ut);let{SsgWorkerPool:t}=await Promise.resolve().then(()=>require(`./ssg-worker-pool-CfVq6hp_.cjs`));q=new t({ssrEntryPath:nn,format:H===`esm`?`esm`:`cjs`}),an=q,await q.ready(),Jn=performance.now()-e}catch{Jn=performance.now()-e,q=null}}let un=Ye.criticalCss??`zig-critters`,J,dn;un===`zig-critters`?(J=await n.t({concurrency:Math.max(1,Math.min(pt,o.default.cpus().length,8))}),J||(0,i.warn)("[zig-critters] WASM unavailable; critical CSS disabled for this build. Set `criticalCss: 'beasties'` to enable JS-based critical CSS.")):un===`beasties`&&_t!==!1&&(dn=await n.r(h,{publicPath:g,..._t}));let Y=``,fn=``;if(J){let e=`unknown`;try{e=await J.getEngineIdentity()}catch{}let t=(0,s.join)(D,`assets`);if(c.default.existsSync(t)){let e=c.default.readdirSync(t).filter(e=>e.endsWith(`.css`));for(let n of e)Y+=c.default.readFileSync((0,s.join)(t,n),`utf-8`)+`
3
+ `}Y&&(fn=u.default.createHash(`sha256`).update(Y).update(`\0`).update(e).digest(`hex`))}let pn={},mn={},X={},hn=null;if(G)for(let e of V){let t=O(e);X[e]=W[t]?.assetHash||A}else{let[e,t]=await Promise.all([c.default.readFile((0,s.join)(D,...yt,`ssr-manifest.json`),`utf-8`),c.default.readFile((0,s.join)(D,...yt,`manifest.json`),`utf-8`)]);pn=JSON.parse(e),mn=JSON.parse(t),hn=oe(mn);let n=await Ct(D,mn,k),r;try{let e=(0,s.join)(m,`.boltdocs`,`compiled`,`pages-chunk-map.json`);c.default.existsSync(e)&&(r={chunkMap:JSON.parse(c.default.readFileSync(e,`utf-8`))})}catch{r=void 0}await Promise.all(Object.entries(S).map(async([e,t])=>{X[e]=await ce({outDir:D,indexes:hn,ssrManifest:pn,routeSourceFile:t,root:m,clientHash:A,assetHashes:n,chunkPackMaps:r}),R.server&&(X[e]=`${X[e]}-${R.server}`),R.css&&(X[e]=`${X[e]}-${R.css}`)}));for(let e of V)X[e]||(X[e]=F)}let Z=await c.default.readFile((0,s.join)(D,w),`utf-8`);c.default.rmSync((0,s.join)(D,w)),Z=jt(Z,Xe);let gn=Z.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1],_n=tt?null:ue({rootContainerId:mt,indexHTML:Z}),vn=(await import(`p-queue`)).default||await import(`p-queue`),yn=new vn({concurrency:pt}),bn=new vn({concurrency:Math.min(o.default.cpus().length,4)}),xn=new vn({concurrency:Math.max(2,Math.min(o.default.cpus().length,8))}),Sn={},Cn=0,wn=new Map,Tn=new Set;for(let e of V){let n=S[t.a(e).replace(/\/$/,``)]||S[e];n&&Tn.add(n)}for(let e of Tn)try{if(c.default.existsSync(e)){let t=c.default.statSync(e);wn.set(e,{hash:Re(e,`${t.mtimeMs}:${t.size}`),mtimeMs:t.mtimeMs})}}catch{}let En=null;!G&&Xt&&(En=ee({routes:[...K],base:Zt,matchRouteBranchWithParams:Xt,serverManifest:qt,manifest:mn,ssrManifest:pn}));let Dn=dt({routes:V,outDir:D,ssgPagesDir:z,dirStyle:st,contextBase:Zt,fallbackHash:F,routeToSourceFileMap:S,sourceMeta:wn,routeToAssetHash:X}),On=U?void 0:(0,s.join)(k,`critical-css`),kn=new ie({cacheDir:On}),An=[],jn=[],Mn=[],Nn=[],Pn=0,Fn=0,In=0,Ln=0,Rn=0,zn=0,Bn=0,Vn=0,Hn=0,Un=0,Wn=0,Gn=0,Kn=0,Q={count:0,matchMs:0,resolveMs:0,loadersMs:0,renderMs:0,helmetMs:0,totalMs:0};function qn(e){e&&(Q.count++,Q.matchMs+=e.matchMs,Q.resolveMs+=e.resolveMs,Q.loadersMs+=e.loadersMs,Q.renderMs+=e.renderMs,Q.helmetMs+=e.helmetMs,Q.totalMs+=e.totalMs)}let Jn=0,Yn=!1;function $(e,t){if(e.length===0)return 0;let n=[...e].sort((e,t)=>e-t),r=Math.ceil(t/100*n.length)-1;return n[Math.max(0,Math.min(r,n.length-1))]}let Xn=0,Zn=0,Qn=0,$n=new Set,er=new Set,tr=[],nr=_e({writeFile:async(e,t)=>{await c.default.ensureDir((0,s.dirname)(e)),await c.default.writeFile(e,t,`utf-8`)}}),rr=JSON.stringify(W),ir=we(W,V),ar=new Map,or=new Set;or.add(z);for(let e of V){let t=st===`nested`?(0,s.join)(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;or.add((0,s.join)(D,(0,s.dirname)(t)));let n=e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e;or.add((0,s.join)(D,`static-loader-data`,(0,s.dirname)(n)))}or.add((0,s.join)(D,`static-loader-data`)),await Promise.all([...or].map(e=>c.default.ensureDir(e)));async function sr(e,t,n,a,o,l,u,d,f,p,m,h,ee,ne,ie){let ae=performance.now(),{path:_,cachedHtmlFile:v,cachedLoaderFile:oe,normalizedKey:y,sourceContentHash:se,sourceMtimeMs:ce,fetchUrl:b}=e,ue;if(!ee&&ne===`remix`){if(!En)throw Error(`The SSR entry must expose matchRouteBranchWithParams for asset collection`);let e=performance.now();ue=new Set(await(ar.get(_)||En(b))),Pn+=performance.now()-e}else ue=new Set;let x;if(d&&Object.keys(d).length>0){let e=xt(_,M);x=e,U&&await c.default.writeFile((0,s.join)(D,e),JSON.stringify(d)),Sn[wt(_,g)]=e,Cn++}await h?.(_,t,f);let S=performance.now(),C=_n&&ie===Z?_n({appHTML:t,metaAttributes:n,bodyAttributes:a,htmlAttributes:o,initialState:null}):await de({rootContainerId:mt,appHTML:t,indexHTML:ie,metaAttributes:n,bodyAttributes:a,htmlAttributes:o,initialState:null});In+=performance.now()-S;let w=ee?``:fe(ue),pe=u?C.replace(/<script[^>]*>(?:(?!<\/script>)[\s\S])*__staticRouterHydrationData(?:(?!<\/script>)[\s\S])*<\/script>/g,``):C;w&&(pe=pe.replace(`<head>`,`<head>${w}`));let me=performance.now();Rn++,Rn===1&&(zn=me);let he=await nt?.(_,pe,f)||pe;Rn--,Rn===0&&(Ln+=performance.now()-zn);let T=``;if(d&&Object.keys(d).length>0){let e=JSON.stringify(d).replace(/</g,`\\u003c`);T=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${wt(_,g)}': ${e} };`}let ge=r.t(u),E=he,_e=`<script>window.__VITE_REACT_SSG_HASH__ = '${M}';${T}${ge}<\/script>`,ve=performance.now();if(E=E.replace(`<script>${le}<\/script>`,``),J){if(Y){let e=te(E,fn,Y,`zig-critters`);try{let t=await kn.getOrCreate(e,async()=>{let{criticalCss:e,stats:t}=await J.extractCriticalCss(E,Y,{maxSize:St});return e?`<style data-zig-critters>${e}</style>`:(t.truncated&&(0,i.warn)(`[zig-critters] Critical CSS for "${_}" exceeded maxSize (${t.originalSize} bytes) and was skipped.`),null)},{engine:`zig-critters`});t&&!E.includes(`data-zig-critters`)&&(E=E.replace(`</head>`,`${t}</head>`))}catch(e){(0,i.warn)(`[zig-critters] Failed to inline CSS for "${_}": ${e instanceof Error?e.message:String(e)}`)}}E=E.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}else if(dn){let e=te(E,fn,Y,`beasties`),t=await kn.getOrCreate(e,async()=>{let e=await bn.add(()=>dn.process(E));return re(E,e)},{engine:`beasties`});t&&!E.includes(t)&&(E=E.replace(`</head>`,`${t}</head>`)),E=E.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}let ye=_e+(l||``);ye&&(E=E.replace(`<head>`,`<head>${ye}`));let be=Qe===`none`?E:await Mt(E,Qe);Mn.push(Math.round(performance.now()-ve));let xe=performance.now();U?d&&Object.keys(d).length>0&&x&&await nr.enqueue((0,s.join)(D,x),JSON.stringify(d)):(await nr.enqueue(v,be),d&&Object.keys(d).length>0&&x?(await nr.enqueue(oe,JSON.stringify(d)),ir[y]={contentHash:se,mtime:ce?Math.round(ce):0,loaderDataFilePath:x,assetHash:e.routeAssetHash}):ir[y]={contentHash:se,mtime:ce?Math.round(ce):0,assetHash:e.routeAssetHash});let Se=performance.now()-xe;Nn.push(Math.round(Se)),jn.push(Math.round(performance.now()-ae)),Xn++,Un++,Qn+=be.length}let cr=performance.now(),lr=[];await vt({routes:V,canBypassClientBuild:L,getPlan:e=>ft(Dn,e),isCached:e=>{if(U)return!1;try{return ze({routePath:e.path,cacheItem:W[e.normalizedKey],sourceContentHash:e.sourceContentHash,expectedAssetHash:e.routeAssetHash,ssgPagesDir:z})}catch{return!1}},onCacheHit:async e=>{let t=W[e.normalizedKey]?.loaderDataFilePath,n=t?(0,s.join)(D,t):void 0,r=!$n.has(e.finalOutFile),i=!!n&&!er.has(n);r&&$n.add(e.finalOutFile),i&&n&&er.add(n);let a=performance.now();try{if(r){let t=!1;if(gn)try{let n=await c.default.readFile(e.cachedHtmlFile,`utf-8`),r=n.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1];r&&r!==gn&&(await c.default.ensureDir((0,s.dirname)(e.finalOutFile)),await c.default.writeFile(e.finalOutFile,n.split(r).join(gn)),t=!0)}catch{t=!1}t||tr.push({source:e.cachedHtmlFile,destination:e.finalOutFile})}n&&t&&c.default.existsSync(e.cachedLoaderFile)&&(i&&tr.push({source:e.cachedLoaderFile,destination:n}),Sn[wt(e.path,g)]=t,Cn++),Zn++,Wn++,Bn+=performance.now()-a}catch(t){throw r&&$n.delete(e.finalOutFile),i&&n&&er.delete(n),Error(`Error on cached page: ${e.path}\n${t.stack}`)}},prepareRoute:e=>{!$t&&en===`remix`&&En&&ar.set(e.path,En(e.fetchUrl))},ensurePool:ln,getPool:()=>q,getWorkerCount:()=>Be(q)?.totalWorkers??0,onWorkerFailure:async(e,t,n,a)=>{if(!Yt)throw Error(`Error on page: ${e}\n${String(n)}`);(0,i.warn)(`[ssg-worker] Retrying ${e} on the main thread after worker failure`),Yn=!0;try{await cn()}catch{}q=null,sn=!0;let o=await Yt.render(e);return{path:e,appHTML:o.appHTML,metaAttributes:o.metaAttributes,bodyAttributes:o.bodyAttributes,htmlAttributes:o.htmlAttributes,styleTag:o.styleTag,timings:o.timings,routerContext:r.n(o.routerContext)}},onWorkerResult:async(e,t,n,r)=>{Vn+=Math.max(0,r-(n.timings?.totalMs??0)),Hn++,n.timings&&(An.push(Math.round(n.timings.totalMs)),qn(n.timings));let i={...Jt,routePath:e},a=performance.now(),o=await tt?.(e,Z,i)||Z;Fn+=performance.now()-a;let s=n.routerContext?.loaderData?n.routerContext.loaderData:null;await xn.add(()=>sr(t,n.appHTML,n.metaAttributes,n.bodyAttributes,n.htmlAttributes,n.styleTag,n.routerContext,s,i,Zt,K,Qt,$t,en??`remix`,o))},scheduleMainThread:(e,t)=>{lr.push(yn.add(async()=>{try{let n={...Jt,routePath:e},i=performance.now(),a=await tt?.(e,Z,n)||Z;Fn+=performance.now()-i;let o=performance.now(),{appHTML:s,bodyAttributes:c,htmlAttributes:l,metaAttributes:u,styleTag:d,routerContext:f,timings:p}=await Yt.render(e);An.push(Math.round(performance.now()-o)),qn(p);let m=f?.loaderData;await sr(t,s,u,c,l,d,r.n(f),m||null,n,Zt,K,Qt,$t,en??`remix`,a)}catch(t){throw Error(`Error on page: ${e}\n${t.stack}`)}}))},drainFinalizers:()=>xn.onIdle(),drainMainThread:async()=>{await Promise.all(lr),await yn.onIdle()},drainWrites:()=>nr.flush(),cleanupAfterFailure:async()=>{try{c.default.existsSync(D)&&await c.default.remove(D)}catch{}},destroyPool:cn,onNoRenderer:e=>{(0,i.warn)(`[ssg] No SSR context available for ${e}, skipping`)}}),Kn+=performance.now()-cr;let ur=performance.now();for(let e of V){if(U)continue;let t=Dn.get(e);if(!t||!c.default.existsSync(t.cachedHtmlFile))continue;$n.has(t.finalOutFile)||tr.push({source:t.cachedHtmlFile,destination:t.finalOutFile});let n=ir[t.normalizedKey];if(!n?.loaderDataFilePath||!c.default.existsSync(t.cachedLoaderFile))continue;let r=(0,s.join)(D,n.loaderDataFilePath);er.has(r)||tr.push({source:t.cachedLoaderFile,destination:r})}await E(tr);let dr=Math.round(performance.now()-ur);Gn+=dr;let fr=Xn+Zn,pr=(Qn/1024/1024).toFixed(2),mr=0;if(!U){try{let e=JSON.stringify(ir)!==rr;e&&await Ee(B,ir),mr=await kt(z,ir,V,e)}catch{}if(On)try{await ae(On,{maxAgeMs:720*60*60*1e3,maxEntries:5e3})}catch{}}let hr=performance.now()-zt,gr=Be(an),_r={renderedCount:Xn,cachedCount:Zn,renderedSize:Qn,totalPages:fr,prunedCount:mr,clientBuildMs:Math.round(_),serverBuildMs:Math.round(v),ssrImportMs:Math.round(y),workerPoolSetupMs:Math.round(Jn),workerUsed:gr!==null&&!Yn,workerCount:gr?.totalWorkers??0,fallbackMainThread:Yn,ssrP50Ms:$(An,50),ssrP95Ms:$(An,95),ssrP99Ms:$(An,99),crittersP50Ms:$(Mn,50),crittersP95Ms:$(Mn,95),writeP50Ms:$(Nn,50),writeP95Ms:$(Nn,95),routerTimingCount:Q.count,routerMatchAvgMs:Q.count>0?Q.matchMs/Q.count:0,routerResolveAvgMs:Q.count>0?Q.resolveMs/Q.count:0,routerLoadersAvgMs:Q.count>0?Q.loadersMs/Q.count:0,routerRenderAvgMs:Q.count>0?Q.renderMs/Q.count:0,routerHelmetAvgMs:Q.count>0?Q.helmetMs/Q.count:0,routerTotalAvgMs:Q.count>0?Q.totalMs/Q.count:0,pagesPerSecond:fr>0&&hr>0?Math.round(fr/(hr/1e3)*10)/10:0,pipeline:{renderedPageCount:Un,cachedPageCount:Wn,clientBuildMs:Math.round(_),serverBuildMs:Math.round(v),ssrImportMs:Math.round(y),workerPoolSetupMs:Math.round(Jn),routePreparationMs:Math.round(rn),workerTransportMs:Math.round(Vn),workerRoundTripMs:Math.round(Vn),workerTransportAvgMs:Hn>0?Math.round(Vn/Hn):0,finalizeP50Ms:$(jn,50),finalizeP95Ms:$(jn,95),assetCollectionMs:Math.round(Pn),beforeHookMs:Math.round(Fn),htmlAssemblyMs:Math.round(In),onPageRenderedHookMs:Math.round(Ln),criticalCssP50Ms:$(Mn,50),criticalCssP95Ms:$(Mn,95),cacheWriteMs:Math.round(0+nr.writeTimeMs()),cachedOutputMs:Math.round(Bn),renderQueueDrainMs:Math.round(Kn),renderPipelineSettleMs:Math.round(Kn),outputLinkMs:Math.round(Gn)}};b?.({name:`Render pages`,duration:hr,success:!0,details:`${fr} pages (${Xn} new, ${Zn} cached, ${pr} MB)`,metrics:_r}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:Math.round(hr),success:!0,details:`${fr} pages / ${Xn} new / ${Zn} cached / ${pr} MB`,metrics:_r})}`);let vr=performance.now(),yr=bt(Sn);if(await Te((0,s.join)(D,`static-loader-data-manifest-${M}.json`),yr),await ct((0,s.join)(k,`ssr`),5,U?`turbo-ssr`:(0,s.basename)(N)),Ft(),J?.dispose)try{await J.dispose()}catch{}let br=Je.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;br&&!br.disabled&&br.generateSW&&await br.generateSW();let xr=Math.round(performance.now()-ne);b?.({name:`Static loader data`,duration:performance.now()-vr,success:!0,details:`${Cn} loader data files`,metrics:{loaderDataFileCount:Cn}}),await se?.(h),await At(D);let Sr=Ce(D),Cr=await De(D,xr,k,{outputFiles:Sr,manifestPath:(0,s.join)(ke,`dist`,...yt,`manifest.json`)});Oe(D,Cr),b?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(xr/1e3).toFixed(1)}s, JS: ${(Cr.totalJSBundleSize/1024).toFixed(0)} kB, CSS: ${(Cr.totalCSSBundleSize/1024).toFixed(0)} kB`,metrics:{buildTime:xr,totalPages:Cr.pages.length,jsSize:Cr.totalJSBundleSize,cssSize:Cr.totalCSSBundleSize}}),await xe((0,s.join)(k,`ssg-output.json`),Ae,D,Se(V,ir,st).concat(`static-loader-data-manifest-${M}.json`).concat(`page-source.json`),Bt.clientFiles,Sr)}async function kt(e,t,n=[],r=!1){try{if(!c.default.existsSync(e))return 0;let i=(0,s.join)(e,`.prune-state`);if(!r)try{let e=await c.default.stat(i);if(Date.now()-e.mtimeMs<6e4)return 0}catch{}let a=await c.default.readdir(e),o=new Set,l=new Set([...Object.keys(t),...n]);for(let e of l){let t=u.default.createHash(`md5`).update(e).digest(`hex`);o.add(`${t}.html`),o.add(`${t}.json`)}let d=0;for(let t of a)(t.endsWith(`.html`)||t.endsWith(`.json`))&&!o.has(t)&&(await c.default.remove((0,s.join)(e,t)),d++);return await c.default.writeFile(i,String(Date.now()),`utf8`),d}catch{return 0}}async function At(e){try{yt.length>0?await c.default.remove((0,s.join)(e,...yt)):await Promise.all([c.default.remove((0,s.join)(e,`manifest.json`)),c.default.remove((0,s.join)(e,`ssr-manifest.json`))])}catch{}}function jt(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function Mt(e,t){if(t===`prettify`)try{let t=(await import(`prettier/esm/standalone.mjs`)).default,n=(await import(`prettier/esm/parser-html.mjs`)).default;return t.format(e,{semi:!1,parser:`html`,plugins:[n]})}catch(t){return(0,i.error)(`Error formatting html: ${t?.message}`),e}return e}function Nt(e,t,n){if(e.url)try{let t=e.url,n=t.indexOf(`?`),r=n>=0?t.slice(0,n):t,i=n>=0?t.slice(n):``;if(/%[0-9A-Fa-f]{2}/.test(r)){let t=decodeURI(r);if(t!==r){let n=t+i;e.url=n,e.originalUrl&&=n}}}catch{}n()}function Pt({template:e,ssrEntry:n,onBeforePageRender:r,entry:a,rootContainerId:o,onPageRendered:s}){return{name:`vite-react-ssg:dev-server`,configureServer(c){let u=async(u,d)=>{try{let i=u.originalUrl??u.url??`/`,f=await c.ssrLoadModule(n),p=f.createRoot,m=await p(!1,i),h=t.t(m,f),{app:g,base:ee}=m,[te=`/`,ne=``]=i.split(`?`),re=new URLSearchParams(ne);if(!g&&re.has(`_data`))return h.handleLoader(u,d);let ie=await c.transformIndexHtml(i,e),ae=await r?.(i,ie,m)||ie,{appHTML:_,bodyAttributes:v,htmlAttributes:oe,metaAttributes:y,styleTag:se}=await h.render(t.i(te,ee));y.push(se);let ce=await Promise.all([n,a].map(async e=>await c.moduleGraph.getModuleByUrl(e))),le=new Set,b=new Set,ue=async e=>{if(!e?.ssrTransformResult||b.has(e))return;b.add(e);let{deps:t=[],dynamicDeps:n=[]}=e.ssrTransformResult,r=[...t,...n];for(let e of r)if(e.endsWith(`.css`)||e.endsWith(`.scss`)||e.endsWith(`.sass`)||e.endsWith(`.less`))le.add(e);else if(e.endsWith(`.ts`)||e.endsWith(`.tsx`)){let t=await c.moduleGraph.getModuleByUrl(e);t&&await ue(t)}};await Promise.all(ce.map(async e=>ue(e)));let x=[...le].map(e=>S(t.n(c.config.base,e)));y.push(...x);let fe=await de({rootContainerId:o,appHTML:_,indexHTML:ae,metaAttributes:y,bodyAttributes:v,htmlAttributes:oe,initialState:null}),C=await s?.(i,fe,m)||fe;d.statusCode=200,d.setHeader(`Content-Type`,`text/html`),(0,l.send)(u,d,C,`html`,{headers:`pluginContainer`in c?c.config.server.headers:c.config.preview.headers})}catch(e){let t=e instanceof Error?e:Error(String(e));c.ssrFixStacktrace(t),(0,i.error)(`SSR render error`,t),d.statusCode=500,d.end(t.stack??t.message)}};return c.middlewares.use(Nt),()=>{c.middlewares.use(u)}}}}async function Ft(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,{skipResolveConfig:r,...i}=t,a=process.cwd(),o,c,u,f;if(r){o=e.root||a,c={...e.ssgOptions,...i};let{htmlEntry:t=`index.html`}=c,n=c.entry||await x(o,t);u=n.startsWith(`virtual:`)||n.includes(`\0`)||n.includes(`boltdocs/entry`)||n.includes(`boltdocs-entry`)?n:(0,s.join)(o,n),f=await d.default.readFile((0,s.join)(o,t),`utf-8`)}else{let t=await(0,l.resolveConfig)(e,`serve`,n,n);o=t.root||a,c={...t.ssgOptions,...i};let{htmlEntry:r=`index.html`}=c,p=c.entry||await x(o,r),[m,h]=await Promise.all([me(t,p),d.default.readFile((0,s.join)(o,r),`utf-8`)]);u=m,f=h}let{onBeforePageRender:p,onPageRendered:m,rootContainerId:h=`root`,mock:g=!1}=c;if(process.env.__DEV_MODE_SSR=`true`,g){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-9nTqUjri.cjs`));e()}return await(0,l.createServer)({...e,plugins:[...e.plugins??[],Pt({template:f,ssrEntry:u,onBeforePageRender:p,onPageRendered:m,entry:c.entry||`src/main.ts`,rootContainerId:h})]})}catch(e){throw Error(`[vite-react-ssg] Failed to create dev server: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function W(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await Ft(t,e);return await r.listen(),G(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){(0,i.error)(`failed to start server: ${e?.message??e}`),process.exit(1)}}function G(e,t=!1){if(t){e.printUrls();return}let n=e.config.logger.info,r=` -- SSR`;if(globalThis.__ssr_start_time){let e=Math.round(performance.now()-globalThis.__ssr_start_time);r+=` ready in ${i.colors.bold(`${e}ms`)}`}n(`\n ${i.colors.cyan(` VITE-REACT-SSG v${w} `)}`,{clear:!e.config.logger.hasWarned}),n(`${i.colors.cyan(`\n VITE v${l.version}`)+i.colors.dim(r)}\n`),n(i.colors.green(` dev server running at:`)),e.printUrls()}var It=class{constructor(e){this.template=e.template}stitch(e){let t=this.template;return e.content!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:CONTENT-->/g,e.content)),e.toc!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TOC-->/g,e.toc)),e.meta!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:META-->/g,e.meta)),e.breadcrumbs!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:BREADCRUMBS-->/g,e.breadcrumbs)),e.pageNav!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:PAGENAV-->/g,e.pageNav)),e.title!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TITLE-->/g,e.title)),t}};exports.ShellStitcher=It,exports.build=Ot,exports.createServer=Ft,exports.dev=W;
package/dist/node.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { u as ViteReactSSGOptions } from "./types-5bBDTafc.mjs";
1
+ import { u as ViteReactSSGOptions } from "./types-CipD5Jrk.mjs";
2
2
  import { InlineConfig, ViteDevServer } from "vite";
3
3
 
4
4
  //#region src/node/build.d.ts
package/dist/node.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./router-adapter-BukFH1uk.mjs";import{n as s,t as c}from"./ssg-worker-payload-BHsJklNf.mjs";import{createRequire as l}from"node:module";import{colors as u,error as d,warn as f}from"@bdocs/dui";import p from"node:os";import m,{basename as h,dirname as g,isAbsolute as _,join as v,relative as y,resolve as b,sep as x}from"node:path";import S from"fs-extra";import{build as ee,createLogger as te,createServer as ne,mergeConfig as C,resolveConfig as re,send as w,version as T}from"vite";import E,{createHash as D}from"node:crypto";import O,{readFile as k}from"node:fs/promises";import A from"node:fs";const ie=/import\("([^)]+)"\)/g;function j(e,t){let n=new Set;if(!t)return n;for(let r of t)M(e,r,n);return n}function M(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{M(e,t,n)}),n):n}function N(e,t,n,r){let i=e?.map(e=>e.route.entry).filter(Boolean)??[],a=new Set;e?.forEach(e=>{let t=``;e.route.lazy&&(t+=e.route.lazy.toString()),e.route.Component?._payload?._result&&(t+=e.route.Component._payload._result.toString());let n=t.matchAll(ie);for(let e of n)a.add(e[1].split(`/`).at(-1)??``)});let o=new Set(i);for(let e of a){let t=n.find(([t,n])=>n.file.endsWith(e));t&&o.add(t[0])}let s=new Set;for(let e of o){let n=r.get(e);if(!n){let i=j(t.manifest,new Set([e]));n=new Set;for(let e of i)for(let r of t.ssrManifest[e]||[])n.add(r);r.set(e,n)}for(let e of n)s.add(e)}return s}function P(e){let t=Object.entries(e.serverManifest),n=new Map,r=new Map;return i=>{let a=r.get(i);if(a)return a;let o=Promise.resolve().then(()=>{let r=N(e.matchRouteBranchWithParams([...e.routes],i,e.base),e,t,n);return new Set(r)});return r.set(i,o),o.catch(()=>{r.get(i)===o&&r.delete(i)}),o}}async function ae(e,t={}){try{let n=await import(`beasties`);return new(n.default||n)({path:e,logLevel:`warn`,external:!0,inlineFonts:!0,preloadFonts:!0,...t})}catch{return}}async function F(){try{let e=await import(`@bdocs/zig-critters`),t=e.extractCriticalCss||e.default?.extractCriticalCss;return t?{extractCriticalCss:t}:void 0}catch{return}}async function oe(e={}){try{let{createZigCrittersPool:t}=await import(`./zig-pool-lU4VVJjc.mjs`),n=await t(e);if(n)return{extractCriticalCss:(e,t,r)=>n.extractCriticalCss(e,t,r),dispose:()=>n.dispose()}}catch{}return F()}function se(e,t,n,r){let i=e.replace(/<!--[\s\S]*?-->/g,``).replace(/>([^<]+)</g,`><`).replace(/\s+/g,` `).trim();return E.createHash(`sha256`).update(r).update(`\0`).update(i).update(`\0`).update(t||n).digest(`hex`)}function I(e){return e.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi)??[]}function ce(e,t){let n=new Set(I(e)),r=I(t).filter(e=>!n.has(e));return r.length>0?r.join(`
2
- `):null}var le=class{constructor(e=512){this.maxEntries=e,this.entries=new Map}getOrCreate(e,t){let n=this.entries.get(e);if(n)return n.promise;let r={promise:Promise.resolve(null),settled:!1},i=Promise.resolve().then(t).catch(t=>{throw this.entries.delete(e),t}).finally(()=>{r.settled=!0,this.evictSettledEntries()});return r.promise=i,this.entries.set(e,r),this.evictSettledEntries(),i}get size(){return this.entries.size}evictSettledEntries(){for(;this.entries.size>this.maxEntries;){let e=!1;for(let[t,n]of this.entries)if(n.settled){this.entries.delete(t),e=!0;break}if(!e)return}}};const L=new Set([`.js`,`.mjs`,`.css`]);function R(e){let t=m.extname(e).toLowerCase();return L.has(t)}function ue(e){let t=new Map,n=new Map;for(let r of Object.values(e))t.set(r.file,r),r.src&&n.set(r.src,r);return{byFile:t,bySrc:n}}function de(e,t,n){if(n.has(t))return;let r=e.get(t);if(r){n.add(t);for(let t of r.imports||[])R(t)&&de(e,t,n);for(let e of r.css||[])n.add(e);for(let t of r.dynamicImports||[])R(t)&&!n.has(t)&&de(e,t,n)}}async function fe(e,t,n){if(n){let e=E.createHash(`md5`);for(let r of t){let t=n.get(r);t&&e.update(t)}return e.digest(`hex`)}let r=new Map;await Promise.all(t.map(async t=>{try{let n=await k(m.join(e,t));r.set(t,n)}catch{}}));let i=E.createHash(`md5`);for(let e of Array.from(r.keys()).sort()){let t=r.get(e);t&&i.update(t)}return i.digest(`hex`)}async function pe(e){let{outDir:t,indexes:n,manifest:r,ssrManifest:i,routeSourceFile:a,root:o,clientHash:s,assetHashes:c}=e,l=n;if(!l){if(!r)throw Error(`computeRouteClientAssetHash requires either indexes or manifest`);l=ue(r)}let{byFile:u,bySrc:d}=l,f=m.relative(o,a).replace(/\\/g,`/`),p=new Set,h=d.get(f);if(h)de(u,h.file,p);else{let e=[f,a.replace(/\\/g,`/`)];for(let t of e){let e=i[t];if(Array.isArray(e))for(let t of e)R(t)&&de(u,t,p)}}if(p.size===0){if(!s)throw Error(`No client chunk found for ${a} and no global client hash was provided`);return s}return fe(t,Array.from(p).sort(),c)}const me=`/* SCRIPT_COMMENT_PLACEHOLDER */`;function z(e,t,n){let r=n.trim();if(!r)return e;let i=RegExp(`<${t}\\b([^>]*)>`,`i`).exec(e);if(!i)return e;let a=[...r.matchAll(/(?:^|\s)([A-Za-z_:][\w:.-]*)\s*=/g)].map(e=>e[1]),o=i[1];for(let e of a){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);o=o.replace(RegExp(`\\s+${t}\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s>]*)`,`gi`),``)}let s=o.trim()?`${o.trim()} ${r}`:r;return e.replace(i[0],`<${t} ${s}>`)}function he({rootContainerId:e,indexHTML:t}){let n=[{token:`<html`,kind:`html`},{token:`<head>`,kind:`head`},{token:`<body`,kind:`body`},{token:`<div id="${e}"></div>`,kind:`container`}].map(({token:e,kind:n})=>({kind:n,token:e,index:t.indexOf(e),lastIndex:t.lastIndexOf(e)})).sort((e,t)=>e.index-t.index);if(n.some(e=>e.index<0||e.index!==e.lastIndex))return null;let r=[],i=0;for(let e of n)r.push({text:t.slice(i,e.index)}),r.push({kind:e.kind,text:``}),i=e.index+e.token.length;return r.push({text:t.slice(i)}),({appHTML:t,metaAttributes:n,bodyAttributes:i,htmlAttributes:a,initialState:o})=>{let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${me}<\/script>`,l=n.join(``),u=`<div id="${e}" data-server-rendered="true">${t}</div>${s}${c}`;return z(z(r.map(e=>{if(!e.kind)return e.text;switch(e.kind){case`html`:return`<html`;case`head`:return`<head>${l}`;case`body`:return`<body`;case`container`:return u;default:return e.text}}).join(``),`html`,a),`body`,i)}}async function ge({rootContainerId:e,indexHTML:t,appHTML:n,metaAttributes:r,bodyAttributes:i,htmlAttributes:a,initialState:o}){let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${me}<\/script>`,l=r.join(``),u=`<div id="${e}"></div>`;if(t.includes(u))return z(z(t.replace(`<head>`,`<head>${l}`).replace(u,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`),`html`,a),`body`,i);let d=await import(`html5parser`),f=d.parse(t),p;if(d.walk(f,{enter:r=>{if(!p&&r?.type===d.SyntaxKind.Tag&&Array.isArray(r.attributes)&&r.attributes.length>0&&r.attributes.some(t=>t.name.value===`id`&&t.value?.value===e)){let e=[...r.attributes.map(({name:{value:e},value:t})=>`${e}="${t.value}"`)].join(` `),i=t.slice(0,r.start),a=t.slice(r.end);p=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!p)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return z(z(p,`html`,a),`body`,i)}async function _e(e,t=`index.html`){let[,n]=[...(await S.readFile(v(e,t),`utf-8`)).matchAll(/<script(?:.*?)src=["'](.+?)["'](?!<)(?:.*)>(?:[\n\r\s]*?)(?:<\/script>)/gim)].find(e=>{let[t]=e,[,n]=t.match(/.*\stype=(?:'|")?([^>'"\s]+)/i)||[];return n===`module`})||[];return n||`src/main.ts`}function ve(e){return`<link rel="stylesheet" href="${e}">`}function ye(e){let t=new Set,n=[];return e&&e.forEach(e=>{if(!t.has(e)){t.add(e);let r=B(e);r&&n.push(r)}}),n.join(``)}function B(e){return e.endsWith(`.js`)?`<link rel="modulepreload" crossorigin href="${e}">`:e.endsWith(`.css`)?`<link rel="stylesheet" crossorigin href="${e}">`:e.endsWith(`.woff`)||e.endsWith(`.woff2`)||e.endsWith(`.ttf`)?`<link rel="preload" as="font" type="font/woff2" crossorigin href="${e}">`:e.endsWith(`.png`)||e.endsWith(`.jpg`)||e.endsWith(`.jpeg`)||e.endsWith(`.webp`)||e.endsWith(`.gif`)||e.endsWith(`.ico`)||e.endsWith(`.svg`)?`<link rel="preload" as="image" crossorigin href="${e}">`:null}var V=`0.4.1`;async function be(e){if(!e||e.length===0)return{paths:[`/`]};let t=new Set,n=async(e,i=``)=>{i=i.replace(/\/$/g,``);for(let a of e){if(a.lazy){let e=await a.lazy();e&&(a={...a,...e})}let e=a.path;if(e=r(e,i),a.getStaticPaths&&Ce(e)){let e=await a.getStaticPaths();for(let t of e)t=r(t,i),Array.isArray(a.children)&&await n(a.children,t)}a.index&&!e&&t.add(i||`/`),Array.isArray(a.children)&&await n(a.children,e)}};return await n(e),{paths:Array.from(t)};function r(e,n){if(e!=null){if(e===`.`){let e=n||`/`;return t.add(e),e}e=n&&!e.startsWith(`/`)?`${n}${e?`/${e}`:``}`:e,t.add(e)}return e}}async function xe(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)||t.includes(`boltdocs/entry`)||t.includes(`boltdocs-entry`)?t:v(e.root,t))}const Se=/[:*?]/;function Ce(e){return e?Se.test(e):!1}async function we(e,t){if(e!==t){await S.ensureDir(g(t)),await S.remove(t);try{await S.link(e,t)}catch{await S.copy(e,t)}}}async function Te(e){let t=new Set,n=[];for(let r of e)t.has(r.destination)||(t.add(r.destination),n.push(we(r.source,r.destination)));await Promise.all(n)}function Ee({batchSize:e=64,maxBytes:t=8388608,writeFile:n}){let r=Math.max(1,Math.floor(e)),i=Math.max(1,Math.floor(t)),a=[],o=0,s=Promise.resolve(),c=0,l=()=>{if(a.length===0)return s;let e=a;return a=[],o=0,s=s.then(async()=>{let t=performance.now();await Promise.all(e.map(({filePath:e,content:t})=>n(e,t))),c+=performance.now()-t}),s};return{enqueue(e,t){let u=Buffer.byteLength(t,`utf8`);return u>i?(s=l().then(async()=>{let r=performance.now();await n(e,t),c+=performance.now()-r}),s):(a.push({filePath:e,content:t}),o+=u,a.length>=r||o>=i?l():Promise.resolve())},flush:l,pendingCount(){return a.length},writeTimeMs(){return c}}}function De(e,t,n,r=[]){return{cacheHash:e,clientFiles:[...new Set(t)].sort(),pageFiles:[...new Set(n)].sort(),auxiliaryFiles:[...new Set(r)].sort()}}function Oe(e,t,n,r,i,a=e?.auxiliaryFiles||[]){if(!e||e.cacheHash!==t)return!1;let o=(e,t)=>e.length===t.length?e.every((e,n)=>e===t[n]):!1,s=[...new Set(r)].sort(),c=[...new Set(i)].sort(),l=[...new Set(a)].sort();if(!o(e.clientFiles,s)||!o(e.pageFiles,c)||!o(e.auxiliaryFiles||[],l))return!1;let u=[...s,...c,...l];return o(Ne(n),[...new Set(u)].sort())?u.every(e=>S.existsSync(`${n}/${e}`)):!1}function ke(e,t,n){if(!e)return!1;let r=e.clientFiles.filter(e=>e!==n).sort(),i=t.filter(e=>e!==n).sort();return r.length===i.length&&r.every((e,t)=>e===i[t])}async function Ae(e){try{let t=await S.readJson(e);return!t||typeof t.cacheHash!=`string`||!Array.isArray(t.clientFiles)||!Array.isArray(t.pageFiles)||!Array.isArray(t.auxiliaryFiles)||t.clientFiles.some(e=>typeof e!=`string`)||t.pageFiles.some(e=>typeof e!=`string`)||t.auxiliaryFiles.some(e=>typeof e!=`string`)?void 0:De(t.cacheHash,t.clientFiles,t.pageFiles,t.auxiliaryFiles)}catch{return}}async function je(e,t,n,r,i=[],a){let o=a||Ne(n),s=new Set(r),c=new Set(i);return Ie(e,De(t,i.length>0?[...c]:o.filter(e=>!s.has(e)),r,i.length>0?o.filter(e=>!s.has(e)&&!c.has(e)):[]))}function Me(e,t,n){let r=[];for(let i of e){let e=i.replace(/^\/+/,``).replace(/\/+$/,``),a=n===`nested`?`${e?`${e}/`:``}index.html`:`${(i.endsWith(`/`)?`${i}index`:i).replace(/^\/+/,``)}.html`;r.push(a);let o=t[H(i)]?.loaderDataFilePath;o&&r.push(o)}return[...new Set(r)]}function Ne(e){let t=[],n=r=>{let i;try{i=S.readdirSync(r,{withFileTypes:!0})}catch{return}for(let a of i){if(a.name===`.vite`)continue;let i=`${r}/${a.name}`;a.isDirectory()?n(i):a.isFile()&&t.push(y(e,i).split(x).join(`/`))}};return n(e),t.sort()}function H(t){return!t||t===`/`?``:e(t).replace(/\/+$/,``)}function Pe(e,t){let n=new Set(t.map(H)),r={};for(let[t,i]of Object.entries(e)){let e=H(t);n.has(e)&&(r[e]=i)}return r}async function Fe(e,t){try{if(await S.readFile(e,`utf8`)===t)return!1}catch{}return await S.ensureDir(g(e)),await S.writeFile(e,t,`utf8`),!0}async function Ie(e,t,n=2){try{let n=await S.readJson(e);if(JSON.stringify(n)===JSON.stringify(t))return!1}catch{}return await S.ensureDir(g(e)),await S.writeJson(e,t,{spaces:n}),!0}const U=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.svg`,`.webp`,`.avif`,`.ico`]),Le=new Set([`.woff`,`.woff2`,`.ttf`,`.otf`,`.eot`]);function W(e){try{return A.statSync(e).size}catch{return 0}}const Re=`boltdocs-metrics.json`;function ze(e){if(!e)return null;try{let t=v(e,Re);return A.existsSync(t)?JSON.parse(A.readFileSync(t,`utf-8`)):null}catch{return null}}function Be(e,t){try{let n=m.resolve(e,`..`,`reports`);A.existsSync(n)||A.mkdirSync(n,{recursive:!0}),A.writeFileSync(v(e,Re),JSON.stringify(t))}catch{}}async function Ve(e,t,n,r={}){if(!r.outputFiles&&!r.manifestPath){let e=ze(n);if(e)return e.buildTime=t,e}let i=v(e,`.vite`),a=v(e,`assets`),o={},s=r.manifestPath||v(i,`manifest.json`);A.existsSync(s)&&(o=JSON.parse(await A.readFileSync(s,`utf-8`)));let c=0,l=0;for(let[,t]of Object.entries(o)){let{file:n,css:r=[]}=t,i=W(v(e,n));c+=i;for(let t of r)l+=W(v(e,t))}let u=0,d=0;if(A.existsSync(a)){let e=A.readdirSync(a,{withFileTypes:!0});for(let t of e){if(!t.isFile())continue;let e=m.extname(t.name).toLowerCase(),n=v(a,t.name);U.has(e)?u+=W(n):Le.has(e)&&d++}}let f=v(e,`index.html`),p=0,h=[];if(A.existsSync(f)){let e=W(f);p+=e,h.push({route:`/`,htmlSize:e,htmlFile:`index.html`})}let g=r.outputFiles?[...r.outputFiles]:(()=>{try{return A.readdirSync(e,{recursive:!0})}catch{return[]}})();for(let t of g){if(!t.endsWith(`.html`)||t===`index.html`)continue;let n=W(v(e,t));if(n>0){let e=`/`+t.replace(/\\/g,`/`).replace(/\/index\.html$/,``).replace(/\.html$/,``);p+=n,h.push({route:e,htmlSize:n,htmlFile:t})}}let _={buildTime:t,totalJSBundleSize:c,totalCSSBundleSize:l,totalImagesSize:u,totalHTMLSize:p,fontCount:d,pages:h};return n&&Be(n,_),_}function He(e,t){let n=m.resolve(e,`..`,`.boltdocs`,`reports`);A.existsSync(n)||A.mkdirSync(n,{recursive:!0});let r=v(n,`performance.json`);A.writeFileSync(r,JSON.stringify(t,null,2))}function Ue(e,t){try{if(!S.existsSync(e))return!1;let n=S.readFileSync(e);return t.update(n),!0}catch{return!1}}const We=new Set([`node_modules`,`.git`,`.boltdocs`,`.turbo`,`dist`,`coverage`,`__tests__`,`test`,`tests`,`.next`,`.cache`]),Ge=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.css`,`.json`,`.md`,`.mdx`,`.html`,`.svg`,`.yaml`,`.yml`,`.webp`,`.png`,`.jpg`,`.jpeg`,`.gif`,`.ico`]);function Ke(e){let t=e.lastIndexOf(`.`);if(t===-1)return!1;let n=e.slice(t).toLowerCase();return Ge.has(n)}function qe(e,t,n){let r;try{r=S.readdirSync(e)}catch{return}r.sort();for(let i of r){if(i.startsWith(`.`))continue;let r=v(e,i),a;try{a=S.statSync(r)}catch{continue}if(a.isDirectory()){if(We.has(i))continue;qe(r,t,n)}else if(a.isFile()&&Ke(i)){let e=y(t,r).replace(/\\/g,`/`);n.update(`${e}:${a.mtimeMs}:${a.size}\n`)}}}function Je(e,t){let n=l(import.meta.url);for(let r of[`boltdocs`,`@bdocs/ssg`])try{let i=v(g(n.resolve(`${r}/package.json`,{paths:[e]})),`dist`);S.existsSync(i)&&qe(i,e,t)}catch{}}function Ye(e,t,n){let r=[v(e,t,`public`),v(e,t,`src`)];for(let t of r)try{S.existsSync(t)&&qe(t,e,n)}catch{}}const Xe=[`boltdocs.config.ts`,`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.cjs`,`package.json`,`tsconfig.json`,`pnpm-lock.yaml`,`package-lock.json`,`yarn.lock`];function Ze(e,t){for(let n of Xe){let r=v(e,n);try{if(S.existsSync(r)){let e=S.statSync(r);t.update(`${n}:${e.mtimeMs}:${e.size}\n`)}}catch{}}}function Qe(e,t,n){try{S.removeSync(v(n,`hash-merkle.json`))}catch{}try{let n=D(`sha256`);if(Je(e,n),Ue(v(e,`.boltdocs`,`compiled`,`manifest.json`),n))Ye(e,t,n);else{let r=v(e,t);S.existsSync(r)&&qe(r,e,n)}return Ze(e,n),n.digest(`hex`)}catch(e){return f(`[client-hash] Failed to compute client code hash: ${e instanceof Error?e.message:String(e)}`),D(`sha256`).update(`__client_hash_error__`).digest(`hex`)}}function $e(e){return E.createHash(`md5`).update(e).digest(`hex`)}function et(e,t){return!!(e&&e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs&&e.ino===t.ino)}async function tt(e){if(e)try{let t=await S.readJson(e);return!t||t.version!==1||typeof t.files!=`object`?void 0:t}catch{return}}async function G(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await S.ensureDir(g(e)),await S.writeJson(n,{version:1,files:t},{spaces:0}),await S.move(n,e,{overwrite:!0})}catch{await S.remove(n).catch(()=>{})}}async function nt(e,t,n){let r=await tt(n),i=new Map,a={};return await Promise.all([...new Set(t)].map(async t=>{let n=v(e,t);try{let e=await S.stat(n);if(!e.isFile())return;let o=r?.files[t];if(et(o,e)){i.set(t,o.hash),a[t]=o;return}let s=$e(await S.readFile(n));i.set(t,s),a[t]={hash:s,size:e.size,mtimeMs:e.mtimeMs,ctimeMs:e.ctimeMs,ino:e.ino}}catch{}})),n&&await G(n,a),i}function rt(e,t){if(e)try{let t=S.statSync(e);return`${t.mtimeMs}:${t.size}`}catch{}return t}function it({routePath:e,cacheItem:t,sourceContentHash:n,expectedAssetHash:r,ssgPagesDir:i,requireAssetHash:a=!1}){if(!t||t.contentHash!==n||a&&!t.assetHash||r!==void 0&&t.assetHash!==r)return!1;let o=E.createHash(`md5`).update(e).digest(`hex`);return!(!S.existsSync(v(i,`${o}.html`))||t.loaderDataFilePath&&!S.existsSync(v(i,`${o}.json`)))}function at(e){return e===null?null:e.poolMetrics()}function ot(e,t){return _(t)?t:v(e,t)}function st(e,t={}){let n={};for(let[r,i]of Object.entries(t)){let t=H(r);n[t]=ot(e,i)}return Object.freeze(n)}function ct(e){return Object.freeze({root:e.root,outDir:e.outDir,cacheDir:e.cacheDir,base:e.base,mode:e.mode,entry:e.entry,htmlEntry:e.htmlEntry,docsDirName:e.docsDirName,clientHash:e.clientHash,sourceFiles:st(e.root,e.routeToSourceFileMap)})}function lt(e,t,n={}){let r=st(e,n),i=t.map(t=>{let i=H(t.path),a=n[t.path],o=a?ot(e,a):r[i]||t.componentPath;return{path:t.path,key:i,sourceFile:o,componentPath:t.componentPath,locale:t.locale,version:t.version,collection:t.collection}}),a=new Map;for(let e of i)a.has(e.key)||a.set(e.key,e);return Object.freeze({routes:Object.freeze(i),byPath:a,sourceFiles:r})}function ut(e,t){return Object.freeze({...e,routeManifest:t})}const dt=[/^@bdocs\//,/^boltdocs(?:\/|$)/,/^react-helmet-async(?:\/|$)/],K=[`react`,`react-dom`];function q(e){return Number.parseInt(T,10)>=8?{rolldownOptions:e}:{rollupOptions:e}}function ft(){let e=`\0virtual:ssr-empty-css`;return{name:`vite-react-ssg:ssr-skip-css`,enforce:`pre`,resolveId(t){return t.endsWith(`.css`)&&!t.startsWith(`\0`)?e+t:null},load(t){return t.startsWith(e)?{code:`export default undefined`,map:null}:null}}}function pt(e,t){let n=[],r=i=>{let a;try{a=S.readdirSync(i,{withFileTypes:!0})}catch{return}for(let o of a){if(o.name===`.vite`)continue;let a=v(i,o.name);if(o.isDirectory())r(a);else if(o.isFile()){let r=y(e,a).split(x).join(`/`);r!==t&&n.push(r)}}};return r(e),n.sort()}function mt(e){return e.map(e=>{if(Array.isArray(e))return mt(e);if(e&&typeof e==`object`&&`name`in e){let t=e.name;if(t===`vite:react-babel`||t===`vite:react-refresh`||t===`vite:react-jsx`||typeof t==`string`&&t.includes(`tailwind`)||t===`vite-plugin-image-optimizer`||t===`vite-plugin-boltdocs-dev-server`)return null}return e}).filter(Boolean)}async function ht(e){let t=[],n=async r=>{let i;try{i=await S.readdir(r,{withFileTypes:!0})}catch{return}for(let a of i){let i=v(r,a.name);a.isDirectory()?await n(i):(a.isFile()||a.isSymbolicLink())&&t.push(y(e,i).split(x).join(`/`))}};return await n(e),t.sort()}async function gt(e){try{let t=await S.readFile(e);return D(`sha256`).update(t.toString()).digest(`hex`)}catch{return}}function _t(e,t){if(!t||_(t))return;let n=b(e),r=b(n,t),i=y(n,r);if(!(!i||i===`..`||i.startsWith(`..${x}`)||_(i)))return r}async function vt(e,t){let n=v(b(t,`..`),`.boltdocs-public-assets.json`),r={};try{let e=await S.readJson(n);if(Array.isArray(e))for(let t of e)typeof t==`string`&&(r[t]=``);else if(e&&typeof e==`object`){let t=e.files;if(t&&typeof t==`object`)for(let[e,n]of Object.entries(t))typeof n==`string`&&(r[e]=n)}}catch{}let i=e&&S.existsSync(e)?await ht(e):[],a={};for(let t of i){let n=await gt(v(e,t));n&&(a[t]=n)}for(let[e,n]of Object.entries(r)){if(a[e]!==void 0||!n)continue;let r=_t(t,e);r&&await gt(r)===n&&await S.remove(r)}e&&S.existsSync(e)&&(await S.ensureDir(t),await S.copy(e,t,{overwrite:!0,errorOnExist:!1})),await S.ensureDir(b(t,`..`)),await S.writeJson(n,{version:1,files:a})}function yt(e){return C(e.viteConfig,{logLevel:`warn`,build:{manifest:!0,ssrManifest:!0,chunkSizeWarningLimit:2e3,reportCompressedSize:!1,sourcemap:!1,cssMinify:`esbuild`,...q({input:{app:v(e.root,e.htmlEntry||`./index.html`)},output:{manualChunks(e){if(!(!e.includes(`node_modules`)&&!e.includes(`.boltdocs`))){if(e.includes(`/node_modules/react/`)||e.includes(`/node_modules/react-dom/`)||e.includes(`/node_modules/scheduler/`))return`react-vendor`;if(e.includes(`/node_modules/react-router`))return`react-router`;if(e.includes(`/node_modules/lucide-react`))return`lucide-icons`;if(e.includes(`/node_modules/react-helmet-async`))return`react-helmet`}}},onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(t){e.onResolvedOutputDir(_(t.build.outDir||``)?t.build.outDir||`dist`:b(e.root,t.build.outDir||`dist`))}}]})}function bt(e){return C(e.viteConfig,{logLevel:`warn`,build:{ssr:e.entry.includes(`boltdocs`)||e.entry.startsWith(`virtual:`)?`virtual:boltdocs-entry`:!e.canSkipSsrImport&&e.ssrEntry?e.ssrEntry:e.entry,manifest:!0,outDir:e.ssgOut,reportCompressedSize:!1,target:`es2022`,minify:!1,cssCodeSplit:!1,cssMinify:!1,...q({output:e.format===`esm`?{entryFileNames:`combined.mjs`,format:`esm`}:{entryFileNames:`combined.cjs`,format:`cjs`},platform:`node`,onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,ssr:{noExternal:[...dt],external:[...K]},plugins:[...mt(e.viteConfig.plugins||[]),ft()]})}async function xt(e,t){let n=e.outDir,r=e.clientCacheDir,i=e.initialClientHash??t(),a=i,o=[],s=performance.now();if(e.canBypassClientBuild){e.onStep?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),S.existsSync(e.outDir)&&await S.remove(e.outDir);let t=v(e.clientCacheDir,`dist`);await vt(e.viteConfig.publicDir,t),Tt(t,e.outDir),o=pt(v(e.clientCacheDir,`dist`),e.htmlEntry)}else{await ee(yt({...e,onResolvedOutputDir:e=>{n=e}}));let c=performance.now()-s;e.onStep?.({name:`Client build`,duration:c,success:!0,details:`Vite production build`}),i=t(),a=i,r=v(e.finalCacheDir,`client-cache`,i);let l=v(r,`client-hash.txt`);await S.ensureDir(r);let u=v(r,`dist`);S.existsSync(u)&&await S.remove(u),await S.copy(n,u,{overwrite:!0,errorOnExist:!1}),await vt(e.viteConfig.publicDir,u),o=pt(u,e.htmlEntry),await S.writeFile(l,i,`utf-8`),await Et(v(e.finalCacheDir,`client-cache`))}return{outDir:n,durationMs:e.canBypassClientBuild?0:performance.now()-s,resolvedClientCacheDir:r,resolvedClientHash:i,pageContentFallbackHash:a,clientFiles:o}}async function St(e){if(e.serverBuildSkipped)return e.onStep?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),{durationMs:0};S.existsSync(e.ssgOut)&&await S.remove(e.ssgOut),process.env.VITE_SSG=`true`;let t=performance.now();await ee(bt(e));let n=performance.now()-t;return e.onStep?.({name:`Server build`,duration:n,success:!0,details:`Vite SSR bundle`}),{durationMs:n}}function Ct(e,t){if(!t||_(t))return;let n=b(e,t),r=y(b(e),n);if(!(r===`..`||r.startsWith(`..${x}`)||_(r)))try{let t=S.realpathSync(e),r=S.realpathSync(n),i=y(t,r);return i===`..`||i.startsWith(`..${x}`)||_(i)||!S.readdirSync(r).some(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`))?void 0:r}catch{return}}function wt(e){return e.startsWith(`dist/`)||e.startsWith(`.boltdocs/build/ssr/`)||e.startsWith(`rendering chunks`)||e===`computing gzip size...`||e.includes(`built in`)&&e.includes(`s`)}function Tt(e,t){let n=S.readdirSync(e,{withFileTypes:!0});S.mkdirSync(t,{recursive:!0});for(let r of n){let n=v(e,r.name),i=v(t,r.name);if(r.isDirectory())Tt(n,i);else if(r.isFile())try{S.linkSync(n,i)}catch{S.copyFileSync(n,i)}}}async function Et(e,t=5,n){try{if(!S.existsSync(e))return;let r=await S.readdir(e,{withFileTypes:!0}),i=[];for(let t of r){if(!t.isDirectory())continue;let n=v(e,t.name),r=await S.stat(n);i.push({name:t.name,mtime:r.mtimeMs})}i.sort((e,t)=>t.mtime-e.mtime);let a=new Set(i.slice(0,t).map(e=>e.name));for(let t of i)n&&t.name===n||a.has(t.name)||await S.remove(v(e,t.name))}catch{}}function Dt(e,t){let n=e.warn;e.warn=(e,r)=>{e.includes(`externalized for browser compatibility`)||e.includes(`can't be bundled without type`)||t(e)||n(e,r)};let r=e.info;return e.info=(e,n)=>{t(e)||r(e,n)},e}function Ot(e,t){return t===`nested`?v(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`}function kt(e){return Object.freeze(e)}function At(e){let t=new Map;for(let n of e.routes){let a=E.createHash(`md5`).update(n).digest(`hex`),o=H(n),s=e.routeToSourceFileMap[o]||e.routeToSourceFileMap[n],c=s?e.sourceMeta.get(s):void 0;t.set(n,kt({path:n,pathHash:a,cachedHtmlFile:v(e.ssgPagesDir,`${a}.html`),cachedLoaderFile:v(e.ssgPagesDir,`${a}.json`),finalOutFile:v(e.outDir,Ot(n,e.dirStyle)),normalizedKey:o,sourceContentHash:c?.hash||e.fallbackHash,sourceMtimeMs:c?.mtimeMs||0,routeAssetHash:e.routeToAssetHash[n]??e.fallbackHash,fetchUrl:`${r(e.contextBase)}${i(n)}`}))}return t}function jt(e,t){let n=e.get(t);if(!n)throw Error(`Missing render plan for route: ${t}`);return n}function Mt(e){return e.then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e}))}function Nt(e){return!Number.isFinite(e)||e<=0?2:Math.max(2,Math.min(32,Math.ceil(e)*2))}function J(e,t){return e>4&&!t}function Pt(e,t){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`&&(t===void 0||e.path===t)}function Y(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return n.path===t&&typeof n.appHTML==`string`&&Array.isArray(n.metaAttributes)&&typeof n.bodyAttributes==`string`&&typeof n.htmlAttributes==`string`&&(n.routerContext===null||typeof n.routerContext==`object`&&!Array.isArray(n.routerContext))}async function Ft(e){let t=[],n=new Set,r=e.getPool(),i=Nt(r?e.getWorkerCount?.()??0:0),a=0,o=0,s=!1,c=async()=>{if(t.length===0)return;let e=(await Promise.all(t)).find(e=>!e.ok);if(e&&!e.ok)throw e.error},l=e=>{let r;r=Mt(e).finally(()=>{n.delete(r)}),t.push(r),n.add(r)};try{if(J(e.routes.length,e.canBypassClientBuild)&&(await e.ensurePool(),r=e.getPool(),r&&(i=Nt(e.getWorkerCount?.()??0))),r?.renderBatch){let t=[];for(let n of e.routes){let r=e.getPlan(n);await e.isCached(r)?(await e.onCacheHit(r),o++):(await e.prepareRoute?.(r),t.push({path:n,plan:r}))}let c=Math.max(2,e.batchSize??(e.getWorkerCount?.()??1)*2);for(let o=0;o<t.length;o+=c){let u=t.slice(o,o+c);if(!r){for(let{path:n,plan:r}of t.slice(o))e.scheduleMainThread(n,r),a++;break}s=!0;let d=r,f=performance.now(),p=async t=>{for(let{path:n,plan:r}of u){let i=await e.onWorkerFailure(n,r,t,d);if(!Y(i,n))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(n,r,i,performance.now()-f),a++}r=e.getPool()};l((async()=>{let t;try{t=await d.renderBatch(u.map(({path:e})=>e))}catch(e){await p(e);return}if(!Array.isArray(t)||t.length!==u.length){await p(Error(`SSG worker returned an invalid batch payload`));return}for(let n=0;n<u.length;n++){let{path:r,plan:i}=u[n],o=t[n],s;if(s=Pt(o,r)?await e.onWorkerFailure(r,i,Error(o.error),d):Y(o,r)?o:await e.onWorkerFailure(r,i,Error(`SSG worker returned an invalid batch item`),d),!Y(s,r))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(r,i,s,performance.now()-f),a++}r=e.getPool()})()),n.size>=i&&await Promise.race(n)}}else for(let t of e.routes){let c=e.getPlan(t);if(await e.isCached(c)){await e.onCacheHit(c),o++;continue}if(await e.prepareRoute?.(c),!r&&e.routes.length>4&&(await e.ensurePool(),r=e.getPool(),r&&(i=Nt(e.getWorkerCount?.()??0))),r){s=!0;let o=r,u=performance.now();l(o.render(t).catch(async n=>{let i=await e.onWorkerFailure(t,c,n,o);return r=e.getPool(),i}).then(async n=>{if(!Y(n,t))throw Error(`SSG worker returned an invalid render result`);await e.onWorkerResult(t,c,n,performance.now()-u),a++})),n.size>=i&&await Promise.race(n)}else e.scheduleMainThread(t,c),a++}return await c(),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),{renderedCount:a,cachedCount:o,workerTaskCount:t.length,usedWorker:s}}catch(n){throw await Promise.all(t),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),await e.cleanupAfterFailure(),n}finally{await e.destroyPool()}}const It=Number.parseInt(T)>=5?[`.vite`]:[];function Lt(e){let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t)));return JSON.stringify(t)}function Rt(t,n){return`static-loader-data${e(t===`/`?`/index`:t.endsWith(`/`)?`${t}index`:t)}.${n}.json`}function zt(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.js`||t===`.mjs`||t===`.css`}function Bt(e){let t=new Set;for(let n of Object.values(e)){zt(n.file)&&t.add(n.file);for(let e of n.css||[])zt(e)&&t.add(e);for(let e of n.imports||[])zt(e)&&t.add(e);for(let e of n.dynamicImports||[])zt(e)&&t.add(e)}return[...t]}async function Vt(e,t,n){return nt(e,Bt(t),n?v(n,`chunk-hashes.json`):void 0)}function Ht(t,n=`/`){let r=e(t);return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Ut(e,t,n){let r=t?.[n];if(r)return _(r)?r:v(e,r)}function Wt(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,_(n)?y(e,n):n]))}function Gt(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function Kt(t={},n={}){let r=process.env.MODE||process.env.NODE_ENV||t.mode||`production`;r!==process.env.NODE_ENV&&(process.env.NODE_ENV=r);let i=process.cwd(),u=n.root||i,d=n.build?.outDir||`dist`,m=n.base||`/`,b=performance.now(),x=0,ee=0,ne=0,{onFinished:C,onStep:w,routeToSourceFileMap:T={},cacheDir:D=`.boltdocs/build`,htmlEntry:O=`index.html`,entry:k=await _e(u,O)}=t,A=`docs`,ie=Object.values(T);if(ie.length>0){let e=ie[0],t=y(u,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(A=t[0])}let j=_(d)?d:v(u,d),M=_(D)?D:v(u,D),N=Qe(u,A,M),F=ct({root:u,outDir:j,cacheDir:M,base:m,mode:r,entry:k,htmlEntry:O,docsDirName:A,clientHash:N,routeToSourceFileMap:T}),I=F.clientHash.substring(0,12),L=v(F.cacheDir,`ssr`,I),R=v(F.cacheDir,`client-cache`,F.clientHash),de=R,fe=N,z=N,ve=v(R,`client-hash.txt`),B=!1;try{S.existsSync(ve)&&S.existsSync(v(R,`dist`))&&(B=(await S.readFile(ve,`utf-8`)).trim()===N)}catch{}let V=v(M,`ssg-pages`),Se=v(M,`ssg-cache.json`),Ce=v(M,`ssg-output.json`),we=await Ae(Ce),De=we!==void 0&&we.auxiliaryFiles.length===0;B&&(ke(we,Ne(v(R,`dist`)),O)||(B=!1));let U=[],Le=!1,W=(t.dirStyle||n.ssgOptions?.dirStyle)??`flat`;if(B&&De&&W!==`nested`){let e=v(M,`routes-cache.json`);try{if(S.existsSync(e)&&S.existsSync(Se)){let t=JSON.parse(S.readFileSync(e,`utf-8`)),n=Pe(JSON.parse(S.readFileSync(Se,`utf-8`)),t.paths);if(t.dirStyle===W&&t.base===m){let e=t.paths.every(e=>{let r=H(e),i=n[r];return it({routePath:e,cacheItem:i,sourceContentHash:rt(T[r]||T[e]||Ut(u,t.sourceFiles,r)||Ut(u,t.sourceFiles,e),z),ssgPagesDir:V,requireAssetHash:!0})});t.paths.length>0&&e&&(U=t.paths,Le=!0)}}}catch{}}if(Le){let e=performance.now(),t={};try{S.existsSync(Se)&&(t=Pe(JSON.parse(S.readFileSync(Se,`utf-8`)),U))}catch{}let r=[...Me(U,t,W===`nested`?`nested`:`flat`),`static-loader-data-manifest-${I}.json`],i=Ne(v(R,`dist`)).filter(e=>e!==O),a=await Ae(Ce),o=a?.auxiliaryFiles.length===0&&Oe(a,N,j,i,r,[]),s={};if(!o){S.existsSync(j)&&await S.remove(j);let e=v(R,`dist`);await vt(n.publicDir,e),await S.copy(e,j);let r=[];for(let e of U){let n=E.createHash(`md5`).update(e).digest(`hex`),i=v(V,`${n}.html`),a=v(V,`${n}.json`),o=`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;if(r.push({source:i,destination:v(j,o)}),S.existsSync(a)){let n=H(e),i=t[n];i?.loaderDataFilePath&&(r.push({source:a,destination:v(j,i.loaderDataFilePath)}),s[Ht(e,m)]=i.loaderDataFilePath)}}await Te(r),await Fe(v(j,`static-loader-data-manifest-${I}.json`),Lt(s))}await qt(V,t,U);let c=Math.round(performance.now()-b);w?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),w?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),w?.({name:`Render pages`,duration:0,success:!0,details:`${U.length} pages (all cached)`}),w?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(c/1e3).toFixed(1)}s, all cached`});let l=Math.round(performance.now()-e),u={renderedPageCount:0,cachedPageCount:U.length,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,routePreparationMs:0,workerTransportMs:0,workerRoundTripMs:0,workerTransportAvgMs:0,finalizeP50Ms:0,finalizeP95Ms:0,assetCollectionMs:0,beforeHookMs:0,htmlAssemblyMs:0,onPageRenderedHookMs:0,criticalCssP50Ms:0,criticalCssP95Ms:0,cacheWriteMs:0,cachedOutputMs:l,renderQueueDrainMs:0,renderPipelineSettleMs:0,outputLinkMs:l};process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:0,success:!0,details:`${U.length} pages / 0 new / ${U.length} cached`,metrics:{renderedCount:0,cachedCount:U.length,renderedSize:0,totalPages:U.length,prunedCount:0,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,workerUsed:!1,workerCount:0,fallbackMainThread:!1,ssrP50Ms:0,ssrP95Ms:0,ssrP99Ms:0,crittersP50Ms:0,crittersP95Ms:0,writeP50Ms:0,writeP95Ms:0,routerTimingCount:0,routerMatchAvgMs:0,routerResolveAvgMs:0,routerLoadersAvgMs:0,routerRenderAvgMs:0,routerHelmetAvgMs:0,routerTotalAvgMs:0,pagesPerSecond:0,pipeline:u}})}`),await C?.(d),await Jt(j),await je(v(M,`ssg-output.json`),N,j,r,i);return}let Re=await re(n,`build`,r,r),ze=Object.assign({},Re.ssgOptions||{},t),{script:Be=`sync`,mock:Ue=!1,formatting:We=`none`,includedRoutes:Ge=Gt,onBeforePageRender:Ke,onPageRendered:qe,dirStyle:Je=`flat`,includeAllRoutes:Ye=!1,format:Xe=`esm`,concurrency:Ze=20,rootContainerId:$e=`root`,beastiesOptions:et={}}=ze,tt=et,G=ze.turbo??!1,nt=v(M,`ssr`),ot=v(M,`ssr-cache-index.json`);if(L=v(nt,G?`turbo-ssr`:I),!G&&B)try{let e=(await S.readJson(ot))[N];if(typeof e==`string`){let t=Ct(nt,e);t&&(L=t)}}catch{}let st=Dt(te(),wt),dt=()=>{};if(Ue){let{jsdomGlobal:e}=await import(`./jsdomGlobal-RTx-0uYL.mjs`);dt=e()}let K={};try{if(S.existsSync(Se)){let e=await S.readJson(Se);K=Pe(e,Object.keys(e))}}catch{}let q=!1;if(B)try{let e=v(M,`routes-cache.json`);if(S.existsSync(e)){let t=JSON.parse(S.readFileSync(e,`utf-8`));t.paths.length>0&&t.paths.every(e=>{let n=H(e),r=K[n];return it({routePath:e,cacheItem:r,sourceContentHash:rt(T[n]||T[e]||Ut(u,t.sourceFiles,n)||Ut(u,t.sourceFiles,e),z),ssgPagesDir:V,requireAssetHash:!0})})&&(U=t.paths,q=!0)}}catch{}let ft=q?``:await xe(Re,k),pt=(G||B)&&S.existsSync(L)&&S.readdirSync(L).filter(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`)).length>0,mt=performance.now(),[ht,gt]=await Promise.all([xt({viteConfig:n,resolvedMode:Re.mode,root:u,htmlEntry:O,outDir:j,clientCacheDir:R,finalCacheDir:M,docsDirName:A,initialClientHash:N,canBypassClientBuild:B,customLogger:st,onStep:w,shouldSuppressLog:wt},()=>Qe(u,A,M)),St({viteConfig:n,resolvedMode:Re.mode,entry:k,ssrEntry:ft,ssgOut:L,format:Xe,canSkipSsrImport:q,serverBuildSkipped:pt,customLogger:st,onStep:w,shouldSuppressLog:wt})]);if(d=ht.outDir,de=ht.resolvedClientCacheDir,fe=ht.resolvedClientHash,z=ht.pageContentFallbackHash,I=fe.substring(0,12),x=ht.durationMs,ee=gt.durationMs,!G)try{let e={};try{e=await S.readJson(ot)}catch{}e[fe]=y(nt,L),await Ie(ot,e)}catch{}let _t=Xe===`esm`&&process.platform===`win32`?`file://`:``,yt=Xe===`esm`?`.mjs`:`.cjs`;ft.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`);let bt=`combined`+yt;try{if(S.existsSync(L)){let e=S.readdirSync(L).filter(e=>e.endsWith(yt));e.length>0&&(bt=e[0])}}catch{}let Tt=_t+v(L,bt).replace(/\\/g,`/`),Ot=bt.replace(/\.[^/.]+$/,``),kt=JSON.parse(await S.readFile(v(L,...It,`manifest.json`),`utf-8`)),Mt=null,Nt=null,J=[],Pt,Y=`/`,zt,Bt=null,Kt,Zt=Ge;if(!q){let e=a===void 0?l(import.meta.url):a,t=performance.now(),n=Xe===`esm`?await import(Tt):e(Tt);ne=performance.now()-t,Pt=n.matchRouteBranchWithParams;let{createRoot:r,includedRoutes:i}=n;Zt=i||Ge,Mt=await r(!1);let s=Mt;if(J=s.routes,Y=s.base,zt=s.triggerOnSSRAppRendered,Bt=s.app,Kt=s.routerType,J&&J.length>0)for(let e of J)e.path&&(e.filePath||e.entry)&&!T[e.path]&&(T[e.path]=e.filePath||e.entry);F=ut(F,lt(u,J,T)),Nt=o(s,n)}let Qt=``,$t=0,X=null,en=null,tn=null,nn=!1;async function rn(){if(tn){await tn;return}let e=en;e&&(tn=e.destroy(),await tn)}if(!q){let e=performance.now(),{paths:t}=await be(J);U=Ye?t:await Zt(t,J||[]),U=Gt(U,J||[]),U=Array.from(new Set(U)),$t+=performance.now()-e;try{await Ie(v(M,`routes-cache.json`),{paths:U,dirStyle:Je,base:m,sourceFiles:Wt(u,T)},0)}catch{}Qt=v(L,Ot+yt)}async function an(){if(X||nn||U.length<=4)return;nn=!0;let e=performance.now();try{Qt=v(L,Ot+yt);let{SsgWorkerPool:t}=await import(`./ssg-worker-pool-DxzleN_R.mjs`);X=new t({ssrEntryPath:Qt,format:Xe===`esm`?`esm`:`cjs`}),en=X,await X.ready(),Un=performance.now()-e}catch{Un=performance.now()-e,X=null}}let on=ze.criticalCss??`zig-critters`,sn,cn;on===`zig-critters`?(sn=await oe({concurrency:Math.max(1,Math.min(Ze,p.cpus().length,8))}),sn||f("[zig-critters] WASM unavailable; critical CSS disabled for this build. Set `criticalCss: 'beasties'` to enable JS-based critical CSS.")):on===`beasties`&&tt!==!1&&(cn=await ae(d,{publicPath:m,...tt}));let ln=``,un=``;if(sn){let e=v(j,`assets`);if(S.existsSync(e)){let t=S.readdirSync(e).filter(e=>e.endsWith(`.css`));for(let n of t)ln+=S.readFileSync(v(e,n),`utf-8`)+`
3
- `}ln&&(un=E.createHash(`sha256`).update(ln).digest())}let dn={},fn={},pn={},mn=null;if(q)for(let e of U){let t=H(e);pn[e]=K[t]?.assetHash||N}else{let[e,t]=await Promise.all([S.readFile(v(j,...It,`ssr-manifest.json`),`utf-8`),S.readFile(v(j,...It,`manifest.json`),`utf-8`)]);dn=JSON.parse(e),fn=JSON.parse(t),mn=ue(fn);let n=await Vt(j,fn,M);await Promise.all(Object.entries(T).map(async([e,t])=>{pn[e]=await pe({outDir:j,indexes:mn,ssrManifest:dn,routeSourceFile:t,root:u,clientHash:N,assetHashes:n})}));for(let e of U)pn[e]||(pn[e]=z)}let Z=await S.readFile(v(j,O),`utf-8`);S.rmSync(v(j,O)),Z=Yt(Z,Be);let hn=Ke?null:he({rootContainerId:$e,indexHTML:Z}),gn=(await import(`p-queue`)).default||await import(`p-queue`),_n=new gn({concurrency:Ze}),vn=new gn({concurrency:Math.min(p.cpus().length,4)}),yn=new gn({concurrency:Math.max(2,Math.min(p.cpus().length,6))}),bn={},xn=0,Sn=new Map,Cn=new Set;for(let t of U){let n=T[e(t).replace(/\/$/,``)]||T[t];n&&Cn.add(n)}for(let e of Cn)try{if(S.existsSync(e)){let t=S.statSync(e);Sn.set(e,{hash:`${t.mtimeMs}:${t.size}`,mtimeMs:t.mtimeMs})}}catch{}let wn=null;!q&&Pt&&(wn=P({routes:[...J],base:Y,matchRouteBranchWithParams:Pt,serverManifest:kt,manifest:fn,ssrManifest:dn}));let Tn=At({routes:U,outDir:j,ssgPagesDir:V,dirStyle:Je,contextBase:Y,fallbackHash:z,routeToSourceFileMap:T,sourceMeta:Sn,routeToAssetHash:pn}),En=new le,Dn=[],On=[],kn=[],An=[],jn=0,Mn=0,Nn=0,Pn=0,Fn=0,In=0,Ln=0,Rn=0,zn=0,Bn=0,Vn=0,Q={count:0,matchMs:0,resolveMs:0,loadersMs:0,renderMs:0,helmetMs:0,totalMs:0};function Hn(e){e&&(Q.count++,Q.matchMs+=e.matchMs,Q.resolveMs+=e.resolveMs,Q.loadersMs+=e.loadersMs,Q.renderMs+=e.renderMs,Q.helmetMs+=e.helmetMs,Q.totalMs+=e.totalMs)}let Un=0,Wn=!1;function $(e,t){if(e.length===0)return 0;let n=[...e].sort((e,t)=>e-t),r=Math.ceil(t/100*n.length)-1;return n[Math.max(0,Math.min(r,n.length-1))]}let Gn=0,Kn=0,qn=0,Jn=new Set,Yn=new Set,Xn=[],Zn=Ee({writeFile:async(e,t)=>{await S.ensureDir(g(e)),await S.writeFile(e,t,`utf-8`)}}),Qn=JSON.stringify(K),$n=Pe(K,U),er=new Map,tr=new Set;tr.add(V);for(let e of U){let t=Je===`nested`?v(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;tr.add(v(j,g(t)));let n=e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e;tr.add(v(j,`static-loader-data`,g(n)))}tr.add(v(j,`static-loader-data`)),await Promise.all([...tr].map(e=>S.ensureDir(e)));async function nr(e,t,n,r,i,a,o,s,l,u,d,p,h,g,_){let y=performance.now(),{path:b,cachedHtmlFile:x,cachedLoaderFile:ee,normalizedKey:te,sourceContentHash:ne,sourceMtimeMs:C,fetchUrl:re}=e,w;if(!h&&g===`remix`){if(!wn)throw Error(`The SSR entry must expose matchRouteBranchWithParams for asset collection`);let e=performance.now();w=new Set(await(er.get(b)||wn(re))),jn+=performance.now()-e}else w=new Set;let T;if(s&&Object.keys(s).length>0){let e=Rt(b,I);T=e,G&&await S.writeFile(v(j,e),JSON.stringify(s)),bn[Ht(b,m)]=e,xn++}await p?.(b,t,l);let E=performance.now(),D=hn&&_===Z?hn({appHTML:t,metaAttributes:n,bodyAttributes:r,htmlAttributes:i,initialState:null}):await ge({rootContainerId:$e,appHTML:t,indexHTML:_,metaAttributes:n,bodyAttributes:r,htmlAttributes:i,initialState:null});Nn+=performance.now()-E;let O=h?``:ye(w),k=o?D.replace(/<script[^>]*>(?:(?!<\/script>)[\s\S])*__staticRouterHydrationData(?:(?!<\/script>)[\s\S])*<\/script>/g,``):D;O&&(k=k.replace(`<head>`,`<head>${O}`));let A=performance.now(),ie=await qe?.(b,k,l)||k;Pn+=performance.now()-A;let M=``;if(s&&Object.keys(s).length>0){let e=JSON.stringify(s).replace(/</g,`\\u003c`);M=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${Ht(b,m)}': ${e} };`}let N=c(o),P=ie,ae=`<script>window.__VITE_REACT_SSG_HASH__ = '${I}';${M}${N}<\/script>`,F=performance.now();if(P=P.replace(`<script>${me}<\/script>`,``),sn){if(ln){let e=se(P,un,ln,`zig-critters`);try{let t=await En.getOrCreate(e,async()=>{let{criticalCss:e,stats:t}=await sn.extractCriticalCss(P,ln);return e?`<style data-zig-critters>${e}</style>`:(t.truncated&&f(`[zig-critters] Critical CSS for "${b}" exceeded maxSize (${t.originalSize} bytes) and was skipped.`),null)});t&&!P.includes(`data-zig-critters`)&&(P=P.replace(`</head>`,`${t}</head>`))}catch(e){f(`[zig-critters] Failed to inline CSS for "${b}": ${e instanceof Error?e.message:String(e)}`)}}P=P.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}else if(cn){let e=se(P,un,ln,`beasties`),t=await En.getOrCreate(e,async()=>{let e=await vn.add(()=>cn.process(P));return ce(P,e)});t&&!P.includes(t)&&(P=P.replace(`</head>`,`${t}</head>`)),P=P.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}let oe=ae+(a||``);oe&&(P=P.replace(`<head>`,`<head>${oe}`));let le=We===`none`?P:await Xt(P,We);kn.push(Math.round(performance.now()-F));let L=performance.now();G?s&&Object.keys(s).length>0&&T&&await Zn.enqueue(v(j,T),JSON.stringify(s)):(await Zn.enqueue(x,le),s&&Object.keys(s).length>0&&T?(await Zn.enqueue(ee,JSON.stringify(s)),$n[te]={contentHash:ne,mtime:C?Math.round(C):0,loaderDataFilePath:T,assetHash:e.routeAssetHash}):$n[te]={contentHash:ne,mtime:C?Math.round(C):0,assetHash:e.routeAssetHash});let R=performance.now()-L;An.push(Math.round(R)),On.push(Math.round(performance.now()-y)),Gn++,Rn++,qn+=le.length}let rr=performance.now(),ir=[];await Ft({routes:U,canBypassClientBuild:B,getPlan:e=>jt(Tn,e),isCached:e=>{if(G||!B)return!1;try{return it({routePath:e.path,cacheItem:K[e.normalizedKey],sourceContentHash:e.sourceContentHash,expectedAssetHash:e.routeAssetHash,ssgPagesDir:V})}catch{return!1}},onCacheHit:async e=>{let t=K[e.normalizedKey]?.loaderDataFilePath,n=t?v(j,t):void 0,r=!Jn.has(e.finalOutFile),i=!!n&&!Yn.has(n);r&&Jn.add(e.finalOutFile),i&&n&&Yn.add(n);let a=performance.now();try{r&&Xn.push({source:e.cachedHtmlFile,destination:e.finalOutFile}),n&&t&&S.existsSync(e.cachedLoaderFile)&&(i&&Xn.push({source:e.cachedLoaderFile,destination:n}),bn[Ht(e.path,m)]=t,xn++),Kn++,zn++,Fn+=performance.now()-a}catch(t){throw r&&Jn.delete(e.finalOutFile),i&&n&&Yn.delete(n),Error(`Error on cached page: ${e.path}\n${t.stack}`)}},prepareRoute:e=>{!Bt&&Kt===`remix`&&wn&&er.set(e.path,wn(e.fetchUrl))},ensurePool:an,getPool:()=>X,getWorkerCount:()=>at(X)?.totalWorkers??0,onWorkerFailure:async(e,t,n,r)=>{if(!Nt)throw Error(`Error on page: ${e}\n${String(n)}`);f(`[ssg-worker] Retrying ${e} on the main thread after worker failure`),Wn=!0;try{await rn()}catch{}X=null,nn=!0;let i=await Nt.render(e);return{path:e,appHTML:i.appHTML,metaAttributes:i.metaAttributes,bodyAttributes:i.bodyAttributes,htmlAttributes:i.htmlAttributes,styleTag:i.styleTag,timings:i.timings,routerContext:s(i.routerContext)}},onWorkerResult:async(e,t,n,r)=>{In+=Math.max(0,r-(n.timings?.totalMs??0)),Ln++,n.timings&&(Dn.push(Math.round(n.timings.totalMs)),Hn(n.timings));let i={...Mt,routePath:e},a=performance.now(),o=await Ke?.(e,Z,i)||Z;Mn+=performance.now()-a;let s=n.routerContext?.loaderData?n.routerContext.loaderData:null;await yn.add(()=>nr(t,n.appHTML,n.metaAttributes,n.bodyAttributes,n.htmlAttributes,n.styleTag,n.routerContext,s,i,Y,J,zt,Bt,Kt??`remix`,o))},scheduleMainThread:(e,t)=>{ir.push(_n.add(async()=>{try{let n={...Mt,routePath:e},r=performance.now(),i=await Ke?.(e,Z,n)||Z;Mn+=performance.now()-r;let a=performance.now(),{appHTML:o,bodyAttributes:c,htmlAttributes:l,metaAttributes:u,styleTag:d,routerContext:f,timings:p}=await Nt.render(e);Dn.push(Math.round(performance.now()-a)),Hn(p);let m=f?.loaderData;await nr(t,o,u,c,l,d,s(f),m||null,n,Y,J,zt,Bt,Kt??`remix`,i)}catch(t){throw Error(`Error on page: ${e}\n${t.stack}`)}}))},drainFinalizers:()=>yn.onIdle(),drainMainThread:async()=>{await Promise.all(ir),await _n.onIdle()},drainWrites:()=>Zn.flush(),cleanupAfterFailure:async()=>{try{S.existsSync(j)&&await S.remove(j)}catch{}},destroyPool:rn,onNoRenderer:e=>{f(`[ssg] No SSR context available for ${e}, skipping`)}}),Vn+=performance.now()-rr;let ar=performance.now();for(let e of U){if(G)continue;let t=Tn.get(e);if(!t||!S.existsSync(t.cachedHtmlFile))continue;Jn.has(t.finalOutFile)||Xn.push({source:t.cachedHtmlFile,destination:t.finalOutFile});let n=$n[t.normalizedKey];if(!n?.loaderDataFilePath||!S.existsSync(t.cachedLoaderFile))continue;let r=v(j,n.loaderDataFilePath);Yn.has(r)||Xn.push({source:t.cachedLoaderFile,destination:r})}await Te(Xn);let or=Math.round(performance.now()-ar);Bn+=or;let sr=Gn+Kn,cr=(qn/1024/1024).toFixed(2),lr=0;if(!G)try{let e=JSON.stringify($n)!==Qn;e&&await Ie(Se,$n),lr=await qt(V,$n,U,e)}catch{}let ur=performance.now()-mt,dr=at(en),fr={renderedCount:Gn,cachedCount:Kn,renderedSize:qn,totalPages:sr,prunedCount:lr,clientBuildMs:Math.round(x),serverBuildMs:Math.round(ee),ssrImportMs:Math.round(ne),workerPoolSetupMs:Math.round(Un),workerUsed:dr!==null&&!Wn,workerCount:dr?.totalWorkers??0,fallbackMainThread:Wn,ssrP50Ms:$(Dn,50),ssrP95Ms:$(Dn,95),ssrP99Ms:$(Dn,99),crittersP50Ms:$(kn,50),crittersP95Ms:$(kn,95),writeP50Ms:$(An,50),writeP95Ms:$(An,95),routerTimingCount:Q.count,routerMatchAvgMs:Q.count>0?Q.matchMs/Q.count:0,routerResolveAvgMs:Q.count>0?Q.resolveMs/Q.count:0,routerLoadersAvgMs:Q.count>0?Q.loadersMs/Q.count:0,routerRenderAvgMs:Q.count>0?Q.renderMs/Q.count:0,routerHelmetAvgMs:Q.count>0?Q.helmetMs/Q.count:0,routerTotalAvgMs:Q.count>0?Q.totalMs/Q.count:0,pagesPerSecond:sr>0&&ur>0?Math.round(sr/(ur/1e3)*10)/10:0,pipeline:{renderedPageCount:Rn,cachedPageCount:zn,clientBuildMs:Math.round(x),serverBuildMs:Math.round(ee),ssrImportMs:Math.round(ne),workerPoolSetupMs:Math.round(Un),routePreparationMs:Math.round($t),workerTransportMs:Math.round(In),workerRoundTripMs:Math.round(In),workerTransportAvgMs:Ln>0?Math.round(In/Ln):0,finalizeP50Ms:$(On,50),finalizeP95Ms:$(On,95),assetCollectionMs:Math.round(jn),beforeHookMs:Math.round(Mn),htmlAssemblyMs:Math.round(Nn),onPageRenderedHookMs:Math.round(Pn),criticalCssP50Ms:$(kn,50),criticalCssP95Ms:$(kn,95),cacheWriteMs:Math.round(0+Zn.writeTimeMs()),cachedOutputMs:Math.round(Fn),renderQueueDrainMs:Math.round(Vn),renderPipelineSettleMs:Math.round(Vn),outputLinkMs:Math.round(Bn)}};w?.({name:`Render pages`,duration:ur,success:!0,details:`${sr} pages (${Gn} new, ${Kn} cached, ${cr} MB)`,metrics:fr}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:Math.round(ur),success:!0,details:`${sr} pages / ${Gn} new / ${Kn} cached / ${cr} MB`,metrics:fr})}`);let pr=performance.now(),mr=Lt(bn);if(await Fe(v(j,`static-loader-data-manifest-${I}.json`),mr),await Et(v(M,`ssr`),5,G?`turbo-ssr`:h(L)),dt(),sn?.dispose)try{await sn.dispose()}catch{}let hr=Re.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;hr&&!hr.disabled&&hr.generateSW&&await hr.generateSW();let gr=Math.round(performance.now()-b);w?.({name:`Static loader data`,duration:performance.now()-pr,success:!0,details:`${xn} loader data files`,metrics:{loaderDataFileCount:xn}}),await C?.(d),await Jt(j);let _r=Ne(j),vr=await Ve(j,gr,M,{outputFiles:_r,manifestPath:v(de,`dist`,...It,`manifest.json`)});He(j,vr),w?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(gr/1e3).toFixed(1)}s, JS: ${(vr.totalJSBundleSize/1024).toFixed(0)} kB, CSS: ${(vr.totalCSSBundleSize/1024).toFixed(0)} kB`,metrics:{buildTime:gr,totalPages:vr.pages.length,jsSize:vr.totalJSBundleSize,cssSize:vr.totalCSSBundleSize}}),await je(v(M,`ssg-output.json`),fe,j,Me(U,$n,Je).concat(`static-loader-data-manifest-${I}.json`),ht.clientFiles,_r)}async function qt(e,t,n=[],r=!1){try{if(!S.existsSync(e))return 0;let i=v(e,`.prune-state`);if(!r)try{let e=await S.stat(i);if(Date.now()-e.mtimeMs<6e4)return 0}catch{}let a=await S.readdir(e),o=new Set,s=new Set([...Object.keys(t),...n]);for(let e of s){let t=E.createHash(`md5`).update(e).digest(`hex`);o.add(`${t}.html`),o.add(`${t}.json`)}let c=0;for(let t of a)(t.endsWith(`.html`)||t.endsWith(`.json`))&&!o.has(t)&&(await S.remove(v(e,t)),c++);return await S.writeFile(i,String(Date.now()),`utf8`),c}catch{return 0}}async function Jt(e){try{It.length>0?await S.remove(v(e,...It)):await Promise.all([S.remove(v(e,`manifest.json`)),S.remove(v(e,`ssr-manifest.json`))])}catch{}}function Yt(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function Xt(e,t){if(t===`prettify`)try{let t=(await import(`prettier/esm/standalone.mjs`)).default,n=(await import(`prettier/esm/parser-html.mjs`)).default;return t.format(e,{semi:!1,parser:`html`,plugins:[n]})}catch(t){return d(`Error formatting html: ${t?.message}`),e}return e}function Zt(e,t,n){if(e.url)try{let t=e.url,n=t.indexOf(`?`),r=n>=0?t.slice(0,n):t,i=n>=0?t.slice(n):``;if(/%[0-9A-Fa-f]{2}/.test(r)){let t=decodeURI(r);if(t!==r){let n=t+i;e.url=n,e.originalUrl&&=n}}}catch{}n()}function Qt({template:e,ssrEntry:r,onBeforePageRender:i,entry:a,rootContainerId:s,onPageRendered:c}){return{name:`vite-react-ssg:dev-server`,configureServer(l){let u=async(u,f)=>{try{let d=u.originalUrl??u.url??`/`,p=await l.ssrLoadModule(r),m=p.createRoot,h=await m(!1,d),g=o(h,p),{app:_,base:v}=h,[y=`/`,b=``]=d.split(`?`),x=new URLSearchParams(b);if(!_&&x.has(`_data`))return g.handleLoader(u,f);let S=await l.transformIndexHtml(d,e),ee=await i?.(d,S,h)||S,{appHTML:te,bodyAttributes:ne,htmlAttributes:C,metaAttributes:re,styleTag:T}=await g.render(t(y,v));re.push(T);let E=await Promise.all([r,a].map(async e=>await l.moduleGraph.getModuleByUrl(e))),D=new Set,O=new Set,k=async e=>{if(!e?.ssrTransformResult||O.has(e))return;O.add(e);let{deps:t=[],dynamicDeps:n=[]}=e.ssrTransformResult,r=[...t,...n];for(let e of r)if(e.endsWith(`.css`)||e.endsWith(`.scss`)||e.endsWith(`.sass`)||e.endsWith(`.less`))D.add(e);else if(e.endsWith(`.ts`)||e.endsWith(`.tsx`)){let t=await l.moduleGraph.getModuleByUrl(e);t&&await k(t)}};await Promise.all(E.map(async e=>k(e)));let A=[...D].map(e=>ve(n(l.config.base,e)));re.push(...A);let ie=await ge({rootContainerId:s,appHTML:te,indexHTML:ee,metaAttributes:re,bodyAttributes:ne,htmlAttributes:C,initialState:null}),j=await c?.(d,ie,h)||ie;f.statusCode=200,f.setHeader(`Content-Type`,`text/html`),w(u,f,j,`html`,{headers:`pluginContainer`in l?l.config.server.headers:l.config.preview.headers})}catch(e){let t=e instanceof Error?e:Error(String(e));l.ssrFixStacktrace(t),d(`SSR render error`,t),f.statusCode=500,f.end(t.stack??t.message)}};return l.middlewares.use(Zt),()=>{l.middlewares.use(u)}}}}async function $t(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,{skipResolveConfig:r,...i}=t,a=process.cwd(),o,s,c,l;if(r){o=e.root||a,s={...e.ssgOptions,...i};let{htmlEntry:t=`index.html`}=s,n=s.entry||await _e(o,t);c=n.startsWith(`virtual:`)||n.includes(`\0`)||n.includes(`boltdocs/entry`)||n.includes(`boltdocs-entry`)?n:v(o,n),l=await O.readFile(v(o,t),`utf-8`)}else{let t=await re(e,`serve`,n,n);o=t.root||a,s={...t.ssgOptions,...i};let{htmlEntry:r=`index.html`}=s,u=s.entry||await _e(o,r),[d,f]=await Promise.all([xe(t,u),O.readFile(v(o,r),`utf-8`)]);c=d,l=f}let{onBeforePageRender:u,onPageRendered:d,rootContainerId:f=`root`,mock:p=!1}=s;if(process.env.__DEV_MODE_SSR=`true`,p){let{jsdomGlobal:e}=await import(`./jsdomGlobal-RTx-0uYL.mjs`);e()}return await ne({...e,plugins:[...e.plugins??[],Qt({template:l,ssrEntry:c,onBeforePageRender:u,onPageRendered:d,entry:s.entry||`src/main.ts`,rootContainerId:f})]})}catch(e){throw Error(`[vite-react-ssg] Failed to create dev server: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function X(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await $t(t,e);return await r.listen(),en(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){d(`failed to start server: ${e?.message??e}`),process.exit(1)}}function en(e,t=!1){if(t){e.printUrls();return}let n=e.config.logger.info,r=` -- SSR`;if(globalThis.__ssr_start_time){let e=Math.round(performance.now()-globalThis.__ssr_start_time);r+=` ready in ${u.bold(`${e}ms`)}`}n(`\n ${u.cyan(` VITE-REACT-SSG v${V} `)}`,{clear:!e.config.logger.hasWarned}),n(`${u.cyan(`\n VITE v${T}`)+u.dim(r)}\n`),n(u.green(` dev server running at:`)),e.printUrls()}var tn=class{constructor(e){this.template=e.template}stitch(e){let t=this.template;return e.content!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:CONTENT-->/g,e.content)),e.toc!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TOC-->/g,e.toc)),e.meta!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:META-->/g,e.meta)),e.breadcrumbs!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:BREADCRUMBS-->/g,e.breadcrumbs)),e.pageNav!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:PAGENAV-->/g,e.pageNav)),e.title!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TITLE-->/g,e.title)),t}};export{tn as ShellStitcher,Kt as build,$t as createServer,X as dev};
1
+ import{n as e}from"./rolldown-runtime-C-zNXMYg.mjs";import{a as t,i as n,n as r,o as i,r as a,t as o}from"./router-adapter-CJuW_Xmp.mjs";import{i as s,r as c,t as l}from"./critical-CRZJx8-f.mjs";import{n as u,t as d}from"./ssg-worker-payload-CWmidVcz.mjs";import{createRequire as f}from"node:module";import{colors as p,error as m,warn as h}from"@bdocs/dui";import ee from"node:os";import g,{basename as te,dirname as _,isAbsolute as v,join as y,relative as b,resolve as x,sep as S}from"node:path";import C from"fs-extra";import{build as w,createLogger as ne,createServer as re,mergeConfig as T,resolveConfig as ie,send as E,version as D}from"vite";import O,{createHash as k}from"node:crypto";import A,{readFile as ae}from"node:fs/promises";import j from"node:fs";const M=/import\("([^)]+)"\)/g;function N(e,t){let n=new Set;if(!t)return n;for(let r of t)P(e,r,n);return n}function P(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{P(e,t,n)}),n):n}function F(e,t,n,r){let i=e?.map(e=>e.route.entry).filter(Boolean)??[],a=new Set;e?.forEach(e=>{let t=``;e.route.lazy&&(t+=e.route.lazy.toString()),e.route.Component?._payload?._result&&(t+=e.route.Component._payload._result.toString());let n=t.matchAll(M);for(let e of n)a.add(e[1].split(`/`).at(-1)??``)});let o=new Set(i);for(let e of a){let t=n.find(([t,n])=>n.file.endsWith(e));t&&o.add(t[0])}let s=new Set;for(let e of o){let n=r.get(e);if(!n){let i=N(t.manifest,new Set([e]));n=new Set;for(let e of i)for(let r of t.ssrManifest[e]||[])n.add(r);r.set(e,n)}for(let e of n)s.add(e)}return s}function oe(e){let t=Object.entries(e.serverManifest),n=new Map,r=new Map;return i=>{let a=r.get(i);if(a)return a;let o=Promise.resolve().then(()=>{let r=F(e.matchRouteBranchWithParams([...e.routes],i,e.base),e,t,n);return new Set(r)});return r.set(i,o),o.catch(()=>{r.get(i)===o&&r.delete(i)}),o}}function se(e,t,n,r){let i=e.replace(/<!--[\s\S]*?-->/g,``).replace(/>([^<]+)</g,`><`).replace(/\s+/g,` `).trim();return O.createHash(`sha256`).update(r).update(`\0`).update(i).update(`\0`).update(t||n).digest(`hex`)}function I(e){return e.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi)??[]}function ce(e,t){let n=new Set(I(e)),r=I(t).filter(e=>!n.has(e));return r.length>0?r.join(`
2
+ `):null}var le=class{constructor(e={}){this.entries=new Map,this.cacheDir=e.cacheDir,this.maxEntries=e.maxEntries??1024}getOrCreate(e,t,n={}){let r=this.entries.get(e);if(r)return r.promise;let i=n.engine??`zig-critters`,a={promise:Promise.resolve(null),settled:!1},o=Promise.resolve().then(async()=>{if(this.cacheDir){let t=await this.readDisk(e,i);if(t!==void 0)return t}return t()}).then(t=>(this.cacheDir&&this.writeDisk(e,i,t).catch(()=>{}),t)).catch(t=>{throw this.entries.delete(e),t}).finally(()=>{a.settled=!0,this.evictSettledEntries()});return a.promise=o,this.entries.set(e,a),this.evictSettledEntries(),o}get size(){return this.entries.size}diskPath(e){return y(this.cacheDir,`critical-css-${e}.json`)}async readDisk(e,t){try{let n=await C.readFile(this.diskPath(e),`utf-8`),r=JSON.parse(n);if(r?.v!==2||r?.engine!==t||!(r.style===null||typeof r.style==`string`))return;let i=new Date;return C.utimes(this.diskPath(e),i,i).catch(()=>{}),r.style}catch{return}}async writeDisk(e,t,n){if(!this.cacheDir||n!==null&&n.length>262144)return;let r={v:2,engine:t,style:n};await C.ensureDir(this.cacheDir),await C.writeFile(this.diskPath(e),JSON.stringify(r),`utf-8`)}evictSettledEntries(){for(;this.entries.size>this.maxEntries;){let e=!1;for(let[t,n]of this.entries)if(n.settled){this.entries.delete(t),e=!0;break}if(!e)return}}};async function ue(e,t={}){let n=t.maxAgeMs??720*60*60*1e3,r=t.maxEntries??5e3;try{if(!C.existsSync(e))return 0;let t=Date.now()-n,i=[];for(let n of await C.readdir(e)){if(!n.startsWith(`critical-css-`)||!n.endsWith(`.json`))continue;let r=y(e,n);try{let e=await C.stat(r),a=Math.max(e.mtimeMs,e.atimeMs);a<t?(await C.remove(r),i.push({file:n,usedAt:0})):i.push({file:n,usedAt:a})}catch{}}let a=i.filter(e=>e.usedAt===0).length;if(i.length>r){let t=i.filter(e=>e.usedAt>0).sort((e,t)=>t.usedAt-e.usedAt);for(let n of t.slice(r))try{await C.remove(y(e,n.file)),a++}catch{}}return a}catch{return 0}}const L=new Set([`.js`,`.mjs`,`.css`]);function R(e){let t=g.extname(e).toLowerCase();return L.has(t)}function de(e){let t=new Map,n=new Map;for(let r of Object.values(e))t.set(r.file,r),r.src&&n.set(r.src,r);return{byFile:t,bySrc:n}}function z(e,t,n){if(n.has(t))return;let r=e.get(t);if(r){n.add(t);for(let t of r.imports||[])R(t)&&z(e,t,n);for(let e of r.css||[])n.add(e);for(let t of r.dynamicImports||[])R(t)&&!n.has(t)&&z(e,t,n)}}async function fe(e,t,n){if(n){let e=O.createHash(`md5`);for(let r of t){let t=n.get(r);t&&e.update(t)}return e.digest(`hex`)}let r=new Map;await Promise.all(t.map(async t=>{try{let n=await ae(g.join(e,t));r.set(t,n)}catch{}}));let i=O.createHash(`md5`);for(let e of Array.from(r.keys()).sort()){let t=r.get(e);t&&i.update(t)}return i.digest(`hex`)}async function pe(e){let{outDir:t,indexes:n,manifest:r,ssrManifest:i,routeSourceFile:a,root:o,clientHash:s,assetHashes:c,chunkPackMaps:l}=e,u=n;if(!u){if(!r)throw Error(`computeRouteClientAssetHash requires either indexes or manifest`);u=de(r)}let{byFile:d,bySrc:f}=u,p=g.relative(o,a).replace(/\\/g,`/`),m=new Set,h=f.get(p);if(h)z(d,h.file,m);else if(l){let e=g.isAbsolute(a)?a:g.resolve(o,a),t=l.chunkMap[a]??l.chunkMap[e]??l.chunkMap[`/${e}`];if(t!==void 0){for(let e of d.values())if((e.src||``).includes(`chunk-${t}.mjs`)||e.file.includes(`chunk-${t}`)){z(d,e.file,m);break}}}if(m.size===0){let e=[p,a.replace(/\\/g,`/`)];for(let t of e){let e=i[t];if(Array.isArray(e))for(let t of e)R(t)&&z(d,t,m)}}if(m.size===0){if(!s)throw Error(`No client chunk found for ${a} and no global client hash was provided`);return s}return fe(t,Array.from(m).sort(),c)}const me=`/* SCRIPT_COMMENT_PLACEHOLDER */`;function B(e,t,n){let r=n.trim();if(!r)return e;let i=RegExp(`<${t}\\b([^>]*)>`,`i`).exec(e);if(!i)return e;let a=[...r.matchAll(/(?:^|\s)([A-Za-z_:][\w:.-]*)\s*=/g)].map(e=>e[1]),o=i[1];for(let e of a){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);o=o.replace(RegExp(`\\s+${t}\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s>]*)`,`gi`),``)}let s=o.trim()?`${o.trim()} ${r}`:r;return e.replace(i[0],`<${t} ${s}>`)}function he({rootContainerId:e,indexHTML:t}){let n=[{token:`<html`,kind:`html`},{token:`<head>`,kind:`head`},{token:`<body`,kind:`body`},{token:`<div id="${e}"></div>`,kind:`container`}].map(({token:e,kind:n})=>({kind:n,token:e,index:t.indexOf(e),lastIndex:t.lastIndexOf(e)})).sort((e,t)=>e.index-t.index);if(n.some(e=>e.index<0||e.index!==e.lastIndex))return null;let r=[],i=0;for(let e of n)r.push({text:t.slice(i,e.index)}),r.push({kind:e.kind,text:``}),i=e.index+e.token.length;return r.push({text:t.slice(i)}),({appHTML:t,metaAttributes:n,bodyAttributes:i,htmlAttributes:a,initialState:o})=>{let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${me}<\/script>`,l=n.join(``),u=`<div id="${e}" data-server-rendered="true">${t}</div>${s}${c}`;return B(B(r.map(e=>{if(!e.kind)return e.text;switch(e.kind){case`html`:return`<html`;case`head`:return`<head>${l}`;case`body`:return`<body`;case`container`:return u;default:return e.text}}).join(``),`html`,a),`body`,i)}}async function ge({rootContainerId:e,indexHTML:t,appHTML:n,metaAttributes:r,bodyAttributes:i,htmlAttributes:a,initialState:o}){let s=o?`\n<script>window.__INITIAL_STATE__=${o}<\/script>`:``,c=`\n<script>${me}<\/script>`,l=r.join(``),u=`<div id="${e}"></div>`;if(t.includes(u))return B(B(t.replace(`<head>`,`<head>${l}`).replace(u,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`),`html`,a),`body`,i);let d=await import(`html5parser`),f=d.parse(t),p;if(d.walk(f,{enter:r=>{if(!p&&r?.type===d.SyntaxKind.Tag&&Array.isArray(r.attributes)&&r.attributes.length>0&&r.attributes.some(t=>t.name.value===`id`&&t.value?.value===e)){let e=[...r.attributes.map(({name:{value:e},value:t})=>`${e}="${t.value}"`)].join(` `),i=t.slice(0,r.start),a=t.slice(r.end);p=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!p)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return B(B(p,`html`,a),`body`,i)}async function _e(e,t=`index.html`){let[,n]=[...(await C.readFile(y(e,t),`utf-8`)).matchAll(/<script(?:.*?)src=["'](.+?)["'](?!<)(?:.*)>(?:[\n\r\s]*?)(?:<\/script>)/gim)].find(e=>{let[t]=e,[,n]=t.match(/.*\stype=(?:'|")?([^>'"\s]+)/i)||[];return n===`module`})||[];return n||`src/main.ts`}function V(e){return`<link rel="stylesheet" href="${e}">`}function ve(e){let t=new Set,n=[];return e&&e.forEach(e=>{if(!t.has(e)){t.add(e);let r=ye(e);r&&n.push(r)}}),n.join(``)}function ye(e){return e.endsWith(`.js`)?`<link rel="modulepreload" crossorigin href="${e}">`:e.endsWith(`.css`)?`<link rel="stylesheet" crossorigin href="${e}">`:e.endsWith(`.woff`)||e.endsWith(`.woff2`)||e.endsWith(`.ttf`)?`<link rel="preload" as="font" type="font/woff2" crossorigin href="${e}">`:e.endsWith(`.png`)||e.endsWith(`.jpg`)||e.endsWith(`.jpeg`)||e.endsWith(`.webp`)||e.endsWith(`.gif`)||e.endsWith(`.ico`)||e.endsWith(`.svg`)?`<link rel="preload" as="image" crossorigin href="${e}">`:null}var be=`0.4.2`;async function xe(e){if(!e||e.length===0)return{paths:[`/`]};let t=new Set,n=async(e,i=``)=>{i=i.replace(/\/$/g,``);for(let a of e){if(a.lazy){let e=await a.lazy();e&&(a={...a,...e})}let e=a.path;if(e=r(e,i),a.getStaticPaths&&U(e)){let e=await a.getStaticPaths();for(let t of e)t=r(t,i),Array.isArray(a.children)&&await n(a.children,t)}a.index&&!e&&t.add(i||`/`),Array.isArray(a.children)&&await n(a.children,e)}};return await n(e),{paths:Array.from(t)};function r(e,n){if(e!=null){if(e===`.`){let e=n||`/`;return t.add(e),e}e=n&&!e.startsWith(`/`)?`${n}${e?`/${e}`:``}`:e,t.add(e)}return e}}async function Se(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)||t.includes(`boltdocs/entry`)||t.includes(`boltdocs-entry`)?t:y(e.root,t))}const H=/[:*?]/;function U(e){return e?H.test(e):!1}async function Ce(e,t){if(e!==t){await C.ensureDir(_(t)),await C.remove(t);try{await C.link(e,t)}catch{await C.copy(e,t)}}}async function we(e){let t=new Set,n=[];for(let r of e)t.has(r.destination)||(t.add(r.destination),n.push(Ce(r.source,r.destination)));await Promise.all(n)}function Te({batchSize:e=64,maxBytes:t=8388608,writeFile:n}){let r=Math.max(1,Math.floor(e)),i=Math.max(1,Math.floor(t)),a=[],o=0,s=Promise.resolve(),c=0,l=()=>{if(a.length===0)return s;let e=a;return a=[],o=0,s=s.then(async()=>{let t=performance.now();await Promise.all(e.map(({filePath:e,content:t})=>n(e,t))),c+=performance.now()-t}),s};return{enqueue(e,t){let u=Buffer.byteLength(t,`utf8`);return u>i?(s=l().then(async()=>{let r=performance.now();await n(e,t),c+=performance.now()-r}),s):(a.push({filePath:e,content:t}),o+=u,a.length>=r||o>=i?l():Promise.resolve())},flush:l,pendingCount(){return a.length},writeTimeMs(){return c}}}function Ee(e,t,n,r=[]){return{cacheHash:e,clientFiles:[...new Set(t)].sort(),pageFiles:[...new Set(n)].sort(),auxiliaryFiles:[...new Set(r)].sort()}}function De(e,t,n,r,i,a=e?.auxiliaryFiles||[]){if(!e||e.cacheHash!==t)return!1;let o=(e,t)=>e.length===t.length?e.every((e,n)=>e===t[n]):!1,s=[...new Set(r)].sort(),c=[...new Set(i)].sort(),l=[...new Set(a)].sort();if(!o(e.clientFiles,s)||!o(e.pageFiles,c)||!o(e.auxiliaryFiles||[],l))return!1;let u=[...s,...c,...l];return o(Me(n),[...new Set(u)].sort())?u.every(e=>C.existsSync(`${n}/${e}`)):!1}function Oe(e,t,n){if(!e)return!1;let r=e.clientFiles.filter(e=>e!==n).sort(),i=t.filter(e=>e!==n).sort();return r.length===i.length&&r.every((e,t)=>e===i[t])}async function ke(e){try{let t=await C.readJson(e);return!t||typeof t.cacheHash!=`string`||!Array.isArray(t.clientFiles)||!Array.isArray(t.pageFiles)||!Array.isArray(t.auxiliaryFiles)||t.clientFiles.some(e=>typeof e!=`string`)||t.pageFiles.some(e=>typeof e!=`string`)||t.auxiliaryFiles.some(e=>typeof e!=`string`)?void 0:Ee(t.cacheHash,t.clientFiles,t.pageFiles,t.auxiliaryFiles)}catch{return}}async function Ae(e,t,n,r,i=[],a){let o=a||Me(n),s=new Set(r),c=new Set(i);return Fe(e,Ee(t,i.length>0?[...c]:o.filter(e=>!s.has(e)),r,i.length>0?o.filter(e=>!s.has(e)&&!c.has(e)):[]))}function je(e,t,n){let r=[];for(let i of e){let e=i.replace(/^\/+/,``).replace(/\/+$/,``),a=n===`nested`?`${e?`${e}/`:``}index.html`:`${(i.endsWith(`/`)?`${i}index`:i).replace(/^\/+/,``)}.html`;r.push(a);let o=t[W(i)]?.loaderDataFilePath;o&&r.push(o)}return[...new Set(r)]}function Me(e){let t=[],n=r=>{let i;try{i=C.readdirSync(r,{withFileTypes:!0})}catch{return}for(let a of i){if(a.name===`.vite`)continue;let i=`${r}/${a.name}`;a.isDirectory()?n(i):a.isFile()&&t.push(b(e,i).split(S).join(`/`))}};return n(e),t.sort()}function W(e){return!e||e===`/`?``:t(e).replace(/\/+$/,``)}function Ne(e,t){let n=new Set(t.map(W)),r={};for(let[t,i]of Object.entries(e)){let e=W(t);n.has(e)&&(r[e]=i)}return r}async function Pe(e,t){try{if(await C.readFile(e,`utf8`)===t)return!1}catch{}return await C.ensureDir(_(e)),await C.writeFile(e,t,`utf8`),!0}async function Fe(e,t,n=2){try{let n=await C.readJson(e);if(JSON.stringify(n)===JSON.stringify(t))return!1}catch{}return await C.ensureDir(_(e)),await C.writeJson(e,t,{spaces:n}),!0}const Ie=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.svg`,`.webp`,`.avif`,`.ico`]),G=new Set([`.woff`,`.woff2`,`.ttf`,`.otf`,`.eot`]);function K(e){try{return j.statSync(e).size}catch{return 0}}const Le=`boltdocs-metrics.json`;function Re(e){if(!e)return null;try{let t=y(e,Le);return j.existsSync(t)?JSON.parse(j.readFileSync(t,`utf-8`)):null}catch{return null}}function ze(e,t){try{let n=g.resolve(e,`..`,`reports`);j.existsSync(n)||j.mkdirSync(n,{recursive:!0}),j.writeFileSync(y(e,Le),JSON.stringify(t))}catch{}}async function Be(e,t,n,r={}){if(!r.outputFiles&&!r.manifestPath){let e=Re(n);if(e)return e.buildTime=t,e}let i=y(e,`.vite`),a=y(e,`assets`),o={},s=r.manifestPath||y(i,`manifest.json`);j.existsSync(s)&&(o=JSON.parse(await j.readFileSync(s,`utf-8`)));let c=0,l=0;for(let[,t]of Object.entries(o)){let{file:n,css:r=[]}=t,i=K(y(e,n));c+=i;for(let t of r)l+=K(y(e,t))}let u=0,d=0;if(j.existsSync(a)){let e=j.readdirSync(a,{withFileTypes:!0});for(let t of e){if(!t.isFile())continue;let e=g.extname(t.name).toLowerCase(),n=y(a,t.name);Ie.has(e)?u+=K(n):G.has(e)&&d++}}let f=y(e,`index.html`),p=0,m=[];if(j.existsSync(f)){let e=K(f);p+=e,m.push({route:`/`,htmlSize:e,htmlFile:`index.html`})}let h=r.outputFiles?[...r.outputFiles]:(()=>{try{return j.readdirSync(e,{recursive:!0})}catch{return[]}})();for(let t of h){if(!t.endsWith(`.html`)||t===`index.html`)continue;let n=K(y(e,t));if(n>0){let e=`/`+t.replace(/\\/g,`/`).replace(/\/index\.html$/,``).replace(/\.html$/,``);p+=n,m.push({route:e,htmlSize:n,htmlFile:t})}}let ee={buildTime:t,totalJSBundleSize:c,totalCSSBundleSize:l,totalImagesSize:u,totalHTMLSize:p,fontCount:d,pages:m};return n&&ze(n,ee),ee}function Ve(e,t){let n=g.resolve(e,`..`,`.boltdocs`,`reports`);j.existsSync(n)||j.mkdirSync(n,{recursive:!0});let r=y(n,`performance.json`);j.writeFileSync(r,JSON.stringify(t,null,2))}const q=new Set([`node_modules`,`dist`,`coverage`]);function He(e,t){return b(e,t).replace(/\\/g,`/`)}function Ue(e,t,n){try{let r=C.readFileSync(t),i=new Uint8Array(r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)),a=k(`sha1`).update(i).digest(`hex`);n.update(`${He(e,t)}\0${a}\0`)}catch{}}function We(e,t,n){let r;try{r=C.readdirSync(e)}catch{return}r.sort();for(let i of r){if(i.startsWith(`.`)||q.has(i))continue;let r=y(e,i),a;try{a=C.statSync(r)}catch{continue}a.isDirectory()?We(r,t,n):a.isFile()&&Ue(t,r,n)}}function Ge(e,t){let n=f(import.meta.url);for(let r of[`boltdocs`,`@bdocs/ssg`])try{let i=y(_(n.resolve(`${r}/package.json`,{paths:[e]})),`dist`);C.existsSync(i)&&We(i,e,t)}catch{}}const Ke=[`boltdocs.config.ts`,`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.cjs`,`package.json`,`tsconfig.json`];function qe(e,t){for(let n of Ke){let r=y(e,n);C.existsSync(r)&&Ue(e,r,t)}}function Je(e,t,n){try{C.removeSync(y(n,`hash-merkle.json`))}catch{}try{let n=k(`sha256`);Ge(e,n);let r=y(e,t);return C.existsSync(r)&&We(r,e,n),qe(e,n),n.update(`v4\0`),n.digest(`hex`)}catch(e){return h(`[client-hash] Failed to compute client code hash: ${e instanceof Error?e.message:String(e)}`),k(`sha256`).update(`__client_hash_error__`).digest(`hex`)}}function Ye(e){return O.createHash(`md5`).update(e).digest(`hex`)}function Xe(e,t){return!!(e&&e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs&&e.ino===t.ino)}async function Ze(e){if(e)try{let t=await C.readJson(e);return!t||t.version!==1||typeof t.files!=`object`?void 0:t}catch{return}}async function Qe(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await C.ensureDir(_(e)),await C.writeJson(n,{version:1,files:t},{spaces:0}),await C.move(n,e,{overwrite:!0})}catch{await C.remove(n).catch(()=>{})}}async function $e(e,t,n){let r=await Ze(n),i=new Map,a={};return await Promise.all([...new Set(t)].map(async t=>{let n=y(e,t);try{let e=await C.stat(n);if(!e.isFile())return;let o=r?.files[t];if(Xe(o,e)){i.set(t,o.hash),a[t]=o;return}let s=Ye(await C.readFile(n));i.set(t,s),a[t]={hash:s,size:e.size,mtimeMs:e.mtimeMs,ctimeMs:e.ctimeMs,ino:e.ino}}catch{}})),n&&await Qe(n,a),i}function et(e){let t=O.createHash(`sha1`);return t.update(`v4`),t.update(`\0`),t.update(C.readFileSync(e)),t.digest(`hex`)}function tt(e,t){if(e)try{return et(e)}catch{}return t}function nt(e,t){try{return et(e)}catch{return t}}function rt({routePath:e,cacheItem:t,sourceContentHash:n,expectedAssetHash:r,ssgPagesDir:i,requireAssetHash:a=!1}){if(!t||t.contentHash!==n||a&&!t.assetHash||r!==void 0&&t.assetHash!==r)return!1;let o=O.createHash(`md5`).update(e).digest(`hex`);return!(!C.existsSync(y(i,`${o}.html`))||t.loaderDataFilePath&&!C.existsSync(y(i,`${o}.json`)))}function it(e){return e===null?null:e.poolMetrics()}function at(e,t){return v(t)?t:y(e,t)}function ot(e,t={}){let n={};for(let[r,i]of Object.entries(t)){let t=W(r);n[t]=at(e,i)}return Object.freeze(n)}function st(e){return Object.freeze({root:e.root,outDir:e.outDir,cacheDir:e.cacheDir,base:e.base,mode:e.mode,entry:e.entry,htmlEntry:e.htmlEntry,docsDirName:e.docsDirName,clientHash:e.clientHash,sourceFiles:ot(e.root,e.routeToSourceFileMap)})}function ct(e,t,n={}){let r=ot(e,n),i=t.map(t=>{let i=W(t.path),a=n[t.path],o=a?at(e,a):r[i]||t.componentPath;return{path:t.path,key:i,sourceFile:o,componentPath:t.componentPath,locale:t.locale,version:t.version,collection:t.collection}}),a=new Map;for(let e of i)a.has(e.key)||a.set(e.key,e);return Object.freeze({routes:Object.freeze(i),byPath:a,sourceFiles:r})}function lt(e,t){return Object.freeze({...e,routeManifest:t})}const ut=[/^@bdocs\//,/^boltdocs(?:\/|$)/,/^react-helmet-async(?:\/|$)/],dt=[`react`,`react-dom`];function ft(e){return Number.parseInt(D,10)>=8?{rolldownOptions:e}:{rollupOptions:e}}function pt(){let e=`\0virtual:ssr-empty-css`;return{name:`vite-react-ssg:ssr-skip-css`,enforce:`pre`,resolveId(t){return t.endsWith(`.css`)&&!t.startsWith(`\0`)?e+t:null},load(t){return t.startsWith(e)?{code:`export default undefined`,map:null}:null}}}function mt(e,t){let n=[],r=i=>{let a;try{a=C.readdirSync(i,{withFileTypes:!0})}catch{return}for(let o of a){if(o.name===`.vite`)continue;let a=y(i,o.name);if(o.isDirectory())r(a);else if(o.isFile()){let r=b(e,a).split(S).join(`/`);r!==t&&n.push(r)}}};return r(e),n.sort()}function J(e){return e.map(e=>{if(Array.isArray(e))return J(e);if(e&&typeof e==`object`&&`name`in e){let t=e.name;if(t===`vite:react-babel`||t===`vite:react-refresh`||t===`vite:react-jsx`||typeof t==`string`&&t.includes(`tailwind`)||t===`vite-plugin-image-optimizer`||t===`vite-plugin-boltdocs-dev-server`)return null}return e}).filter(Boolean)}async function ht(e){let t=[],n=async r=>{let i;try{i=await C.readdir(r,{withFileTypes:!0})}catch{return}for(let a of i){let i=y(r,a.name);a.isDirectory()?await n(i):(a.isFile()||a.isSymbolicLink())&&t.push(b(e,i).split(S).join(`/`))}};return await n(e),t.sort()}async function gt(e){try{let t=await C.readFile(e);return k(`sha256`).update(t.toString()).digest(`hex`)}catch{return}}function _t(e,t){if(!t||v(t))return;let n=x(e),r=x(n,t),i=b(n,r);if(!(!i||i===`..`||i.startsWith(`..${S}`)||v(i)))return r}async function vt(e,t){let n=y(x(t,`..`),`.boltdocs-public-assets.json`),r={};try{let e=await C.readJson(n);if(Array.isArray(e))for(let t of e)typeof t==`string`&&(r[t]=``);else if(e&&typeof e==`object`){let t=e.files;if(t&&typeof t==`object`)for(let[e,n]of Object.entries(t))typeof n==`string`&&(r[e]=n)}}catch{}let i=e&&C.existsSync(e)?await ht(e):[],a={};for(let t of i){let n=await gt(y(e,t));n&&(a[t]=n)}for(let[e,n]of Object.entries(r)){if(a[e]!==void 0||!n)continue;let r=_t(t,e);r&&await gt(r)===n&&await C.remove(r)}e&&C.existsSync(e)&&(await C.ensureDir(t),await C.copy(e,t,{overwrite:!0,errorOnExist:!1})),await C.ensureDir(x(t,`..`)),await C.writeJson(n,{version:1,files:a})}function yt(e){return T(e.viteConfig,{logLevel:`warn`,build:{manifest:!0,ssrManifest:!0,chunkSizeWarningLimit:2e3,reportCompressedSize:!1,sourcemap:!1,cssMinify:`esbuild`,...ft({input:{app:y(e.root,e.htmlEntry||`./index.html`)},output:{manualChunks(e){if(!(!e.includes(`node_modules`)&&!e.includes(`.boltdocs`))){if(e.includes(`/node_modules/react/`)||e.includes(`/node_modules/react-dom/`)||e.includes(`/node_modules/scheduler/`))return`react-vendor`;if(e.includes(`/node_modules/react-router`))return`react-router`;if(e.includes(`/node_modules/lucide-react`))return`lucide-icons`;if(e.includes(`/node_modules/react-helmet-async`))return`react-helmet`}}},onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(t){e.onResolvedOutputDir(v(t.build.outDir||``)?t.build.outDir||`dist`:x(e.root,t.build.outDir||`dist`))}}]})}function bt(e){return T(e.viteConfig,{logLevel:`warn`,build:{ssr:e.entry.includes(`boltdocs`)||e.entry.startsWith(`virtual:`)?`virtual:boltdocs-entry`:!e.canSkipSsrImport&&e.ssrEntry?e.ssrEntry:e.entry,manifest:!0,outDir:e.ssgOut,reportCompressedSize:!1,target:`es2022`,minify:!1,cssCodeSplit:!1,cssMinify:!1,...ft({output:e.format===`esm`?{entryFileNames:`combined.mjs`,format:`esm`}:{entryFileNames:`combined.cjs`,format:`cjs`},platform:`node`,onLog(t,n,r){n.message.includes(`react-helmet-async`)||e.shouldSuppressLog(n.message)||r(t,n)}})},customLogger:e.customLogger,mode:e.resolvedMode,ssr:{noExternal:[...ut],external:[...dt]},plugins:[...J(e.viteConfig.plugins||[]),pt()]})}async function xt(e,t){let n=e.outDir,r=e.clientCacheDir,i=e.initialClientHash??t(),a=i,o=[],s=performance.now();if(e.canBypassClientBuild){e.onStep?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),C.existsSync(e.outDir)&&await C.remove(e.outDir);let t=y(e.clientCacheDir,`dist`);await vt(e.viteConfig.publicDir,t),Y(t,e.outDir),o=mt(y(e.clientCacheDir,`dist`),e.htmlEntry)}else{await w(yt({...e,onResolvedOutputDir:e=>{n=e}}));let c=performance.now()-s;e.onStep?.({name:`Client build`,duration:c,success:!0,details:`Vite production build`}),i=t(),a=i,r=y(e.finalCacheDir,`client-cache`,i);let l=y(r,`client-hash.txt`);await C.ensureDir(r);let u=y(r,`dist`);C.existsSync(u)&&await C.remove(u),await C.copy(n,u,{overwrite:!0,errorOnExist:!1}),await vt(e.viteConfig.publicDir,u),o=mt(u,e.htmlEntry),await C.writeFile(l,i,`utf-8`),await Tt(y(e.finalCacheDir,`client-cache`))}return{outDir:n,durationMs:e.canBypassClientBuild?0:performance.now()-s,resolvedClientCacheDir:r,resolvedClientHash:i,pageContentFallbackHash:a,clientFiles:o}}async function St(e){if(e.serverBuildSkipped)return e.onStep?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),{durationMs:0};C.existsSync(e.ssgOut)&&await C.remove(e.ssgOut),process.env.VITE_SSG=`true`;let t=performance.now();await w(bt(e));let n=performance.now()-t;return e.onStep?.({name:`Server build`,duration:n,success:!0,details:`Vite SSR bundle`}),{durationMs:n}}function Ct(e,t){if(!t||v(t))return;let n=x(e,t),r=b(x(e),n);if(!(r===`..`||r.startsWith(`..${S}`)||v(r)))try{let t=C.realpathSync(e),r=C.realpathSync(n),i=b(t,r);return i===`..`||i.startsWith(`..${S}`)||v(i)||!C.readdirSync(r).some(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`))?void 0:r}catch{return}}function wt(e){return e.startsWith(`dist/`)||e.startsWith(`.boltdocs/build/ssr/`)||e.startsWith(`rendering chunks`)||e===`computing gzip size...`||e.includes(`built in`)&&e.includes(`s`)}function Y(e,t){let n=C.readdirSync(e,{withFileTypes:!0});C.mkdirSync(t,{recursive:!0});for(let r of n){let n=y(e,r.name),i=y(t,r.name);if(r.isDirectory())Y(n,i);else if(r.isFile())try{C.linkSync(n,i)}catch{C.copyFileSync(n,i)}}}async function Tt(e,t=5,n){try{if(!C.existsSync(e))return;let r=await C.readdir(e,{withFileTypes:!0}),i=[];for(let t of r){if(!t.isDirectory())continue;let n=y(e,t.name),r=await C.stat(n);i.push({name:t.name,mtime:r.mtimeMs})}i.sort((e,t)=>t.mtime-e.mtime);let a=new Set(i.slice(0,t).map(e=>e.name));for(let t of i)n&&t.name===n||a.has(t.name)||await C.remove(y(e,t.name))}catch{}}function Et(e,t){let n=e.warn;e.warn=(e,r)=>{e.includes(`externalized for browser compatibility`)||e.includes(`can't be bundled without type`)||t(e)||n(e,r)};let r=e.info;return e.info=(e,n)=>{t(e)||r(e,n)},e}function Dt(e,t){return t===`nested`?y(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`}function Ot(e){return Object.freeze(e)}function kt(e){let t=new Map;for(let n of e.routes){let r=O.createHash(`md5`).update(n).digest(`hex`),o=W(n),s=e.routeToSourceFileMap[o]||e.routeToSourceFileMap[n],c=s?e.sourceMeta.get(s):void 0;t.set(n,Ot({path:n,pathHash:r,cachedHtmlFile:y(e.ssgPagesDir,`${r}.html`),cachedLoaderFile:y(e.ssgPagesDir,`${r}.json`),finalOutFile:y(e.outDir,Dt(n,e.dirStyle)),normalizedKey:o,sourceContentHash:c?.hash||e.fallbackHash,sourceMtimeMs:c?.mtimeMs||0,routeAssetHash:e.routeToAssetHash[n]??e.fallbackHash,fetchUrl:`${i(e.contextBase)}${a(n)}`}))}return t}function At(e,t){let n=e.get(t);if(!n)throw Error(`Missing render plan for route: ${t}`);return n}function jt(e){return e.then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e}))}function Mt(e){return!Number.isFinite(e)||e<=0?2:Math.max(2,Math.min(32,Math.ceil(e)*2))}function Nt(e,t){return e>4&&!t}function Pt(e,t){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`&&(t===void 0||e.path===t)}function Ft(e,t){if(!e||typeof e!=`object`)return!1;let n=e;return n.path===t&&typeof n.appHTML==`string`&&Array.isArray(n.metaAttributes)&&typeof n.bodyAttributes==`string`&&typeof n.htmlAttributes==`string`&&(n.routerContext===null||typeof n.routerContext==`object`&&!Array.isArray(n.routerContext))}async function It(e){let t=[],n=new Set,r=e.getPool(),i=Mt(r?e.getWorkerCount?.()??0:0),a=0,o=0,s=!1,c=async()=>{if(t.length===0)return;let e=(await Promise.all(t)).find(e=>!e.ok);if(e&&!e.ok)throw e.error},l=e=>{let r;r=jt(e).finally(()=>{n.delete(r)}),t.push(r),n.add(r)};try{if(Nt(e.routes.length,e.canBypassClientBuild)&&(await e.ensurePool(),r=e.getPool(),r&&(i=Mt(e.getWorkerCount?.()??0))),r?.renderBatch){let t=[];for(let n of e.routes){let r=e.getPlan(n);await e.isCached(r)?(await e.onCacheHit(r),o++):(await e.prepareRoute?.(r),t.push({path:n,plan:r}))}let c=Math.max(2,e.batchSize??(e.getWorkerCount?.()??1)*2);for(let o=0;o<t.length;o+=c){let u=t.slice(o,o+c);if(!r){for(let{path:n,plan:r}of t.slice(o))e.scheduleMainThread(n,r),a++;break}s=!0;let d=r,f=performance.now(),p=async t=>{for(let{path:n,plan:r}of u){let i=await e.onWorkerFailure(n,r,t,d);if(!Ft(i,n))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(n,r,i,performance.now()-f),a++}r=e.getPool()};l((async()=>{let t;try{t=await d.renderBatch(u.map(({path:e})=>e))}catch(e){await p(e);return}if(!Array.isArray(t)||t.length!==u.length){await p(Error(`SSG worker returned an invalid batch payload`));return}for(let n=0;n<u.length;n++){let{path:r,plan:i}=u[n],o=t[n],s;if(s=Pt(o,r)?await e.onWorkerFailure(r,i,Error(o.error),d):Ft(o,r)?o:await e.onWorkerFailure(r,i,Error(`SSG worker returned an invalid batch item`),d),!Ft(s,r))throw Error(`SSG fallback returned an invalid render result`);await e.onWorkerResult(r,i,s,performance.now()-f),a++}r=e.getPool()})()),n.size>=i&&await Promise.race(n)}}else for(let t of e.routes){let c=e.getPlan(t);if(await e.isCached(c)){await e.onCacheHit(c),o++;continue}if(await e.prepareRoute?.(c),!r&&e.routes.length>4&&(await e.ensurePool(),r=e.getPool(),r&&(i=Mt(e.getWorkerCount?.()??0))),r){s=!0;let o=r,u=performance.now();l(o.render(t).catch(async n=>{let i=await e.onWorkerFailure(t,c,n,o);return r=e.getPool(),i}).then(async n=>{if(!Ft(n,t))throw Error(`SSG worker returned an invalid render result`);await e.onWorkerResult(t,c,n,performance.now()-u),a++})),n.size>=i&&await Promise.race(n)}else e.scheduleMainThread(t,c),a++}return await c(),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),{renderedCount:a,cachedCount:o,workerTaskCount:t.length,usedWorker:s}}catch(n){throw await Promise.all(t),await e.drainFinalizers(),await e.drainMainThread(),await e.drainWrites(),await e.cleanupAfterFailure(),n}finally{await e.destroyPool()}}const Lt=Number.parseInt(D)>=5?[`.vite`]:[];function Rt(e){let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t)));return JSON.stringify(t)}function zt(e,n){return`static-loader-data${t(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${n}.json`}function Bt(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.js`||t===`.mjs`||t===`.css`}function Vt(e){let t=new Set;for(let n of Object.values(e)){Bt(n.file)&&t.add(n.file);for(let e of n.css||[])Bt(e)&&t.add(e);for(let e of n.imports||[])Bt(e)&&t.add(e);for(let e of n.dynamicImports||[])Bt(e)&&t.add(e)}return[...t]}async function Ht(e,t,n){return $e(e,Vt(t),n?y(n,`chunk-hashes.json`):void 0)}function Ut(e,n=`/`){let r=t(e);return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Wt(e,t,n){let r=t?.[n];if(r)return v(r)?r:y(e,r)}function Gt(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,v(n)?b(e,n):n]))}function Kt(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function qt(n={},r={}){let i=process.env.MODE||process.env.NODE_ENV||n.mode||`production`;i!==process.env.NODE_ENV&&(process.env.NODE_ENV=i);let a=process.cwd(),p=r.root||a,m=r.build?.outDir||`dist`,g=r.base||`/`,x=performance.now(),S=0,w=0,re=0,{onFinished:T,onStep:E,routeToSourceFileMap:D={},cacheDir:k=`.boltdocs/build`,htmlEntry:A=`index.html`,entry:ae=await _e(p,A)}=n,j=`docs`,M=Object.values(D);if(M.length>0){let e=M[0],t=b(p,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(j=t[0])}let N=v(m)?m:y(p,m),P=v(k)?k:y(p,k),F=Je(p,j,P),I=st({root:p,outDir:N,cacheDir:P,base:g,mode:i,entry:ae,htmlEntry:A,docsDirName:j,clientHash:F,routeToSourceFileMap:D}),L=I.clientHash.substring(0,12),R=y(I.cacheDir,`ssr`,L),z=y(I.cacheDir,`client-cache`,I.clientHash),fe=z,B=F,V=F,ye=``;try{let{getZigCritters:e}=await import(`./critical-CRZJx8-f.mjs`).then(e=>e.n),t=await e();if(t){let e=await t.getEngineIdentity();e&&e!==`unknown`&&(ye=e.slice(0,16))}}catch{}ye&&(V=`${F}-${ye}`);let be=y(z,`client-hash.txt`),H=!1;try{C.existsSync(be)&&C.existsSync(y(z,`dist`))&&(H=(await C.readFile(be,`utf-8`)).trim()===F)}catch{}let U={server:``,css:``},Ce=()=>{let e=``,t=``;try{let t=[],n=(e,r)=>{let i;try{i=C.readdirSync(e,{withFileTypes:!0})}catch{return}for(let a of i){let i=r?`${r}/${a.name}`:a.name;i!==`.vite`&&(i.startsWith(`.vite/`)||/^assets\/combined-.*\.js$/.test(i)||(a.isDirectory()?n(y(e,a.name),i):a.isFile()&&t.push(i)))}};if(n(R,``),t.length>0){t.sort();let n=O.createHash(`sha256`);for(let e of t){n.update(e),n.update(`\0`);let t=C.readFileSync(y(R,e));e===`combined.mjs`&&(t=Buffer.from(t.toString(`utf-8`).replace(/combined-[A-Za-z0-9_-]+\.js/g,`combined.js`))),n.update(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),n.update(`\0`)}e=n.digest(`hex`).slice(0,16)}}catch{}try{let e=H?y(z,`dist`,`assets`):y(N,`assets`);if(C.existsSync(e)){let n=C.readdirSync(e).filter(e=>e.endsWith(`.css`)).sort();if(n.length>0){let r=O.createHash(`sha256`);for(let t of n){r.update(t),r.update(`\0`);let n=C.readFileSync(y(e,t));r.update(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)),r.update(`\0`)}t=r.digest(`hex`).slice(0,16)}}}catch{}return{server:e,css:t}},Ee=()=>{let e=F;ye&&(e=`${e}-${ye}`),(U.server||U.css)&&(e=`${e}-${U.server}-${U.css}`),V=e},Ie=!1;if(H){try{let e=(await C.readJson(y(P,`ssr-cache-index.json`)))[F];if(typeof e==`string`){let t=Ct(y(P,`ssr`),e);t&&(R=t)}}catch{}if(C.existsSync(R)){let e=Ce();U.server=e.server,U.css=e.css,(e.server||e.css)&&(Ee(),Ie=!0)}}let G=y(P,`ssg-pages`),K=y(P,`ssg-cache.json`),Le=y(P,`ssg-output.json`),Re=await ke(Le),ze=Re!==void 0&&Re.auxiliaryFiles.length===0;H&&(Oe(Re,Me(y(z,`dist`)),A)||(H=!1));let q=[],He=!1,Ue=(n.dirStyle||r.ssgOptions?.dirStyle)??`flat`;if(H&&ze&&Ue!==`nested`){let e=y(P,`routes-cache.json`);try{if(C.existsSync(e)&&C.existsSync(K)){let t=JSON.parse(C.readFileSync(e,`utf-8`)),n=Ne(JSON.parse(C.readFileSync(K,`utf-8`)),t.paths);if(t.dirStyle===Ue&&t.base===g){let e=t.paths.every(e=>{let r=W(e),i=n[r];return rt({routePath:e,cacheItem:i,sourceContentHash:tt(D[r]||D[e]||Wt(p,t.sourceFiles,r)||Wt(p,t.sourceFiles,e),V),ssgPagesDir:G,requireAssetHash:!0})});t.paths.length>0&&e&&(q=t.paths,He=!0)}}}catch{}}if(He){let e=performance.now(),t={};try{C.existsSync(K)&&(t=Ne(JSON.parse(C.readFileSync(K,`utf-8`)),q))}catch{}let n=[...je(q,t,Ue===`nested`?`nested`:`flat`),`static-loader-data-manifest-${L}.json`,`page-source.json`],i=Me(y(z,`dist`)).filter(e=>e!==A),a=await ke(Le),o=a?.auxiliaryFiles.length===0&&De(a,F,N,i,n,[]),s={};if(!o){C.existsSync(N)&&await C.remove(N);let e=y(z,`dist`);await vt(r.publicDir,e),await C.copy(e,N);let n=[];for(let e of q){let r=O.createHash(`md5`).update(e).digest(`hex`),i=y(G,`${r}.html`),a=y(G,`${r}.json`),o=`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;if(n.push({source:i,destination:y(N,o)}),C.existsSync(a)){let r=W(e),i=t[r];i?.loaderDataFilePath&&(n.push({source:a,destination:y(N,i.loaderDataFilePath)}),s[Ut(e,g)]=i.loaderDataFilePath)}}await we(n),await Pe(y(N,`static-loader-data-manifest-${L}.json`),Rt(s))}await Jt(G,t,q);let c=Math.round(performance.now()-x);E?.({name:`Client build`,duration:0,success:!0,details:`Code unchanged, restored from cache`}),E?.({name:`Server build`,duration:0,success:!0,details:`SSR bundle unchanged, skipped`}),E?.({name:`Render pages`,duration:0,success:!0,details:`${q.length} pages (all cached)`}),E?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(c/1e3).toFixed(1)}s, all cached`});let l=Math.round(performance.now()-e),u={renderedPageCount:0,cachedPageCount:q.length,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,routePreparationMs:0,workerTransportMs:0,workerRoundTripMs:0,workerTransportAvgMs:0,finalizeP50Ms:0,finalizeP95Ms:0,assetCollectionMs:0,beforeHookMs:0,htmlAssemblyMs:0,onPageRenderedHookMs:0,criticalCssP50Ms:0,criticalCssP95Ms:0,cacheWriteMs:0,cachedOutputMs:l,renderQueueDrainMs:0,renderPipelineSettleMs:0,outputLinkMs:l};process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:0,success:!0,details:`${q.length} pages / 0 new / ${q.length} cached`,metrics:{renderedCount:0,cachedCount:q.length,renderedSize:0,totalPages:q.length,prunedCount:0,clientBuildMs:0,serverBuildMs:0,ssrImportMs:0,workerPoolSetupMs:0,workerUsed:!1,workerCount:0,fallbackMainThread:!1,ssrP50Ms:0,ssrP95Ms:0,ssrP99Ms:0,crittersP50Ms:0,crittersP95Ms:0,writeP50Ms:0,writeP95Ms:0,routerTimingCount:0,routerMatchAvgMs:0,routerResolveAvgMs:0,routerLoadersAvgMs:0,routerRenderAvgMs:0,routerHelmetAvgMs:0,routerTotalAvgMs:0,pagesPerSecond:0,pipeline:u}})}`),await T?.(m),await Yt(N),await Ae(y(P,`ssg-output.json`),F,N,n,i);return}let We=await ie(r,`build`,i,i),Ge=Object.assign({},We.ssgOptions||{},n),{script:Ke=`sync`,mock:qe=!1,formatting:Ye=`none`,includedRoutes:Xe=Kt,onBeforePageRender:Ze,onPageRendered:Qe,dirStyle:$e=`flat`,includeAllRoutes:et=!1,format:at=`esm`,concurrency:ot=20,rootContainerId:ut=`root`,beastiesOptions:dt={},criticalCssMaxSize:ft}=Ge,pt=dt,mt=s(ft),J=Ge.turbo??!1,ht=y(P,`ssr`),gt=y(P,`ssr-cache-index.json`);if(R=y(ht,J?`turbo-ssr`:L),!J&&H)try{let e=(await C.readJson(gt))[F];if(typeof e==`string`){let t=Ct(ht,e);t&&(R=t)}}catch{}let _t=Et(ne(),wt),yt=()=>{};if(qe){let{jsdomGlobal:e}=await import(`./jsdomGlobal-FnVQDCiZ.mjs`);yt=e()}let bt={};try{if(C.existsSync(K)){let e=await C.readJson(K);bt=Ne(e,Object.keys(e))}}catch{}let Y=!1;if(H)try{let e=y(P,`routes-cache.json`);if(C.existsSync(e)){let t=JSON.parse(C.readFileSync(e,`utf-8`));t.paths.length>0&&t.paths.every(e=>{let n=W(e),r=bt[n];return rt({routePath:e,cacheItem:r,sourceContentHash:tt(D[n]||D[e]||Wt(p,t.sourceFiles,n)||Wt(p,t.sourceFiles,e),V),ssgPagesDir:G,requireAssetHash:!0})})&&(q=t.paths,Y=!0)}}catch{}let Dt=Y?``:await Se(We,ae),Ot=(J||H)&&C.existsSync(R)&&C.readdirSync(R).filter(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`)).length>0,jt=null;if(!Y&&Ot&&at===`esm`){let e=process.platform===`win32`?`file://`:``;try{let t=R,n=C.existsSync(t)?C.readdirSync(t).filter(e=>e.endsWith(`.mjs`)):[];n.length>0&&(jt=import(e+y(t,n[0]).replace(/\\/g,`/`)).catch(()=>{}))}catch{}}let Mt=performance.now(),[Nt,Pt]=await Promise.all([xt({viteConfig:r,resolvedMode:We.mode,root:p,htmlEntry:A,outDir:N,clientCacheDir:z,finalCacheDir:P,docsDirName:j,initialClientHash:F,canBypassClientBuild:H,customLogger:_t,onStep:E,shouldSuppressLog:wt},()=>Je(p,j,P)),St({viteConfig:r,resolvedMode:We.mode,entry:ae,ssrEntry:Dt,ssgOut:R,format:at,canSkipSsrImport:Y,serverBuildSkipped:Ot,customLogger:_t,onStep:E,shouldSuppressLog:wt})]);if(m=Nt.outDir,fe=Nt.resolvedClientCacheDir,B=Nt.resolvedClientHash,V=Nt.pageContentFallbackHash,ye&&(V=`${V}-${ye}`),!Ie){let e=Ce();U.server=e.server,U.css=e.css,(e.server||e.css)&&Ee(),Ie=!0}if(L=B.substring(0,12),S=Nt.durationMs,w=Pt.durationMs,!J)try{let e={};try{e=await C.readJson(gt)}catch{}e[B]=b(ht,R),await Fe(gt,e)}catch{}let Ft=at===`esm`&&process.platform===`win32`?`file://`:``,Bt=at===`esm`?`.mjs`:`.cjs`;Dt.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`);let Vt=`combined`+Bt;try{if(C.existsSync(R)){let e=C.readdirSync(R).filter(e=>e.endsWith(Bt));e.length>0&&(Vt=e[0])}}catch{}let qt=Ft+y(R,Vt).replace(/\\/g,`/`),Qt=Vt.replace(/\.[^/.]+$/,``),$t=JSON.parse(await C.readFile(y(R,...Lt,`manifest.json`),`utf-8`)),en=null,tn=null,X=[],nn,rn=`/`,an,on=null,sn,cn=Xe;if(!Y){let t=e===void 0?f(import.meta.url):e,n=performance.now(),r=at===`esm`?await import(qt):t(qt);jt&&await jt.catch(()=>{}),re=performance.now()-n,nn=r.matchRouteBranchWithParams;let{createRoot:i,includedRoutes:a}=r;cn=a||Xe,en=await i(!1);let s=en;if(X=s.routes,rn=s.base,an=s.triggerOnSSRAppRendered,on=s.app,sn=s.routerType,X&&X.length>0)for(let e of X)e.path&&(e.filePath||e.entry)&&!D[e.path]&&(D[e.path]=e.filePath||e.entry);I=lt(I,ct(p,X,D)),tn=o(s,r)}let ln=``,un=0,dn=null,fn=null,pn=null,mn=!1;async function hn(){if(pn){await pn;return}let e=fn;e&&(pn=e.destroy(),await pn)}if(!Y){let e=performance.now(),{paths:t}=await xe(X);q=et?t:await cn(t,X||[]),q=Kt(q,X||[]),q=Array.from(new Set(q)),un+=performance.now()-e;try{await Fe(y(P,`routes-cache.json`),{paths:q,dirStyle:$e,base:g,sourceFiles:Gt(p,D)},0)}catch{}ln=y(R,Qt+Bt)}async function gn(){if(dn||mn||q.length<=4)return;mn=!0;let e=performance.now();try{ln=y(R,Qt+Bt);let{SsgWorkerPool:t}=await import(`./ssg-worker-pool-DArhALXL.mjs`);dn=new t({ssrEntryPath:ln,format:at===`esm`?`esm`:`cjs`}),fn=dn,await dn.ready(),ir=performance.now()-e}catch{ir=performance.now()-e,dn=null}}let _n=Ge.criticalCss??`zig-critters`,vn,yn;_n===`zig-critters`?(vn=await l({concurrency:Math.max(1,Math.min(ot,ee.cpus().length,8))}),vn||h("[zig-critters] WASM unavailable; critical CSS disabled for this build. Set `criticalCss: 'beasties'` to enable JS-based critical CSS.")):_n===`beasties`&&pt!==!1&&(yn=await c(m,{publicPath:g,...pt}));let bn=``,xn=``;if(vn){let e=`unknown`;try{e=await vn.getEngineIdentity()}catch{}let t=y(N,`assets`);if(C.existsSync(t)){let e=C.readdirSync(t).filter(e=>e.endsWith(`.css`));for(let n of e)bn+=C.readFileSync(y(t,n),`utf-8`)+`
3
+ `}bn&&(xn=O.createHash(`sha256`).update(bn).update(`\0`).update(e).digest(`hex`))}let Sn={},Cn={},Z={},wn=null;if(Y)for(let e of q){let t=W(e);Z[e]=bt[t]?.assetHash||F}else{let[e,t]=await Promise.all([C.readFile(y(N,...Lt,`ssr-manifest.json`),`utf-8`),C.readFile(y(N,...Lt,`manifest.json`),`utf-8`)]);Sn=JSON.parse(e),Cn=JSON.parse(t),wn=de(Cn);let n=await Ht(N,Cn,P),r;try{let e=y(p,`.boltdocs`,`compiled`,`pages-chunk-map.json`);C.existsSync(e)&&(r={chunkMap:JSON.parse(C.readFileSync(e,`utf-8`))})}catch{r=void 0}await Promise.all(Object.entries(D).map(async([e,t])=>{Z[e]=await pe({outDir:N,indexes:wn,ssrManifest:Sn,routeSourceFile:t,root:p,clientHash:F,assetHashes:n,chunkPackMaps:r}),U.server&&(Z[e]=`${Z[e]}-${U.server}`),U.css&&(Z[e]=`${Z[e]}-${U.css}`)}));for(let e of q)Z[e]||(Z[e]=V)}let Tn=await C.readFile(y(N,A),`utf-8`);C.rmSync(y(N,A)),Tn=Xt(Tn,Ke);let En=Tn.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1],Dn=Ze?null:he({rootContainerId:ut,indexHTML:Tn}),On=(await import(`p-queue`)).default||await import(`p-queue`),kn=new On({concurrency:ot}),An=new On({concurrency:Math.min(ee.cpus().length,4)}),jn=new On({concurrency:Math.max(2,Math.min(ee.cpus().length,8))}),Mn={},Nn=0,Pn=new Map,Fn=new Set;for(let e of q){let n=D[t(e).replace(/\/$/,``)]||D[e];n&&Fn.add(n)}for(let e of Fn)try{if(C.existsSync(e)){let t=C.statSync(e);Pn.set(e,{hash:nt(e,`${t.mtimeMs}:${t.size}`),mtimeMs:t.mtimeMs})}}catch{}let In=null;!Y&&nn&&(In=oe({routes:[...X],base:rn,matchRouteBranchWithParams:nn,serverManifest:$t,manifest:Cn,ssrManifest:Sn}));let Ln=kt({routes:q,outDir:N,ssgPagesDir:G,dirStyle:$e,contextBase:rn,fallbackHash:V,routeToSourceFileMap:D,sourceMeta:Pn,routeToAssetHash:Z}),Rn=J?void 0:y(P,`critical-css`),zn=new le({cacheDir:Rn}),Bn=[],Vn=[],Hn=[],Un=[],Wn=0,Gn=0,Kn=0,qn=0,Jn=0,Yn=0,Xn=0,Zn=0,Qn=0,$n=0,er=0,tr=0,nr=0,Q={count:0,matchMs:0,resolveMs:0,loadersMs:0,renderMs:0,helmetMs:0,totalMs:0};function rr(e){e&&(Q.count++,Q.matchMs+=e.matchMs,Q.resolveMs+=e.resolveMs,Q.loadersMs+=e.loadersMs,Q.renderMs+=e.renderMs,Q.helmetMs+=e.helmetMs,Q.totalMs+=e.totalMs)}let ir=0,ar=!1;function $(e,t){if(e.length===0)return 0;let n=[...e].sort((e,t)=>e-t),r=Math.ceil(t/100*n.length)-1;return n[Math.max(0,Math.min(r,n.length-1))]}let or=0,sr=0,cr=0,lr=new Set,ur=new Set,dr=[],fr=Te({writeFile:async(e,t)=>{await C.ensureDir(_(e)),await C.writeFile(e,t,`utf-8`)}}),pr=JSON.stringify(bt),mr=Ne(bt,q),hr=new Map,gr=new Set;gr.add(G);for(let e of q){let t=$e===`nested`?y(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`;gr.add(y(N,_(t)));let n=e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e;gr.add(y(N,`static-loader-data`,_(n)))}gr.add(y(N,`static-loader-data`)),await Promise.all([...gr].map(e=>C.ensureDir(e)));async function _r(e,t,n,r,i,a,o,s,c,l,u,f,p,m,ee){let te=performance.now(),{path:_,cachedHtmlFile:v,cachedLoaderFile:b,normalizedKey:x,sourceContentHash:S,sourceMtimeMs:w,fetchUrl:ne}=e,re;if(!p&&m===`remix`){if(!In)throw Error(`The SSR entry must expose matchRouteBranchWithParams for asset collection`);let e=performance.now();re=new Set(await(hr.get(_)||In(ne))),Wn+=performance.now()-e}else re=new Set;let T;if(s&&Object.keys(s).length>0){let e=zt(_,L);T=e,J&&await C.writeFile(y(N,e),JSON.stringify(s)),Mn[Ut(_,g)]=e,Nn++}await f?.(_,t,c);let ie=performance.now(),E=Dn&&ee===Tn?Dn({appHTML:t,metaAttributes:n,bodyAttributes:r,htmlAttributes:i,initialState:null}):await ge({rootContainerId:ut,appHTML:t,indexHTML:ee,metaAttributes:n,bodyAttributes:r,htmlAttributes:i,initialState:null});Kn+=performance.now()-ie;let D=p?``:ve(re),O=o?E.replace(/<script[^>]*>(?:(?!<\/script>)[\s\S])*__staticRouterHydrationData(?:(?!<\/script>)[\s\S])*<\/script>/g,``):E;D&&(O=O.replace(`<head>`,`<head>${D}`));let k=performance.now();Jn++,Jn===1&&(Yn=k);let A=await Qe?.(_,O,c)||O;Jn--,Jn===0&&(qn+=performance.now()-Yn);let ae=``;if(s&&Object.keys(s).length>0){let e=JSON.stringify(s).replace(/</g,`\\u003c`);ae=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${Ut(_,g)}': ${e} };`}let j=d(o),M=A,P=`<script>window.__VITE_REACT_SSG_HASH__ = '${L}';${ae}${j}<\/script>`,F=performance.now();if(M=M.replace(`<script>${me}<\/script>`,``),vn){if(bn){let e=se(M,xn,bn,`zig-critters`);try{let t=await zn.getOrCreate(e,async()=>{let{criticalCss:e,stats:t}=await vn.extractCriticalCss(M,bn,{maxSize:mt});return e?`<style data-zig-critters>${e}</style>`:(t.truncated&&h(`[zig-critters] Critical CSS for "${_}" exceeded maxSize (${t.originalSize} bytes) and was skipped.`),null)},{engine:`zig-critters`});t&&!M.includes(`data-zig-critters`)&&(M=M.replace(`</head>`,`${t}</head>`))}catch(e){h(`[zig-critters] Failed to inline CSS for "${_}": ${e instanceof Error?e.message:String(e)}`)}}M=M.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}else if(yn){let e=se(M,xn,bn,`beasties`),t=await zn.getOrCreate(e,async()=>{let e=await An.add(()=>yn.process(M));return ce(M,e)},{engine:`beasties`});t&&!M.includes(t)&&(M=M.replace(`</head>`,`${t}</head>`)),M=M.replace(/<link\srel="stylesheet"(?!.*\bcrossorigin\b)/g,`<link rel="stylesheet" crossorigin`)}let oe=P+(a||``);oe&&(M=M.replace(`<head>`,`<head>${oe}`));let I=Ye===`none`?M:await Zt(M,Ye);Hn.push(Math.round(performance.now()-F));let le=performance.now();J?s&&Object.keys(s).length>0&&T&&await fr.enqueue(y(N,T),JSON.stringify(s)):(await fr.enqueue(v,I),s&&Object.keys(s).length>0&&T?(await fr.enqueue(b,JSON.stringify(s)),mr[x]={contentHash:S,mtime:w?Math.round(w):0,loaderDataFilePath:T,assetHash:e.routeAssetHash}):mr[x]={contentHash:S,mtime:w?Math.round(w):0,assetHash:e.routeAssetHash});let ue=performance.now()-le;Un.push(Math.round(ue)),Vn.push(Math.round(performance.now()-te)),or++,$n++,cr+=I.length}let vr=performance.now(),yr=[];await It({routes:q,canBypassClientBuild:H,getPlan:e=>At(Ln,e),isCached:e=>{if(J)return!1;try{return rt({routePath:e.path,cacheItem:bt[e.normalizedKey],sourceContentHash:e.sourceContentHash,expectedAssetHash:e.routeAssetHash,ssgPagesDir:G})}catch{return!1}},onCacheHit:async e=>{let t=bt[e.normalizedKey]?.loaderDataFilePath,n=t?y(N,t):void 0,r=!lr.has(e.finalOutFile),i=!!n&&!ur.has(n);r&&lr.add(e.finalOutFile),i&&n&&ur.add(n);let a=performance.now();try{if(r){let t=!1;if(En)try{let n=await C.readFile(e.cachedHtmlFile,`utf-8`),r=n.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1];r&&r!==En&&(await C.ensureDir(_(e.finalOutFile)),await C.writeFile(e.finalOutFile,n.split(r).join(En)),t=!0)}catch{t=!1}t||dr.push({source:e.cachedHtmlFile,destination:e.finalOutFile})}n&&t&&C.existsSync(e.cachedLoaderFile)&&(i&&dr.push({source:e.cachedLoaderFile,destination:n}),Mn[Ut(e.path,g)]=t,Nn++),sr++,er++,Xn+=performance.now()-a}catch(t){throw r&&lr.delete(e.finalOutFile),i&&n&&ur.delete(n),Error(`Error on cached page: ${e.path}\n${t.stack}`)}},prepareRoute:e=>{!on&&sn===`remix`&&In&&hr.set(e.path,In(e.fetchUrl))},ensurePool:gn,getPool:()=>dn,getWorkerCount:()=>it(dn)?.totalWorkers??0,onWorkerFailure:async(e,t,n,r)=>{if(!tn)throw Error(`Error on page: ${e}\n${String(n)}`);h(`[ssg-worker] Retrying ${e} on the main thread after worker failure`),ar=!0;try{await hn()}catch{}dn=null,mn=!0;let i=await tn.render(e);return{path:e,appHTML:i.appHTML,metaAttributes:i.metaAttributes,bodyAttributes:i.bodyAttributes,htmlAttributes:i.htmlAttributes,styleTag:i.styleTag,timings:i.timings,routerContext:u(i.routerContext)}},onWorkerResult:async(e,t,n,r)=>{Zn+=Math.max(0,r-(n.timings?.totalMs??0)),Qn++,n.timings&&(Bn.push(Math.round(n.timings.totalMs)),rr(n.timings));let i={...en,routePath:e},a=performance.now(),o=await Ze?.(e,Tn,i)||Tn;Gn+=performance.now()-a;let s=n.routerContext?.loaderData?n.routerContext.loaderData:null;await jn.add(()=>_r(t,n.appHTML,n.metaAttributes,n.bodyAttributes,n.htmlAttributes,n.styleTag,n.routerContext,s,i,rn,X,an,on,sn??`remix`,o))},scheduleMainThread:(e,t)=>{yr.push(kn.add(async()=>{try{let n={...en,routePath:e},r=performance.now(),i=await Ze?.(e,Tn,n)||Tn;Gn+=performance.now()-r;let a=performance.now(),{appHTML:o,bodyAttributes:s,htmlAttributes:c,metaAttributes:l,styleTag:d,routerContext:f,timings:p}=await tn.render(e);Bn.push(Math.round(performance.now()-a)),rr(p);let m=f?.loaderData;await _r(t,o,l,s,c,d,u(f),m||null,n,rn,X,an,on,sn??`remix`,i)}catch(t){throw Error(`Error on page: ${e}\n${t.stack}`)}}))},drainFinalizers:()=>jn.onIdle(),drainMainThread:async()=>{await Promise.all(yr),await kn.onIdle()},drainWrites:()=>fr.flush(),cleanupAfterFailure:async()=>{try{C.existsSync(N)&&await C.remove(N)}catch{}},destroyPool:hn,onNoRenderer:e=>{h(`[ssg] No SSR context available for ${e}, skipping`)}}),nr+=performance.now()-vr;let br=performance.now();for(let e of q){if(J)continue;let t=Ln.get(e);if(!t||!C.existsSync(t.cachedHtmlFile))continue;lr.has(t.finalOutFile)||dr.push({source:t.cachedHtmlFile,destination:t.finalOutFile});let n=mr[t.normalizedKey];if(!n?.loaderDataFilePath||!C.existsSync(t.cachedLoaderFile))continue;let r=y(N,n.loaderDataFilePath);ur.has(r)||dr.push({source:t.cachedLoaderFile,destination:r})}await we(dr);let xr=Math.round(performance.now()-br);tr+=xr;let Sr=or+sr,Cr=(cr/1024/1024).toFixed(2),wr=0;if(!J){try{let e=JSON.stringify(mr)!==pr;e&&await Fe(K,mr),wr=await Jt(G,mr,q,e)}catch{}if(Rn)try{await ue(Rn,{maxAgeMs:720*60*60*1e3,maxEntries:5e3})}catch{}}let Tr=performance.now()-Mt,Er=it(fn),Dr={renderedCount:or,cachedCount:sr,renderedSize:cr,totalPages:Sr,prunedCount:wr,clientBuildMs:Math.round(S),serverBuildMs:Math.round(w),ssrImportMs:Math.round(re),workerPoolSetupMs:Math.round(ir),workerUsed:Er!==null&&!ar,workerCount:Er?.totalWorkers??0,fallbackMainThread:ar,ssrP50Ms:$(Bn,50),ssrP95Ms:$(Bn,95),ssrP99Ms:$(Bn,99),crittersP50Ms:$(Hn,50),crittersP95Ms:$(Hn,95),writeP50Ms:$(Un,50),writeP95Ms:$(Un,95),routerTimingCount:Q.count,routerMatchAvgMs:Q.count>0?Q.matchMs/Q.count:0,routerResolveAvgMs:Q.count>0?Q.resolveMs/Q.count:0,routerLoadersAvgMs:Q.count>0?Q.loadersMs/Q.count:0,routerRenderAvgMs:Q.count>0?Q.renderMs/Q.count:0,routerHelmetAvgMs:Q.count>0?Q.helmetMs/Q.count:0,routerTotalAvgMs:Q.count>0?Q.totalMs/Q.count:0,pagesPerSecond:Sr>0&&Tr>0?Math.round(Sr/(Tr/1e3)*10)/10:0,pipeline:{renderedPageCount:$n,cachedPageCount:er,clientBuildMs:Math.round(S),serverBuildMs:Math.round(w),ssrImportMs:Math.round(re),workerPoolSetupMs:Math.round(ir),routePreparationMs:Math.round(un),workerTransportMs:Math.round(Zn),workerRoundTripMs:Math.round(Zn),workerTransportAvgMs:Qn>0?Math.round(Zn/Qn):0,finalizeP50Ms:$(Vn,50),finalizeP95Ms:$(Vn,95),assetCollectionMs:Math.round(Wn),beforeHookMs:Math.round(Gn),htmlAssemblyMs:Math.round(Kn),onPageRenderedHookMs:Math.round(qn),criticalCssP50Ms:$(Hn,50),criticalCssP95Ms:$(Hn,95),cacheWriteMs:Math.round(0+fr.writeTimeMs()),cachedOutputMs:Math.round(Xn),renderQueueDrainMs:Math.round(nr),renderPipelineSettleMs:Math.round(nr),outputLinkMs:Math.round(tr)}};E?.({name:`Render pages`,duration:Tr,success:!0,details:`${Sr} pages (${or} new, ${sr} cached, ${Cr} MB)`,metrics:Dr}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[boltdocs] ${JSON.stringify({name:`Render pages`,duration:Math.round(Tr),success:!0,details:`${Sr} pages / ${or} new / ${sr} cached / ${Cr} MB`,metrics:Dr})}`);let Or=performance.now(),kr=Rt(Mn);if(await Pe(y(N,`static-loader-data-manifest-${L}.json`),kr),await Tt(y(P,`ssr`),5,J?`turbo-ssr`:te(R)),yt(),vn?.dispose)try{await vn.dispose()}catch{}let Ar=We.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;Ar&&!Ar.disabled&&Ar.generateSW&&await Ar.generateSW();let jr=Math.round(performance.now()-x);E?.({name:`Static loader data`,duration:performance.now()-Or,success:!0,details:`${Nn} loader data files`,metrics:{loaderDataFileCount:Nn}}),await T?.(m),await Yt(N);let Mr=Me(N),Nr=await Be(N,jr,P,{outputFiles:Mr,manifestPath:y(fe,`dist`,...Lt,`manifest.json`)});Ve(N,Nr),E?.({name:`Build metrics`,duration:0,success:!0,details:`Build time: ${(jr/1e3).toFixed(1)}s, JS: ${(Nr.totalJSBundleSize/1024).toFixed(0)} kB, CSS: ${(Nr.totalCSSBundleSize/1024).toFixed(0)} kB`,metrics:{buildTime:jr,totalPages:Nr.pages.length,jsSize:Nr.totalJSBundleSize,cssSize:Nr.totalCSSBundleSize}}),await Ae(y(P,`ssg-output.json`),B,N,je(q,mr,$e).concat(`static-loader-data-manifest-${L}.json`).concat(`page-source.json`),Nt.clientFiles,Mr)}async function Jt(e,t,n=[],r=!1){try{if(!C.existsSync(e))return 0;let i=y(e,`.prune-state`);if(!r)try{let e=await C.stat(i);if(Date.now()-e.mtimeMs<6e4)return 0}catch{}let a=await C.readdir(e),o=new Set,s=new Set([...Object.keys(t),...n]);for(let e of s){let t=O.createHash(`md5`).update(e).digest(`hex`);o.add(`${t}.html`),o.add(`${t}.json`)}let c=0;for(let t of a)(t.endsWith(`.html`)||t.endsWith(`.json`))&&!o.has(t)&&(await C.remove(y(e,t)),c++);return await C.writeFile(i,String(Date.now()),`utf8`),c}catch{return 0}}async function Yt(e){try{Lt.length>0?await C.remove(y(e,...Lt)):await Promise.all([C.remove(y(e,`manifest.json`)),C.remove(y(e,`ssr-manifest.json`))])}catch{}}function Xt(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function Zt(e,t){if(t===`prettify`)try{let t=(await import(`prettier/esm/standalone.mjs`)).default,n=(await import(`prettier/esm/parser-html.mjs`)).default;return t.format(e,{semi:!1,parser:`html`,plugins:[n]})}catch(t){return m(`Error formatting html: ${t?.message}`),e}return e}function Qt(e,t,n){if(e.url)try{let t=e.url,n=t.indexOf(`?`),r=n>=0?t.slice(0,n):t,i=n>=0?t.slice(n):``;if(/%[0-9A-Fa-f]{2}/.test(r)){let t=decodeURI(r);if(t!==r){let n=t+i;e.url=n,e.originalUrl&&=n}}}catch{}n()}function $t({template:e,ssrEntry:t,onBeforePageRender:i,entry:a,rootContainerId:s,onPageRendered:c}){return{name:`vite-react-ssg:dev-server`,configureServer(l){let u=async(u,d)=>{try{let f=u.originalUrl??u.url??`/`,p=await l.ssrLoadModule(t),m=p.createRoot,h=await m(!1,f),ee=o(h,p),{app:g,base:te}=h,[_=`/`,v=``]=f.split(`?`),y=new URLSearchParams(v);if(!g&&y.has(`_data`))return ee.handleLoader(u,d);let b=await l.transformIndexHtml(f,e),x=await i?.(f,b,h)||b,{appHTML:S,bodyAttributes:C,htmlAttributes:w,metaAttributes:ne,styleTag:re}=await ee.render(n(_,te));ne.push(re);let T=await Promise.all([t,a].map(async e=>await l.moduleGraph.getModuleByUrl(e))),ie=new Set,D=new Set,O=async e=>{if(!e?.ssrTransformResult||D.has(e))return;D.add(e);let{deps:t=[],dynamicDeps:n=[]}=e.ssrTransformResult,r=[...t,...n];for(let e of r)if(e.endsWith(`.css`)||e.endsWith(`.scss`)||e.endsWith(`.sass`)||e.endsWith(`.less`))ie.add(e);else if(e.endsWith(`.ts`)||e.endsWith(`.tsx`)){let t=await l.moduleGraph.getModuleByUrl(e);t&&await O(t)}};await Promise.all(T.map(async e=>O(e)));let k=[...ie].map(e=>V(r(l.config.base,e)));ne.push(...k);let A=await ge({rootContainerId:s,appHTML:S,indexHTML:x,metaAttributes:ne,bodyAttributes:C,htmlAttributes:w,initialState:null}),ae=await c?.(f,A,h)||A;d.statusCode=200,d.setHeader(`Content-Type`,`text/html`),E(u,d,ae,`html`,{headers:`pluginContainer`in l?l.config.server.headers:l.config.preview.headers})}catch(e){let t=e instanceof Error?e:Error(String(e));l.ssrFixStacktrace(t),m(`SSR render error`,t),d.statusCode=500,d.end(t.stack??t.message)}};return l.middlewares.use(Qt),()=>{l.middlewares.use(u)}}}}async function en(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,{skipResolveConfig:r,...i}=t,a=process.cwd(),o,s,c,l;if(r){o=e.root||a,s={...e.ssgOptions,...i};let{htmlEntry:t=`index.html`}=s,n=s.entry||await _e(o,t);c=n.startsWith(`virtual:`)||n.includes(`\0`)||n.includes(`boltdocs/entry`)||n.includes(`boltdocs-entry`)?n:y(o,n),l=await A.readFile(y(o,t),`utf-8`)}else{let t=await ie(e,`serve`,n,n);o=t.root||a,s={...t.ssgOptions,...i};let{htmlEntry:r=`index.html`}=s,u=s.entry||await _e(o,r),[d,f]=await Promise.all([Se(t,u),A.readFile(y(o,r),`utf-8`)]);c=d,l=f}let{onBeforePageRender:u,onPageRendered:d,rootContainerId:f=`root`,mock:p=!1}=s;if(process.env.__DEV_MODE_SSR=`true`,p){let{jsdomGlobal:e}=await import(`./jsdomGlobal-FnVQDCiZ.mjs`);e()}return await re({...e,plugins:[...e.plugins??[],$t({template:l,ssrEntry:c,onBeforePageRender:u,onPageRendered:d,entry:s.entry||`src/main.ts`,rootContainerId:f})]})}catch(e){throw Error(`[vite-react-ssg] Failed to create dev server: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function tn(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await en(t,e);return await r.listen(),X(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){m(`failed to start server: ${e?.message??e}`),process.exit(1)}}function X(e,t=!1){if(t){e.printUrls();return}let n=e.config.logger.info,r=` -- SSR`;if(globalThis.__ssr_start_time){let e=Math.round(performance.now()-globalThis.__ssr_start_time);r+=` ready in ${p.bold(`${e}ms`)}`}n(`\n ${p.cyan(` VITE-REACT-SSG v${be} `)}`,{clear:!e.config.logger.hasWarned}),n(`${p.cyan(`\n VITE v${D}`)+p.dim(r)}\n`),n(p.green(` dev server running at:`)),e.printUrls()}var nn=class{constructor(e){this.template=e.template}stitch(e){let t=this.template;return e.content!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:CONTENT-->/g,e.content)),e.toc!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TOC-->/g,e.toc)),e.meta!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:META-->/g,e.meta)),e.breadcrumbs!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:BREADCRUMBS-->/g,e.breadcrumbs)),e.pageNav!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:PAGENAV-->/g,e.pageNav)),e.title!==void 0&&(t=t.replace(/<!--BDOCS_SLOT:TITLE-->/g,e.title)),t}};export{nn as ShellStitcher,qt as build,en as createServer,tn as dev};
@@ -0,0 +1 @@
1
+ import{createRequire as e}from"node:module";var t=Object.defineProperty,n=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},r=e(import.meta.url);export{r as n,n as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-C-zNXMYg.mjs";import{Fragment as t,jsx as n}from"react/jsx-runtime";import{Fragment as r,createElement as i}from"react";import{once as a}from"node:events";import{Readable as o}from"node:stream";import*as s from"react-dom/server";function c(e,t){return!e||!t?e||t||``:(e[e.length-1]===`/`&&(e=e.substring(0,e.length-1)),t[0]!==`/`&&(t=`/${t}`),e+t)}function l(e){return e[0]===`/`?e.slice(1):e}function u(e,t){if(e===t)return`/`;let n=d(t);return e.startsWith(n)?e.slice(n.length-1):e}function d(e){return e[e.length-1]===`/`?e:`${e}/`}function f(e){return e[0]===`/`?e:`/${e}`}function p(e,t=``){return e.map((e,n)=>{let r=e.id||(t?`${t}-${n}`:String(n));return{...e,id:r,children:e.children?p(e.children,r):e.children}})}function m(e){if(!e?.RouteRenderer||!e.matchRouteBranchWithParams||!e.resolveRouteBranch)throw Error(`The SSR entry must expose RouteRenderer, matchRouteBranchWithParams, and resolveRouteBranch`);return{RouteRenderer:e.RouteRenderer,matchRouteBranchWithParams:e.matchRouteBranchWithParams,resolveRouteBranch:e.resolveRouteBranch}}function h(e,t){if(e===!1||e==null)throw console.error(`The following error is a bug in Boltdocs SSG; please open an issue! https://github.com/bolt-docs/boltdocs/issues/new`),Error(t)}function g(e){let t=new Headers;for(let[n,r]of Object.entries(e))if(r)if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r);return t}function _(e){let t=e.headers.origin&&e.headers.origin!==`null`?e.headers.origin:`http://${e.headers.host}`;h(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:g(e.headers)};return new Request(n.href,r)}async function v(e,t){t.statusCode=e.status,t.statusMessage=e.statusText;for(let[n,r]of e.headers)t.setHeader(n,r);if(e.body){let n=e.body,r=o.from(n);r.pipe(t),await a(r,`end`)}else t.end()}function y(e){let t=new URL(e.url);t.searchParams.delete(`_data`);let n={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return n.body&&(n.duplex=`half`),new Request(t.href,n)}const b=x();async function x(){try{let e=(await import(`react-dom/static`)).prerenderToNodeStream;return typeof e==`function`?e:void 0}catch{return}}async function S(e){let t=await b;if(!t)return s.renderToString(i(r,null,e));let{prelude:n}=await t(i(r,null,e)),a=new TextDecoder,o=``;for await(let e of n)typeof e==`string`?(o+=a.decode(),o+=e):o+=a.decode(new Uint8Array(e),{stream:!0});return o+a.decode()}function C(e,t,n){let{helmet:r}=t,i=r.htmlAttributes.toString(),a=r.bodyAttributes.toString(),o=r.title.toString();o.split(`>`)[1]===`</title`&&(o=``);let s=[o,r.meta.toString(),r.link.toString(),r.script.toString()],c=n?.toString?.(e)??``;return{htmlAttributes:i,bodyAttributes:a,metaAttributes:s.filter(Boolean),styleTag:c}}let w=null;function T(){if(w)return w;let r=globalThis.__BOLTDOCS_HELMET_PROVIDER__;if(r)w=r.HelmetProvider||r.default?.HelmetProvider||r;else try{let{createRequire:t}=e(`node:module`),n=t(import.meta.url)(`react-helmet-async`);w=n.HelmetProvider||n.default?.HelmetProvider||n.default||n}catch{w=({children:e})=>n(t,{children:e})}return typeof w!=`function`&&(w=({children:e})=>n(t,{children:e})),w}var E=class{constructor(e,t){this.matchedBranches=new Map,this.resolvedBranches=new Map,this.context=e,this.entryMod=t,this.routerApi=m(t),this.base=e.base,this.getStyleCollector=e.getStyleCollector;let n=e.app;this.coreRoutes=(n?.routes||(Array.isArray(n)?n:e.routes))??[],this.RouteRenderer=this.routerApi.RouteRenderer,this.matchRouteBranchWithParams=this.routerApi.matchRouteBranchWithParams,this.resolveRouteBranch=this.routerApi.resolveRouteBranch}getMatchedBranch(e){let t=`${this.base}\0${e}`,n=this.matchedBranches.get(t);if(n)return n;let r=this.matchRouteBranchWithParams(this.coreRoutes,e,this.base);return this.matchedBranches.set(t,r),r}async getResolvedBranch(e,t){let n=this.resolvedBranches.get(e);if(n)return n;let r=this.resolveRouteBranch(t).catch(t=>{throw this.resolvedBranches.delete(e),t});return this.resolvedBranches.set(e,r),r}async render(e){let t=performance.now(),r=f(e),i=`http://localhost${this.base===`/`||r.startsWith(`${f(this.base).replace(/\/$/,``)}/`)||r===f(this.base).replace(/\/$/,``)?r:`${f(this.base).replace(/\/$/,``)}${r}`}`,a=new Request(i),o=this.getStyleCollector?await this.getStyleCollector():null,s={},c=new URL(a.url).pathname,l=performance.now(),u=this.getMatchedBranch(c),d=performance.now()-l,p=u.map(e=>e.route),m={},h=!1,g=[],_=0,v=0;if(p.length>0){let e=performance.now();g=await this.getResolvedBranch(`${this.base}\0${c}`,p),_=performance.now()-e;let t=performance.now(),n=[];for(let[e,t]of u.entries()){let r=g[e];if(!(!r||typeof r.loader!=`function`))try{let e=await r.loader({request:a,params:{...t.params}});e&&typeof e==`object`&&`data`in e?(h=!0,n.push(e.data)):e&&typeof e==`object`&&(h=!0,n.push(e))}catch{}}m=n.reduce((e,t)=>({...e,...t}),{}),v=performance.now()-t}let y=T(),b=y;b&&typeof b==`function`&&(b.canUseDOM=!1);let x=this.RouteRenderer,w=performance.now(),E=n(y,{context:s,children:n(x,{routes:this.coreRoutes,pathname:c,loaderData:m,hasLoaderData:h,resolvedBranch:g,basename:this.base})});o&&(E=o.collect(E));let D=``;try{D=await S(E)}catch(e){throw console.error(`[SSG Render Error] routePath="${c}":`,e?.stack||e),e}let O=performance.now()-w,k=performance.now(),{htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N}=C(D,s,o),P=performance.now()-k;return{appHTML:D,htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N,timings:{matchMs:d,resolveMs:_,loadersMs:v,renderMs:O,helmetMs:P,totalMs:performance.now()-t},routerContext:{loaderData:{root:m}}}}async handleLoader(e,t){let{routes:n,base:r}=this.context,{matchRouteBranchWithParams:i,resolveRouteBranch:a}=this.routerApi,o=_(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)||``),l=i(p([...n]),s.pathname,r);if(l.length===0){t.statusCode=404,t.end(`Route not found: ${c}`);return}let u=l.find((e,t)=>(e.route.id||String(t))===c);if(!u){t.statusCode=404,t.end(`Route not found: ${c}`);return}let d=((await a(l.map(e=>e.route)))[l.indexOf(u)]||u.route).loader;if(!d){t.statusCode=200,t.end(`There is no loader for the route: ${c}`);return}await v(await D({loader:d,params:u.params,request:o,routeId:c}),t)}};async function D({loader:e,params:t,request:n,routeId:r}){let i=await e({request:y(k(n)),params:t});if(i===void 0)throw Error(`You defined a loader for route "${r}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`);return O(i)?i:new Response(JSON.stringify(i),{status:200,headers:{"Content-Type":`application/json`}})}function O(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function k(e){let t=new URL(e.url),n=t.searchParams.getAll(`index`);t.searchParams.delete(`index`);let r=[];for(let e of n)e&&r.push(e);for(let e of r)t.searchParams.append(`index`,e);let i={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return i.body&&(i.duplex=`half`),new Request(t.href,i)}function A(e,t){return new E(e,t)}export{f as a,u as i,c as n,d as o,l as r,A as t};
@@ -1 +1 @@
1
- const e=require(`./chunk-Bmb41Sf3.cjs`);let t=require(`react/jsx-runtime`),n=require(`react`),r=require(`node:events`),i=require(`node:stream`),a=require(`react-dom/server`);a=e.t(a);function o(e,t){return!e||!t?e||t||``:(e[e.length-1]===`/`&&(e=e.substring(0,e.length-1)),t[0]!==`/`&&(t=`/${t}`),e+t)}function s(e){return e[0]===`/`?e.slice(1):e}function c(e,t){if(e===t)return`/`;let n=l(t);return e.startsWith(n)?e.slice(n.length-1):e}function l(e){return e[e.length-1]===`/`?e:`${e}/`}function u(e){return e[0]===`/`?e:`/${e}`}function d(e,t=``){return e.map((e,n)=>{let r=e.id||(t?`${t}-${n}`:String(n));return{...e,id:r,children:e.children?d(e.children,r):e.children}})}function f(e){if(!e?.RouteRenderer||!e.matchRouteBranchWithParams||!e.resolveRouteBranch)throw Error(`The SSR entry must expose RouteRenderer, matchRouteBranchWithParams, and resolveRouteBranch`);return{RouteRenderer:e.RouteRenderer,matchRouteBranchWithParams:e.matchRouteBranchWithParams,resolveRouteBranch:e.resolveRouteBranch}}function p(e,t){if(e===!1||e==null)throw console.error(`The following error is a bug in Boltdocs SSG; please open an issue! https://github.com/bolt-docs/boltdocs/issues/new`),Error(t)}function m(e){let t=new Headers;for(let[n,r]of Object.entries(e))if(r)if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r);return t}function h(e){let t=e.headers.origin&&e.headers.origin!==`null`?e.headers.origin:`http://${e.headers.host}`;p(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:m(e.headers)};return new Request(n.href,r)}async function g(e,t){t.statusCode=e.status,t.statusMessage=e.statusText;for(let[n,r]of e.headers)t.setHeader(n,r);if(e.body){let n=e.body,a=i.Readable.from(n);a.pipe(t),await(0,r.once)(a,`end`)}else t.end()}function _(e){let t=new URL(e.url);t.searchParams.delete(`_data`);let n={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return n.body&&(n.duplex=`half`),new Request(t.href,n)}const v=y();async function y(){try{let e=(await import(`react-dom/static`)).prerenderToNodeStream;return typeof e==`function`?e:void 0}catch{return}}async function b(e){let t=await v;if(!t)return a.renderToString((0,n.createElement)(n.Fragment,null,e));let{prelude:r}=await t((0,n.createElement)(n.Fragment,null,e)),i=new TextDecoder,o=``;for await(let e of r)typeof e==`string`?(o+=i.decode(),o+=e):o+=i.decode(new Uint8Array(e),{stream:!0});return o+i.decode()}function x(e,t,n){let{helmet:r}=t,i=r.htmlAttributes.toString(),a=r.bodyAttributes.toString(),o=r.title.toString();o.split(`>`)[1]===`</title`&&(o=``);let s=[o,r.meta.toString(),r.link.toString(),r.script.toString()],c=n?.toString?.(e)??``;return{htmlAttributes:i,bodyAttributes:a,metaAttributes:s.filter(Boolean),styleTag:c}}let S=null;function C(){if(S)return S;let e=globalThis.__BOLTDOCS_HELMET_PROVIDER__;if(e)S=e.HelmetProvider||e.default?.HelmetProvider||e;else try{let{createRequire:e}=require(`node:module`),t=e(require(`url`).pathToFileURL(__filename).href)(`react-helmet-async`);S=t.HelmetProvider||t.default?.HelmetProvider||t.default||t}catch{S=({children:e})=>(0,t.jsx)(t.Fragment,{children:e})}return typeof S!=`function`&&(S=({children:e})=>(0,t.jsx)(t.Fragment,{children:e})),S}var w=class{constructor(e,t){this.matchedBranches=new Map,this.resolvedBranches=new Map,this.context=e,this.entryMod=t,this.routerApi=f(t),this.base=e.base,this.getStyleCollector=e.getStyleCollector;let n=e.app;this.coreRoutes=(n?.routes||(Array.isArray(n)?n:e.routes))??[],this.RouteRenderer=this.routerApi.RouteRenderer,this.matchRouteBranchWithParams=this.routerApi.matchRouteBranchWithParams,this.resolveRouteBranch=this.routerApi.resolveRouteBranch}getMatchedBranch(e){let t=`${this.base}\0${e}`,n=this.matchedBranches.get(t);if(n)return n;let r=this.matchRouteBranchWithParams(this.coreRoutes,e,this.base);return this.matchedBranches.set(t,r),r}async getResolvedBranch(e,t){let n=this.resolvedBranches.get(e);if(n)return n;let r=this.resolveRouteBranch(t).catch(t=>{throw this.resolvedBranches.delete(e),t});return this.resolvedBranches.set(e,r),r}async render(e){let n=performance.now(),r=u(e),i=`http://localhost${this.base===`/`||r.startsWith(`${u(this.base).replace(/\/$/,``)}/`)||r===u(this.base).replace(/\/$/,``)?r:`${u(this.base).replace(/\/$/,``)}${r}`}`,a=new Request(i),o=this.getStyleCollector?await this.getStyleCollector():null,s={},c=new URL(a.url).pathname,l=performance.now(),d=this.getMatchedBranch(c),f=performance.now()-l,p=d.map(e=>e.route),m={},h=!1,g=[],_=0,v=0;if(p.length>0){let e=performance.now();g=await this.getResolvedBranch(`${this.base}\0${c}`,p),_=performance.now()-e;let t=performance.now(),n=[];for(let[e,t]of d.entries()){let r=g[e];if(!(!r||typeof r.loader!=`function`))try{let e=await r.loader({request:a,params:{...t.params}});e&&typeof e==`object`&&`data`in e?(h=!0,n.push(e.data)):e&&typeof e==`object`&&(h=!0,n.push(e))}catch{}}m=n.reduce((e,t)=>({...e,...t}),{}),v=performance.now()-t}let y=C(),S=y;S&&typeof S==`function`&&(S.canUseDOM=!1);let w=this.RouteRenderer,T=performance.now(),E=(0,t.jsx)(y,{context:s,children:(0,t.jsx)(w,{routes:this.coreRoutes,pathname:c,loaderData:m,hasLoaderData:h,resolvedBranch:g,basename:this.base})});o&&(E=o.collect(E));let D=``;try{D=await b(E)}catch(e){throw console.error(`[SSG Render Error] routePath="${c}":`,e?.stack||e),e}let O=performance.now()-T,k=performance.now(),{htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N}=x(D,s,o),P=performance.now()-k;return{appHTML:D,htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N,timings:{matchMs:f,resolveMs:_,loadersMs:v,renderMs:O,helmetMs:P,totalMs:performance.now()-n},routerContext:{loaderData:{root:m}}}}async handleLoader(e,t){let{routes:n,base:r}=this.context,{matchRouteBranchWithParams:i,resolveRouteBranch:a}=this.routerApi,o=h(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)||``),l=i(d([...n]),s.pathname,r);if(l.length===0){t.statusCode=404,t.end(`Route not found: ${c}`);return}let u=l.find((e,t)=>(e.route.id||String(t))===c);if(!u){t.statusCode=404,t.end(`Route not found: ${c}`);return}let f=((await a(l.map(e=>e.route)))[l.indexOf(u)]||u.route).loader;if(!f){t.statusCode=200,t.end(`There is no loader for the route: ${c}`);return}await g(await T({loader:f,params:u.params,request:o,routeId:c}),t)}};async function T({loader:e,params:t,request:n,routeId:r}){let i=await e({request:_(D(n)),params:t});if(i===void 0)throw Error(`You defined a loader for route "${r}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`);return E(i)?i:new Response(JSON.stringify(i),{status:200,headers:{"Content-Type":`application/json`}})}function E(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function D(e){let t=new URL(e.url),n=t.searchParams.getAll(`index`);t.searchParams.delete(`index`);let r=[];for(let e of n)e&&r.push(e);for(let e of r)t.searchParams.append(`index`,e);let i={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return i.body&&(i.duplex=`half`),new Request(t.href,i)}function O(e,t){return new w(e,t)}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return O}});
1
+ const e=require(`./chunk-D-qHiVGv.cjs`);let t=require(`react/jsx-runtime`),n=require(`react`),r=require(`node:events`),i=require(`node:stream`),a=require(`react-dom/server`);a=e.n(a);function o(e,t){return!e||!t?e||t||``:(e[e.length-1]===`/`&&(e=e.substring(0,e.length-1)),t[0]!==`/`&&(t=`/${t}`),e+t)}function s(e){return e[0]===`/`?e.slice(1):e}function c(e,t){if(e===t)return`/`;let n=l(t);return e.startsWith(n)?e.slice(n.length-1):e}function l(e){return e[e.length-1]===`/`?e:`${e}/`}function u(e){return e[0]===`/`?e:`/${e}`}function d(e,t=``){return e.map((e,n)=>{let r=e.id||(t?`${t}-${n}`:String(n));return{...e,id:r,children:e.children?d(e.children,r):e.children}})}function f(e){if(!e?.RouteRenderer||!e.matchRouteBranchWithParams||!e.resolveRouteBranch)throw Error(`The SSR entry must expose RouteRenderer, matchRouteBranchWithParams, and resolveRouteBranch`);return{RouteRenderer:e.RouteRenderer,matchRouteBranchWithParams:e.matchRouteBranchWithParams,resolveRouteBranch:e.resolveRouteBranch}}function p(e,t){if(e===!1||e==null)throw console.error(`The following error is a bug in Boltdocs SSG; please open an issue! https://github.com/bolt-docs/boltdocs/issues/new`),Error(t)}function m(e){let t=new Headers;for(let[n,r]of Object.entries(e))if(r)if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r);return t}function h(e){let t=e.headers.origin&&e.headers.origin!==`null`?e.headers.origin:`http://${e.headers.host}`;p(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:m(e.headers)};return new Request(n.href,r)}async function g(e,t){t.statusCode=e.status,t.statusMessage=e.statusText;for(let[n,r]of e.headers)t.setHeader(n,r);if(e.body){let n=e.body,a=i.Readable.from(n);a.pipe(t),await(0,r.once)(a,`end`)}else t.end()}function _(e){let t=new URL(e.url);t.searchParams.delete(`_data`);let n={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return n.body&&(n.duplex=`half`),new Request(t.href,n)}const v=y();async function y(){try{let e=(await import(`react-dom/static`)).prerenderToNodeStream;return typeof e==`function`?e:void 0}catch{return}}async function b(e){let t=await v;if(!t)return a.renderToString((0,n.createElement)(n.Fragment,null,e));let{prelude:r}=await t((0,n.createElement)(n.Fragment,null,e)),i=new TextDecoder,o=``;for await(let e of r)typeof e==`string`?(o+=i.decode(),o+=e):o+=i.decode(new Uint8Array(e),{stream:!0});return o+i.decode()}function x(e,t,n){let{helmet:r}=t,i=r.htmlAttributes.toString(),a=r.bodyAttributes.toString(),o=r.title.toString();o.split(`>`)[1]===`</title`&&(o=``);let s=[o,r.meta.toString(),r.link.toString(),r.script.toString()],c=n?.toString?.(e)??``;return{htmlAttributes:i,bodyAttributes:a,metaAttributes:s.filter(Boolean),styleTag:c}}let S=null;function C(){if(S)return S;let e=globalThis.__BOLTDOCS_HELMET_PROVIDER__;if(e)S=e.HelmetProvider||e.default?.HelmetProvider||e;else try{let{createRequire:e}=require(`node:module`),t=e(require(`url`).pathToFileURL(__filename).href)(`react-helmet-async`);S=t.HelmetProvider||t.default?.HelmetProvider||t.default||t}catch{S=({children:e})=>(0,t.jsx)(t.Fragment,{children:e})}return typeof S!=`function`&&(S=({children:e})=>(0,t.jsx)(t.Fragment,{children:e})),S}var w=class{constructor(e,t){this.matchedBranches=new Map,this.resolvedBranches=new Map,this.context=e,this.entryMod=t,this.routerApi=f(t),this.base=e.base,this.getStyleCollector=e.getStyleCollector;let n=e.app;this.coreRoutes=(n?.routes||(Array.isArray(n)?n:e.routes))??[],this.RouteRenderer=this.routerApi.RouteRenderer,this.matchRouteBranchWithParams=this.routerApi.matchRouteBranchWithParams,this.resolveRouteBranch=this.routerApi.resolveRouteBranch}getMatchedBranch(e){let t=`${this.base}\0${e}`,n=this.matchedBranches.get(t);if(n)return n;let r=this.matchRouteBranchWithParams(this.coreRoutes,e,this.base);return this.matchedBranches.set(t,r),r}async getResolvedBranch(e,t){let n=this.resolvedBranches.get(e);if(n)return n;let r=this.resolveRouteBranch(t).catch(t=>{throw this.resolvedBranches.delete(e),t});return this.resolvedBranches.set(e,r),r}async render(e){let n=performance.now(),r=u(e),i=`http://localhost${this.base===`/`||r.startsWith(`${u(this.base).replace(/\/$/,``)}/`)||r===u(this.base).replace(/\/$/,``)?r:`${u(this.base).replace(/\/$/,``)}${r}`}`,a=new Request(i),o=this.getStyleCollector?await this.getStyleCollector():null,s={},c=new URL(a.url).pathname,l=performance.now(),d=this.getMatchedBranch(c),f=performance.now()-l,p=d.map(e=>e.route),m={},h=!1,g=[],_=0,v=0;if(p.length>0){let e=performance.now();g=await this.getResolvedBranch(`${this.base}\0${c}`,p),_=performance.now()-e;let t=performance.now(),n=[];for(let[e,t]of d.entries()){let r=g[e];if(!(!r||typeof r.loader!=`function`))try{let e=await r.loader({request:a,params:{...t.params}});e&&typeof e==`object`&&`data`in e?(h=!0,n.push(e.data)):e&&typeof e==`object`&&(h=!0,n.push(e))}catch{}}m=n.reduce((e,t)=>({...e,...t}),{}),v=performance.now()-t}let y=C(),S=y;S&&typeof S==`function`&&(S.canUseDOM=!1);let w=this.RouteRenderer,T=performance.now(),E=(0,t.jsx)(y,{context:s,children:(0,t.jsx)(w,{routes:this.coreRoutes,pathname:c,loaderData:m,hasLoaderData:h,resolvedBranch:g,basename:this.base})});o&&(E=o.collect(E));let D=``;try{D=await b(E)}catch(e){throw console.error(`[SSG Render Error] routePath="${c}":`,e?.stack||e),e}let O=performance.now()-T,k=performance.now(),{htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N}=x(D,s,o),P=performance.now()-k;return{appHTML:D,htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N,timings:{matchMs:f,resolveMs:_,loadersMs:v,renderMs:O,helmetMs:P,totalMs:performance.now()-n},routerContext:{loaderData:{root:m}}}}async handleLoader(e,t){let{routes:n,base:r}=this.context,{matchRouteBranchWithParams:i,resolveRouteBranch:a}=this.routerApi,o=h(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)||``),l=i(d([...n]),s.pathname,r);if(l.length===0){t.statusCode=404,t.end(`Route not found: ${c}`);return}let u=l.find((e,t)=>(e.route.id||String(t))===c);if(!u){t.statusCode=404,t.end(`Route not found: ${c}`);return}let f=((await a(l.map(e=>e.route)))[l.indexOf(u)]||u.route).loader;if(!f){t.statusCode=200,t.end(`There is no loader for the route: ${c}`);return}await g(await T({loader:f,params:u.params,request:o,routeId:c}),t)}};async function T({loader:e,params:t,request:n,routeId:r}){let i=await e({request:_(D(n)),params:t});if(i===void 0)throw Error(`You defined a loader for route "${r}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`);return E(i)?i:new Response(JSON.stringify(i),{status:200,headers:{"Content-Type":`application/json`}})}function E(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function D(e){let t=new URL(e.url),n=t.searchParams.getAll(`index`);t.searchParams.delete(`index`);let r=[];for(let e of n)e&&r.push(e);for(let e of r)t.searchParams.append(`index`,e);let i={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return i.body&&(i.duplex=`half`),new Request(t.href,i)}function O(e,t){return new w(e,t)}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return O}});
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-D-qHiVGv.cjs`),t=require(`./ssg-worker-payload-D6kDQQtE.cjs`);let n=require(`node:os`),r=require(`node:path`),i=require(`piscina`);i=e.n(i,1);let a=require(`node:url`);function o({cpuCount:e,totalMemoryGB:t,freeMemoryGB:n,requestedWorkers:r,envWorkers:i}){let a=Math.max(1,e||4),o=Math.max(1,a-1),s=t>=4?Math.min(o,12):4,c=Math.max(2,Math.floor(t*.35/.256)),l=Math.max(2,Math.floor(n/.3)),u=Math.min(c,l),d=Number.parseInt(i||``,10),f=Math.max(2,Math.min(a-1,6));return Math.max(2,Math.min(r??(Number.isFinite(d)&&d>0?d:f),o,u,s))}const s=(0,r.dirname)((0,a.fileURLToPath)(require(`url`).pathToFileURL(__filename).href));function c(e){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`}var l=class{constructor(e){this.totalRendered=0,this.totalErrors=0,this.destroyPromise=null;let{ssrEntryPath:t,format:a=`esm`}=e,c=(0,n.freemem)()/1024/1024/1024,l=(0,n.totalmem)()/1024/1024/1024;this.totalWorkers=o({cpuCount:(0,n.cpus)().length||4,totalMemoryGB:l,freeMemoryGB:c,requestedWorkers:e.numWorkers,envWorkers:process.env.BOLTDOCS_SSG_WORKERS});let u=(0,r.join)(s,`ssg-worker.mjs`);this.startTime=performance.now(),this.piscina=new i.default({filename:u,workerData:{ssrEntryPath:t,format:a},maxThreads:this.totalWorkers,minThreads:0,idleTimeout:1e4}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[ssg-worker/piscina] Piscina pool initialized with ${this.totalWorkers} workers (RAM: ${l.toFixed(1)} GB total, ${c.toFixed(1)} GB free)`)}async ready(){return Promise.resolve()}decodeResult(e,n){if(!e||typeof e!=`object`||e.path!==n||(e.routerContext=e.routerContext??null,e._appHTMLBuffer&&(e.appHTML=t.r(e._appHTMLBuffer),delete e._appHTMLBuffer),e._routerContextBuffer||typeof e.appHTML!=`string`||!Array.isArray(e.metaAttributes)||typeof e.bodyAttributes!=`string`||typeof e.htmlAttributes!=`string`||e.routerContext!==null&&(typeof e.routerContext!=`object`||Array.isArray(e.routerContext))))throw Error(`SSG worker returned an invalid render payload`);return e}async render(e){try{let t=this.decodeResult(await this.piscina.run({type:`render`,path:e}),e);return this.totalRendered++,t}catch(e){throw this.totalErrors++,e}}async renderBatch(e){if(e.length===0)return[];try{let t=await this.piscina.run({type:`render-batch`,paths:[...e]});if(!Array.isArray(t)||t.length!==e.length)throw Error(`SSG worker returned an invalid batch payload`);let n=t.map((t,n)=>{if(c(t))return t;if(!t||typeof t!=`object`)throw Error(`SSG worker returned an invalid batch item`);return this.decodeResult(t,e[n])});return this.totalRendered+=n.filter(e=>!c(e)).length,this.totalErrors+=n.filter(c).length,n}catch(e){throw this.totalErrors++,e}}async destroy(){if(this.destroyPromise)return this.destroyPromise;this.destroyPromise=this.piscina.destroy(),await this.destroyPromise}poolMetrics(){return{totalWorkers:this.totalWorkers,readyCount:this.totalWorkers,busyCount:this.piscina.completed,pagesPerWorker:[],initTimesMs:[],totalRendered:this.totalRendered,totalErrors:this.totalErrors,allReadyMs:Math.round(performance.now()-this.startTime),failedCount:0}}};exports.SsgWorkerPool=l;
@@ -0,0 +1 @@
1
+ import{r as e}from"./ssg-worker-payload-CWmidVcz.mjs";import{cpus as t,freemem as n,totalmem as r}from"node:os";import{dirname as i,join as a}from"node:path";import o from"piscina";import{fileURLToPath as s}from"node:url";function c({cpuCount:e,totalMemoryGB:t,freeMemoryGB:n,requestedWorkers:r,envWorkers:i}){let a=Math.max(1,e||4),o=Math.max(1,a-1),s=t>=4?Math.min(o,12):4,c=Math.max(2,Math.floor(t*.35/.256)),l=Math.max(2,Math.floor(n/.3)),u=Math.min(c,l),d=Number.parseInt(i||``,10),f=Math.max(2,Math.min(a-1,6));return Math.max(2,Math.min(r??(Number.isFinite(d)&&d>0?d:f),o,u,s))}const l=i(s(import.meta.url));function u(e){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`}var d=class{constructor(e){this.totalRendered=0,this.totalErrors=0,this.destroyPromise=null;let{ssrEntryPath:i,format:s=`esm`}=e,u=n()/1024/1024/1024,d=r()/1024/1024/1024;this.totalWorkers=c({cpuCount:t().length||4,totalMemoryGB:d,freeMemoryGB:u,requestedWorkers:e.numWorkers,envWorkers:process.env.BOLTDOCS_SSG_WORKERS});let f=a(l,`ssg-worker.mjs`);this.startTime=performance.now(),this.piscina=new o({filename:f,workerData:{ssrEntryPath:i,format:s},maxThreads:this.totalWorkers,minThreads:0,idleTimeout:1e4}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[ssg-worker/piscina] Piscina pool initialized with ${this.totalWorkers} workers (RAM: ${d.toFixed(1)} GB total, ${u.toFixed(1)} GB free)`)}async ready(){return Promise.resolve()}decodeResult(t,n){if(!t||typeof t!=`object`||t.path!==n||(t.routerContext=t.routerContext??null,t._appHTMLBuffer&&(t.appHTML=e(t._appHTMLBuffer),delete t._appHTMLBuffer),t._routerContextBuffer||typeof t.appHTML!=`string`||!Array.isArray(t.metaAttributes)||typeof t.bodyAttributes!=`string`||typeof t.htmlAttributes!=`string`||t.routerContext!==null&&(typeof t.routerContext!=`object`||Array.isArray(t.routerContext))))throw Error(`SSG worker returned an invalid render payload`);return t}async render(e){try{let t=this.decodeResult(await this.piscina.run({type:`render`,path:e}),e);return this.totalRendered++,t}catch(e){throw this.totalErrors++,e}}async renderBatch(e){if(e.length===0)return[];try{let t=await this.piscina.run({type:`render-batch`,paths:[...e]});if(!Array.isArray(t)||t.length!==e.length)throw Error(`SSG worker returned an invalid batch payload`);let n=t.map((t,n)=>{if(u(t))return t;if(!t||typeof t!=`object`)throw Error(`SSG worker returned an invalid batch item`);return this.decodeResult(t,e[n])});return this.totalRendered+=n.filter(e=>!u(e)).length,this.totalErrors+=n.filter(u).length,n}catch(e){throw this.totalErrors++,e}}async destroy(){if(this.destroyPromise)return this.destroyPromise;this.destroyPromise=this.piscina.destroy(),await this.destroyPromise}poolMetrics(){return{totalWorkers:this.totalWorkers,readyCount:this.totalWorkers,busyCount:this.piscina.completed,pagesPerWorker:[],initTimesMs:[],totalRendered:this.totalRendered,totalErrors:this.totalErrors,allReadyMs:Math.round(performance.now()-this.startTime),failedCount:0}}};export{d as SsgWorkerPool};
@@ -1 +1 @@
1
- const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./router-adapter-DtnukOfG.cjs`),n=require(`./ssg-worker-payload-B_9N9o5p.cjs`);let r=require(`node:module`),i=require(`piscina`);i=e.t(i,1);let a=require(`node:worker_threads`),o=null;async function s(e,s=!0){if(!e)throw Error(`Invalid render job payload`);if(!o){let{ssrEntryPath:e,format:n}=a.workerData,i=n===`esm`?await import(e):(0,r.createRequire)(require(`url`).pathToFileURL(__filename).href)(e);o=t.t(await i.createRoot(!1),i)}let{appHTML:c,bodyAttributes:l,htmlAttributes:u,metaAttributes:d,styleTag:f,routerContext:p,timings:m}=await o.render(e),h=n.n(p),g=n.i(c),_={path:e,_appHTMLBuffer:g,metaAttributes:d,bodyAttributes:l,htmlAttributes:u,styleTag:f,routerContext:h,timings:m},v={get[i.default.transferableSymbol](){return[g]},get[i.default.valueSymbol](){return _}};return s?i.default.move(v):_}async function c(e){if(e.type===`render`)return s(e.path||``);if(e.type===`render-batch`&&Array.isArray(e.paths)){let t=[],n=[];for(let r of e.paths)try{let e=await s(r,!1);t.push(e);let i=e._appHTMLBuffer;if(i instanceof ArrayBuffer)n.push(i);else if(i&&ArrayBuffer.isView(i)){let e=i.buffer;e instanceof ArrayBuffer&&n.push(e)}}catch(e){t.push({path:r,error:e instanceof Error?e.message:String(e)})}return i.default.move({get[i.default.transferableSymbol](){return n},get[i.default.valueSymbol](){return t}})}throw Error(`Invalid render job payload`)}module.exports=c;
1
+ const e=require(`./chunk-D-qHiVGv.cjs`),t=require(`./router-adapter-DR3BzW_i.cjs`),n=require(`./ssg-worker-payload-D6kDQQtE.cjs`);let r=require(`node:module`),i=require(`piscina`);i=e.n(i,1);let a=require(`node:worker_threads`),o=null;async function s(e,s=!0){if(!e)throw Error(`Invalid render job payload`);if(!o){let{ssrEntryPath:e,format:n}=a.workerData,i=n===`esm`?await import(e):(0,r.createRequire)(require(`url`).pathToFileURL(__filename).href)(e);o=t.t(await i.createRoot(!1),i)}let{appHTML:c,bodyAttributes:l,htmlAttributes:u,metaAttributes:d,styleTag:f,routerContext:p,timings:m}=await o.render(e),h=n.n(p),g=n.i(c),_={path:e,_appHTMLBuffer:g,metaAttributes:d,bodyAttributes:l,htmlAttributes:u,styleTag:f,routerContext:h,timings:m},v={get[i.default.transferableSymbol](){return[g]},get[i.default.valueSymbol](){return _}};return s?i.default.move(v):_}async function c(e){if(e.type===`render`)return s(e.path||``);if(e.type===`render-batch`&&Array.isArray(e.paths)){let t=[],n=[];for(let r of e.paths)try{let e=await s(r,!1);t.push(e);let i=e._appHTMLBuffer;if(i instanceof ArrayBuffer)n.push(i);else if(i&&ArrayBuffer.isView(i)){let e=i.buffer;e instanceof ArrayBuffer&&n.push(e)}}catch(e){t.push({path:r,error:e instanceof Error?e.message:String(e)})}return i.default.move({get[i.default.transferableSymbol](){return n},get[i.default.valueSymbol](){return t}})}throw Error(`Invalid render job payload`)}module.exports=c;
@@ -1 +1 @@
1
- import{t as e}from"./router-adapter-BukFH1uk.mjs";import{i as t,n}from"./ssg-worker-payload-BHsJklNf.mjs";import{createRequire as r}from"node:module";import i from"piscina";import{workerData as a}from"node:worker_threads";let o=null;async function s(s,c=!0){if(!s)throw Error(`Invalid render job payload`);if(!o){let{ssrEntryPath:t,format:n}=a,i=n===`esm`?await import(t):r(import.meta.url)(t);o=e(await i.createRoot(!1),i)}let{appHTML:l,bodyAttributes:u,htmlAttributes:d,metaAttributes:f,styleTag:p,routerContext:m,timings:h}=await o.render(s),g=n(m),_=t(l),v={path:s,_appHTMLBuffer:_,metaAttributes:f,bodyAttributes:u,htmlAttributes:d,styleTag:p,routerContext:g,timings:h},y={get[i.transferableSymbol](){return[_]},get[i.valueSymbol](){return v}};return c?i.move(y):v}async function c(e){if(e.type===`render`)return s(e.path||``);if(e.type===`render-batch`&&Array.isArray(e.paths)){let t=[],n=[];for(let r of e.paths)try{let e=await s(r,!1);t.push(e);let i=e._appHTMLBuffer;if(i instanceof ArrayBuffer)n.push(i);else if(i&&ArrayBuffer.isView(i)){let e=i.buffer;e instanceof ArrayBuffer&&n.push(e)}}catch(e){t.push({path:r,error:e instanceof Error?e.message:String(e)})}return i.move({get[i.transferableSymbol](){return n},get[i.valueSymbol](){return t}})}throw Error(`Invalid render job payload`)}export{c as default};
1
+ import{t as e}from"./router-adapter-CJuW_Xmp.mjs";import{i as t,n}from"./ssg-worker-payload-CWmidVcz.mjs";import{createRequire as r}from"node:module";import i from"piscina";import{workerData as a}from"node:worker_threads";let o=null;async function s(s,c=!0){if(!s)throw Error(`Invalid render job payload`);if(!o){let{ssrEntryPath:t,format:n}=a,i=n===`esm`?await import(t):r(import.meta.url)(t);o=e(await i.createRoot(!1),i)}let{appHTML:l,bodyAttributes:u,htmlAttributes:d,metaAttributes:f,styleTag:p,routerContext:m,timings:h}=await o.render(s),g=n(m),_=t(l),v={path:s,_appHTMLBuffer:_,metaAttributes:f,bodyAttributes:u,htmlAttributes:d,styleTag:p,routerContext:g,timings:h},y={get[i.transferableSymbol](){return[_]},get[i.valueSymbol](){return v}};return c?i.move(y):v}async function c(e){if(e.type===`render`)return s(e.path||``);if(e.type===`render-batch`&&Array.isArray(e.paths)){let t=[],n=[];for(let r of e.paths)try{let e=await s(r,!1);t.push(e);let i=e._appHTMLBuffer;if(i instanceof ArrayBuffer)n.push(i);else if(i&&ArrayBuffer.isView(i)){let e=i.buffer;e instanceof ArrayBuffer&&n.push(e)}}catch(e){t.push({path:r,error:e instanceof Error?e.message:String(e)})}return i.move({get[i.transferableSymbol](){return n},get[i.valueSymbol](){return t}})}throw Error(`Invalid render job payload`)}export{c as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bdocs/ssg",
3
3
  "type": "module",
4
- "version": "0.4.1",
4
+ "version": "0.4.2",
5
5
  "description": "A Vite plugin for static site generation (SSG) with React.",
6
6
  "license": "MIT",
7
7
  "publishConfig": {
@@ -86,10 +86,10 @@
86
86
  "piscina": "^5.3.0",
87
87
  "react-helmet-async": "^2.0.1",
88
88
  "yargs": "^17.7.2",
89
- "@bdocs/zig-critters": "0.2.2"
89
+ "@bdocs/zig-critters": "0.2.3"
90
90
  },
91
91
  "optionalDependencies": {
92
- "@bdocs/zig-critters": "0.2.2"
92
+ "@bdocs/zig-critters": "0.2.3"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@types/fs-extra": "^11.0.4",
@@ -1 +0,0 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
@@ -1 +0,0 @@
1
- import{createRequire as e}from"node:module";import{Fragment as t,jsx as n}from"react/jsx-runtime";import{Fragment as r,createElement as i}from"react";import{once as a}from"node:events";import{Readable as o}from"node:stream";import*as s from"react-dom/server";var c=e(import.meta.url);function l(e,t){return!e||!t?e||t||``:(e[e.length-1]===`/`&&(e=e.substring(0,e.length-1)),t[0]!==`/`&&(t=`/${t}`),e+t)}function u(e){return e[0]===`/`?e.slice(1):e}function d(e,t){if(e===t)return`/`;let n=f(t);return e.startsWith(n)?e.slice(n.length-1):e}function f(e){return e[e.length-1]===`/`?e:`${e}/`}function p(e){return e[0]===`/`?e:`/${e}`}function m(e,t=``){return e.map((e,n)=>{let r=e.id||(t?`${t}-${n}`:String(n));return{...e,id:r,children:e.children?m(e.children,r):e.children}})}function h(e){if(!e?.RouteRenderer||!e.matchRouteBranchWithParams||!e.resolveRouteBranch)throw Error(`The SSR entry must expose RouteRenderer, matchRouteBranchWithParams, and resolveRouteBranch`);return{RouteRenderer:e.RouteRenderer,matchRouteBranchWithParams:e.matchRouteBranchWithParams,resolveRouteBranch:e.resolveRouteBranch}}function g(e,t){if(e===!1||e==null)throw console.error(`The following error is a bug in Boltdocs SSG; please open an issue! https://github.com/bolt-docs/boltdocs/issues/new`),Error(t)}function _(e){let t=new Headers;for(let[n,r]of Object.entries(e))if(r)if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r);return t}function v(e){let t=e.headers.origin&&e.headers.origin!==`null`?e.headers.origin:`http://${e.headers.host}`;g(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:_(e.headers)};return new Request(n.href,r)}async function y(e,t){t.statusCode=e.status,t.statusMessage=e.statusText;for(let[n,r]of e.headers)t.setHeader(n,r);if(e.body){let n=e.body,r=o.from(n);r.pipe(t),await a(r,`end`)}else t.end()}function b(e){let t=new URL(e.url);t.searchParams.delete(`_data`);let n={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return n.body&&(n.duplex=`half`),new Request(t.href,n)}const x=S();async function S(){try{let e=(await import(`react-dom/static`)).prerenderToNodeStream;return typeof e==`function`?e:void 0}catch{return}}async function C(e){let t=await x;if(!t)return s.renderToString(i(r,null,e));let{prelude:n}=await t(i(r,null,e)),a=new TextDecoder,o=``;for await(let e of n)typeof e==`string`?(o+=a.decode(),o+=e):o+=a.decode(new Uint8Array(e),{stream:!0});return o+a.decode()}function w(e,t,n){let{helmet:r}=t,i=r.htmlAttributes.toString(),a=r.bodyAttributes.toString(),o=r.title.toString();o.split(`>`)[1]===`</title`&&(o=``);let s=[o,r.meta.toString(),r.link.toString(),r.script.toString()],c=n?.toString?.(e)??``;return{htmlAttributes:i,bodyAttributes:a,metaAttributes:s.filter(Boolean),styleTag:c}}let T=null;function E(){if(T)return T;let e=globalThis.__BOLTDOCS_HELMET_PROVIDER__;if(e)T=e.HelmetProvider||e.default?.HelmetProvider||e;else try{let{createRequire:e}=c(`node:module`),t=e(import.meta.url)(`react-helmet-async`);T=t.HelmetProvider||t.default?.HelmetProvider||t.default||t}catch{T=({children:e})=>n(t,{children:e})}return typeof T!=`function`&&(T=({children:e})=>n(t,{children:e})),T}var D=class{constructor(e,t){this.matchedBranches=new Map,this.resolvedBranches=new Map,this.context=e,this.entryMod=t,this.routerApi=h(t),this.base=e.base,this.getStyleCollector=e.getStyleCollector;let n=e.app;this.coreRoutes=(n?.routes||(Array.isArray(n)?n:e.routes))??[],this.RouteRenderer=this.routerApi.RouteRenderer,this.matchRouteBranchWithParams=this.routerApi.matchRouteBranchWithParams,this.resolveRouteBranch=this.routerApi.resolveRouteBranch}getMatchedBranch(e){let t=`${this.base}\0${e}`,n=this.matchedBranches.get(t);if(n)return n;let r=this.matchRouteBranchWithParams(this.coreRoutes,e,this.base);return this.matchedBranches.set(t,r),r}async getResolvedBranch(e,t){let n=this.resolvedBranches.get(e);if(n)return n;let r=this.resolveRouteBranch(t).catch(t=>{throw this.resolvedBranches.delete(e),t});return this.resolvedBranches.set(e,r),r}async render(e){let t=performance.now(),r=p(e),i=`http://localhost${this.base===`/`||r.startsWith(`${p(this.base).replace(/\/$/,``)}/`)||r===p(this.base).replace(/\/$/,``)?r:`${p(this.base).replace(/\/$/,``)}${r}`}`,a=new Request(i),o=this.getStyleCollector?await this.getStyleCollector():null,s={},c=new URL(a.url).pathname,l=performance.now(),u=this.getMatchedBranch(c),d=performance.now()-l,f=u.map(e=>e.route),m={},h=!1,g=[],_=0,v=0;if(f.length>0){let e=performance.now();g=await this.getResolvedBranch(`${this.base}\0${c}`,f),_=performance.now()-e;let t=performance.now(),n=[];for(let[e,t]of u.entries()){let r=g[e];if(!(!r||typeof r.loader!=`function`))try{let e=await r.loader({request:a,params:{...t.params}});e&&typeof e==`object`&&`data`in e?(h=!0,n.push(e.data)):e&&typeof e==`object`&&(h=!0,n.push(e))}catch{}}m=n.reduce((e,t)=>({...e,...t}),{}),v=performance.now()-t}let y=E(),b=y;b&&typeof b==`function`&&(b.canUseDOM=!1);let x=this.RouteRenderer,S=performance.now(),T=n(y,{context:s,children:n(x,{routes:this.coreRoutes,pathname:c,loaderData:m,hasLoaderData:h,resolvedBranch:g,basename:this.base})});o&&(T=o.collect(T));let D=``;try{D=await C(T)}catch(e){throw console.error(`[SSG Render Error] routePath="${c}":`,e?.stack||e),e}let O=performance.now()-S,k=performance.now(),{htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N}=w(D,s,o),P=performance.now()-k;return{appHTML:D,htmlAttributes:A,bodyAttributes:j,metaAttributes:M,styleTag:N,timings:{matchMs:d,resolveMs:_,loadersMs:v,renderMs:O,helmetMs:P,totalMs:performance.now()-t},routerContext:{loaderData:{root:m}}}}async handleLoader(e,t){let{routes:n,base:r}=this.context,{matchRouteBranchWithParams:i,resolveRouteBranch:a}=this.routerApi,o=v(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)||``),l=i(m([...n]),s.pathname,r);if(l.length===0){t.statusCode=404,t.end(`Route not found: ${c}`);return}let u=l.find((e,t)=>(e.route.id||String(t))===c);if(!u){t.statusCode=404,t.end(`Route not found: ${c}`);return}let d=((await a(l.map(e=>e.route)))[l.indexOf(u)]||u.route).loader;if(!d){t.statusCode=200,t.end(`There is no loader for the route: ${c}`);return}await y(await O({loader:d,params:u.params,request:o,routeId:c}),t)}};async function O({loader:e,params:t,request:n,routeId:r}){let i=await e({request:b(A(n)),params:t});if(i===void 0)throw Error(`You defined a loader for route "${r}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`);return k(i)?i:new Response(JSON.stringify(i),{status:200,headers:{"Content-Type":`application/json`}})}function k(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function A(e){let t=new URL(e.url),n=t.searchParams.getAll(`index`);t.searchParams.delete(`index`);let r=[];for(let e of n)e&&r.push(e);for(let e of r)t.searchParams.append(`index`,e);let i={method:e.method,body:e.body,headers:e.headers,signal:e.signal};return i.body&&(i.duplex=`half`),new Request(t.href,i)}function j(e,t){return new D(e,t)}export{p as a,d as i,l as n,f as o,u as r,c as s,j as t};
@@ -1 +0,0 @@
1
- const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./ssg-worker-payload-B_9N9o5p.cjs`);let n=require(`node:os`),r=require(`node:path`),i=require(`piscina`);i=e.t(i,1);let a=require(`node:url`);function o({cpuCount:e,totalMemoryGB:t,freeMemoryGB:n,requestedWorkers:r,envWorkers:i}){let a=Math.max(1,e||4),o=Math.max(1,a-1),s=t>=4?Math.min(o,12):4,c=Math.max(2,Math.floor(t*.35/.256)),l=Math.max(2,Math.floor(n/.3)),u=Math.min(c,l),d=Number.parseInt(i||``,10),f=Math.max(2,Math.min(Math.floor(a/2),4));return Math.max(2,Math.min(r??(Number.isFinite(d)&&d>0?d:f),o,u,s))}const s=(0,r.dirname)((0,a.fileURLToPath)(require(`url`).pathToFileURL(__filename).href));function c(e){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`}var l=class{constructor(e){this.totalRendered=0,this.totalErrors=0,this.destroyPromise=null;let{ssrEntryPath:t,format:a=`esm`}=e,c=(0,n.freemem)()/1024/1024/1024,l=(0,n.totalmem)()/1024/1024/1024;this.totalWorkers=o({cpuCount:(0,n.cpus)().length||4,totalMemoryGB:l,freeMemoryGB:c,requestedWorkers:e.numWorkers,envWorkers:process.env.BOLTDOCS_SSG_WORKERS});let u=(0,r.join)(s,`ssg-worker.mjs`);this.startTime=performance.now(),this.piscina=new i.default({filename:u,workerData:{ssrEntryPath:t,format:a},maxThreads:this.totalWorkers,minThreads:0,idleTimeout:1e4}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[ssg-worker/piscina] Piscina pool initialized with ${this.totalWorkers} workers (RAM: ${l.toFixed(1)} GB total, ${c.toFixed(1)} GB free)`)}async ready(){return Promise.resolve()}decodeResult(e,n){if(!e||typeof e!=`object`||e.path!==n||(e.routerContext=e.routerContext??null,e._appHTMLBuffer&&(e.appHTML=t.r(e._appHTMLBuffer),delete e._appHTMLBuffer),e._routerContextBuffer||typeof e.appHTML!=`string`||!Array.isArray(e.metaAttributes)||typeof e.bodyAttributes!=`string`||typeof e.htmlAttributes!=`string`||e.routerContext!==null&&(typeof e.routerContext!=`object`||Array.isArray(e.routerContext))))throw Error(`SSG worker returned an invalid render payload`);return e}async render(e){try{let t=this.decodeResult(await this.piscina.run({type:`render`,path:e}),e);return this.totalRendered++,t}catch(e){throw this.totalErrors++,e}}async renderBatch(e){if(e.length===0)return[];try{let t=await this.piscina.run({type:`render-batch`,paths:[...e]});if(!Array.isArray(t)||t.length!==e.length)throw Error(`SSG worker returned an invalid batch payload`);let n=t.map((t,n)=>{if(c(t))return t;if(!t||typeof t!=`object`)throw Error(`SSG worker returned an invalid batch item`);return this.decodeResult(t,e[n])});return this.totalRendered+=n.filter(e=>!c(e)).length,this.totalErrors+=n.filter(c).length,n}catch(e){throw this.totalErrors++,e}}async destroy(){if(this.destroyPromise)return this.destroyPromise;this.destroyPromise=this.piscina.destroy(),await this.destroyPromise}poolMetrics(){return{totalWorkers:this.totalWorkers,readyCount:this.totalWorkers,busyCount:this.piscina.completed,pagesPerWorker:[],initTimesMs:[],totalRendered:this.totalRendered,totalErrors:this.totalErrors,allReadyMs:Math.round(performance.now()-this.startTime),failedCount:0}}};exports.SsgWorkerPool=l;
@@ -1 +0,0 @@
1
- import{r as e}from"./ssg-worker-payload-BHsJklNf.mjs";import{cpus as t,freemem as n,totalmem as r}from"node:os";import{dirname as i,join as a}from"node:path";import o from"piscina";import{fileURLToPath as s}from"node:url";function c({cpuCount:e,totalMemoryGB:t,freeMemoryGB:n,requestedWorkers:r,envWorkers:i}){let a=Math.max(1,e||4),o=Math.max(1,a-1),s=t>=4?Math.min(o,12):4,c=Math.max(2,Math.floor(t*.35/.256)),l=Math.max(2,Math.floor(n/.3)),u=Math.min(c,l),d=Number.parseInt(i||``,10),f=Math.max(2,Math.min(Math.floor(a/2),4));return Math.max(2,Math.min(r??(Number.isFinite(d)&&d>0?d:f),o,u,s))}const l=i(s(import.meta.url));function u(e){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`}var d=class{constructor(e){this.totalRendered=0,this.totalErrors=0,this.destroyPromise=null;let{ssrEntryPath:i,format:s=`esm`}=e,u=n()/1024/1024/1024,d=r()/1024/1024/1024;this.totalWorkers=c({cpuCount:t().length||4,totalMemoryGB:d,freeMemoryGB:u,requestedWorkers:e.numWorkers,envWorkers:process.env.BOLTDOCS_SSG_WORKERS});let f=a(l,`ssg-worker.mjs`);this.startTime=performance.now(),this.piscina=new o({filename:f,workerData:{ssrEntryPath:i,format:s},maxThreads:this.totalWorkers,minThreads:0,idleTimeout:1e4}),process.env.BOLTDOCS_BENCHMARK_PHASES===`true`&&console.log(`[ssg-worker/piscina] Piscina pool initialized with ${this.totalWorkers} workers (RAM: ${d.toFixed(1)} GB total, ${u.toFixed(1)} GB free)`)}async ready(){return Promise.resolve()}decodeResult(t,n){if(!t||typeof t!=`object`||t.path!==n||(t.routerContext=t.routerContext??null,t._appHTMLBuffer&&(t.appHTML=e(t._appHTMLBuffer),delete t._appHTMLBuffer),t._routerContextBuffer||typeof t.appHTML!=`string`||!Array.isArray(t.metaAttributes)||typeof t.bodyAttributes!=`string`||typeof t.htmlAttributes!=`string`||t.routerContext!==null&&(typeof t.routerContext!=`object`||Array.isArray(t.routerContext))))throw Error(`SSG worker returned an invalid render payload`);return t}async render(e){try{let t=this.decodeResult(await this.piscina.run({type:`render`,path:e}),e);return this.totalRendered++,t}catch(e){throw this.totalErrors++,e}}async renderBatch(e){if(e.length===0)return[];try{let t=await this.piscina.run({type:`render-batch`,paths:[...e]});if(!Array.isArray(t)||t.length!==e.length)throw Error(`SSG worker returned an invalid batch payload`);let n=t.map((t,n)=>{if(u(t))return t;if(!t||typeof t!=`object`)throw Error(`SSG worker returned an invalid batch item`);return this.decodeResult(t,e[n])});return this.totalRendered+=n.filter(e=>!u(e)).length,this.totalErrors+=n.filter(u).length,n}catch(e){throw this.totalErrors++,e}}async destroy(){if(this.destroyPromise)return this.destroyPromise;this.destroyPromise=this.piscina.destroy(),await this.destroyPromise}poolMetrics(){return{totalWorkers:this.totalWorkers,readyCount:this.totalWorkers,busyCount:this.piscina.completed,pagesPerWorker:[],initTimesMs:[],totalRendered:this.totalRendered,totalErrors:this.totalErrors,allReadyMs:Math.round(performance.now()-this.startTime),failedCount:0}}};export{d as SsgWorkerPool};