@bdocs/ssg 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-D-qHiVGv.cjs +1 -0
- package/dist/critical-CRZJx8-f.mjs +1 -0
- package/dist/critical-FFUmobto.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/{jsdomGlobal-TVNgh-Jn.cjs → jsdomGlobal-9nTqUjri.cjs} +1 -1
- package/dist/node.cjs +3 -3
- package/dist/node.d.mts +1 -1
- package/dist/node.mjs +3 -3
- package/dist/rolldown-runtime-C-zNXMYg.mjs +1 -0
- package/dist/router-adapter-CJuW_Xmp.mjs +1 -0
- package/dist/{router-adapter-DtnukOfG.cjs → router-adapter-DR3BzW_i.cjs} +1 -1
- package/dist/ssg-worker-pool-CfVq6hp_.cjs +1 -0
- package/dist/ssg-worker-pool-DArhALXL.mjs +1 -0
- package/dist/ssg-worker.cjs +1 -1
- package/dist/ssg-worker.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-Bmb41Sf3.cjs +0 -1
- package/dist/router-adapter-BukFH1uk.mjs +0 -1
- package/dist/ssg-worker-pool-CZPcmzdb.cjs +0 -1
- package/dist/ssg-worker-pool-DxzleN_R.mjs +0 -1
- /package/dist/{jsdomGlobal-RTx-0uYL.mjs → jsdomGlobal-FnVQDCiZ.mjs} +0 -0
- /package/dist/{ssg-worker-payload-BHsJklNf.mjs → ssg-worker-payload-CWmidVcz.mjs} +0 -0
- /package/dist/{ssg-worker-payload-B_9N9o5p.cjs → ssg-worker-payload-D6kDQQtE.cjs} +0 -0
- /package/dist/{types-5bBDTafc.d.mts → types-CipD5Jrk.d.mts} +0 -0
- /package/dist/{zig-pool-lU4VVJjc.mjs → zig-pool-C14JyXVw.mjs} +0 -0
- /package/dist/{zig-pool-Cpw16nuK.cjs → zig-pool-DumgDn4A.cjs} +0 -0
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.3`;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=[],i=[]){return{cacheHash:e,clientFiles:[...new Set(t)].sort(),pageFiles:[...new Set(n)].sort(),auxiliaryFiles:[...new Set(r)].sort(),extraFiles:[...new Set(i)].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=[...new Set(e.extraFiles??[])].sort();if(!d.every(e=>c.default.existsSync(`${n}/${e}`)))return!1;let f=[...s,...l,...u];return o(Ce(n),[...new Set([...f,...d])].sort())?f.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);if(!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`))return;let n=Array.isArray(t.extraFiles)?t.extraFiles.filter(e=>typeof e==`string`):[];return D(t.cacheHash,t.clientFiles,t.pageFiles,t.auxiliaryFiles,n)}catch{return}}async function xe(e,t,n,r,i=[],a,o=[]){let s=a||Ce(n),c=new Set(r),l=new Set(i),u=new Set(o);return Ee(e,D(t,i.length>0?[...l]:s.filter(e=>!c.has(e)),r,i.length>0?s.filter(e=>!c.has(e)&&!l.has(e)&&!u.has(e)):[],o))}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);c.default.existsSync(r)&&I(r,e,n);let i=(0,s.join)(e,`src`);return c.default.existsSync(i)&&I(i,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;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??[]).every(e=>c.default.existsSync((0,s.join)(D,e)))&&ve(i,A,D,r,n,i?.auxiliaryFiles??[]),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,void 0,i?.extraFiles??[]);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(),Yn=performance.now()-e}catch{Yn=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 fn=``,pn=``;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)fn+=c.default.readFileSync((0,s.join)(t,n),`utf-8`)+`
|
|
3
|
+
`}fn&&(pn=u.default.createHash(`sha256`).update(fn).update(`\0`).update(e).digest(`hex`))}let mn={},hn={},Y={},gn=null;if(G)for(let e of V){let t=O(e);Y[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`)]);mn=JSON.parse(e),hn=JSON.parse(t),gn=oe(hn);let n=await Ct(D,hn,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])=>{Y[e]=await ce({outDir:D,indexes:gn,ssrManifest:mn,routeSourceFile:t,root:m,clientHash:A,assetHashes:n,chunkPackMaps:r}),R.server&&(Y[e]=`${Y[e]}-${R.server}`),R.css&&(Y[e]=`${Y[e]}-${R.css}`)}));for(let e of V)Y[e]||(Y[e]=F)}let X=await c.default.readFile((0,s.join)(D,w),`utf-8`);c.default.rmSync((0,s.join)(D,w)),X=jt(X,Xe);let _n=X.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1],vn=tt?null:ue({rootContainerId:mt,indexHTML:X}),yn=(await import(`p-queue`)).default||await import(`p-queue`),bn=new yn({concurrency:pt}),xn=new yn({concurrency:Math.min(o.default.cpus().length,4)}),Sn=new yn({concurrency:Math.max(2,Math.min(o.default.cpus().length,8))}),Cn={},wn=0,Tn=new Map,En=new Set;for(let e of V){let n=S[t.a(e).replace(/\/$/,``)]||S[e];n&&En.add(n)}for(let e of En)try{if(c.default.existsSync(e)){let t=c.default.statSync(e);Tn.set(e,{hash:Re(e,`${t.mtimeMs}:${t.size}`),mtimeMs:t.mtimeMs})}}catch{}let Dn=null;!G&&Xt&&(Dn=ee({routes:[...K],base:Zt,matchRouteBranchWithParams:Xt,serverManifest:qt,manifest:hn,ssrManifest:mn}));let On=dt({routes:V,outDir:D,ssgPagesDir:z,dirStyle:st,contextBase:Zt,fallbackHash:F,routeToSourceFileMap:S,sourceMeta:Tn,routeToAssetHash:Y}),kn=U?void 0:(0,s.join)(k,`critical-css`),An=new ie({cacheDir:kn}),jn=[],Mn=[],Nn=[],Pn=[],Fn=0,In=0,Ln=0,Rn=0,zn=0,Bn=0,Vn=0,Hn=0,Un=0,Wn=0,Gn=0,Kn=0,qn=0,Z={count:0,matchMs:0,resolveMs:0,loadersMs:0,renderMs:0,helmetMs:0,totalMs:0};function Jn(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 Yn=0,Xn=!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 Zn=0,Qn=0,$n=0,er=new Set,tr=new Set,nr=[],rr=_e({writeFile:async(e,t)=>{await c.default.ensureDir((0,s.dirname)(e)),await c.default.writeFile(e,t,`utf-8`)}}),ir=JSON.stringify(W),$=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(!Dn)throw Error(`The SSR entry must expose matchRouteBranchWithParams for asset collection`);let e=performance.now();ue=new Set(await(ar.get(_)||Dn(b))),Fn+=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)),Cn[wt(_,g)]=e,wn++}await h?.(_,t,f);let S=performance.now(),C=vn&&ie===X?vn({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});Ln+=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();zn++,zn===1&&(Bn=me);let he=await nt?.(_,pe,f)||pe;zn--,zn===0&&(Rn+=performance.now()-Bn);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(fn){let e=te(E,pn,fn,`zig-critters`);try{let t=await An.getOrCreate(e,async()=>{let{criticalCss:e,stats:t}=await J.extractCriticalCss(E,fn,{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,pn,fn,`beasties`),t=await An.getOrCreate(e,async()=>{let e=await xn.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);Nn.push(Math.round(performance.now()-ve));let xe=performance.now();U?d&&Object.keys(d).length>0&&x&&await rr.enqueue((0,s.join)(D,x),JSON.stringify(d)):(await rr.enqueue(v,be),d&&Object.keys(d).length>0&&x?(await rr.enqueue(oe,JSON.stringify(d)),$[y]={contentHash:se,mtime:ce?Math.round(ce):0,loaderDataFilePath:x,assetHash:e.routeAssetHash}):$[y]={contentHash:se,mtime:ce?Math.round(ce):0,assetHash:e.routeAssetHash});let Se=performance.now()-xe;Pn.push(Math.round(Se)),Mn.push(Math.round(performance.now()-ae)),Zn++,Wn++,$n+=be.length}let cr=performance.now(),lr=[];await vt({routes:V,canBypassClientBuild:L,getPlan:e=>ft(On,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=!er.has(e.finalOutFile),i=!!n&&!tr.has(n);r&&er.add(e.finalOutFile),i&&n&&tr.add(n);let a=performance.now();try{if(r){let t=!1;if(_n)try{let n=await c.default.readFile(e.cachedHtmlFile,`utf-8`),r=n.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1];r&&r!==_n&&(await c.default.ensureDir((0,s.dirname)(e.finalOutFile)),await c.default.writeFile(e.finalOutFile,n.split(r).join(_n)),t=!0)}catch{t=!1}t||nr.push({source:e.cachedHtmlFile,destination:e.finalOutFile})}n&&t&&c.default.existsSync(e.cachedLoaderFile)&&(i&&nr.push({source:e.cachedLoaderFile,destination:n}),Cn[wt(e.path,g)]=t,wn++),Qn++,Gn++,Vn+=performance.now()-a}catch(t){throw r&&er.delete(e.finalOutFile),i&&n&&tr.delete(n),Error(`Error on cached page: ${e.path}\n${t.stack}`)}},prepareRoute:e=>{!$t&&en===`remix`&&Dn&&ar.set(e.path,Dn(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`),Xn=!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)=>{Hn+=Math.max(0,r-(n.timings?.totalMs??0)),Un++,n.timings&&(jn.push(Math.round(n.timings.totalMs)),Jn(n.timings));let i={...Jt,routePath:e},a=performance.now(),o=await tt?.(e,X,i)||X;In+=performance.now()-a;let s=n.routerContext?.loaderData?n.routerContext.loaderData:null;await Sn.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(bn.add(async()=>{try{let n={...Jt,routePath:e},i=performance.now(),a=await tt?.(e,X,n)||X;In+=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);jn.push(Math.round(performance.now()-o)),Jn(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:()=>Sn.onIdle(),drainMainThread:async()=>{await Promise.all(lr),await bn.onIdle()},drainWrites:()=>rr.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`)}}),qn+=performance.now()-cr;let ur=performance.now();for(let e of V){if(U)continue;let t=On.get(e);if(!t||!c.default.existsSync(t.cachedHtmlFile))continue;er.has(t.finalOutFile)||nr.push({source:t.cachedHtmlFile,destination:t.finalOutFile});let n=$[t.normalizedKey];if(!n?.loaderDataFilePath||!c.default.existsSync(t.cachedLoaderFile))continue;let r=(0,s.join)(D,n.loaderDataFilePath);tr.has(r)||nr.push({source:t.cachedLoaderFile,destination:r})}await E(nr);let dr=Math.round(performance.now()-ur);Kn+=dr;let fr=Zn+Qn,pr=($n/1024/1024).toFixed(2),mr=0;if(!U){try{let e=JSON.stringify($)!==ir;e&&await Ee(B,$),mr=await kt(z,$,V,e)}catch{}if(kn)try{await ae(kn,{maxAgeMs:720*60*60*1e3,maxEntries:5e3})}catch{}}let hr=performance.now()-zt,gr=Be(an),_r={renderedCount:Zn,cachedCount:Qn,renderedSize:$n,totalPages:fr,prunedCount:mr,clientBuildMs:Math.round(_),serverBuildMs:Math.round(v),ssrImportMs:Math.round(y),workerPoolSetupMs:Math.round(Yn),workerUsed:gr!==null&&!Xn,workerCount:gr?.totalWorkers??0,fallbackMainThread:Xn,ssrP50Ms:Q(jn,50),ssrP95Ms:Q(jn,95),ssrP99Ms:Q(jn,99),crittersP50Ms:Q(Nn,50),crittersP95Ms:Q(Nn,95),writeP50Ms:Q(Pn,50),writeP95Ms:Q(Pn,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:fr>0&&hr>0?Math.round(fr/(hr/1e3)*10)/10:0,pipeline:{renderedPageCount:Wn,cachedPageCount:Gn,clientBuildMs:Math.round(_),serverBuildMs:Math.round(v),ssrImportMs:Math.round(y),workerPoolSetupMs:Math.round(Yn),routePreparationMs:Math.round(rn),workerTransportMs:Math.round(Hn),workerRoundTripMs:Math.round(Hn),workerTransportAvgMs:Un>0?Math.round(Hn/Un):0,finalizeP50Ms:Q(Mn,50),finalizeP95Ms:Q(Mn,95),assetCollectionMs:Math.round(Fn),beforeHookMs:Math.round(In),htmlAssemblyMs:Math.round(Ln),onPageRenderedHookMs:Math.round(Rn),criticalCssP50Ms:Q(Nn,50),criticalCssP95Ms:Q(Nn,95),cacheWriteMs:Math.round(0+rr.writeTimeMs()),cachedOutputMs:Math.round(Vn),renderQueueDrainMs:Math.round(qn),renderPipelineSettleMs:Math.round(qn),outputLinkMs:Math.round(Kn)}};b?.({name:`Render pages`,duration:hr,success:!0,details:`${fr} pages (${Zn} new, ${Qn} 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 / ${Zn} new / ${Qn} cached / ${pr} MB`,metrics:_r})}`);let vr=performance.now(),yr=bt(Cn);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:`${wn} loader data files`,metrics:{loaderDataFileCount:wn}}),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}});let wr=new Set(Sr),Tr=(Ve?.extraFiles??[]).filter(e=>!wr.has(e)&&!Bt.clientFiles.includes(e)&&c.default.existsSync((0,s.join)(D,e)));await xe((0,s.join)(k,`ssg-output.json`),Ae,D,Se(V,$,st).concat(`static-loader-data-manifest-${M}.json`).concat(`page-source.json`),Bt.clientFiles,Sr,Tr)}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
package/dist/node.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as
|
|
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.3`;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=[],i=[]){return{cacheHash:e,clientFiles:[...new Set(t)].sort(),pageFiles:[...new Set(n)].sort(),auxiliaryFiles:[...new Set(r)].sort(),extraFiles:[...new Set(i)].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=[...new Set(e.extraFiles??[])].sort();if(!u.every(e=>C.existsSync(`${n}/${e}`)))return!1;let d=[...s,...c,...l];return o(Me(n),[...new Set([...d,...u])].sort())?d.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);if(!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`))return;let n=Array.isArray(t.extraFiles)?t.extraFiles.filter(e=>typeof e==`string`):[];return Ee(t.cacheHash,t.clientFiles,t.pageFiles,t.auxiliaryFiles,n)}catch{return}}async function Ae(e,t,n,r,i=[],a,o=[]){let s=a||Me(n),c=new Set(r),l=new Set(i),u=new Set(o);return Fe(e,Ee(t,i.length>0?[...l]:s.filter(e=>!c.has(e)),r,i.length>0?s.filter(e=>!c.has(e)&&!l.has(e)&&!u.has(e)):[],o))}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 J(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()?J(r,t,n):a.isFile()&&Ue(t,r,n)}}function We(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)&&J(i,e,t)}catch{}}const Ge=[`boltdocs.config.ts`,`boltdocs.config.js`,`boltdocs.config.mjs`,`boltdocs.config.cjs`,`package.json`,`tsconfig.json`];function Ke(e,t){for(let n of Ge){let r=y(e,n);C.existsSync(r)&&Ue(e,r,t)}}function qe(e,t,n){try{C.removeSync(y(n,`hash-merkle.json`))}catch{}try{let n=k(`sha256`);We(e,n);let r=y(e,t);C.existsSync(r)&&J(r,e,n);let i=y(e,`src`);return C.existsSync(i)&&J(i,e,n),Ke(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 Je(e){return O.createHash(`md5`).update(e).digest(`hex`)}function Ye(e,t){return!!(e&&e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs&&e.ino===t.ino)}async function Xe(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 Ze(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 Qe(e,t,n){let r=await Xe(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(Ye(o,e)){i.set(t,o.hash),a[t]=o;return}let s=Je(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 Ze(n,a),i}function $e(e){let t=O.createHash(`sha1`);return t.update(`v4`),t.update(`\0`),t.update(C.readFileSync(e)),t.digest(`hex`)}function et(e,t){if(e)try{return $e(e)}catch{}return t}function tt(e,t){try{return $e(e)}catch{return t}}function nt({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 rt(e){return e===null?null:e.poolMetrics()}function it(e,t){return v(t)?t:y(e,t)}function at(e,t={}){let n={};for(let[r,i]of Object.entries(t)){let t=W(r);n[t]=it(e,i)}return Object.freeze(n)}function ot(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:at(e.root,e.routeToSourceFileMap)})}function st(e,t,n={}){let r=at(e,n),i=t.map(t=>{let i=W(t.path),a=n[t.path],o=a?it(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 ct(e,t){return Object.freeze({...e,routeManifest:t})}const lt=[/^@bdocs\//,/^boltdocs(?:\/|$)/,/^react-helmet-async(?:\/|$)/],ut=[`react`,`react-dom`];function dt(e){return Number.parseInt(D,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=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 Y(e){return e.map(e=>{if(Array.isArray(e))return Y(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 mt(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 ht(e){try{let t=await C.readFile(e);return k(`sha256`).update(t.toString()).digest(`hex`)}catch{return}}function gt(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 _t(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 mt(e):[],a={};for(let t of i){let n=await ht(y(e,t));n&&(a[t]=n)}for(let[e,n]of Object.entries(r)){if(a[e]!==void 0||!n)continue;let r=gt(t,e);r&&await ht(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 vt(e){return T(e.viteConfig,{logLevel:`warn`,build:{manifest:!0,ssrManifest:!0,chunkSizeWarningLimit:2e3,reportCompressedSize:!1,sourcemap:!1,cssMinify:`esbuild`,...dt({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 yt(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,...dt({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:[...lt],external:[...ut]},plugins:[...Y(e.viteConfig.plugins||[]),ft()]})}async function bt(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 _t(e.viteConfig.publicDir,t),X(t,e.outDir),o=pt(y(e.clientCacheDir,`dist`),e.htmlEntry)}else{await w(vt({...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 _t(e.viteConfig.publicDir,u),o=pt(u,e.htmlEntry),await C.writeFile(l,i,`utf-8`),await wt(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 xt(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(yt(e));let n=performance.now()-t;return e.onStep?.({name:`Server build`,duration:n,success:!0,details:`Vite SSR bundle`}),{durationMs:n}}function St(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 Ct(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 X(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())X(n,i);else if(r.isFile())try{C.linkSync(n,i)}catch{C.copyFileSync(n,i)}}}async function wt(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 Tt(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 Et(e,t){return t===`nested`?y(e.replace(/^\//g,``),`index.html`):`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`}function Dt(e){return Object.freeze(e)}function Ot(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,Dt({path:n,pathHash:r,cachedHtmlFile:y(e.ssgPagesDir,`${r}.html`),cachedLoaderFile:y(e.ssgPagesDir,`${r}.json`),finalOutFile:y(e.outDir,Et(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 kt(e,t){let n=e.get(t);if(!n)throw Error(`Missing render plan for route: ${t}`);return n}function At(e){return e.then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e}))}function jt(e){return!Number.isFinite(e)||e<=0?2:Math.max(2,Math.min(32,Math.ceil(e)*2))}function Mt(e,t){return e>4&&!t}function Nt(e,t){return!!e&&typeof e==`object`&&typeof e.path==`string`&&typeof e.error==`string`&&(t===void 0||e.path===t)}function Pt(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=jt(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=At(e).finally(()=>{n.delete(r)}),t.push(r),n.add(r)};try{if(Mt(e.routes.length,e.canBypassClientBuild)&&(await e.ensurePool(),r=e.getPool(),r&&(i=jt(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(!Pt(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=Nt(o,r)?await e.onWorkerFailure(r,i,Error(o.error),d):Pt(o,r)?o:await e.onWorkerFailure(r,i,Error(`SSG worker returned an invalid batch item`),d),!Pt(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=jt(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(!Pt(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(D)>=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(e,n){return`static-loader-data${t(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${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 Qe(e,Bt(t),n?y(n,`chunk-hashes.json`):void 0)}function Ht(e,n=`/`){let r=t(e);return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Ut(e,t,n){let r=t?.[n];if(r)return v(r)?r:y(e,r)}function Wt(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,v(n)?b(e,n):n]))}function Gt(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function Kt(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=qe(p,j,P),I=ot({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=St(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;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 nt({routePath:e,cacheItem:i,sourceContentHash:et(D[r]||D[e]||Ut(p,t.sourceFiles,r)||Ut(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??[]).every(e=>C.existsSync(y(N,e)))&&De(a,F,N,i,n,a?.auxiliaryFiles??[]),s={};if(!o){C.existsSync(N)&&await C.remove(N);let e=y(z,`dist`);await _t(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[Ht(e,g)]=i.loaderDataFilePath)}}await we(n),await Pe(y(N,`static-loader-data-manifest-${L}.json`),Lt(s))}await qt(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 Jt(N),await Ae(y(P,`ssg-output.json`),F,N,n,i,void 0,a?.extraFiles??[]);return}let J=await ie(r,`build`,i,i),We=Object.assign({},J.ssgOptions||{},n),{script:Ge=`sync`,mock:Ke=!1,formatting:Je=`none`,includedRoutes:Ye=Gt,onBeforePageRender:Xe,onPageRendered:Ze,dirStyle:Qe=`flat`,includeAllRoutes:$e=!1,format:it=`esm`,concurrency:at=20,rootContainerId:lt=`root`,beastiesOptions:ut={},criticalCssMaxSize:dt}=We,ft=ut,pt=s(dt),Y=We.turbo??!1,mt=y(P,`ssr`),ht=y(P,`ssr-cache-index.json`);if(R=y(mt,Y?`turbo-ssr`:L),!Y&&H)try{let e=(await C.readJson(ht))[F];if(typeof e==`string`){let t=St(mt,e);t&&(R=t)}}catch{}let gt=Tt(ne(),Ct),vt=()=>{};if(Ke){let{jsdomGlobal:e}=await import(`./jsdomGlobal-FnVQDCiZ.mjs`);vt=e()}let yt={};try{if(C.existsSync(K)){let e=await C.readJson(K);yt=Ne(e,Object.keys(e))}}catch{}let X=!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=yt[n];return nt({routePath:e,cacheItem:r,sourceContentHash:et(D[n]||D[e]||Ut(p,t.sourceFiles,n)||Ut(p,t.sourceFiles,e),V),ssgPagesDir:G,requireAssetHash:!0})})&&(q=t.paths,X=!0)}}catch{}let Et=X?``:await Se(J,ae),Dt=(Y||H)&&C.existsSync(R)&&C.readdirSync(R).filter(e=>e.endsWith(`.mjs`)||e.endsWith(`.cjs`)).length>0,At=null;if(!X&&Dt&&it===`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&&(At=import(e+y(t,n[0]).replace(/\\/g,`/`)).catch(()=>{}))}catch{}}let jt=performance.now(),[Mt,Nt]=await Promise.all([bt({viteConfig:r,resolvedMode:J.mode,root:p,htmlEntry:A,outDir:N,clientCacheDir:z,finalCacheDir:P,docsDirName:j,initialClientHash:F,canBypassClientBuild:H,customLogger:gt,onStep:E,shouldSuppressLog:Ct},()=>qe(p,j,P)),xt({viteConfig:r,resolvedMode:J.mode,entry:ae,ssrEntry:Et,ssgOut:R,format:it,canSkipSsrImport:X,serverBuildSkipped:Dt,customLogger:gt,onStep:E,shouldSuppressLog:Ct})]);if(m=Mt.outDir,fe=Mt.resolvedClientCacheDir,B=Mt.resolvedClientHash,V=Mt.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=Mt.durationMs,w=Nt.durationMs,!Y)try{let e={};try{e=await C.readJson(ht)}catch{}e[B]=b(mt,R),await Fe(ht,e)}catch{}let Pt=it===`esm`&&process.platform===`win32`?`file://`:``,zt=it===`esm`?`.mjs`:`.cjs`;Et.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`);let Bt=`combined`+zt;try{if(C.existsSync(R)){let e=C.readdirSync(R).filter(e=>e.endsWith(zt));e.length>0&&(Bt=e[0])}}catch{}let Kt=Pt+y(R,Bt).replace(/\\/g,`/`),Zt=Bt.replace(/\.[^/.]+$/,``),Qt=JSON.parse(await C.readFile(y(R,...It,`manifest.json`),`utf-8`)),$t=null,en=null,Z=[],tn,nn=`/`,rn,an=null,on,sn=Ye;if(!X){let t=e===void 0?f(import.meta.url):e,n=performance.now(),r=it===`esm`?await import(Kt):t(Kt);At&&await At.catch(()=>{}),re=performance.now()-n,tn=r.matchRouteBranchWithParams;let{createRoot:i,includedRoutes:a}=r;sn=a||Ye,$t=await i(!1);let s=$t;if(Z=s.routes,nn=s.base,rn=s.triggerOnSSRAppRendered,an=s.app,on=s.routerType,Z&&Z.length>0)for(let e of Z)e.path&&(e.filePath||e.entry)&&!D[e.path]&&(D[e.path]=e.filePath||e.entry);I=ct(I,st(p,Z,D)),en=o(s,r)}let cn=``,ln=0,un=null,dn=null,fn=null,pn=!1;async function mn(){if(fn){await fn;return}let e=dn;e&&(fn=e.destroy(),await fn)}if(!X){let e=performance.now(),{paths:t}=await xe(Z);q=$e?t:await sn(t,Z||[]),q=Gt(q,Z||[]),q=Array.from(new Set(q)),ln+=performance.now()-e;try{await Fe(y(P,`routes-cache.json`),{paths:q,dirStyle:Qe,base:g,sourceFiles:Wt(p,D)},0)}catch{}cn=y(R,Zt+zt)}async function hn(){if(un||pn||q.length<=4)return;pn=!0;let e=performance.now();try{cn=y(R,Zt+zt);let{SsgWorkerPool:t}=await import(`./ssg-worker-pool-DArhALXL.mjs`);un=new t({ssrEntryPath:cn,format:it===`esm`?`esm`:`cjs`}),dn=un,await un.ready(),ir=performance.now()-e}catch{ir=performance.now()-e,un=null}}let gn=We.criticalCss??`zig-critters`,_n,vn;gn===`zig-critters`?(_n=await l({concurrency:Math.max(1,Math.min(at,ee.cpus().length,8))}),_n||h("[zig-critters] WASM unavailable; critical CSS disabled for this build. Set `criticalCss: 'beasties'` to enable JS-based critical CSS.")):gn===`beasties`&&ft!==!1&&(vn=await c(m,{publicPath:g,...ft}));let yn=``,bn=``;if(_n){let e=`unknown`;try{e=await _n.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)yn+=C.readFileSync(y(t,n),`utf-8`)+`
|
|
3
|
+
`}yn&&(bn=O.createHash(`sha256`).update(yn).update(`\0`).update(e).digest(`hex`))}let xn={},Sn={},Cn={},wn=null;if(X)for(let e of q){let t=W(e);Cn[e]=yt[t]?.assetHash||F}else{let[e,t]=await Promise.all([C.readFile(y(N,...It,`ssr-manifest.json`),`utf-8`),C.readFile(y(N,...It,`manifest.json`),`utf-8`)]);xn=JSON.parse(e),Sn=JSON.parse(t),wn=de(Sn);let n=await Vt(N,Sn,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])=>{Cn[e]=await pe({outDir:N,indexes:wn,ssrManifest:xn,routeSourceFile:t,root:p,clientHash:F,assetHashes:n,chunkPackMaps:r}),U.server&&(Cn[e]=`${Cn[e]}-${U.server}`),U.css&&(Cn[e]=`${Cn[e]}-${U.css}`)}));for(let e of q)Cn[e]||(Cn[e]=V)}let Tn=await C.readFile(y(N,A),`utf-8`);C.rmSync(y(N,A)),Tn=Yt(Tn,Ge);let En=Tn.match(/<script type="module"[^>]*src="([^"]+)"/)?.[1],Dn=Xe?null:he({rootContainerId:lt,indexHTML:Tn}),On=(await import(`p-queue`)).default||await import(`p-queue`),kn=new On({concurrency:at}),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:tt(e,`${t.mtimeMs}:${t.size}`),mtimeMs:t.mtimeMs})}}catch{}let In=null;!X&&tn&&(In=oe({routes:[...Z],base:nn,matchRouteBranchWithParams:tn,serverManifest:Qt,manifest:Sn,ssrManifest:xn}));let Ln=Ot({routes:q,outDir:N,ssgPagesDir:G,dirStyle:Qe,contextBase:nn,fallbackHash:V,routeToSourceFileMap:D,sourceMeta:Pn,routeToAssetHash:Cn}),Rn=Y?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(yt),mr=Ne(yt,q),hr=new Map,gr=new Set;gr.add(G);for(let e of q){let t=Qe===`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=Rt(_,L);T=e,Y&&await C.writeFile(y(N,e),JSON.stringify(s)),Mn[Ht(_,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:lt,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 Ze?.(_,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__ = { '${Ht(_,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>`,``),_n){if(yn){let e=se(M,bn,yn,`zig-critters`);try{let t=await zn.getOrCreate(e,async()=>{let{criticalCss:e,stats:t}=await _n.extractCriticalCss(M,yn,{maxSize:pt});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(vn){let e=se(M,bn,yn,`beasties`),t=await zn.getOrCreate(e,async()=>{let e=await An.add(()=>vn.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=Je===`none`?M:await Xt(M,Je);Hn.push(Math.round(performance.now()-F));let le=performance.now();Y?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 Ft({routes:q,canBypassClientBuild:H,getPlan:e=>kt(Ln,e),isCached:e=>{if(Y)return!1;try{return nt({routePath:e.path,cacheItem:yt[e.normalizedKey],sourceContentHash:e.sourceContentHash,expectedAssetHash:e.routeAssetHash,ssgPagesDir:G})}catch{return!1}},onCacheHit:async e=>{let t=yt[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[Ht(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=>{!an&&on===`remix`&&In&&hr.set(e.path,In(e.fetchUrl))},ensurePool:hn,getPool:()=>un,getWorkerCount:()=>rt(un)?.totalWorkers??0,onWorkerFailure:async(e,t,n,r)=>{if(!en)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 mn()}catch{}un=null,pn=!0;let i=await en.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={...$t,routePath:e},a=performance.now(),o=await Xe?.(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,nn,Z,rn,an,on??`remix`,o))},scheduleMainThread:(e,t)=>{yr.push(kn.add(async()=>{try{let n={...$t,routePath:e},r=performance.now(),i=await Xe?.(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 en.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,nn,Z,rn,an,on??`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:mn,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(Y)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(!Y){try{let e=JSON.stringify(mr)!==pr;e&&await Fe(K,mr),wr=await qt(G,mr,q,e)}catch{}if(Rn)try{await ue(Rn,{maxAgeMs:720*60*60*1e3,maxEntries:5e3})}catch{}}let Tr=performance.now()-jt,Er=rt(dn),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(ln),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=Lt(Mn);if(await Pe(y(N,`static-loader-data-manifest-${L}.json`),kr),await wt(y(P,`ssr`),5,Y?`turbo-ssr`:te(R)),vt(),_n?.dispose)try{await _n.dispose()}catch{}let Ar=J.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 Jt(N);let Mr=Me(N),Nr=await Be(N,jr,P,{outputFiles:Mr,manifestPath:y(fe,`dist`,...It,`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}});let Pr=new Set(Mr),Fr=(Re?.extraFiles??[]).filter(e=>!Pr.has(e)&&!Mt.clientFiles.includes(e)&&C.existsSync(y(N,e)));await Ae(y(P,`ssg-output.json`),B,N,je(q,mr,Qe).concat(`static-loader-data-manifest-${L}.json`).concat(`page-source.json`),Mt.clientFiles,Mr,Fr)}async function qt(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 Jt(e){try{It.length>0?await C.remove(y(e,...It)):await Promise.all([C.remove(y(e,`manifest.json`)),C.remove(y(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 m(`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: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(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: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??[],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 en(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await $t(t,e);return await r.listen(),Z(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){m(`failed to start server: ${e?.message??e}`),process.exit(1)}}function Z(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 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,en 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-
|
|
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};
|
package/dist/ssg-worker.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./chunk-
|
|
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;
|
package/dist/ssg-worker.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./router-adapter-
|
|
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.
|
|
4
|
+
"version": "0.4.3",
|
|
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.
|
|
89
|
+
"@bdocs/zig-critters": "0.2.3"
|
|
90
90
|
},
|
|
91
91
|
"optionalDependencies": {
|
|
92
|
-
"@bdocs/zig-critters": "0.2.
|
|
92
|
+
"@bdocs/zig-critters": "0.2.3"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@types/fs-extra": "^11.0.4",
|
package/dist/chunk-Bmb41Sf3.cjs
DELETED
|
@@ -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};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|