@bdocs/ssg 0.0.5 → 0.0.7
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/client/single-page.cjs +2 -2
- package/dist/client/single-page.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/node.cjs +1 -1
- package/dist/node.mjs +1 -1
- package/dist/state-CSrCqKLt.cjs +1 -0
- package/dist/state-U8UuhxSd.mjs +1 -0
- package/package.json +3 -3
- package/dist/state-BLI6QppB.mjs +0 -1
- package/dist/state-OWuAHBHy.cjs +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});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));let c=require(`react-helmet-async`);c=s(c);let l=require(`react/jsx-runtime`),u=require(`react-dom`);u=s(u,1);let d=require(`react-dom/client`),f=require(`react`);const{version:
|
|
2
|
-
Current type: ${(0,
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});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));let c=require(`react-helmet-async`);c=s(c);let l=require(`react/jsx-runtime`),u=require(`react-dom`);u=s(u,1);let d=require(`react-dom/client`),f=require(`@bdocs/dui`),p=require(`react`);const{version:m,render:h,hydrate:g}={...u},_=Number((m||``).split(`.`)[0])>17;function v(e,t,n={}){let{useLegacyRender:r}=n;r||!_?h(e,t):(0,d.createRoot)(t).render(e)}function y(e,t,n={}){let{useLegacyRender:r}=n;r||!_?g(e,t):(0,d.hydrateRoot)(t,e)}function b(e){return document.readyState===`loading`?new Promise(t=>{document.addEventListener(`DOMContentLoaded`,()=>t(e))}):Promise.resolve(e)}function x(e){try{return JSON.parse(e||`{}`)}catch(e){return(0,f.error)(`[SSG] On state deserialization - ${e instanceof Error?e.message:String(e)}`),{}}}function S(){let[e,t]=(0,p.useState)(!1);return(0,p.useEffect)(()=>{t(!0)},[]),e}function C({children:e,fallback:t}){if(S()){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
|
+
Current type: ${(0,p.isValidElement)(e)?`React element`:typeof e}`);return(0,l.jsx)(l.Fragment,{children:e?.()})}return t??null}const w=c,T=w.Helmet||w.default?.Helmet||(()=>null);function E(e){return(0,l.jsx)(T,{...e})}const{HelmetProvider:D}=c;function O(e,t,n={}){let{transformState:r,rootContainer:i=`#root`,ssrWhenDev:a,getStyleCollector:o=null}=n;process.env.NODE_ENV===`development`&&a!==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 s=typeof window<`u`;async function c(n=!1,i){let a=[],c={isClient:s,onSSRAppRendered:n?()=>{}:e=>a.push(e),triggerOnSSRAppRendered:()=>Promise.all(a.map(e=>e())),initialState:{},transformState:r,routePath:i,getStyleCollector:o,routes:void 0,routerOptions:void 0,base:`/`,app:e,routerType:`single-page`};n&&(await b(),c.initialState=r?.(window.__INITIAL_STATE__||{})||x(window.__INITIAL_STATE__)),await t?.(c);let l=c.initialState;return{...c,initialState:l}}return s&&(async()=>{let t=typeof i==`string`?document.querySelector(i):i;if(!t){typeof $jsdom>`u`&&console.warn(`[vite-react-ssg] Root container not found.`);return}let r=await c(!0);window.__VITE_REACT_SSG_CONTEXT__=r;let a=(0,l.jsx)(D,{children:e});document.querySelector(`[data-server-rendered=true]`)===null&&process.env.NODE_ENV===`development`?v(a,t,n):y(a,t,n)})(),c}exports.ClientOnly=C,exports.Head=E,exports.ViteReactSSG=O;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react-helmet-async";import{Fragment as t,jsx as n}from"react/jsx-runtime";import*as r from"react-dom";import{hydrateRoot as i}from"react-dom/client";import{useEffect as
|
|
1
|
+
import*as e from"react-helmet-async";import{Fragment as t,jsx as n}from"react/jsx-runtime";import*as r from"react-dom";import{hydrateRoot as i}from"react-dom/client";import{error as a}from"@bdocs/dui";import{useEffect as o,useState as s}from"react";const{version:c,render:l,hydrate:u}={...r},d=Number((c||``).split(`.`)[0])>17;function f(e,t,n={}){let{useLegacyRender:r}=n;r||!d?u(e,t):i(t,e)}function p(e){return document.readyState===`loading`?new Promise(t=>{document.addEventListener(`DOMContentLoaded`,()=>t(e))}):Promise.resolve(e)}function m(e){try{return JSON.parse(e||`{}`)}catch(e){return a(`[SSG] On state deserialization - ${e instanceof Error?e.message:String(e)}`),{}}}function h(){let[e,t]=s(!1);return o(()=>{t(!0)},[]),e}function g({children:e,fallback:r}){return h()?n(t,{children:e?.()}):r??null}const _=e,v=_.Helmet||_.default?.Helmet||(()=>null);function y(e){return n(v,{...e})}const{HelmetProvider:b}=e;function x(e,t,r={}){let{transformState:i,rootContainer:a=`#root`,ssrWhenDev:o,getStyleCollector:s=null}=r,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:void 0,routerOptions:void 0,base:`/`,app:e,routerType:`single-page`};n&&(await p(),o.initialState=i?.(window.__INITIAL_STATE__||{})||m(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=n(b,{children:e});document.querySelector(`[data-server-rendered=true]`),f(o,t,r)})(),l}export{g as ClientOnly,y as Head,x as ViteReactSSG};
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./state-
|
|
2
|
-
Current type: ${(0,s.isValidElement)(e)?`React element`:typeof e}`);return(0,r.jsx)(r.Fragment,{children:e?.()})}return t??null}const _=n,v=_.Helmet||_.default?.Helmet||(()=>null);function y(e){return(0,r.jsx)(v,{...e})}const{HelmetProvider:b}=n,x=Date.now();function S(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return e}function C(e,n,a={}){let{transformState:o,rootContainer:s=`#root`,ssrWhenDev:c,getStyleCollector:l=null}=a;process.env.NODE_ENV===`development`&&c!==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 u=typeof window<`u`,d=e.basename??`/`,{v7_startTransition:h=!0,...g}=e.future??{};async function _(r=!1,a){let s=e.customCreateRouter??i.createBrowserRouter,c=r?s(t.r(e.routes,v),{basename:d===`/`?void 0:d,future:g,hydrationData:S(window.__staticRouterHydrationData)}):void 0,f=[],p=r?()=>{}:e=>f.push(e),h={isClient:u,routes:e.routes,router:c,routerOptions:e,onSSRAppRendered:p,triggerOnSSRAppRendered:()=>Promise.all(f.map(e=>e())),initialState:{},transformState:o,routePath:a,base:d,getStyleCollector:l,routerType:`remix`};r&&(await m(),h.initialState=o?.(window.__INITIAL_STATE__||{})||t.t(window.__INITIAL_STATE__)),await n?.(h);let _=h.initialState;return{...h,initialState:_}}return u&&(async()=>{let t=typeof s==`string`?document.querySelector(s):s;if(!t){typeof $jsdom>`u`&&console.warn(`[vite-react-ssg] Root container not found.`);return}let n=(0,i.matchRoutes)(e.routes,window.location)?.filter(e=>e.route.lazy);n&&n?.length>0&&await Promise.all(n.map(async e=>{let t=await e.route.lazy();Object.assign(e.route,{...t,lazy:void 0})}));let o=await _(!0);window.__VITE_REACT_SSG_CONTEXT__=o;let{router:c}=o,l=(0,r.jsx)(b,{children:(0,r.jsx)(i.RouterProvider,{router:c})});document.querySelector(`[data-server-rendered=true]`)===null&&process.env.NODE_ENV===`development`?f(l,t,a):p(l,t,a)})(),_;function v(e){
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./state-CSrCqKLt.cjs`);let n=require(`react-helmet-async`);n=e.t(n);let r=require(`react/jsx-runtime`),i=require(`react-router-dom`),a=require(`react-dom`);a=e.t(a,1);let o=require(`react-dom/client`),s=require(`react`);const{version:c,render:l,hydrate:u}={...a},d=Number((c||``).split(`.`)[0])>17;function f(e,t,n={}){let{useLegacyRender:r}=n;r||!d?l(e,t):(0,o.createRoot)(t).render(e)}function p(e,t,n={}){let{useLegacyRender:r}=n;r||!d?u(e,t):(0,o.hydrateRoot)(t,e)}function m(e){return document.readyState===`loading`?new Promise(t=>{document.addEventListener(`DOMContentLoaded`,()=>t(e))}):Promise.resolve(e)}function h(){let[e,t]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{t(!0)},[]),e}function g({children:e,fallback:t}){if(h()){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
|
+
Current type: ${(0,s.isValidElement)(e)?`React element`:typeof e}`);return(0,r.jsx)(r.Fragment,{children:e?.()})}return t??null}const _=n,v=_.Helmet||_.default?.Helmet||(()=>null);function y(e){return(0,r.jsx)(v,{...e})}const{HelmetProvider:b}=n,x=Date.now();function S(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return e}function C(e,n,a={}){let{transformState:o,rootContainer:s=`#root`,ssrWhenDev:c,getStyleCollector:l=null}=a;process.env.NODE_ENV===`development`&&c!==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 u=typeof window<`u`,d=e.basename??`/`,{v7_startTransition:h=!0,...g}=e.future??{};async function _(r=!1,a){let s=e.customCreateRouter??i.createBrowserRouter,c=r?s(t.r(e.routes,v),{basename:d===`/`?void 0:d,future:g,hydrationData:S(window.__staticRouterHydrationData)}):void 0,f=[],p=r?()=>{}:e=>f.push(e),h={isClient:u,routes:e.routes,router:c,routerOptions:e,onSSRAppRendered:p,triggerOnSSRAppRendered:()=>Promise.all(f.map(e=>e())),initialState:{},transformState:o,routePath:a,base:d,getStyleCollector:l,routerType:`remix`};r&&(await m(),h.initialState=o?.(window.__INITIAL_STATE__||{})||t.t(window.__INITIAL_STATE__)),await n?.(h);let _=h.initialState;return{...h,initialState:_}}return u&&(async()=>{let t=typeof s==`string`?document.querySelector(s):s;if(!t){typeof $jsdom>`u`&&console.warn(`[vite-react-ssg] Root container not found.`);return}let n=(0,i.matchRoutes)(e.routes,window.location)?.filter(e=>e.route.lazy);n&&n?.length>0&&await Promise.all(n.map(async e=>{let t=await e.route.lazy();Object.assign(e.route,{...t,lazy:void 0})}));let o=await _(!0);window.__VITE_REACT_SSG_CONTEXT__=o;let{router:c}=o,l=(0,r.jsx)(b,{children:(0,r.jsx)(i.RouterProvider,{router:c})});document.querySelector(`[data-server-rendered=true]`)===null&&process.env.NODE_ENV===`development`?f(l,t,a):p(l,t,a)})(),_;function v(e){if(document.querySelector(`[data-server-rendered=true]`)===null||!e.loader)return e;let n=e.loader;return e.loader=async r=>{let{request:i}=r;if(process.env.NODE_ENV===`development`){let t=`_data=${encodeURIComponent(e.id)}`,n=i.url.includes(`?`)?`${i.url}&${t}`:`${i.url}?${t}`;return fetch(n)}else{let{url:a}=i,{pathname:o}=new URL(a);if(o!==`/`&&o.endsWith(`/`)&&(o=o.slice(0,-1)),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__||(window.__VITE_REACT_SSG_STATIC_LOADER_DATA__={}),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o])return window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o]?.[e.id]??n(r);if(!window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__){let e=t.i(d,`static-loader-data-manifest-${window.__VITE_REACT_SSG_HASH__}.json`);try{let n=await fetch(`${t.s(e)}?t=${x}`);n.ok?window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__=await n.json():(console.error(`[vite-react-ssg] Failed to fetch static loader manifest: ${n.status} ${n.statusText}`),window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__={})}catch(e){console.error(`[vite-react-ssg] Error loading static loader manifest:`,e),window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__={}}}let s=window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__?.[o];if(!s)return n(r);if(!window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o]){let e=t.i(d,s);try{let n=await fetch(`${t.s(e)}?t=${x}`);n.ok?window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o]=await n.json():(console.error(`[vite-react-ssg] Failed to fetch loader data for ${o}: ${n.status} ${n.statusText}`),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o]={})}catch(e){console.error(`[vite-react-ssg] Error loading loader data for`,o,e),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o]={}}}return window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[o]?.[e.id]??n(r)}},e}}exports.ClientOnly=g,exports.Head=y,exports.ViteReactSSG=C;
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e,r as t,s as n,t as r}from"./state-
|
|
2
|
-
Current type: ${p(e)?`React element`:typeof e}`);return o(a,{children:e?.()})}return t??null}const T=i,E=T.Helmet||T.default?.Helmet||(()=>null);function D(e){return o(E,{...e})}const{HelmetProvider:O}=i,k=Date.now();function A(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return e}function j(i,a,u={}){let{transformState:d,rootContainer:f=`#root`,ssrWhenDev:p,getStyleCollector:m=null}=u;process.env.NODE_ENV===`development`&&p!==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 h=typeof window<`u`,g=i.basename??`/`,{v7_startTransition:_=!0,...v}=i.future??{};async function y(e=!1,n){let o=i.customCreateRouter??c,s=e?o(t(i.routes,C),{basename:g===`/`?void 0:g,future:v,hydrationData:A(window.__staticRouterHydrationData)}):void 0,l=[],u=e?()=>{}:e=>l.push(e),f={isClient:h,routes:i.routes,router:s,routerOptions:i,onSSRAppRendered:u,triggerOnSSRAppRendered:()=>Promise.all(l.map(e=>e())),initialState:{},transformState:d,routePath:n,base:g,getStyleCollector:m,routerType:`remix`};e&&(await S(),f.initialState=d?.(window.__INITIAL_STATE__||{})||r(window.__INITIAL_STATE__)),await a?.(f);let p=f.initialState;return{...f,initialState:p}}return h&&(async()=>{let e=typeof f==`string`?document.querySelector(f):f;if(!e){typeof $jsdom>`u`&&console.warn(`[vite-react-ssg] Root container not found.`);return}let t=l(i.routes,window.location)?.filter(e=>e.route.lazy);t&&t?.length>0&&await Promise.all(t.map(async e=>{let t=await e.route.lazy();Object.assign(e.route,{...t,lazy:void 0})}));let n=await y(!0);window.__VITE_REACT_SSG_CONTEXT__=n;let{router:r}=n,a=o(O,{children:o(s,{router:r})});document.querySelector(`[data-server-rendered=true]`)===null&&process.env.NODE_ENV===`development`?b(a,e,u):x(a,e,u)})(),y;function C(t){
|
|
1
|
+
import{i as e,r as t,s as n,t as r}from"./state-U8UuhxSd.mjs";import*as i from"react-helmet-async";import{Fragment as a,jsx as o}from"react/jsx-runtime";import{RouterProvider as s,createBrowserRouter as c,matchRoutes as l}from"react-router-dom";import*as u from"react-dom";import{createRoot as d,hydrateRoot as f}from"react-dom/client";import{isValidElement as p,useEffect as m,useState as h}from"react";const{version:g,render:_,hydrate:v}={...u},y=Number((g||``).split(`.`)[0])>17;function b(e,t,n={}){let{useLegacyRender:r}=n;r||!y?_(e,t):d(t).render(e)}function x(e,t,n={}){let{useLegacyRender:r}=n;r||!y?v(e,t):f(t,e)}function S(e){return document.readyState===`loading`?new Promise(t=>{document.addEventListener(`DOMContentLoaded`,()=>t(e))}):Promise.resolve(e)}function C(){let[e,t]=h(!1);return m(()=>{t(!0)},[]),e}function w({children:e,fallback:t}){if(C()){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
|
+
Current type: ${p(e)?`React element`:typeof e}`);return o(a,{children:e?.()})}return t??null}const T=i,E=T.Helmet||T.default?.Helmet||(()=>null);function D(e){return o(E,{...e})}const{HelmetProvider:O}=i,k=Date.now();function A(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return e}function j(i,a,u={}){let{transformState:d,rootContainer:f=`#root`,ssrWhenDev:p,getStyleCollector:m=null}=u;process.env.NODE_ENV===`development`&&p!==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 h=typeof window<`u`,g=i.basename??`/`,{v7_startTransition:_=!0,...v}=i.future??{};async function y(e=!1,n){let o=i.customCreateRouter??c,s=e?o(t(i.routes,C),{basename:g===`/`?void 0:g,future:v,hydrationData:A(window.__staticRouterHydrationData)}):void 0,l=[],u=e?()=>{}:e=>l.push(e),f={isClient:h,routes:i.routes,router:s,routerOptions:i,onSSRAppRendered:u,triggerOnSSRAppRendered:()=>Promise.all(l.map(e=>e())),initialState:{},transformState:d,routePath:n,base:g,getStyleCollector:m,routerType:`remix`};e&&(await S(),f.initialState=d?.(window.__INITIAL_STATE__||{})||r(window.__INITIAL_STATE__)),await a?.(f);let p=f.initialState;return{...f,initialState:p}}return h&&(async()=>{let e=typeof f==`string`?document.querySelector(f):f;if(!e){typeof $jsdom>`u`&&console.warn(`[vite-react-ssg] Root container not found.`);return}let t=l(i.routes,window.location)?.filter(e=>e.route.lazy);t&&t?.length>0&&await Promise.all(t.map(async e=>{let t=await e.route.lazy();Object.assign(e.route,{...t,lazy:void 0})}));let n=await y(!0);window.__VITE_REACT_SSG_CONTEXT__=n;let{router:r}=n,a=o(O,{children:o(s,{router:r})});document.querySelector(`[data-server-rendered=true]`)===null&&process.env.NODE_ENV===`development`?b(a,e,u):x(a,e,u)})(),y;function C(t){if(document.querySelector(`[data-server-rendered=true]`)===null||!t.loader)return t;let r=t.loader;return t.loader=async i=>{let{request:a}=i;if(process.env.NODE_ENV===`development`){let e=`_data=${encodeURIComponent(t.id)}`,n=a.url.includes(`?`)?`${a.url}&${e}`:`${a.url}?${e}`;return fetch(n)}else{let{url:o}=a,{pathname:s}=new URL(o);if(s!==`/`&&s.endsWith(`/`)&&(s=s.slice(0,-1)),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__||(window.__VITE_REACT_SSG_STATIC_LOADER_DATA__={}),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s])return window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s]?.[t.id]??r(i);if(!window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__){let t=e(g,`static-loader-data-manifest-${window.__VITE_REACT_SSG_HASH__}.json`);try{let e=await fetch(`${n(t)}?t=${k}`);e.ok?window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__=await e.json():(console.error(`[vite-react-ssg] Failed to fetch static loader manifest: ${e.status} ${e.statusText}`),window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__={})}catch(e){console.error(`[vite-react-ssg] Error loading static loader manifest:`,e),window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__={}}}let c=window.__VITE_REACT_SSG_STATIC_LOADER_MANIFEST__?.[s];if(!c)return r(i);if(!window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s]){let t=e(g,c);try{let e=await fetch(`${n(t)}?t=${k}`);e.ok?window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s]=await e.json():(console.error(`[vite-react-ssg] Failed to fetch loader data for ${s}: ${e.status} ${e.statusText}`),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s]={})}catch(e){console.error(`[vite-react-ssg] Error loading loader data for`,s,e),window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s]={}}}return window.__VITE_REACT_SSG_STATIC_LOADER_DATA__[s]?.[t.id]??r(i)}},t}}export{w as ClientOnly,D as Head,j as ViteReactSSG};
|
package/dist/node.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./state-OWuAHBHy.cjs`);let n=require(`react/jsx-runtime`),r=require(`node:module`),i=require(`node:path`),a=require(`fs-extra`);a=e.t(a,1);let o=require(`jsdom`),s=require(`kolorist`),c=require(`vite`),l=require(`node:crypto`);l=e.t(l,1);let u=require(`node:events`),d=require(`node:stream`),f=require(`react-dom/server`);f=e.t(f);let p=require(`node:fs/promises`);p=e.t(p,1);const m=/import\("([^)]+)"\)/g;async function h({routes:e,locationArg:t,base:n,serverManifest:r,manifest:i,ssrManifest:a}){let{matchRoutes:o}=await import(`react-router-dom`),s=o([...e],t,n),c=s?.map(e=>e.route.entry).filter(Boolean)??[],l=new Set;s?.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)l.add(e[1].split(`/`).at(-1)??``)});let u=new Set;c.forEach(e=>u.add(e));let d=[...Object.entries(r)];l.forEach(e=>{let t=d.find(([t,n])=>n.file.endsWith(e));t&&u.add(t[0])});let f=g(i,u),p=new Set;return Array.from(f).forEach(e=>{(a[e]||[]).forEach(e=>{p.add(e)})}),p}function g(e,t){let n=new Set;if(!t)return n;for(let r of t)_(e,r,n);return n}function _(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{_(e,t,n)}),n):n}async function v(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 y=`/* SCRIPT_COMMENT_PLACEHOLDER */`;async function b({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>${y}<\/script>`,l=`<head>`,u=r.join(``);t=t.replace(l,l+u);let d=`<body`;t=t.replace(d,`${d} ${i}`);let f=`<html`;t=t.replace(f,`${f} ${a}`);let p=`<div id="${e}"></div>`;if(t.includes(p))return t.replace(p,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`);let m=await import(`html5parser`),h=m.parse(t),g;if(m.walk(h,{enter:r=>{if(!g&&r?.type===m.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);g=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!g)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return g}async function x(e,t=`index.html`){let[,n]=[...(await a.default.readFile((0,i.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 ee(e,t){let n=new Set;t&&t.forEach(t=>{n.has(t)||(n.add(t),C(e,t))})}function C(e,t){t.endsWith(`.js`)?E(e,{rel:`modulepreload`,crossOrigin:``,href:t}):t.endsWith(`.css`)?E(e,{rel:`stylesheet`,href:t,crossOrigin:``}):t.endsWith(`.woff`)||t.endsWith(`.woff2`)||t.endsWith(`.ttf`)?E(e,{rel:`preload`,as:`font`,type:`font/woff2`,href:t,crossOrigin:``}):(t.endsWith(`.png`)||t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)||t.endsWith(`.webp`)||t.endsWith(`.gif`)||t.endsWith(`.ico`)||t.endsWith(`.svg`))&&E(e,{rel:`preload`,as:`image`,href:t,crossOrigin:``})}function w(e){return e.createElement(`link`)}function T(e,t){let n=Object.keys(t);for(let r of n)e.setAttribute(r,t[r])}function E(e,t){if(e.head.querySelector(`link[href='${t.file}']`))return;let n=w(e);T(n,t),e.head.appendChild(n)}function te(e,t){if(e===!1||e==null)throw console.error(`The following error is a bug in Vite-react-ssg; please open an issue! https://github.com/Daydreamer-riri/vite-react-ssg/issues/new`),Error(t)}function D(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 ne(e){let t=e.headers.origin&&e.headers.origin!==`null`?e.headers.origin:`http://${e.headers.host}`;te(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:D(e.headers)};return new Request(n.href,r)}async function O(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=d.Readable.from(n);r.pipe(t),await(0,u.once)(r,`end`)}else t.end()}function k(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)}async function A(e){if(!f.renderToPipeableStream)return f.renderToString((0,n.jsx)(n.Fragment,{children:e}));let t=new j,{pipe:r}=f.renderToPipeableStream(e,{onError(e){t.destroy(e)},onAllReady(){r(t)}});return t.getPromise()}var j=class extends d.Writable{constructor(){super(),this._output=``,this._deferred={promise:null,resolve:()=>null,reject:()=>null},this._deferred.promise=new Promise((e,t)=>{this._deferred.resolve=e,this._deferred.reject=t})}_write(e,t,n){this._output+=e.toString(),n()}_destroy(e,t){e instanceof Error?this._deferred.reject(e):t()}end(){return this._deferred.resolve(this._output),this.destroy()}getPromise(){return this._deferred.promise}};function re(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}}const{HelmetProvider:ie}=(0,r.createRequire)(require(`url`).pathToFileURL(__filename).href)(`react-helmet-async`);var M=class{constructor(e){this.handleLoader=async(e,n)=>{let{routes:r,base:i}=this.context,{matchRoutes:a}=await import(`react-router-dom`),o=ne(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)),l=a(t.r([...r],e=>e),{pathname:s.pathname,search:s.search,hash:s.hash,state:null,key:`default`},i);if(!l){n.statusCode=404,n.end(`Route not found: ${c}`);return}let u=l.find(e=>e.route.id===c);if(!u){n.statusCode=404,n.end(`Route not found: ${c}`);return}let d=u.route.loader??await u.route.lazy?.().then(e=>e.loader);if(!d){n.statusCode=200,n.end(`There is no loader for the route: ${c}`);return}await O(await N({loader:d,params:u.params,request:o,routeId:c}),n)},this.context=e}async render(e){let{base:r,routes:i,getStyleCollector:a,routerOptions:o}=this.context,s=t.s(e),c=s;if(r!==`/`){let e=t.s(r).replace(/\/$/,``);!s.startsWith(e+`/`)&&s!==e&&(c=`${e}${s}`)}let l=`http://localhost${c}`,u=new Request(l),d=a?await a():null,f={},p=null,{StaticRouterProvider:m,createStaticHandler:h,createStaticRouter:g}=await import(`react-router-dom`),_=t.r([...i],e=>e),{query:v}=h(_,{basename:r}),y=await v(u);if(y instanceof Response){let e=y.headers.get(`Location`);if(e){let n=`http://localhost${t.s(e)}`;y=await v(new Request(n))}}if(y instanceof Response)throw y;p=y;let b=(0,n.jsx)(ie,{context:f,children:(0,n.jsx)(m,{router:g(_,p,{future:o.future}),context:p})});d&&(b=d.collect(b));let x=await A(b),{htmlAttributes:S,bodyAttributes:ee,metaAttributes:C,styleTag:w}=re(x,f,d);return{appHTML:x,htmlAttributes:S,bodyAttributes:ee,metaAttributes:C,styleTag:w,routerContext:p}}};async function N({loader:e,params:t,request:n,routeId:r}){let{json:i}=await import(`react-router-dom`),a=await e({request:k(F(n)),params:t});if(a===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 P(a)?a:i(a)}function P(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function F(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 ae(e){return new M(e)}var I=`0.0.5`;function L(e,t){console.log(`\n${(0,s.gray)(`[vite-react-ssg]`)} ${(0,s.yellow)(e)}${t?(0,s.blue)(` (${t})`):``}`)}function oe(e){return`${(e.length/1024).toFixed(2)} KiB`}async function se(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&&B(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(`/`),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 R(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)?t:(0,i.join)(e.root,t))}const z=/[:*?]/;function B(e){return e?z.test(e):!1}const V=Number.parseInt(c.version)>=5?[`.vite`]:[];function ce(e){return Number.parseInt(c.version)>=8?{rolldownOptions:e}:{rollupOptions:e}}function H(e,t,n,r){let o=[];if(!a.default.existsSync(e))return o;let s=a.default.readdirSync(e);for(let c of s){let s=(0,i.join)(e,c),l=(0,i.relative)(t,s).replace(/\\/g,`/`),u=a.default.statSync(s),d=l.split(`/`);d.includes(`node_modules`)||d.includes(`.git`)||d.includes(`.boltdocs`)||d.includes(`.turbo`)||d.includes(`dist`)||d.includes(`coverage`)||n&&d[0]===n||r&&d[0]===r||(u.isDirectory()?o.push(...H(s,t,n,r)):o.push(s))}return o}function U(e,t,n){try{let r=H(e,e,t,n),o=(0,i.join)((0,i.join)(e,`..`),`packages`);if(a.default.existsSync(o)&&a.default.existsSync((0,i.join)(o,`core/package.json`))){let e=H(o,o,``,``);r.push(...e)}r.sort();let s=l.default.createHash(`sha256`);for(let t of r){let n=a.default.statSync(t),r=(0,i.relative)(e,t).replace(/\\/g,`/`);s.update(r),s.update(n.mtimeMs.toString()),s.update(n.size.toString())}return s.digest(`hex`)}catch{return Math.random().toString(36).substring(2,12)}}function le(e,n){return`static-loader-data${t.s(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${n}.json`}function ue(e,n=`/`){let r=t.s(e),i=r;if(n!==`/`){let e=t.s(n).replace(/\/$/,``);!r.startsWith(e+`/`)&&r!==e&&(i=`${e}${r}`)}return i!==`/`&&i.endsWith(`/`)?i.slice(0,-1):i}function de(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function W(e={},n={}){let u=process.env.MODE||process.env.NODE_ENV||e.mode||`production`,d=await(0,c.resolveConfig)(n,`build`,u,u),f=process.cwd(),p=d.root||f,m=d.build.outDir||`dist`,g=d.base,_=Object.assign({},d.ssgOptions||{},e),{script:S=`sync`,mock:C=!1,htmlEntry:w=`index.html`,entry:T=await x(p,w),formatting:E=`none`,includedRoutes:te=de,onBeforePageRender:D,onPageRendered:ne,onFinished:O,dirStyle:k=`flat`,includeAllRoutes:A=!1,format:j=`esm`,concurrency:re=20,rootContainerId:ie=`root`,routeToSourceFileMap:M={},cacheDir:N=`.boltdocs`}=_,P=_.beastiesOptions??{},F=`docs`,I=Object.values(M);if(I.length>0){let e=I[0],t=(0,i.relative)(p,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(F=t[0])}let z=(0,i.isAbsolute)(m)?m:(0,i.join)(p,m),B=U(p,F,m),H=B.substring(0,12),W=(0,i.join)(p,`.vite-react-ssg-temp`,H);a.default.existsSync(W)&&await a.default.remove(W);let G=(0,i.isAbsolute)(N)?N:(0,i.join)(p,N),K=(0,i.join)(G,`client-hash.txt`),q=(0,i.join)(G,`template-index.html`),J=!1;try{a.default.existsSync(K)&&a.default.existsSync(q)&&a.default.existsSync(z)&&a.default.existsSync((0,i.join)(z,`assets`))&&(await a.default.readFile(K,`utf-8`)).trim()===B&&(J=!0)}catch{}let me=(0,c.createLogger)(),he=me.warn;me.warn=(e,t)=>{e.includes(`vite:resolve`)&&e.includes(`externalized for browser compatibility`)||he(e,t)},J?(L(`Client code unchanged. Bypassing client build...`),await a.default.ensureDir(z),await a.default.copy(q,(0,i.join)(z,w))):(L(`Build for client...`),await(0,c.build)((0,c.mergeConfig)(n,{build:{manifest:!0,ssrManifest:!0,...ce({input:{app:(0,i.join)(p,w||`./index.html`)},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},customLogger:me,mode:d.mode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(e){m=e.build.outDir||`dist`}}]})),await a.default.ensureDir(G),await a.default.copy((0,i.join)(z,w),q),await a.default.writeFile(K,B,`utf-8`));let ge=()=>{};if(C){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-B4hHTFBO.cjs`));ge=e()}L(`Build for server...`),process.env.VITE_SSG=`true`;let Y=await R(d,T);await(0,c.build)((0,c.mergeConfig)(n,{build:{ssr:Y,manifest:!0,outDir:W,minify:!1,cssCodeSplit:!1,...ce({output:j===`esm`?{entryFileNames:`[name].mjs`,format:`esm`}:{entryFileNames:`[name].cjs`,format:`cjs`},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},mode:d.mode}));let _e=j===`esm`&&process.platform===`win32`?`file://`:``,ve=j===`esm`?`.mjs`:`.cjs`,ye=Y.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`),be=_e+(0,i.join)(W,(Y.includes(`/`)||Y.includes(`\\`)?Y.split(/[/\\]/).pop().replace(/\.[^/.]+$/,``).replace(ve,``):ye)+ve).replace(/\\/g,`/`),xe=JSON.parse(await a.default.readFile((0,i.join)(W,...V,`manifest.json`),`utf-8`)),Se=typeof require<`u`?require:(0,r.createRequire)(require(`url`).pathToFileURL(__filename).href),{createRoot:Ce,includedRoutes:we}=j===`esm`?await import(be):Se(be),Te=we||te,{routes:Ee}=await Ce(!1),{paths:De}=await se(Ee),X=A?De:await Te(De,Ee||[]);X=de(X,Ee||[]),X=Array.from(new Set(X)),L(`Rendering Pages...`,X.length);let Oe=P===!1?void 0:await v(m,{publicPath:g,...P});Oe&&console.log(`${(0,s.gray)(`[vite-react-ssg]`)} ${(0,s.blue)("Critical CSS generation enabled via `beasties`")}`);let ke=JSON.parse(await a.default.readFile((0,i.join)(z,...V,`ssr-manifest.json`),`utf-8`)),Ae=JSON.parse(await a.default.readFile((0,i.join)(z,...V,`manifest.json`),`utf-8`)),je=await a.default.readFile((0,i.join)(z,w),`utf-8`);a.default.rmSync((0,i.join)(z,w)),je=fe(je,S);let Me=(await import(`p-queue`)).default||await import(`p-queue`),Ne=new Me({concurrency:re}),Pe=new Me({concurrency:1}),Fe={},Ie=0,Le=(0,i.join)(G,`ssg-cache.json`),Z=(0,i.join)(G,`ssg-pages`),Q={};try{a.default.existsSync(Le)&&(Q=await a.default.readJson(Le))}catch{}let Re={...Q};for(let e of X){let n=l.default.createHash(`md5`).update(e).digest(`hex`),r=(0,i.join)(Z,`${n}.html`),c=(0,i.join)(Z,`${n}.json`),u=`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`,f=k===`nested`?(0,i.join)(e.replace(/^\//g,``),`index.html`):u,p=(0,i.join)(z,f),_=t.s(e).replace(/\/$/,``),v=M[_]||M[e],x=!1,S=0;if(J&&v&&a.default.existsSync(v))try{if(S=Math.round(a.default.statSync(v).mtimeMs),a.default.existsSync(r)){let t=Q[_]||Q[e];t&&Math.round(t.mtime)===S&&(x=!0)}}catch{}if(x){Ne.add(async()=>{try{await a.default.ensureDir((0,i.dirname)(p)),await a.default.copy(r,p);let t=Q[_]||Q[e];if(t?.loaderDataFilePath&&a.default.existsSync(c)){let n=t.loaderDataFilePath;await a.default.ensureDir((0,i.join)(z,(0,i.dirname)(n))),await a.default.copy(c,(0,i.join)(z,n)),Fe[ue(e,g)]=n,Ie++}d.logger.info(`${(0,s.dim)(`${m}/`)}${(0,s.cyan)(f.padEnd(15,` `))} ${(0,s.green)(`(cached)`)}`)}catch(t){throw Error(`${(0,s.gray)(`[vite-react-ssg]`)} Error on cached page: ${(0,s.cyan)(e)}\n${t.stack}`)}});continue}Ne.add(async()=>{try{let n=await Ce(!1,e),{base:l,routes:u,triggerOnSSRAppRendered:p,transformState:_=t.n,app:x,routerType:C}=n,w=await D?.(e,je,n)||je,T=`${t.c(l)}${t.a(e)}`,te=ae(n),O=!x&&C===`remix`?await h({routes:[...u],locationArg:T,base:l,serverManifest:xe,manifest:Ae,ssrManifest:ke}):new Set,{appHTML:k,bodyAttributes:A,htmlAttributes:j,metaAttributes:re,styleTag:M,routerContext:N}=await te.render(e),P=N?.loaderData,F;if(P&&Object.keys(P).length>0){let t=le(e,H);F=t,await a.default.ensureDir((0,i.join)(z,(0,i.dirname)(t))),await a.default.writeFile((0,i.join)(z,t),JSON.stringify(P)),Fe[ue(e,g)]=t,Ie++}await p?.(e,k,n);let I=new o.JSDOM(await b({rootContainerId:ie,appHTML:k,indexHTML:w,metaAttributes:re,bodyAttributes:A,htmlAttributes:j,initialState:null}));ee(I.window.document,O);let L=I.window.document;for(let e of L.querySelectorAll(`script`))e.textContent?.includes(`window.__staticRouterHydrationData`)&&e.remove();let se=I.serialize();I.window.close();let R=await ne?.(e,se,n)||se,B=``;if(P&&Object.keys(P).length>0){let t=JSON.stringify(P).replace(/</g,`\\u003c`);B=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${ue(e,g)}': ${t} };`}let V=``;if(N){let e={loaderData:N.loaderData??{},actionData:N.actionData??null,errors:N.errors??null};V=`window.__staticRouterHydrationData = ${JSON.stringify(e).replace(/</g,`\\u003c`)};`}let ce=`<script>window.__VITE_REACT_SSG_HASH__ = '${H}';${B}${V}<\/script>`;R=R.replace(`<head>`,`<head>${ce}`),R=R.replace(`<script>${y}<\/script>`,``),Oe&&(R=await Pe.add(()=>Oe.process(R)),R=R.replace(/<link\srel="stylesheet"/g,`<link rel="stylesheet" crossorigin`)),M&&(R=R.replace(`<head>`,`<head>${M}`));let U=await pe(R,E);if(await a.default.ensureDir((0,i.join)(z,(0,i.dirname)(f))),await a.default.writeFile((0,i.join)(z,f),U,`utf-8`),v&&a.default.existsSync(v)){await a.default.ensureDir(Z),await a.default.writeFile(r,U,`utf-8`);let n=t.s(e).replace(/\/$/,``),i=Math.round(S);P&&Object.keys(P).length>0&&F?(await a.default.writeFile(c,JSON.stringify(P),`utf-8`),Re[n]={mtime:i,loaderDataFilePath:F}):Re[n]={mtime:i}}d.logger.info(`${(0,s.dim)(`${m}/`)}${(0,s.cyan)(f.padEnd(15,` `))} ${(0,s.dim)(oe(U))}`)}catch(t){throw Error(`${(0,s.gray)(`[vite-react-ssg]`)} ${(0,s.red)(`Error on page: ${(0,s.cyan)(e)}`)}\n${t.stack}`)}})}await Ne.start().onIdle();try{if(await a.default.ensureDir((0,i.dirname)(Le)),await a.default.writeJson(Le,Re),a.default.existsSync(Z)){let e=await a.default.readdir(Z),t=new Set;for(let e of Object.keys(Re)){let n=l.default.createHash(`md5`).update(e).digest(`hex`);t.add(`${n}.html`),t.add(`${n}.json`)}let n=0;for(let r of e)(r.endsWith(`.html`)||r.endsWith(`.json`))&&(t.has(r)||(await a.default.remove((0,i.join)(Z,r)),n++));n>0&&L(`Pruned ${n} obsolete files from SSG cache.`)}}catch{}L(`Generating static loader data...`,Ie);let ze=JSON.stringify(Fe,null,0);await a.default.writeFile((0,i.join)(z,`static-loader-data-manifest-${H}.json`),ze),d.logger.info(`${(0,s.dim)(`${m}/`)}${(0,s.cyan)(`static-loader-data-manifest-${H}.json`.padEnd(15,` `))} ${(0,s.dim)(oe(ze))}`),await a.default.remove((0,i.join)(p,`.vite-react-ssg-temp`)),ge();let $=d.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;$&&!$.disabled&&$.generateSW&&(L(`Regenerate PWA...`),await $.generateSW()),console.log(`\n${(0,s.gray)(`[vite-react-ssg]`)} ${(0,s.green)(`Build finished.`)}`),await O?.(m),setTimeout(()=>{console.log(`${(0,s.gray)(`[vite-react-ssg]`)} ${(0,s.yellow)(`Build process still running after 15s`)}. There might be something misconfigured in your setup. Force exit.`),process.exit(0)},15*1e3).unref()}function fe(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function pe(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 console.error(`${(0,s.gray)(`[vite-react-ssg]`)} ${(0,s.red)(`Error formatting html: ${t?.message}`)}`),e}return e}function G({template:e,ssrEntry:n,onBeforePageRender:r,entry:i,rootContainerId:a,onPageRendered:o}){return{name:`vite-react-ssg:dev-server`,configureServer(s){let l=async(l,u,d)=>{try{let d=l.originalUrl,f=await(await s.ssrLoadModule(n).then(e=>e.createRoot))(!1,d),p=ae(f),{app:m,base:h}=f,[g,_]=d.split(`?`),v=new URLSearchParams(_);if(!m&&v.has(`_data`))return p.handleLoader(l,u);let y=await s.transformIndexHtml(d,e),x=await r?.(d,y,f)||y,{appHTML:ee,bodyAttributes:C,htmlAttributes:w,metaAttributes:T,styleTag:E}=await p.render(t.o(g,h));T.push(E);let te=await Promise.all([n,i].map(async e=>await s.moduleGraph.getModuleByUrl(e))),D=new Set,ne=new Set,O=async e=>{if(!e||!e?.ssrTransformResult||ne.has(e))return;ne.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 s.moduleGraph.getModuleByUrl(e);t&&await O(t)}};await Promise.all(te.map(async e=>O(e)));let k=[...D].map(e=>S(t.i(s.config.base,e)));T.push(...k);let A=await b({rootContainerId:a,appHTML:ee,indexHTML:x,metaAttributes:T,bodyAttributes:C,htmlAttributes:w,initialState:null}),j=await o?.(d,A,f)||A;u.statusCode=200,u.setHeader(`Content-Type`,`text/html`),(0,c.send)(l,u,j,`html`,{headers:`pluginContainer`in s?s.config.server.headers:s.config.preview.headers})}catch(e){s.ssrFixStacktrace(e),console.error(`[vite-react-ssg] error: ${e.stack}`),u.statusCode=500,u.end(e.stack)}};return()=>{s.middlewares.use(l)}}}}async function K(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,r=await(0,c.resolveConfig)(e,`serve`,n,n),a=process.cwd(),o=r.root||a,s={...r.ssgOptions,...t},{htmlEntry:l=`index.html`,onBeforePageRender:u,onPageRendered:d,rootContainerId:f=`root`,mock:m=!1}=s,h=s.entry||await x(o,l),[g,_]=await Promise.all([R(r,h),p.default.readFile((0,i.join)(o,l),`utf-8`)]);if(process.env.__DEV_MODE_SSR=`true`,m){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-B4hHTFBO.cjs`));e()}return await(0,c.createServer)({...e,plugins:[...e.plugins??[],G({template:_,ssrEntry:g,onBeforePageRender:u,onPageRendered:d,entry:h,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 q(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await K(t,e);return await r.listen(),J(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){console.error(`${(0,s.red)(`failed to start server. error:`)}\n${e.stack}`),process.exit(1)}}function J(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 ${(0,s.reset)((0,s.bold)(`${e}ms`))}`}n(`\n ${(0,s.bgLightCyan)(` VITE-REACT-SSG v${I} `)}`,{clear:!e.config.logger.hasWarned}),n(`${(0,s.cyan)(`\n VITE v${c.version}`)+(0,s.dim)(r)}\n`),n((0,s.green)(` dev server running at:`)),e.printUrls()}exports.build=W,exports.createServer=K,exports.dev=q;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./state-CSrCqKLt.cjs`);let n=require(`react/jsx-runtime`),r=require(`@bdocs/dui`),i=require(`node:module`),a=require(`node:path`),o=require(`fs-extra`);o=e.t(o,1);let s=require(`jsdom`),c=require(`vite`),l=require(`node:crypto`);l=e.t(l,1);let u=require(`node:events`),d=require(`node:stream`),f=require(`react-dom/server`);f=e.t(f);let p=require(`node:fs/promises`);p=e.t(p,1);const m=/import\("([^)]+)"\)/g;async function h({routes:e,locationArg:t,base:n,serverManifest:r,manifest:i,ssrManifest:a}){let{matchRoutes:o}=await import(`react-router-dom`),s=o([...e],t,n),c=s?.map(e=>e.route.entry).filter(Boolean)??[],l=new Set;s?.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)l.add(e[1].split(`/`).at(-1)??``)});let u=new Set;c.forEach(e=>u.add(e));let d=[...Object.entries(r)];l.forEach(e=>{let t=d.find(([t,n])=>n.file.endsWith(e));t&&u.add(t[0])});let f=g(i,u),p=new Set;return Array.from(f).forEach(e=>{(a[e]||[]).forEach(e=>{p.add(e)})}),p}function g(e,t){let n=new Set;if(!t)return n;for(let r of t)_(e,r,n);return n}function _(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{_(e,t,n)}),n):n}async function v(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 y=`/* SCRIPT_COMMENT_PLACEHOLDER */`;async function b({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>${y}<\/script>`,l=`<head>`,u=r.join(``);t=t.replace(l,l+u);let d=`<body`;t=t.replace(d,`${d} ${i}`);let f=`<html`;t=t.replace(f,`${f} ${a}`);let p=`<div id="${e}"></div>`;if(t.includes(p))return t.replace(p,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`);let m=await import(`html5parser`),h=m.parse(t),g;if(m.walk(h,{enter:r=>{if(!g&&r?.type===m.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);g=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!g)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return g}async function x(e,t=`index.html`){let[,n]=[...(await o.default.readFile((0,a.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 ee(e){return`<link rel="stylesheet" href="${e}">`}function te(e,t){let n=new Set;t&&t.forEach(t=>{n.has(t)||(n.add(t),S(e,t))})}function S(e,t){t.endsWith(`.js`)?T(e,{rel:`modulepreload`,crossOrigin:``,href:t}):t.endsWith(`.css`)?T(e,{rel:`stylesheet`,href:t,crossOrigin:``}):t.endsWith(`.woff`)||t.endsWith(`.woff2`)||t.endsWith(`.ttf`)?T(e,{rel:`preload`,as:`font`,type:`font/woff2`,href:t,crossOrigin:``}):(t.endsWith(`.png`)||t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)||t.endsWith(`.webp`)||t.endsWith(`.gif`)||t.endsWith(`.ico`)||t.endsWith(`.svg`))&&T(e,{rel:`preload`,as:`image`,href:t,crossOrigin:``})}function C(e){return e.createElement(`link`)}function w(e,t){let n=Object.keys(t);for(let r of n)e.setAttribute(r,t[r])}function T(e,t){if(e.head.querySelector(`link[href='${t.file}']`))return;let n=C(e);w(n,t),e.head.appendChild(n)}function E(e,t){if(e===!1||e==null)throw(0,r.error)(`The following error is a bug in Vite-react-ssg; please open an issue! https://github.com/Daydreamer-riri/vite-react-ssg/issues/new`),Error(t)}function D(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 ne(e){let t=e.headers.origin&&e.headers.origin!==`null`?e.headers.origin:`http://${e.headers.host}`;E(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:D(e.headers)};return new Request(n.href,r)}async function O(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=d.Readable.from(n);r.pipe(t),await(0,u.once)(r,`end`)}else t.end()}function k(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)}async function A(e){if(!f.renderToPipeableStream)return f.renderToString((0,n.jsx)(n.Fragment,{children:e}));let t=new j,{pipe:r}=f.renderToPipeableStream(e,{onError(e){t.destroy(e)},onAllReady(){r(t)}});return t.getPromise()}var j=class extends d.Writable{constructor(){super(),this._output=``,this._deferred={promise:null,resolve:()=>null,reject:()=>null},this._deferred.promise=new Promise((e,t)=>{this._deferred.resolve=e,this._deferred.reject=t})}_write(e,t,n){this._output+=e.toString(),n()}_destroy(e,t){e instanceof Error?this._deferred.reject(e):t()}end(){return this._deferred.resolve(this._output),this.destroy()}getPromise(){return this._deferred.promise}};function M(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}}const{HelmetProvider:re}=(0,i.createRequire)(require(`url`).pathToFileURL(__filename).href)(`react-helmet-async`);var N=class{constructor(e){this.handleLoader=async(e,n)=>{let{routes:r,base:i}=this.context,{matchRoutes:a}=await import(`react-router-dom`),o=ne(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)),l=a(t.r([...r],e=>e),{pathname:s.pathname,search:s.search,hash:s.hash,state:null,key:`default`},i);if(!l){n.statusCode=404,n.end(`Route not found: ${c}`);return}let u=l.find(e=>e.route.id===c);if(!u){n.statusCode=404,n.end(`Route not found: ${c}`);return}let d=u.route.loader??await u.route.lazy?.().then(e=>e.loader);if(!d){n.statusCode=200,n.end(`There is no loader for the route: ${c}`);return}await O(await P({loader:d,params:u.params,request:o,routeId:c}),n)},this.context=e}async render(e){let{base:r,routes:i,getStyleCollector:a,routerOptions:o}=this.context,s=t.s(e),c=s;if(r!==`/`){let e=t.s(r).replace(/\/$/,``);!s.startsWith(e+`/`)&&s!==e&&(c=`${e}${s}`)}let l=`http://localhost${c}`,u=new Request(l),d=a?await a():null,f={},p=null,{StaticRouterProvider:m,createStaticHandler:h,createStaticRouter:g}=await import(`react-router-dom`),_=t.r([...i],e=>e),{query:v}=h(_,{basename:r}),y=await v(u);if(y instanceof Response){let e=y.headers.get(`Location`);if(e){let n=`http://localhost${t.s(e)}`;y=await v(new Request(n))}}if(y instanceof Response)throw y;p=y;let b=(0,n.jsx)(re,{context:f,children:(0,n.jsx)(m,{router:g(_,p,{future:o.future}),context:p})});d&&(b=d.collect(b));let x=await A(b),{htmlAttributes:ee,bodyAttributes:te,metaAttributes:S,styleTag:C}=M(x,f,d);return{appHTML:x,htmlAttributes:ee,bodyAttributes:te,metaAttributes:S,styleTag:C,routerContext:p}}};async function P({loader:e,params:t,request:n,routeId:r}){let{json:i}=await import(`react-router-dom`),a=await e({request:k(I(n)),params:t});if(a===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 F(a)?a:i(a)}function F(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function I(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 ie(e){return new N(e)}var L=`0.0.7`;function R(e,t){(0,r.info)(`${e}${t?r.colors.blue(` (${t})`):``}`)}function ae(e){return`${(e.length/1024).toFixed(2)} KiB`}async function z(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&&V(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(`/`),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 oe(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)?t:(0,a.join)(e.root,t))}const B=/[:*?]/;function V(e){return e?B.test(e):!1}const H=Number.parseInt(c.version)>=5?[`.vite`]:[];function U(e){return Number.parseInt(c.version)>=8?{rolldownOptions:e}:{rollupOptions:e}}function W(e,t,n,r){let i=[];if(!o.default.existsSync(e))return i;let s=o.default.readdirSync(e);for(let c of s){let s=(0,a.join)(e,c),l=(0,a.relative)(t,s).replace(/\\/g,`/`),u=o.default.statSync(s),d=l.split(`/`);d.includes(`node_modules`)||d.includes(`.git`)||d.includes(`.boltdocs`)||d.includes(`.turbo`)||d.includes(`dist`)||d.includes(`coverage`)||n&&d[0]===n||r&&d[0]===r||(u.isDirectory()?i.push(...W(s,t,n,r)):i.push(s))}return i}function se(e,t,n){try{let r=W(e,e,t,n),i=(0,a.join)((0,a.join)(e,`..`),`packages`);if(o.default.existsSync(i)&&o.default.existsSync((0,a.join)(i,`core/package.json`))){let e=W(i,i,``,``);r.push(...e)}r.sort();let s=l.default.createHash(`sha256`);for(let t of r){let n=o.default.statSync(t),r=(0,a.relative)(e,t).replace(/\\/g,`/`);s.update(r),s.update(n.mtimeMs.toString()),s.update(n.size.toString())}return s.digest(`hex`)}catch{return Math.random().toString(36).substring(2,12)}}function ce(e,n){return`static-loader-data${t.s(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${n}.json`}function le(e,n=`/`){let r=t.s(e),i=r;if(n!==`/`){let e=t.s(n).replace(/\/$/,``);!r.startsWith(e+`/`)&&r!==e&&(i=`${e}${r}`)}return i!==`/`&&i.endsWith(`/`)?i.slice(0,-1):i}function ue(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function G(e={},n={}){let u=process.env.MODE||process.env.NODE_ENV||e.mode||`production`,d=await(0,c.resolveConfig)(n,`build`,u,u),f=process.cwd(),p=d.root||f,m=d.build.outDir||`dist`,g=d.base,_=Object.assign({},d.ssgOptions||{},e),{script:ee=`sync`,mock:S=!1,htmlEntry:C=`index.html`,entry:w=await x(p,C),formatting:T=`none`,includedRoutes:E=ue,onBeforePageRender:D,onPageRendered:ne,onFinished:O,dirStyle:k=`flat`,includeAllRoutes:A=!1,format:j=`esm`,concurrency:M=20,rootContainerId:re=`root`,routeToSourceFileMap:N={},cacheDir:P=`.boltdocs`}=_,F=_.beastiesOptions??{},I=`docs`,L=Object.values(N);if(L.length>0){let e=L[0],t=(0,a.relative)(p,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(I=t[0])}let B=(0,a.isAbsolute)(m)?m:(0,a.join)(p,m),V=se(p,I,m),W=V.substring(0,12),G=(0,a.join)(p,`.vite-react-ssg-temp`,W);o.default.existsSync(G)&&await o.default.remove(G);let K=(0,a.isAbsolute)(P)?P:(0,a.join)(p,P),q=(0,a.join)(K,`client-hash.txt`),J=(0,a.join)(K,`template-index.html`),Y=!1;try{o.default.existsSync(q)&&o.default.existsSync(J)&&o.default.existsSync(B)&&o.default.existsSync((0,a.join)(B,`assets`))&&(await o.default.readFile(q,`utf-8`)).trim()===V&&(Y=!0)}catch{}let pe=(0,c.createLogger)(),me=pe.warn;pe.warn=(e,t)=>{e.includes(`vite:resolve`)&&e.includes(`externalized for browser compatibility`)||me(e,t)},Y?(R(`Client code unchanged. Bypassing client build...`),await o.default.ensureDir(B),await o.default.copy(J,(0,a.join)(B,C))):(R(`Build for client...`),await(0,c.build)((0,c.mergeConfig)(n,{build:{manifest:!0,ssrManifest:!0,...U({input:{app:(0,a.join)(p,C||`./index.html`)},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},customLogger:pe,mode:d.mode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(e){m=e.build.outDir||`dist`}}]})),await o.default.ensureDir(K),await o.default.copy((0,a.join)(B,C),J),await o.default.writeFile(q,V,`utf-8`));let he=()=>{};if(S){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-B4hHTFBO.cjs`));he=e()}R(`Build for server...`),process.env.VITE_SSG=`true`;let X=await oe(d,w);await(0,c.build)((0,c.mergeConfig)(n,{build:{ssr:X,manifest:!0,outDir:G,minify:!1,cssCodeSplit:!1,...U({output:j===`esm`?{entryFileNames:`[name].mjs`,format:`esm`}:{entryFileNames:`[name].cjs`,format:`cjs`},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},mode:d.mode}));let ge=j===`esm`&&process.platform===`win32`?`file://`:``,_e=j===`esm`?`.mjs`:`.cjs`,ve=X.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`),ye=ge+(0,a.join)(G,(X.includes(`/`)||X.includes(`\\`)?X.split(/[/\\]/).pop().replace(/\.[^/.]+$/,``).replace(_e,``):ve)+_e).replace(/\\/g,`/`),be=JSON.parse(await o.default.readFile((0,a.join)(G,...H,`manifest.json`),`utf-8`)),xe=typeof require<`u`?require:(0,i.createRequire)(require(`url`).pathToFileURL(__filename).href),{createRoot:Se,includedRoutes:Ce}=j===`esm`?await import(ye):xe(ye),we=Ce||E,{routes:Te}=await Se(!1),{paths:Ee}=await z(Te),Z=A?Ee:await we(Ee,Te||[]);Z=ue(Z,Te||[]),Z=Array.from(new Set(Z)),R(`Rendering Pages...`,Z.length);let De=F===!1?void 0:await v(m,{publicPath:g,...F});De&&(0,r.info)("Critical CSS generation enabled via `beasties`");let Oe=JSON.parse(await o.default.readFile((0,a.join)(B,...H,`ssr-manifest.json`),`utf-8`)),ke=JSON.parse(await o.default.readFile((0,a.join)(B,...H,`manifest.json`),`utf-8`)),Ae=await o.default.readFile((0,a.join)(B,C),`utf-8`);o.default.rmSync((0,a.join)(B,C)),Ae=de(Ae,ee);let je=(await import(`p-queue`)).default||await import(`p-queue`),Me=new je({concurrency:M}),Ne=new je({concurrency:1}),Pe={},Fe=0,Ie=(0,a.join)(K,`ssg-cache.json`),Q=(0,a.join)(K,`ssg-pages`),$={};try{o.default.existsSync(Ie)&&($=await o.default.readJson(Ie))}catch{}let Le={...$};for(let e of Z){let n=l.default.createHash(`md5`).update(e).digest(`hex`),i=(0,a.join)(Q,`${n}.html`),c=(0,a.join)(Q,`${n}.json`),u=`${(e.endsWith(`/`)?`${e}index`:e).replace(/^\//g,``)}.html`,d=k===`nested`?(0,a.join)(e.replace(/^\//g,``),`index.html`):u,f=(0,a.join)(B,d),p=t.s(e).replace(/\/$/,``),_=N[p]||N[e],v=!1,x=0;if(Y&&_&&o.default.existsSync(_))try{if(x=Math.round(o.default.statSync(_).mtimeMs),o.default.existsSync(i)){let t=$[p]||$[e];t&&Math.round(t.mtime)===x&&(v=!0)}}catch{}if(v){Me.add(async()=>{try{await o.default.ensureDir((0,a.dirname)(f)),await o.default.copy(i,f);let t=$[p]||$[e];if(t?.loaderDataFilePath&&o.default.existsSync(c)){let n=t.loaderDataFilePath;await o.default.ensureDir((0,a.join)(B,(0,a.dirname)(n))),await o.default.copy(c,(0,a.join)(B,n)),Pe[le(e,g)]=n,Fe++}(0,r.info)(`${r.colors.dim(`${m}/`)}${r.colors.cyan(d.padEnd(15,` `))} ${r.colors.green(`(cached)`)}`)}catch(t){throw Error(`Error on cached page: ${e}\n${t.stack}`)}});continue}Me.add(async()=>{try{let n=await Se(!1,e),{base:l,routes:u,triggerOnSSRAppRendered:f,transformState:p=t.n,app:v,routerType:ee}=n,S=await D?.(e,Ae,n)||Ae,C=`${t.c(l)}${t.a(e)}`,w=ie(n),E=!v&&ee===`remix`?await h({routes:[...u],locationArg:C,base:l,serverManifest:be,manifest:ke,ssrManifest:Oe}):new Set,{appHTML:O,bodyAttributes:k,htmlAttributes:A,metaAttributes:j,styleTag:M,routerContext:N}=await w.render(e),P=N?.loaderData,F;if(P&&Object.keys(P).length>0){let t=ce(e,W);F=t,await o.default.ensureDir((0,a.join)(B,(0,a.dirname)(t))),await o.default.writeFile((0,a.join)(B,t),JSON.stringify(P)),Pe[le(e,g)]=t,Fe++}await f?.(e,O,n);let I=new s.JSDOM(await b({rootContainerId:re,appHTML:O,indexHTML:S,metaAttributes:j,bodyAttributes:k,htmlAttributes:A,initialState:null}));te(I.window.document,E);let L=I.window.document;for(let e of L.querySelectorAll(`script`))e.textContent?.includes(`window.__staticRouterHydrationData`)&&e.remove();let R=I.serialize();I.window.close();let z=await ne?.(e,R,n)||R,oe=``;if(P&&Object.keys(P).length>0){let t=JSON.stringify(P).replace(/</g,`\\u003c`);oe=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${le(e,g)}': ${t} };`}let V=``;if(N){let e={loaderData:N.loaderData??{},actionData:N.actionData??null,errors:N.errors??null};V=`window.__staticRouterHydrationData = ${JSON.stringify(e).replace(/</g,`\\u003c`)};`}let H=`<script>window.__VITE_REACT_SSG_HASH__ = '${W}';${oe}${V}<\/script>`;z=z.replace(`<head>`,`<head>${H}`),z=z.replace(`<script>${y}<\/script>`,``),De&&(z=await Ne.add(()=>De.process(z)),z=z.replace(/<link\srel="stylesheet"/g,`<link rel="stylesheet" crossorigin`)),M&&(z=z.replace(`<head>`,`<head>${M}`));let U=await fe(z,T);if(await o.default.ensureDir((0,a.join)(B,(0,a.dirname)(d))),await o.default.writeFile((0,a.join)(B,d),U,`utf-8`),_&&o.default.existsSync(_)){await o.default.ensureDir(Q),await o.default.writeFile(i,U,`utf-8`);let n=t.s(e).replace(/\/$/,``),r=Math.round(x);P&&Object.keys(P).length>0&&F?(await o.default.writeFile(c,JSON.stringify(P),`utf-8`),Le[n]={mtime:r,loaderDataFilePath:F}):Le[n]={mtime:r}}(0,r.info)(`${r.colors.dim(`${m}/`)}${r.colors.cyan(d.padEnd(15,` `))} ${r.colors.dim(ae(U))}`)}catch(t){throw Error(`Error on page: ${e}\n${t.stack}`)}})}await Me.start().onIdle();try{if(await o.default.ensureDir((0,a.dirname)(Ie)),await o.default.writeJson(Ie,Le),o.default.existsSync(Q)){let e=await o.default.readdir(Q),t=new Set;for(let e of Object.keys(Le)){let n=l.default.createHash(`md5`).update(e).digest(`hex`);t.add(`${n}.html`),t.add(`${n}.json`)}let n=0;for(let r of e)(r.endsWith(`.html`)||r.endsWith(`.json`))&&(t.has(r)||(await o.default.remove((0,a.join)(Q,r)),n++));n>0&&R(`Pruned ${n} obsolete files from SSG cache.`)}}catch{}R(`Generating static loader data...`,Fe);let Re=JSON.stringify(Pe,null,0);await o.default.writeFile((0,a.join)(B,`static-loader-data-manifest-${W}.json`),Re),(0,r.info)(`${r.colors.dim(`${m}/`)}${r.colors.cyan(`static-loader-data-manifest-${W}.json`.padEnd(15,` `))} ${r.colors.dim(ae(Re))}`),await o.default.remove((0,a.join)(p,`.vite-react-ssg-temp`)),he();let ze=d.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;ze&&!ze.disabled&&ze.generateSW&&(R(`Regenerate PWA...`),await ze.generateSW()),(0,r.success)(`Build finished.`),await O?.(m),setTimeout(()=>{(0,r.warn)(`Build process still running after 15s. There might be something misconfigured in your setup. Force exit.`),process.exit(0)},15*1e3).unref()}function de(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function fe(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 K({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,f)=>{try{let r=u.originalUrl,f=await(await l.ssrLoadModule(n).then(e=>e.createRoot))(!1,r),p=ie(f),{app:m,base:h}=f,[g,_]=r.split(`?`),v=new URLSearchParams(_);if(!m&&v.has(`_data`))return p.handleLoader(u,d);let y=await l.transformIndexHtml(r,e),x=await i?.(r,y,f)||y,{appHTML:te,bodyAttributes:S,htmlAttributes:C,metaAttributes:w,styleTag:T}=await p.render(t.o(g,h));w.push(T);let E=await Promise.all([n,a].map(async e=>await l.moduleGraph.getModuleByUrl(e))),D=new Set,ne=new Set,O=async e=>{if(!e||!e?.ssrTransformResult||ne.has(e))return;ne.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 O(t)}};await Promise.all(E.map(async e=>O(e)));let k=[...D].map(e=>ee(t.i(l.config.base,e)));w.push(...k);let A=await b({rootContainerId:o,appHTML:te,indexHTML:x,metaAttributes:w,bodyAttributes:S,htmlAttributes:C,initialState:null}),j=await s?.(r,A,f)||A;d.statusCode=200,d.setHeader(`Content-Type`,`text/html`),(0,c.send)(u,d,j,`html`,{headers:`pluginContainer`in l?l.config.server.headers:l.config.preview.headers})}catch(e){l.ssrFixStacktrace(e),(0,r.error)(`SSR render error`,e),d.statusCode=500,d.end(e.stack)}};return()=>{l.middlewares.use(u)}}}}async function q(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,r=await(0,c.resolveConfig)(e,`serve`,n,n),i=process.cwd(),o=r.root||i,s={...r.ssgOptions,...t},{htmlEntry:l=`index.html`,onBeforePageRender:u,onPageRendered:d,rootContainerId:f=`root`,mock:m=!1}=s,h=s.entry||await x(o,l),[g,_]=await Promise.all([oe(r,h),p.default.readFile((0,a.join)(o,l),`utf-8`)]);if(process.env.__DEV_MODE_SSR=`true`,m){let{jsdomGlobal:e}=await Promise.resolve().then(()=>require(`./jsdomGlobal-B4hHTFBO.cjs`));e()}return await(0,c.createServer)({...e,plugins:[...e.plugins??[],K({template:_,ssrEntry:g,onBeforePageRender:u,onPageRendered:d,entry:h,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 J(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await q(t,e);return await r.listen(),Y(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){(0,r.error)(`failed to start server: ${e?.message??e}`),process.exit(1)}}function Y(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.reset(r.colors.bold(`${e}ms`))}`}n(`\n ${r.colors.cyan(` VITE-REACT-SSG v${L} `)}`,{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()}exports.build=G,exports.createServer=q,exports.dev=J;
|
package/dist/node.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o}from"./state-BLI6QppB.mjs";import{createRequire as s}from"node:module";import{Fragment as c,jsx as l}from"react/jsx-runtime";import{dirname as u,isAbsolute as d,join as f,relative as p}from"node:path";import m from"fs-extra";import{JSDOM as h}from"jsdom";import{bgLightCyan as g,blue as _,bold as v,cyan as y,dim as b,gray as x,green as S,red as C,reset as w,yellow as T}from"kolorist";import{build as E,createLogger as ee,createServer as D,mergeConfig as O,resolveConfig as k,send as te,version as A}from"vite";import j from"node:crypto";import{once as M}from"node:events";import{Readable as N,Writable as ne}from"node:stream";import*as P from"react-dom/server";import re from"node:fs/promises";var F=s(import.meta.url);const ie=/import\("([^)]+)"\)/g;async function ae({routes:e,locationArg:t,base:n,serverManifest:r,manifest:i,ssrManifest:a}){let{matchRoutes:o}=await import(`react-router-dom`),s=o([...e],t,n),c=s?.map(e=>e.route.entry).filter(Boolean)??[],l=new Set;s?.forEach(e=>{let t=``;e.route.lazy&&(t+=e.route.lazy.toString()),e.route.Component?._payload?._result&&(t+=e.route.Component._payload._result.toString());let n=t.matchAll(ie);for(let e of n)l.add(e[1].split(`/`).at(-1)??``)});let u=new Set;c.forEach(e=>u.add(e));let d=[...Object.entries(r)];l.forEach(e=>{let t=d.find(([t,n])=>n.file.endsWith(e));t&&u.add(t[0])});let f=I(i,u),p=new Set;return Array.from(f).forEach(e=>{(a[e]||[]).forEach(e=>{p.add(e)})}),p}function I(e,t){let n=new Set;if(!t)return n;for(let r of t)L(e,r,n);return n}function L(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{L(e,t,n)}),n):n}async function oe(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 se=`/* SCRIPT_COMMENT_PLACEHOLDER */`;async function ce({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>${se}<\/script>`,l=`<head>`,u=r.join(``);t=t.replace(l,l+u);let d=`<body`;t=t.replace(d,`${d} ${i}`);let f=`<html`;t=t.replace(f,`${f} ${a}`);let p=`<div id="${e}"></div>`;if(t.includes(p))return t.replace(p,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`);let m=await import(`html5parser`),h=m.parse(t),g;if(m.walk(h,{enter:r=>{if(!g&&r?.type===m.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);g=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!g)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return g}async function R(e,t=`index.html`){let[,n]=[...(await m.readFile(f(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 z(e){return`<link rel="stylesheet" href="${e}">`}function le(e,t){let n=new Set;t&&t.forEach(t=>{n.has(t)||(n.add(t),B(e,t))})}function B(e,t){t.endsWith(`.js`)?V(e,{rel:`modulepreload`,crossOrigin:``,href:t}):t.endsWith(`.css`)?V(e,{rel:`stylesheet`,href:t,crossOrigin:``}):t.endsWith(`.woff`)||t.endsWith(`.woff2`)||t.endsWith(`.ttf`)?V(e,{rel:`preload`,as:`font`,type:`font/woff2`,href:t,crossOrigin:``}):(t.endsWith(`.png`)||t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)||t.endsWith(`.webp`)||t.endsWith(`.gif`)||t.endsWith(`.ico`)||t.endsWith(`.svg`))&&V(e,{rel:`preload`,as:`image`,href:t,crossOrigin:``})}function ue(e){return e.createElement(`link`)}function de(e,t){let n=Object.keys(t);for(let r of n)e.setAttribute(r,t[r])}function V(e,t){if(e.head.querySelector(`link[href='${t.file}']`))return;let n=ue(e);de(n,t),e.head.appendChild(n)}function H(e,t){if(e===!1||e==null)throw console.error(`The following error is a bug in Vite-react-ssg; please open an issue! https://github.com/Daydreamer-riri/vite-react-ssg/issues/new`),Error(t)}function fe(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 pe(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:fe(e.headers)};return new Request(n.href,r)}async function me(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=N.from(n);r.pipe(t),await M(r,`end`)}else t.end()}function U(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)}async function W(e){if(!P.renderToPipeableStream)return P.renderToString(l(c,{children:e}));let t=new G,{pipe:n}=P.renderToPipeableStream(e,{onError(e){t.destroy(e)},onAllReady(){n(t)}});return t.getPromise()}var G=class extends ne{constructor(){super(),this._output=``,this._deferred={promise:null,resolve:()=>null,reject:()=>null},this._deferred.promise=new Promise((e,t)=>{this._deferred.resolve=e,this._deferred.reject=t})}_write(e,t,n){this._output+=e.toString(),n()}_destroy(e,t){e instanceof Error?this._deferred.reject(e):t()}end(){return this._deferred.resolve(this._output),this.destroy()}getPromise(){return this._deferred.promise}};function K(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}}const{HelmetProvider:q}=s(import.meta.url)(`react-helmet-async`);var J=class{constructor(e){this.handleLoader=async(e,t)=>{let{routes:n,base:r}=this.context,{matchRoutes:i}=await import(`react-router-dom`),o=pe(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)),l=i(a([...n],e=>e),{pathname:s.pathname,search:s.search,hash:s.hash,state:null,key:`default`},r);if(!l){t.statusCode=404,t.end(`Route not found: ${c}`);return}let u=l.find(e=>e.route.id===c);if(!u){t.statusCode=404,t.end(`Route not found: ${c}`);return}let d=u.route.loader??await u.route.lazy?.().then(e=>e.loader);if(!d){t.statusCode=200,t.end(`There is no loader for the route: ${c}`);return}await me(await he({loader:d,params:u.params,request:o,routeId:c}),t)},this.context=e}async render(e){let{base:t,routes:n,getStyleCollector:r,routerOptions:i}=this.context,s=o(e),c=s;if(t!==`/`){let e=o(t).replace(/\/$/,``);!s.startsWith(e+`/`)&&s!==e&&(c=`${e}${s}`)}let u=`http://localhost${c}`,d=new Request(u),f=r?await r():null,p={},m=null,{StaticRouterProvider:h,createStaticHandler:g,createStaticRouter:_}=await import(`react-router-dom`),v=a([...n],e=>e),{query:y}=g(v,{basename:t}),b=await y(d);if(b instanceof Response){let e=b.headers.get(`Location`);if(e){let t=`http://localhost${o(e)}`;b=await y(new Request(t))}}if(b instanceof Response)throw b;m=b;let x=l(q,{context:p,children:l(h,{router:_(v,m,{future:i.future}),context:m})});f&&(x=f.collect(x));let S=await W(x),{htmlAttributes:C,bodyAttributes:w,metaAttributes:T,styleTag:E}=K(S,p,f);return{appHTML:S,htmlAttributes:C,bodyAttributes:w,metaAttributes:T,styleTag:E,routerContext:m}}};async function he({loader:e,params:t,request:n,routeId:r}){let{json:i}=await import(`react-router-dom`),a=await e({request:U(_e(n)),params:t});if(a===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 ge(a)?a:i(a)}function ge(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function _e(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 ve(e){return new J(e)}var ye=`0.0.5`;function Y(e,t){console.log(`\n${x(`[vite-react-ssg]`)} ${T(e)}${t?_(` (${t})`):``}`)}function be(e){return`${(e.length/1024).toFixed(2)} KiB`}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&&X(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(`/`),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:f(e.root,t))}const Ce=/[:*?]/;function X(e){return e?Ce.test(e):!1}const we=Number.parseInt(A)>=5?[`.vite`]:[];function Te(e){return Number.parseInt(A)>=8?{rolldownOptions:e}:{rollupOptions:e}}function Ee(e,t,n,r){let i=[];if(!m.existsSync(e))return i;let a=m.readdirSync(e);for(let o of a){let a=f(e,o),s=p(t,a).replace(/\\/g,`/`),c=m.statSync(a),l=s.split(`/`);l.includes(`node_modules`)||l.includes(`.git`)||l.includes(`.boltdocs`)||l.includes(`.turbo`)||l.includes(`dist`)||l.includes(`coverage`)||n&&l[0]===n||r&&l[0]===r||(c.isDirectory()?i.push(...Ee(a,t,n,r)):i.push(a))}return i}function De(e,t,n){try{let r=Ee(e,e,t,n),i=f(f(e,`..`),`packages`);if(m.existsSync(i)&&m.existsSync(f(i,`core/package.json`))){let e=Ee(i,i,``,``);r.push(...e)}r.sort();let a=j.createHash(`sha256`);for(let t of r){let n=m.statSync(t),r=p(e,t).replace(/\\/g,`/`);a.update(r),a.update(n.mtimeMs.toString()),a.update(n.size.toString())}return a.digest(`hex`)}catch{return Math.random().toString(36).substring(2,12)}}function Oe(e,t){return`static-loader-data${o(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${t}.json`}function ke(e,t=`/`){let n=o(e),r=n;if(t!==`/`){let e=o(t).replace(/\/$/,``);!n.startsWith(e+`/`)&&n!==e&&(r=`${e}${n}`)}return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Ae(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function je(n={},i={}){let a=process.env.MODE||process.env.NODE_ENV||n.mode||`production`,c=await k(i,`build`,a,a),l=process.cwd(),g=c.root||l,v=c.build.outDir||`dist`,w=c.base,D=Object.assign({},c.ssgOptions||{},n),{script:te=`sync`,mock:A=!1,htmlEntry:M=`index.html`,entry:N=await R(g,M),formatting:ne=`none`,includedRoutes:P=Ae,onBeforePageRender:re,onPageRendered:ie,onFinished:I,dirStyle:L=`flat`,includeAllRoutes:z=!1,format:B=`esm`,concurrency:ue=20,rootContainerId:de=`root`,routeToSourceFileMap:V={},cacheDir:H=`.boltdocs`}=D,fe=D.beastiesOptions??{},pe=`docs`,me=Object.values(V);if(me.length>0){let e=me[0],t=p(g,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(pe=t[0])}let U=d(v)?v:f(g,v),W=De(g,pe,v),G=W.substring(0,12),K=f(g,`.vite-react-ssg-temp`,G);m.existsSync(K)&&await m.remove(K);let q=d(H)?H:f(g,H),J=f(q,`client-hash.txt`),he=f(q,`template-index.html`),ge=!1;try{m.existsSync(J)&&m.existsSync(he)&&m.existsSync(U)&&m.existsSync(f(U,`assets`))&&(await m.readFile(J,`utf-8`)).trim()===W&&(ge=!0)}catch{}let _e=ee(),ye=_e.warn;_e.warn=(e,t)=>{e.includes(`vite:resolve`)&&e.includes(`externalized for browser compatibility`)||ye(e,t)},ge?(Y(`Client code unchanged. Bypassing client build...`),await m.ensureDir(U),await m.copy(he,f(U,M))):(Y(`Build for client...`),await E(O(i,{build:{manifest:!0,ssrManifest:!0,...Te({input:{app:f(g,M||`./index.html`)},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},customLogger:_e,mode:c.mode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(e){v=e.build.outDir||`dist`}}]})),await m.ensureDir(q),await m.copy(f(U,M),he),await m.writeFile(J,W,`utf-8`));let Ce=()=>{};if(A){let{jsdomGlobal:e}=await import(`./jsdomGlobal-u0wZKDvc.mjs`);Ce=e()}Y(`Build for server...`),process.env.VITE_SSG=`true`;let X=await Se(c,N);await E(O(i,{build:{ssr:X,manifest:!0,outDir:K,minify:!1,cssCodeSplit:!1,...Te({output:B===`esm`?{entryFileNames:`[name].mjs`,format:`esm`}:{entryFileNames:`[name].cjs`,format:`cjs`},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},mode:c.mode}));let Ee=B===`esm`&&process.platform===`win32`?`file://`:``,je=B===`esm`?`.mjs`:`.cjs`,Pe=X.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`),Fe=Ee+f(K,(X.includes(`/`)||X.includes(`\\`)?X.split(/[/\\]/).pop().replace(/\.[^/.]+$/,``).replace(je,``):Pe)+je).replace(/\\/g,`/`),Ie=JSON.parse(await m.readFile(f(K,...we,`manifest.json`),`utf-8`)),Le=F===void 0?s(import.meta.url):F,{createRoot:Re,includedRoutes:ze}=B===`esm`?await import(Fe):Le(Fe),Be=ze||P,{routes:Ve}=await Re(!1),{paths:He}=await xe(Ve),Z=z?He:await Be(He,Ve||[]);Z=Ae(Z,Ve||[]),Z=Array.from(new Set(Z)),Y(`Rendering Pages...`,Z.length);let Ue=fe===!1?void 0:await oe(v,{publicPath:w,...fe});Ue&&console.log(`${x(`[vite-react-ssg]`)} ${_("Critical CSS generation enabled via `beasties`")}`);let We=JSON.parse(await m.readFile(f(U,...we,`ssr-manifest.json`),`utf-8`)),Ge=JSON.parse(await m.readFile(f(U,...we,`manifest.json`),`utf-8`)),Ke=await m.readFile(f(U,M),`utf-8`);m.rmSync(f(U,M)),Ke=Me(Ke,te);let qe=(await import(`p-queue`)).default||await import(`p-queue`),Je=new qe({concurrency:ue}),Ye=new qe({concurrency:1}),Xe={},Ze=0,Qe=f(q,`ssg-cache.json`),Q=f(q,`ssg-pages`),$={};try{m.existsSync(Qe)&&($=await m.readJson(Qe))}catch{}let $e={...$};for(let n of Z){let i=j.createHash(`md5`).update(n).digest(`hex`),a=f(Q,`${i}.html`),s=f(Q,`${i}.json`),l=`${(n.endsWith(`/`)?`${n}index`:n).replace(/^\//g,``)}.html`,d=L===`nested`?f(n.replace(/^\//g,``),`index.html`):l,p=f(U,d),g=o(n).replace(/\/$/,``),_=V[g]||V[n],T=!1,E=0;if(ge&&_&&m.existsSync(_))try{if(E=Math.round(m.statSync(_).mtimeMs),m.existsSync(a)){let e=$[g]||$[n];e&&Math.round(e.mtime)===E&&(T=!0)}}catch{}if(T){Je.add(async()=>{try{await m.ensureDir(u(p)),await m.copy(a,p);let e=$[g]||$[n];if(e?.loaderDataFilePath&&m.existsSync(s)){let t=e.loaderDataFilePath;await m.ensureDir(f(U,u(t))),await m.copy(s,f(U,t)),Xe[ke(n,w)]=t,Ze++}c.logger.info(`${b(`${v}/`)}${y(d.padEnd(15,` `))} ${S(`(cached)`)}`)}catch(e){throw Error(`${x(`[vite-react-ssg]`)} Error on cached page: ${y(n)}\n${e.stack}`)}});continue}Je.add(async()=>{try{let i=await Re(!1,n),{base:l,routes:p,triggerOnSSRAppRendered:g,transformState:x=r,app:S,routerType:C}=i,T=await re?.(n,Ke,i)||Ke,ee=`${t(l)}${e(n)}`,D=ve(i),O=!S&&C===`remix`?await ae({routes:[...p],locationArg:ee,base:l,serverManifest:Ie,manifest:Ge,ssrManifest:We}):new Set,{appHTML:k,bodyAttributes:te,htmlAttributes:A,metaAttributes:j,styleTag:M,routerContext:N}=await D.render(n),P=N?.loaderData,F;if(P&&Object.keys(P).length>0){let e=Oe(n,G);F=e,await m.ensureDir(f(U,u(e))),await m.writeFile(f(U,e),JSON.stringify(P)),Xe[ke(n,w)]=e,Ze++}await g?.(n,k,i);let I=new h(await ce({rootContainerId:de,appHTML:k,indexHTML:T,metaAttributes:j,bodyAttributes:te,htmlAttributes:A,initialState:null}));le(I.window.document,O);let L=I.window.document;for(let e of L.querySelectorAll(`script`))e.textContent?.includes(`window.__staticRouterHydrationData`)&&e.remove();let oe=I.serialize();I.window.close();let R=await ie?.(n,oe,i)||oe,z=``;if(P&&Object.keys(P).length>0){let e=JSON.stringify(P).replace(/</g,`\\u003c`);z=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${ke(n,w)}': ${e} };`}let B=``;if(N){let e={loaderData:N.loaderData??{},actionData:N.actionData??null,errors:N.errors??null};B=`window.__staticRouterHydrationData = ${JSON.stringify(e).replace(/</g,`\\u003c`)};`}let ue=`<script>window.__VITE_REACT_SSG_HASH__ = '${G}';${z}${B}<\/script>`;R=R.replace(`<head>`,`<head>${ue}`),R=R.replace(`<script>${se}<\/script>`,``),Ue&&(R=await Ye.add(()=>Ue.process(R)),R=R.replace(/<link\srel="stylesheet"/g,`<link rel="stylesheet" crossorigin`)),M&&(R=R.replace(`<head>`,`<head>${M}`));let V=await Ne(R,ne);if(await m.ensureDir(f(U,u(d))),await m.writeFile(f(U,d),V,`utf-8`),_&&m.existsSync(_)){await m.ensureDir(Q),await m.writeFile(a,V,`utf-8`);let e=o(n).replace(/\/$/,``),t=Math.round(E);P&&Object.keys(P).length>0&&F?(await m.writeFile(s,JSON.stringify(P),`utf-8`),$e[e]={mtime:t,loaderDataFilePath:F}):$e[e]={mtime:t}}c.logger.info(`${b(`${v}/`)}${y(d.padEnd(15,` `))} ${b(be(V))}`)}catch(e){throw Error(`${x(`[vite-react-ssg]`)} ${C(`Error on page: ${y(n)}`)}\n${e.stack}`)}})}await Je.start().onIdle();try{if(await m.ensureDir(u(Qe)),await m.writeJson(Qe,$e),m.existsSync(Q)){let e=await m.readdir(Q),t=new Set;for(let e of Object.keys($e)){let n=j.createHash(`md5`).update(e).digest(`hex`);t.add(`${n}.html`),t.add(`${n}.json`)}let n=0;for(let r of e)(r.endsWith(`.html`)||r.endsWith(`.json`))&&(t.has(r)||(await m.remove(f(Q,r)),n++));n>0&&Y(`Pruned ${n} obsolete files from SSG cache.`)}}catch{}Y(`Generating static loader data...`,Ze);let et=JSON.stringify(Xe,null,0);await m.writeFile(f(U,`static-loader-data-manifest-${G}.json`),et),c.logger.info(`${b(`${v}/`)}${y(`static-loader-data-manifest-${G}.json`.padEnd(15,` `))} ${b(be(et))}`),await m.remove(f(g,`.vite-react-ssg-temp`)),Ce();let tt=c.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;tt&&!tt.disabled&&tt.generateSW&&(Y(`Regenerate PWA...`),await tt.generateSW()),console.log(`\n${x(`[vite-react-ssg]`)} ${S(`Build finished.`)}`),await I?.(v),setTimeout(()=>{console.log(`${x(`[vite-react-ssg]`)} ${T(`Build process still running after 15s`)}. There might be something misconfigured in your setup. Force exit.`),process.exit(0)},15*1e3).unref()}function Me(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function Ne(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 console.error(`${x(`[vite-react-ssg]`)} ${C(`Error formatting html: ${t?.message}`)}`),e}return e}function Pe({template:e,ssrEntry:t,onBeforePageRender:r,entry:a,rootContainerId:o,onPageRendered:s}){return{name:`vite-react-ssg:dev-server`,configureServer(c){let l=async(l,u,d)=>{try{let d=l.originalUrl,f=await(await c.ssrLoadModule(t).then(e=>e.createRoot))(!1,d),p=ve(f),{app:m,base:h}=f,[g,_]=d.split(`?`),v=new URLSearchParams(_);if(!m&&v.has(`_data`))return p.handleLoader(l,u);let y=await c.transformIndexHtml(d,e),b=await r?.(d,y,f)||y,{appHTML:x,bodyAttributes:S,htmlAttributes:C,metaAttributes:w,styleTag:T}=await p.render(i(g,h));w.push(T);let E=await Promise.all([t,a].map(async e=>await c.moduleGraph.getModuleByUrl(e))),ee=new Set,D=new Set,O=async e=>{if(!e||!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`))ee.add(e);else if(e.endsWith(`.ts`)||e.endsWith(`.tsx`)){let t=await c.moduleGraph.getModuleByUrl(e);t&&await O(t)}};await Promise.all(E.map(async e=>O(e)));let k=[...ee].map(e=>z(n(c.config.base,e)));w.push(...k);let A=await ce({rootContainerId:o,appHTML:x,indexHTML:b,metaAttributes:w,bodyAttributes:S,htmlAttributes:C,initialState:null}),j=await s?.(d,A,f)||A;u.statusCode=200,u.setHeader(`Content-Type`,`text/html`),te(l,u,j,`html`,{headers:`pluginContainer`in c?c.config.server.headers:c.config.preview.headers})}catch(e){c.ssrFixStacktrace(e),console.error(`[vite-react-ssg] error: ${e.stack}`),u.statusCode=500,u.end(e.stack)}};return()=>{c.middlewares.use(l)}}}}async function Fe(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,r=await k(e,`serve`,n,n),i=process.cwd(),a=r.root||i,o={...r.ssgOptions,...t},{htmlEntry:s=`index.html`,onBeforePageRender:c,onPageRendered:l,rootContainerId:u=`root`,mock:d=!1}=o,p=o.entry||await R(a,s),[m,h]=await Promise.all([Se(r,p),re.readFile(f(a,s),`utf-8`)]);if(process.env.__DEV_MODE_SSR=`true`,d){let{jsdomGlobal:e}=await import(`./jsdomGlobal-u0wZKDvc.mjs`);e()}return await D({...e,plugins:[...e.plugins??[],Pe({template:h,ssrEntry:m,onBeforePageRender:c,onPageRendered:l,entry:p,rootContainerId:u})]})}catch(e){throw Error(`[vite-react-ssg] Failed to create dev server: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function Ie(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await Fe(t,e);return await r.listen(),Le(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){console.error(`${C(`failed to start server. error:`)}\n${e.stack}`),process.exit(1)}}function Le(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 ${w(v(`${e}ms`))}`}n(`\n ${g(` VITE-REACT-SSG v${ye} `)}`,{clear:!e.config.logger.hasWarned}),n(`${y(`\n VITE v${A}`)+b(r)}\n`),n(S(` dev server running at:`)),e.printUrls()}export{je as build,Fe as createServer,Ie as dev};
|
|
1
|
+
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o}from"./state-U8UuhxSd.mjs";import{createRequire as s}from"node:module";import{Fragment as c,jsx as l}from"react/jsx-runtime";import{colors as u,error as d,info as f,success as p,warn as m}from"@bdocs/dui";import{dirname as h,isAbsolute as g,join as _,relative as v}from"node:path";import y from"fs-extra";import{JSDOM as b}from"jsdom";import{build as x,createLogger as S,createServer as C,mergeConfig as w,resolveConfig as T,send as E,version as D}from"vite";import O from"node:crypto";import{once as k}from"node:events";import{Readable as A,Writable as j}from"node:stream";import*as M from"react-dom/server";import ee from"node:fs/promises";var te=s(import.meta.url);const N=/import\("([^)]+)"\)/g;async function ne({routes:e,locationArg:t,base:n,serverManifest:r,manifest:i,ssrManifest:a}){let{matchRoutes:o}=await import(`react-router-dom`),s=o([...e],t,n),c=s?.map(e=>e.route.entry).filter(Boolean)??[],l=new Set;s?.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(N);for(let e of n)l.add(e[1].split(`/`).at(-1)??``)});let u=new Set;c.forEach(e=>u.add(e));let d=[...Object.entries(r)];l.forEach(e=>{let t=d.find(([t,n])=>n.file.endsWith(e));t&&u.add(t[0])});let f=re(i,u),p=new Set;return Array.from(f).forEach(e=>{(a[e]||[]).forEach(e=>{p.add(e)})}),p}function re(e,t){let n=new Set;if(!t)return n;for(let r of t)ie(e,r,n);return n}function ie(e,t,n=new Set){return t?(n.add(t),e[t]?.dynamicImports?.forEach(t=>{ie(e,t,n)}),n):n}async function P(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 ae=`/* SCRIPT_COMMENT_PLACEHOLDER */`;async function oe({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>${ae}<\/script>`,l=`<head>`,u=r.join(``);t=t.replace(l,l+u);let d=`<body`;t=t.replace(d,`${d} ${i}`);let f=`<html`;t=t.replace(f,`${f} ${a}`);let p=`<div id="${e}"></div>`;if(t.includes(p))return t.replace(p,`<div id="${e}" data-server-rendered="true">${n}</div>${s}${c}`);let m=await import(`html5parser`),h=m.parse(t),g;if(m.walk(h,{enter:r=>{if(!g&&r?.type===m.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);g=`${i}<${r.name} ${e} data-server-rendered="true">${n}</${r.name}>${s}${c}${a}`}}}),!g)throw Error(`Could not find a tag with id="${e}" to replace it with server-side rendered HTML`);return g}async function F(e,t=`index.html`){let[,n]=[...(await y.readFile(_(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 I(e){return`<link rel="stylesheet" href="${e}">`}function se(e,t){let n=new Set;t&&t.forEach(t=>{n.has(t)||(n.add(t),ce(e,t))})}function ce(e,t){t.endsWith(`.js`)?z(e,{rel:`modulepreload`,crossOrigin:``,href:t}):t.endsWith(`.css`)?z(e,{rel:`stylesheet`,href:t,crossOrigin:``}):t.endsWith(`.woff`)||t.endsWith(`.woff2`)||t.endsWith(`.ttf`)?z(e,{rel:`preload`,as:`font`,type:`font/woff2`,href:t,crossOrigin:``}):(t.endsWith(`.png`)||t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)||t.endsWith(`.webp`)||t.endsWith(`.gif`)||t.endsWith(`.ico`)||t.endsWith(`.svg`))&&z(e,{rel:`preload`,as:`image`,href:t,crossOrigin:``})}function L(e){return e.createElement(`link`)}function R(e,t){let n=Object.keys(t);for(let r of n)e.setAttribute(r,t[r])}function z(e,t){if(e.head.querySelector(`link[href='${t.file}']`))return;let n=L(e);R(n,t),e.head.appendChild(n)}function le(e,t){if(e===!1||e==null)throw d(`The following error is a bug in Vite-react-ssg; please open an issue! https://github.com/Daydreamer-riri/vite-react-ssg/issues/new`),Error(t)}function B(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}`;le(e.originalUrl,"Expected `nodeReq.originalUrl` to be defined");let n=new URL(e.originalUrl,t),r={method:e.method,headers:B(e.headers)};return new Request(n.href,r)}async function H(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=A.from(n);r.pipe(t),await k(r,`end`)}else t.end()}function ue(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)}async function de(e){if(!M.renderToPipeableStream)return M.renderToString(l(c,{children:e}));let t=new U,{pipe:n}=M.renderToPipeableStream(e,{onError(e){t.destroy(e)},onAllReady(){n(t)}});return t.getPromise()}var U=class extends j{constructor(){super(),this._output=``,this._deferred={promise:null,resolve:()=>null,reject:()=>null},this._deferred.promise=new Promise((e,t)=>{this._deferred.resolve=e,this._deferred.reject=t})}_write(e,t,n){this._output+=e.toString(),n()}_destroy(e,t){e instanceof Error?this._deferred.reject(e):t()}end(){return this._deferred.resolve(this._output),this.destroy()}getPromise(){return this._deferred.promise}};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}}const{HelmetProvider:G}=s(import.meta.url)(`react-helmet-async`);var K=class{constructor(e){this.handleLoader=async(e,t)=>{let{routes:n,base:r}=this.context,{matchRoutes:i}=await import(`react-router-dom`),o=V(e),s=new URL(o.url),c=decodeURIComponent(s.searchParams.get(`_data`)),l=i(a([...n],e=>e),{pathname:s.pathname,search:s.search,hash:s.hash,state:null,key:`default`},r);if(!l){t.statusCode=404,t.end(`Route not found: ${c}`);return}let u=l.find(e=>e.route.id===c);if(!u){t.statusCode=404,t.end(`Route not found: ${c}`);return}let d=u.route.loader??await u.route.lazy?.().then(e=>e.loader);if(!d){t.statusCode=200,t.end(`There is no loader for the route: ${c}`);return}await H(await q({loader:d,params:u.params,request:o,routeId:c}),t)},this.context=e}async render(e){let{base:t,routes:n,getStyleCollector:r,routerOptions:i}=this.context,s=o(e),c=s;if(t!==`/`){let e=o(t).replace(/\/$/,``);!s.startsWith(e+`/`)&&s!==e&&(c=`${e}${s}`)}let u=`http://localhost${c}`,d=new Request(u),f=r?await r():null,p={},m=null,{StaticRouterProvider:h,createStaticHandler:g,createStaticRouter:_}=await import(`react-router-dom`),v=a([...n],e=>e),{query:y}=g(v,{basename:t}),b=await y(d);if(b instanceof Response){let e=b.headers.get(`Location`);if(e){let t=`http://localhost${o(e)}`;b=await y(new Request(t))}}if(b instanceof Response)throw b;m=b;let x=l(G,{context:p,children:l(h,{router:_(v,m,{future:i.future}),context:m})});f&&(x=f.collect(x));let S=await de(x),{htmlAttributes:C,bodyAttributes:w,metaAttributes:T,styleTag:E}=W(S,p,f);return{appHTML:S,htmlAttributes:C,bodyAttributes:w,metaAttributes:T,styleTag:E,routerContext:m}}};async function q({loader:e,params:t,request:n,routeId:r}){let{json:i}=await import(`react-router-dom`),a=await e({request:ue(pe(n)),params:t});if(a===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 fe(a)?a:i(a)}function fe(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function pe(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 me(e){return new K(e)}var he=`0.0.7`;function J(e,t){f(`${e}${t?u.blue(` (${t})`):``}`)}function ge(e){return`${(e.length/1024).toFixed(2)} KiB`}async function _e(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&&be(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(`/`),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 ve(e,t){return await e.createResolver()(t,e.root)||(t.startsWith(`virtual:`)||t.includes(`\0`)?t:_(e.root,t))}const ye=/[:*?]/;function be(e){return e?ye.test(e):!1}const xe=Number.parseInt(D)>=5?[`.vite`]:[];function Se(e){return Number.parseInt(D)>=8?{rolldownOptions:e}:{rollupOptions:e}}function Y(e,t,n,r){let i=[];if(!y.existsSync(e))return i;let a=y.readdirSync(e);for(let o of a){let a=_(e,o),s=v(t,a).replace(/\\/g,`/`),c=y.statSync(a),l=s.split(`/`);l.includes(`node_modules`)||l.includes(`.git`)||l.includes(`.boltdocs`)||l.includes(`.turbo`)||l.includes(`dist`)||l.includes(`coverage`)||n&&l[0]===n||r&&l[0]===r||(c.isDirectory()?i.push(...Y(a,t,n,r)):i.push(a))}return i}function Ce(e,t,n){try{let r=Y(e,e,t,n),i=_(_(e,`..`),`packages`);if(y.existsSync(i)&&y.existsSync(_(i,`core/package.json`))){let e=Y(i,i,``,``);r.push(...e)}r.sort();let a=O.createHash(`sha256`);for(let t of r){let n=y.statSync(t),r=v(e,t).replace(/\\/g,`/`);a.update(r),a.update(n.mtimeMs.toString()),a.update(n.size.toString())}return a.digest(`hex`)}catch{return Math.random().toString(36).substring(2,12)}}function we(e,t){return`static-loader-data${o(e===`/`?`/index`:e.endsWith(`/`)?`${e}index`:e)}.${t}.json`}function Te(e,t=`/`){let n=o(e),r=n;if(t!==`/`){let e=o(t).replace(/\/$/,``);!n.startsWith(e+`/`)&&n!==e&&(r=`${e}${n}`)}return r!==`/`&&r.endsWith(`/`)?r.slice(0,-1):r}function Ee(e,t){return e.filter(e=>!e.includes(`:`)&&!e.includes(`*`))}async function X(n={},i={}){let a=process.env.MODE||process.env.NODE_ENV||n.mode||`production`,c=await T(i,`build`,a,a),l=process.cwd(),d=c.root||l,C=c.build.outDir||`dist`,E=c.base,D=Object.assign({},c.ssgOptions||{},n),{script:k=`sync`,mock:A=!1,htmlEntry:j=`index.html`,entry:M=await F(d,j),formatting:ee=`none`,includedRoutes:N=Ee,onBeforePageRender:re,onPageRendered:ie,onFinished:I,dirStyle:ce=`flat`,includeAllRoutes:L=!1,format:R=`esm`,concurrency:z=20,rootContainerId:le=`root`,routeToSourceFileMap:B={},cacheDir:V=`.boltdocs`}=D,H=D.beastiesOptions??{},ue=`docs`,de=Object.values(B);if(de.length>0){let e=de[0],t=v(d,e).replace(/\\/g,`/`).split(`/`);t.length>0&&(ue=t[0])}let U=g(C)?C:_(d,C),W=Ce(d,ue,C),G=W.substring(0,12),K=_(d,`.vite-react-ssg-temp`,G);y.existsSync(K)&&await y.remove(K);let q=g(V)?V:_(d,V),fe=_(q,`client-hash.txt`),pe=_(q,`template-index.html`),he=!1;try{y.existsSync(fe)&&y.existsSync(pe)&&y.existsSync(U)&&y.existsSync(_(U,`assets`))&&(await y.readFile(fe,`utf-8`)).trim()===W&&(he=!0)}catch{}let ye=S(),be=ye.warn;ye.warn=(e,t)=>{e.includes(`vite:resolve`)&&e.includes(`externalized for browser compatibility`)||be(e,t)},he?(J(`Client code unchanged. Bypassing client build...`),await y.ensureDir(U),await y.copy(pe,_(U,j))):(J(`Build for client...`),await x(w(i,{build:{manifest:!0,ssrManifest:!0,...Se({input:{app:_(d,j||`./index.html`)},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},customLogger:ye,mode:c.mode,plugins:[{name:`vite-react-ssg:get-oup-dir`,configResolved(e){C=e.build.outDir||`dist`}}]})),await y.ensureDir(q),await y.copy(_(U,j),pe),await y.writeFile(fe,W,`utf-8`));let Y=()=>{};if(A){let{jsdomGlobal:e}=await import(`./jsdomGlobal-u0wZKDvc.mjs`);Y=e()}J(`Build for server...`),process.env.VITE_SSG=`true`;let X=await ve(c,M);await x(w(i,{build:{ssr:X,manifest:!0,outDir:K,minify:!1,cssCodeSplit:!1,...Se({output:R===`esm`?{entryFileNames:`[name].mjs`,format:`esm`}:{entryFileNames:`[name].cjs`,format:`cjs`},onLog(e,t,n){t.message.includes(`react-helmet-async`)||n(e,t)}})},mode:c.mode}));let ke=R===`esm`&&process.platform===`win32`?`file://`:``,Ae=R===`esm`?`.mjs`:`.cjs`,je=X.replace(/\0/g,``).replace(`virtual:`,``).replace(/[^a-zA-Z0-9-]/g,`_`),Me=ke+_(K,(X.includes(`/`)||X.includes(`\\`)?X.split(/[/\\]/).pop().replace(/\.[^/.]+$/,``).replace(Ae,``):je)+Ae).replace(/\\/g,`/`),Ne=JSON.parse(await y.readFile(_(K,...xe,`manifest.json`),`utf-8`)),Pe=te===void 0?s(import.meta.url):te,{createRoot:Fe,includedRoutes:Ie}=R===`esm`?await import(Me):Pe(Me),Le=Ie||N,{routes:Re}=await Fe(!1),{paths:ze}=await _e(Re),Z=L?ze:await Le(ze,Re||[]);Z=Ee(Z,Re||[]),Z=Array.from(new Set(Z)),J(`Rendering Pages...`,Z.length);let Be=H===!1?void 0:await P(C,{publicPath:E,...H});Be&&f("Critical CSS generation enabled via `beasties`");let Ve=JSON.parse(await y.readFile(_(U,...xe,`ssr-manifest.json`),`utf-8`)),He=JSON.parse(await y.readFile(_(U,...xe,`manifest.json`),`utf-8`)),Ue=await y.readFile(_(U,j),`utf-8`);y.rmSync(_(U,j)),Ue=De(Ue,k);let We=(await import(`p-queue`)).default||await import(`p-queue`),Ge=new We({concurrency:z}),Ke=new We({concurrency:1}),qe={},Je=0,Ye=_(q,`ssg-cache.json`),Q=_(q,`ssg-pages`),$={};try{y.existsSync(Ye)&&($=await y.readJson(Ye))}catch{}let Xe={...$};for(let n of Z){let i=O.createHash(`md5`).update(n).digest(`hex`),a=_(Q,`${i}.html`),s=_(Q,`${i}.json`),c=`${(n.endsWith(`/`)?`${n}index`:n).replace(/^\//g,``)}.html`,l=ce===`nested`?_(n.replace(/^\//g,``),`index.html`):c,d=_(U,l),p=o(n).replace(/\/$/,``),m=B[p]||B[n],g=!1,v=0;if(he&&m&&y.existsSync(m))try{if(v=Math.round(y.statSync(m).mtimeMs),y.existsSync(a)){let e=$[p]||$[n];e&&Math.round(e.mtime)===v&&(g=!0)}}catch{}if(g){Ge.add(async()=>{try{await y.ensureDir(h(d)),await y.copy(a,d);let e=$[p]||$[n];if(e?.loaderDataFilePath&&y.existsSync(s)){let t=e.loaderDataFilePath;await y.ensureDir(_(U,h(t))),await y.copy(s,_(U,t)),qe[Te(n,E)]=t,Je++}f(`${u.dim(`${C}/`)}${u.cyan(l.padEnd(15,` `))} ${u.green(`(cached)`)}`)}catch(e){throw Error(`Error on cached page: ${n}\n${e.stack}`)}});continue}Ge.add(async()=>{try{let i=await Fe(!1,n),{base:c,routes:d,triggerOnSSRAppRendered:p,transformState:g=r,app:x,routerType:S}=i,w=await re?.(n,Ue,i)||Ue,T=`${t(c)}${e(n)}`,D=me(i),O=!x&&S===`remix`?await ne({routes:[...d],locationArg:T,base:c,serverManifest:Ne,manifest:He,ssrManifest:Ve}):new Set,{appHTML:k,bodyAttributes:A,htmlAttributes:j,metaAttributes:M,styleTag:te,routerContext:N}=await D.render(n),P=N?.loaderData,F;if(P&&Object.keys(P).length>0){let e=we(n,G);F=e,await y.ensureDir(_(U,h(e))),await y.writeFile(_(U,e),JSON.stringify(P)),qe[Te(n,E)]=e,Je++}await p?.(n,k,i);let I=new b(await oe({rootContainerId:le,appHTML:k,indexHTML:w,metaAttributes:M,bodyAttributes:A,htmlAttributes:j,initialState:null}));se(I.window.document,O);let ce=I.window.document;for(let e of ce.querySelectorAll(`script`))e.textContent?.includes(`window.__staticRouterHydrationData`)&&e.remove();let L=I.serialize();I.window.close();let R=await ie?.(n,L,i)||L,z=``;if(P&&Object.keys(P).length>0){let e=JSON.stringify(P).replace(/</g,`\\u003c`);z=`window.__VITE_REACT_SSG_STATIC_LOADER_DATA__ = { '${Te(n,E)}': ${e} };`}let B=``;if(N){let e={loaderData:N.loaderData??{},actionData:N.actionData??null,errors:N.errors??null};B=`window.__staticRouterHydrationData = ${JSON.stringify(e).replace(/</g,`\\u003c`)};`}let V=`<script>window.__VITE_REACT_SSG_HASH__ = '${G}';${z}${B}<\/script>`;R=R.replace(`<head>`,`<head>${V}`),R=R.replace(`<script>${ae}<\/script>`,``),Be&&(R=await Ke.add(()=>Be.process(R)),R=R.replace(/<link\srel="stylesheet"/g,`<link rel="stylesheet" crossorigin`)),te&&(R=R.replace(`<head>`,`<head>${te}`));let H=await Oe(R,ee);if(await y.ensureDir(_(U,h(l))),await y.writeFile(_(U,l),H,`utf-8`),m&&y.existsSync(m)){await y.ensureDir(Q),await y.writeFile(a,H,`utf-8`);let e=o(n).replace(/\/$/,``),t=Math.round(v);P&&Object.keys(P).length>0&&F?(await y.writeFile(s,JSON.stringify(P),`utf-8`),Xe[e]={mtime:t,loaderDataFilePath:F}):Xe[e]={mtime:t}}f(`${u.dim(`${C}/`)}${u.cyan(l.padEnd(15,` `))} ${u.dim(ge(H))}`)}catch(e){throw Error(`Error on page: ${n}\n${e.stack}`)}})}await Ge.start().onIdle();try{if(await y.ensureDir(h(Ye)),await y.writeJson(Ye,Xe),y.existsSync(Q)){let e=await y.readdir(Q),t=new Set;for(let e of Object.keys(Xe)){let n=O.createHash(`md5`).update(e).digest(`hex`);t.add(`${n}.html`),t.add(`${n}.json`)}let n=0;for(let r of e)(r.endsWith(`.html`)||r.endsWith(`.json`))&&(t.has(r)||(await y.remove(_(Q,r)),n++));n>0&&J(`Pruned ${n} obsolete files from SSG cache.`)}}catch{}J(`Generating static loader data...`,Je);let Ze=JSON.stringify(qe,null,0);await y.writeFile(_(U,`static-loader-data-manifest-${G}.json`),Ze),f(`${u.dim(`${C}/`)}${u.cyan(`static-loader-data-manifest-${G}.json`.padEnd(15,` `))} ${u.dim(ge(Ze))}`),await y.remove(_(d,`.vite-react-ssg-temp`)),Y();let Qe=c.plugins.find(e=>e.name===`vite-plugin-pwa`)?.api;Qe&&!Qe.disabled&&Qe.generateSW&&(J(`Regenerate PWA...`),await Qe.generateSW()),p(`Build finished.`),await I?.(C),setTimeout(()=>{m(`Build process still running after 15s. There might be something misconfigured in your setup. Force exit.`),process.exit(0)},15*1e3).unref()}function De(e,t){return!t||t===`sync`?e:e.replace(/<script type="module" /g,`<script type="module" ${t} `)}async function Oe(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 ke({template:e,ssrEntry:t,onBeforePageRender:r,entry:a,rootContainerId:o,onPageRendered:s}){return{name:`vite-react-ssg:dev-server`,configureServer(c){let l=async(l,u,f)=>{try{let d=l.originalUrl,f=await(await c.ssrLoadModule(t).then(e=>e.createRoot))(!1,d),p=me(f),{app:m,base:h}=f,[g,_]=d.split(`?`),v=new URLSearchParams(_);if(!m&&v.has(`_data`))return p.handleLoader(l,u);let y=await c.transformIndexHtml(d,e),b=await r?.(d,y,f)||y,{appHTML:x,bodyAttributes:S,htmlAttributes:C,metaAttributes:w,styleTag:T}=await p.render(i(g,h));w.push(T);let D=await Promise.all([t,a].map(async e=>await c.moduleGraph.getModuleByUrl(e))),O=new Set,k=new Set,A=async e=>{if(!e||!e?.ssrTransformResult||k.has(e))return;k.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`))O.add(e);else if(e.endsWith(`.ts`)||e.endsWith(`.tsx`)){let t=await c.moduleGraph.getModuleByUrl(e);t&&await A(t)}};await Promise.all(D.map(async e=>A(e)));let j=[...O].map(e=>I(n(c.config.base,e)));w.push(...j);let M=await oe({rootContainerId:o,appHTML:x,indexHTML:b,metaAttributes:w,bodyAttributes:S,htmlAttributes:C,initialState:null}),ee=await s?.(d,M,f)||M;u.statusCode=200,u.setHeader(`Content-Type`,`text/html`),E(l,u,ee,`html`,{headers:`pluginContainer`in c?c.config.server.headers:c.config.preview.headers})}catch(e){c.ssrFixStacktrace(e),d(`SSR render error`,e),u.statusCode=500,u.end(e.stack)}};return()=>{c.middlewares.use(l)}}}}async function Ae(e={},t={}){try{let n=process.env.NODE_ENV||t.mode||`development`,r=await T(e,`serve`,n,n),i=process.cwd(),a=r.root||i,o={...r.ssgOptions,...t},{htmlEntry:s=`index.html`,onBeforePageRender:c,onPageRendered:l,rootContainerId:u=`root`,mock:d=!1}=o,f=o.entry||await F(a,s),[p,m]=await Promise.all([ve(r,f),ee.readFile(_(a,s),`utf-8`)]);if(process.env.__DEV_MODE_SSR=`true`,d){let{jsdomGlobal:e}=await import(`./jsdomGlobal-u0wZKDvc.mjs`);e()}return await C({...e,plugins:[...e.plugins??[],ke({template:m,ssrEntry:p,onBeforePageRender:c,onPageRendered:l,entry:f,rootContainerId:u})]})}catch(e){throw Error(`[vite-react-ssg] Failed to create dev server: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async function je(e={},t={},n){globalThis.__ssr_start_time=performance.now();try{let r=await Ae(t,e);return await r.listen(),Me(r,!!n),r.bindCLIShortcuts({print:!0}),r}catch(e){d(`failed to start server: ${e?.message??e}`),process.exit(1)}}function Me(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.reset(u.bold(`${e}ms`))}`}n(`\n ${u.cyan(` VITE-REACT-SSG v${he} `)}`,{clear:!e.config.logger.hasWarned}),n(`${u.cyan(`\n VITE v${D}`)+u.dim(r)}\n`),n(u.green(` dev server running at:`)),e.printUrls()}export{X as build,Ae as createServer,je as dev};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./chunk-Bmb41Sf3.cjs`);let e=require(`@bdocs/dui`);function t(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 n(e){return e[0]===`/`?e.slice(1):e}function r(e,t){if(e===t)return`/`;let n=i(t);return e.startsWith(n)?e.slice(n.length-1):e}function i(e){return e[e.length-1]===`/`?e:`${e}/`}function a(e){return e[0]===`/`?e:`/${e}`}function o(e,t,n=[]){return e.map((e,r)=>{let i=[...n,String(r)],a=typeof e.id==`string`?e.id:i.join(`-`);if(e.id=a,s(e))return{...e,...t(e),id:a};{let n={...e,...t(e),id:a,children:void 0};return e.children&&(n.children=o(e.children,t,i)),n}})}function s(e){return e.index===!0}const c=/[<>/\u2028\u2029]/g,l={"<":`\\u003C`,">":`\\u003E`,"/":`\\u002F`,"\u2028":`\\u2028`,"\u2029":`\\u2029`};function u(e){return l[e]}function d(t){if(t==null||Object.keys(t).length===0)return null;try{return JSON.stringify(JSON.stringify(t||{})).replace(c,u)}catch(t){return(0,e.error)(`[SSG] On state serialization - ${t instanceof Error?t.message:String(t)}`),null}}function f(t){try{return JSON.parse(t||`{}`)}catch(t){return(0,e.error)(`[SSG] On state deserialization - ${t instanceof Error?t.message:String(t)}`),{}}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{error as e}from"@bdocs/dui";function t(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 n(e){return e[0]===`/`?e.slice(1):e}function r(e,t){if(e===t)return`/`;let n=i(t);return e.startsWith(n)?e.slice(n.length-1):e}function i(e){return e[e.length-1]===`/`?e:`${e}/`}function a(e){return e[0]===`/`?e:`/${e}`}function o(e,t,n=[]){return e.map((e,r)=>{let i=[...n,String(r)],a=typeof e.id==`string`?e.id:i.join(`-`);if(e.id=a,s(e))return{...e,...t(e),id:a};{let n={...e,...t(e),id:a,children:void 0};return e.children&&(n.children=o(e.children,t,i)),n}})}function s(e){return e.index===!0}const c=/[<>/\u2028\u2029]/g,l={"<":`\\u003C`,">":`\\u003E`,"/":`\\u002F`,"\u2028":`\\u2028`,"\u2029":`\\u2029`};function u(e){return l[e]}function d(t){if(t==null||Object.keys(t).length===0)return null;try{return JSON.stringify(JSON.stringify(t||{})).replace(c,u)}catch(t){return e(`[SSG] On state serialization - ${t instanceof Error?t.message:String(t)}`),null}}function f(t){try{return JSON.parse(t||`{}`)}catch(t){return e(`[SSG] On state deserialization - ${t instanceof Error?t.message:String(t)}`),{}}}export{n as a,i as c,t as i,d as n,r as o,o as r,a as s,f as t};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bdocs/ssg",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.7",
|
|
5
5
|
"description": "A Vite plugin for static site generation (SSG) with React.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"publishConfig": {
|
|
@@ -85,10 +85,10 @@
|
|
|
85
85
|
"fs-extra": "^11.3.4",
|
|
86
86
|
"html5parser": "^2.0.2",
|
|
87
87
|
"jsdom": "^24.1.3",
|
|
88
|
-
"kolorist": "^1.8.0",
|
|
89
88
|
"p-queue": "^9.1.2",
|
|
90
89
|
"react-helmet-async": "^2.0.1",
|
|
91
|
-
"yargs": "^17.7.2"
|
|
90
|
+
"yargs": "^17.7.2",
|
|
91
|
+
"@bdocs/dui": "0.1.1"
|
|
92
92
|
},
|
|
93
93
|
"devDependencies": {
|
|
94
94
|
"@ririd/eslint-config": "^2.1.1",
|
package/dist/state-BLI6QppB.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(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 t(e){return e[0]===`/`?e.slice(1):e}function n(e,t){if(e===t)return`/`;let n=r(t);return e.startsWith(n)?e.slice(n.length-1):e}function r(e){return e[e.length-1]===`/`?e:`${e}/`}function i(e){return e[0]===`/`?e:`/${e}`}function a(e,t,n=[]){return e.map((e,r)=>{let i=[...n,String(r)],s=typeof e.id==`string`?e.id:i.join(`-`);if(e.id=s,o(e))return{...e,...t(e),id:s};{let n={...e,...t(e),id:s,children:void 0};return e.children&&(n.children=a(e.children,t,i)),n}})}function o(e){return e.index===!0}const s=/[<>/\u2028\u2029]/g,c={"<":`\\u003C`,">":`\\u003E`,"/":`\\u002F`,"\u2028":`\\u2028`,"\u2029":`\\u2029`};function l(e){return c[e]}function u(e){if(e==null||Object.keys(e).length===0)return null;try{return JSON.stringify(JSON.stringify(e||{})).replace(s,l)}catch(t){return console.error(`[SSG] On state serialization -`,t,e),null}}function d(e){try{return JSON.parse(e||`{}`)}catch(t){return console.error(`[SSG] On state deserialization -`,t,e),{}}}export{t as a,r as c,e as i,u as n,n as o,a as r,i as s,d as t};
|
package/dist/state-OWuAHBHy.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(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 t(e){return e[0]===`/`?e.slice(1):e}function n(e,t){if(e===t)return`/`;let n=r(t);return e.startsWith(n)?e.slice(n.length-1):e}function r(e){return e[e.length-1]===`/`?e:`${e}/`}function i(e){return e[0]===`/`?e:`/${e}`}function a(e,t,n=[]){return e.map((e,r)=>{let i=[...n,String(r)],s=typeof e.id==`string`?e.id:i.join(`-`);if(e.id=s,o(e))return{...e,...t(e),id:s};{let n={...e,...t(e),id:s,children:void 0};return e.children&&(n.children=a(e.children,t,i)),n}})}function o(e){return e.index===!0}const s=/[<>/\u2028\u2029]/g,c={"<":`\\u003C`,">":`\\u003E`,"/":`\\u002F`,"\u2028":`\\u2028`,"\u2029":`\\u2029`};function l(e){return c[e]}function u(e){if(e==null||Object.keys(e).length===0)return null;try{return JSON.stringify(JSON.stringify(e||{})).replace(s,l)}catch(t){return console.error(`[SSG] On state serialization -`,t,e),null}}function d(e){try{return JSON.parse(e||`{}`)}catch(t){return console.error(`[SSG] On state deserialization -`,t,e),{}}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
|