@lomray/vite-ssr-boost 8.4.0-beta.3 → 8.4.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,57 @@
1
+ import type { FC, PropsWithChildren } from 'react';
2
+ import { createStaticHandler } from 'react-router';
3
+ import type { ICreateHandlerOptions, IHtmlShell } from './core/handler.js';
4
+ import type { ISsrExecutionContext } from './core/types.js';
5
+ import type { TRouteObject } from './interfaces/route-object.js';
6
+ import RouteAssets from './services/route-assets-memory.js';
7
+ import type { TRouteAssetsManifest } from './services/route-assets-memory.js';
8
+ /** Structural types keep Cloudflare's global declarations optional for consumers. */
9
+ export interface IAssetsBinding {
10
+ fetch: (request: Request) => Promise<Response>;
11
+ }
12
+ export interface IWorkerContext {
13
+ waitUntil: (promise: Promise<unknown>) => void;
14
+ }
15
+ export interface IWorkerPlatform<TEnv = Record<string, unknown>> {
16
+ env: TEnv;
17
+ ctx: IWorkerContext;
18
+ }
19
+ export interface IWorkerExecutionContext<TEnv> extends ISsrExecutionContext<IWorkerPlatform<TEnv>> {
20
+ platform: IWorkerPlatform<TEnv>;
21
+ waitUntil: IWorkerContext['waitUntil'];
22
+ }
23
+ export type TWorkerHandler<TEnv = Record<string, unknown>> = (request: Request, env: TEnv, ctx: IWorkerContext) => Promise<Response>;
24
+ type TWorkerHtml<TEnv> = {
25
+ getHtml: (request: Request, env: TEnv, ctx: IWorkerContext) => IHtmlShell | Promise<IHtmlShell>;
26
+ indexHtml?: never;
27
+ } | {
28
+ indexHtml: string;
29
+ getHtml?: never;
30
+ };
31
+ export type IWorkerHandlerOptions<TEnv = Record<string, unknown>, TAppProps = Record<string, any>> = Omit<ICreateHandlerOptions<TAppProps>, 'getHtml' | 'onRequest'> & TWorkerHtml<TEnv> & {
32
+ routes: TRouteObject[];
33
+ App: FC<PropsWithChildren<{
34
+ server: TAppProps;
35
+ }>>;
36
+ manifest: TRouteAssetsManifest;
37
+ /** Assets binding name, or false to delegate static delivery elsewhere. Default: ASSETS. */
38
+ assets?: string | false;
39
+ modulePreload?: boolean;
40
+ outlet?: string;
41
+ routerOptions?: Parameters<typeof createStaticHandler>[1];
42
+ onRequest?: (params: {
43
+ request: Request;
44
+ executionContext: IWorkerExecutionContext<TEnv>;
45
+ }) => ReturnType<NonNullable<ICreateHandlerOptions<TAppProps>['onRequest']>>;
46
+ };
47
+ /**
48
+ * Fetch and split the built HTML once per binding and path, returning fresh request shells.
49
+ * Failed loads are evicted so a transient binding error does not poison the isolate.
50
+ */
51
+ export declare const getHtmlFromAssets: (env: object, indexPath?: string, bindingName?: string, outlet?: string) => Promise<() => IHtmlShell>;
52
+ /**
53
+ * Create a Fetch Worker with in-memory route assets and the Web stream renderer.
54
+ */
55
+ export declare const createWorkerHandler: <TEnv extends object = Record<string, unknown>, TAppProps = Record<string, any>>({ routes, App, manifest, getHtml, indexHtml, assets, modulePreload, outlet, routerOptions, onRequest, onRouterReady, onShellReady, prepare, ...options }: IWorkerHandlerOptions<TEnv, TAppProps>) => TWorkerHandler<TEnv>;
56
+ export { RouteAssets };
57
+ export type { TRouteAssetsManifest, IHtmlShell };
package/cloudflare.js ADDED
@@ -0,0 +1,2 @@
1
+ import{createElement as e}from"react";import{createStaticHandler as t}from"react-router";import s from"./core/handler.js";import r from"./core/head-response.js";import o from"./edge/render-to-stream.js";import{splitHtmlShell as n}from"./services/diagnostics.js";import a from"./services/route-asset-preparer.js";import i from"./services/route-assets-memory.js";const c="Cache-Control",d=new WeakMap,p=(e,t)=>{const s=Reflect.get(e,t);if(!s||"function"!=typeof s.fetch)throw new Error(`[ssr-boost] Missing Workers assets binding "${t}".`);return s},m=async(e,t="/index.html",s="ASSETS",r="\x3c!--ssr-outlet--\x3e")=>{const o=p(e,s);let a=d.get(o);a||(a=new Map,d.set(o,a));const i=JSON.stringify([t,r]);let c=a.get(i);return c||(c=(async()=>{const e=await o.fetch(new Request(new URL(t,"https://assets.local")));if(!e.ok)throw await(e.body?.cancel()),new Error(`[ssr-boost] Failed to load "${t}" from assets: ${e.status}.`);const[s,a]=n(await e.text(),t,r);return()=>({header:s,footer:a})})(),a.set(i,c),c.catch(()=>a.delete(i))),c},u=({routes:d,App:m,manifest:u,getHtml:l,indexHtml:f,assets:h="ASSETS",modulePreload:w=!1,outlet:g="\x3c!--ssr-outlet--\x3e",routerOptions:x,onRequest:y,onRouterReady:R,onShellReady:S,prepare:b,...v})=>{const E=t(d,x),A=a(new i(u,w)),j=void 0===f?void 0:n(f,"indexHtml",g);return async(t,n,a)=>{const{pathname:i}=new URL(t.url);if(!1!==h&&["GET","HEAD"].includes(t.method)&&"/"!==i&&"/index.html"!==i){const e=await p(n,h).fetch(t);if(404!==e.status){if((e.ok||304===e.status)&&/\/assets\/[^/]+-[\w-]{8,}\.[^/]+$/.test(i)){const s=new Headers(e.headers);return s.set(c,"public, max-age=31536000, immutable"),r(t,new Response(e.body,{status:e.status,statusText:e.statusText,headers:s}))}return r(t,e)}await(e.body?.cancel())}const d={platform:{env:n,ctx:a},waitUntil:a.waitUntil.bind(a)};return s({handler:E,createApp:(t,s)=>e(m,{server:s.appProps},t),renderToStream:o},{diagnostics:!1,...v,getHtml:()=>l?l(t,n,a):{header:j[0],footer:j[1]},onRequest:y?()=>y({request:t,executionContext:d}):void 0,prepare:async e=>{await A(e),await(b?.(e))},onShellReady:e=>{const{context:t}=e;return t.isStream&&!t.response.headers.has("Content-Encoding")&&(t.response.headers.set("Content-Encoding","identity"),t.response.headers.get(c)?.includes("no-transform")||t.response.headers.append(c,"no-transform")),S?.(e)??{}},onRouterReady:async e=>({isStream:!/bot|crawler|spider|slurp|bingpreview/i.test(t.headers.get("User-Agent")??""),...await(R?.(e))})})(t,d)}};export{i as RouteAssets,u as createWorkerHandler,m as getHtmlFromAssets};
2
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sources":["../src/cloudflare.ts"],"sourcesContent":[null],"names":["CACHE_CONTROL","htmlCache","WeakMap","getAssetsBinding","env","name","binding","Reflect","get","fetch","Error","getHtmlFromAssets","async","indexPath","bindingName","outlet","cache","Map","set","key","JSON","stringify","pending","response","Request","URL","ok","body","cancel","status","header","footer","splitHtmlShell","text","catch","delete","createWorkerHandler","routes","App","manifest","getHtml","indexHtml","assets","modulePreload","routerOptions","onRequest","onRouterReady","onShellReady","prepare","options","handler","createStaticHandler","prepareAssets","createAssetPreparer","RouteAssets","shell","undefined","request","ctx","pathname","url","includes","method","test","headers","Headers","headResponse","Response","statusText","executionContext","platform","waitUntil","bind","createHandler","createApp","children","context","createElement","server","appProps","renderToStream","diagnostics","params","isStream","has","append","render"],"mappings":"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"}
package/core/handler.js CHANGED
@@ -1,2 +1,2 @@
1
- import{hasCookie as e}from"./document-headers.js";import s from"./head-response.js";import o from"./render.js";import t from"./spa-shell.js";import r from"./ssr-policy.js";import n,{isDiagnosticsEnabled as a}from"../services/diagnostics.js";import{createTimeline as i}from"../services/request-timeline.js";const p=(p,{diagnostics:c,getHtml:m,onContext:d,onRequest:l,ssr:h,basename:u,...f})=>{const w=new r(h,p.handler.dataRoutes,u),j=t();return async(t,r)=>{const h=a(c),u=i(t,h);try{const a=await(l?.({executionContext:r,request:t})),i=a instanceof Response,c=i?void 0:a,g={appProps:c?.appProps??{},diagnostics:h?new n(new URL(t.url).pathname):void 0,html:i?{header:"",footer:""}:await m(t),request:t,response:{headers:new Headers(c?.headers),status:c?.status},...u?{timeline:u}:{}};if(d?.({context:g}),i){g.diagnostics?.inspectCachePolicy(a.headers,Boolean(f.sessionCookie&&e(t,f.sessionCookie)));const o=await s(t,a);return u?.response(o)??o}return await o({...p,policy:w,spaShell:j},g,f,r)}catch(e){throw u?.abort(e),u?.end(),e}}};export{p as default};
1
+ import{hasCookie as e}from"./document-headers.js";import s from"./head-response.js";import t from"./render.js";import o from"./spa-shell.js";import r from"./ssr-policy.js";import n,{isDiagnosticsEnabled as a}from"../services/diagnostics.js";import{createTimeline as i}from"../services/request-timeline.js";const c=(c,{diagnostics:p,getHtml:m,onContext:d,onRequest:l,ssr:u,basename:h,...f})=>{const w=new r(u,c.handler.dataRoutes,h),j=o();return async(o,r)=>{const u=a(p),h=i(o,u);try{const a=await(l?.({executionContext:r,request:o})),i=a instanceof Response,p=i?void 0:a,x={appProps:p?.appProps??{},diagnostics:u?new n(new URL(o.url).pathname):void 0,executionContext:r,html:i?{header:"",footer:""}:await m(o),request:o,response:{headers:new Headers(p?.headers),status:p?.status},...h?{timeline:h}:{}};if(d?.({context:x}),i){x.diagnostics?.inspectCachePolicy(a.headers,Boolean(f.sessionCookie&&e(o,f.sessionCookie)));const t=await s(o,a);return h?.response(t)??t}return await t({...c,policy:w,spaShell:j},x,f,r)}catch(e){throw h?.abort(e),h?.end(),e}}};export{c as default};
2
2
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sources":["../../src/core/handler.ts"],"sourcesContent":[null],"names":["createHandler","params","diagnostics","getHtml","onContext","onRequest","ssr","basename","options","policy","SsrPolicy","handler","dataRoutes","spaShell","createSpaShell","async","request","executionContext","isEnabled","isDiagnosticsEnabled","timeline","createTimeline","requestInit","isBypass","Response","metadata","undefined","context","appProps","Diagnostics","URL","url","pathname","html","header","footer","response","headers","Headers","status","inspectCachePolicy","Boolean","sessionCookie","hasCookie","headResponse","render","error","abort","end"],"mappings":"kTAsDA,MAAMA,EAAgB,CACpBC,GAEEC,cACAC,UACAC,YACAC,YACAC,MACAC,cACGC,MAGL,MAAMC,EAAS,IAAIC,EAAUJ,EAAKL,EAAOU,QAAQC,WAAYL,GACvDM,EAAWC,IAKjB,OAAOC,MAAOC,EAASC,KACrB,MAAMC,EAAYC,EAAqBjB,GACjCkB,EAAWC,EAAeL,EAASE,GAEzC,IACE,MAAMI,QAAoBjB,IAAY,CAAEY,mBAAkBD,aACpDO,EAAWD,aAAuBE,SAClCC,EAAWF,OAAWG,EAAYJ,EAClCK,EAAyC,CAC7CC,SAAWH,GAAUG,UAAY,GACjC1B,YAAagB,EAAY,IAAIW,EAAY,IAAIC,IAAId,EAAQe,KAAKC,eAAYN,EAC1EO,KAAMV,EAAW,CAAEW,OAAQ,GAAIC,OAAQ,UAAahC,EAAQa,GAC5DA,UACAoB,SAAU,CACRC,QAAS,IAAIC,QAAQb,GAAUY,SAC/BE,OAAQd,GAAUc,WAEhBnB,EAAW,CAAEA,YAAa,IAKhC,GAFAhB,IAAY,CAAEuB,YAEVJ,EAAU,CACZI,EAAQzB,aAAasC,mBACnBlB,EAAYe,QACZI,QAAQjC,EAAQkC,eAAiBC,EAAU3B,EAASR,EAAQkC,iBAG9D,MAAMN,QAAiBQ,EAAa5B,EAASM,GAE7C,OAAOF,GAAUgB,SAASA,IAAaA,CACzC,CAEA,aAAaS,EAAO,IAAK5C,EAAQQ,SAAQI,YAAYc,EAASnB,EAASS,EACzE,CAAE,MAAO6B,GAGP,MAFA1B,GAAU2B,MAAMD,GAChB1B,GAAU4B,MACJF,CACR"}
1
+ {"version":3,"file":"handler.js","sources":["../../src/core/handler.ts"],"sourcesContent":[null],"names":["createHandler","params","diagnostics","getHtml","onContext","onRequest","ssr","basename","options","policy","SsrPolicy","handler","dataRoutes","spaShell","createSpaShell","async","request","executionContext","isEnabled","isDiagnosticsEnabled","timeline","createTimeline","requestInit","isBypass","Response","metadata","undefined","context","appProps","Diagnostics","URL","url","pathname","html","header","footer","response","headers","Headers","status","inspectCachePolicy","Boolean","sessionCookie","hasCookie","headResponse","render","error","abort","end"],"mappings":"kTAsDA,MAAMA,EAAgB,CACpBC,GAEEC,cACAC,UACAC,YACAC,YACAC,MACAC,cACGC,MAGL,MAAMC,EAAS,IAAIC,EAAUJ,EAAKL,EAAOU,QAAQC,WAAYL,GACvDM,EAAWC,IAKjB,OAAOC,MAAOC,EAASC,KACrB,MAAMC,EAAYC,EAAqBjB,GACjCkB,EAAWC,EAAeL,EAASE,GAEzC,IACE,MAAMI,QAAoBjB,IAAY,CAAEY,mBAAkBD,aACpDO,EAAWD,aAAuBE,SAClCC,EAAWF,OAAWG,EAAYJ,EAClCK,EAAyC,CAC7CC,SAAWH,GAAUG,UAAY,GACjC1B,YAAagB,EAAY,IAAIW,EAAY,IAAIC,IAAId,EAAQe,KAAKC,eAAYN,EAC1ET,mBACAgB,KAAMV,EAAW,CAAEW,OAAQ,GAAIC,OAAQ,UAAahC,EAAQa,GAC5DA,UACAoB,SAAU,CACRC,QAAS,IAAIC,QAAQb,GAAUY,SAC/BE,OAAQd,GAAUc,WAEhBnB,EAAW,CAAEA,YAAa,IAKhC,GAFAhB,IAAY,CAAEuB,YAEVJ,EAAU,CACZI,EAAQzB,aAAasC,mBACnBlB,EAAYe,QACZI,QAAQjC,EAAQkC,eAAiBC,EAAU3B,EAASR,EAAQkC,iBAG9D,MAAMN,QAAiBQ,EAAa5B,EAASM,GAE7C,OAAOF,GAAUgB,SAASA,IAAaA,CACzC,CAEA,aAAaS,EAAO,IAAK5C,EAAQQ,SAAQI,YAAYc,EAASnB,EAASS,EACzE,CAAE,MAAO6B,GAGP,MAFA1B,GAAU2B,MAAMD,GAChB1B,GAAU4B,MACJF,CACR"}
package/core/render.d.ts CHANGED
@@ -13,6 +13,7 @@ export interface ISsrRequestContext<TAppProps = Record<string, any>> {
13
13
  appProps: NonNullable<TAppProps>;
14
14
  diagnostics?: Diagnostics;
15
15
  timeline?: RequestTimeline;
16
+ executionContext?: ISsrExecutionContext;
16
17
  /**
17
18
  * First render failure, or the explicit timeout/cancellation classification.
18
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["../../src/core/render.tsx"],"sourcesContent":[null],"names":["HTML_CONTENT_TYPE","CONTENT_TYPE","renderResponse","async","createApp","handler","renderToStream","policy","spaShell","context","abortDelay","getState","hydration","nonce","bootstrapScriptContent","onError","onResponse","onRouterReady","onShellError","onShellReady","prepare","routerRequestContext","documentHeaders","rules","sessionCookie","protectPrivate","executionContext","mode","select","request","diagnostics","active","response","headers","has","set","isSpa","isStream","matches","matchRoutes","dataRoutes","URL","url","basename","html","status","Response","method","header","footer","queried","query","requestContext","timeline","record","headResponse","mergeResponseHeaders","routerContext","dataStream","DataStream","error","cancel","serverContext","isServer","router","createStaticRouter","node","React","createElement","ServerProvider","StaticRouterProvider","hydrate","renderController","AbortController","abortReason","output","hasAborted","onRequestAbort","abort","signal","reason","clearAbortTimer","clearTimeout","abortTimer","cleanup","removeEventListener","didError","StreamError","RenderCancel","setTimeout","RenderTimeout","Error","aborted","addEventListener","once","streamError","obtainStreamError","code","RenderAborted","Promise","all","allReady","done","then","shellReady","stream","catch","shellError","String","Headers","createShellErrorResponse","serverResponse","Boolean","statusCode","shell","isEarly","customState","buildCustomState","shellFooter","inspectShell","state","take","prepareHtmlResponse","includes","body","composeHtml","transformed","transformHtml","isEnd","undefined","start","locked","render","params","options","createTimeline","inspectCachePolicy","hasCookie","end"],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sources":["../../src/core/render.tsx"],"sourcesContent":[null],"names":["HTML_CONTENT_TYPE","CONTENT_TYPE","renderResponse","async","createApp","handler","renderToStream","policy","spaShell","context","abortDelay","getState","hydration","nonce","bootstrapScriptContent","onError","onResponse","onRouterReady","onShellError","onShellReady","prepare","routerRequestContext","documentHeaders","rules","sessionCookie","protectPrivate","executionContext","mode","select","request","diagnostics","active","response","headers","has","set","isSpa","isStream","matches","matchRoutes","dataRoutes","URL","url","basename","html","status","Response","method","header","footer","queried","query","requestContext","timeline","record","headResponse","mergeResponseHeaders","routerContext","dataStream","DataStream","error","cancel","serverContext","isServer","router","createStaticRouter","node","React","createElement","ServerProvider","StaticRouterProvider","hydrate","renderController","AbortController","abortReason","output","hasAborted","onRequestAbort","abort","signal","reason","clearAbortTimer","clearTimeout","abortTimer","cleanup","removeEventListener","didError","StreamError","RenderCancel","setTimeout","RenderTimeout","Error","aborted","addEventListener","once","streamError","obtainStreamError","code","RenderAborted","Promise","all","allReady","done","then","shellReady","stream","catch","shellError","String","Headers","createShellErrorResponse","serverResponse","Boolean","statusCode","shell","isEarly","customState","buildCustomState","shellFooter","inspectShell","state","take","prepareHtmlResponse","includes","body","composeHtml","transformed","transformHtml","isEnd","undefined","start","locked","render","params","options","createTimeline","inspectCachePolicy","hasCookie","end"],"mappings":"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"}
package/core/types.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- export interface ISsrExecutionContext {
1
+ export interface ISsrExecutionContext<TPlatform = unknown> {
2
+ /** Runtime bindings and the native execution context, supplied by an adapter. */
3
+ platform?: TPlatform;
4
+ /** Extend request lifetime for background work supported by the runtime. */
5
+ waitUntil?: (promise: Promise<unknown>) => void;
2
6
  /**
3
7
  * Deliver informational headers outside the final Fetch response when supported.
4
8
  */
@@ -1,12 +1,18 @@
1
1
  import type { ICreateHandlerOptions, IHtmlShell } from '../core/handler.js';
2
+ import type { TRouteAssetsManifest } from '../services/route-assets.js';
2
3
  interface ILoadHtmlShellOptions {
3
4
  indexFile: string;
4
5
  outlet?: string;
5
6
  }
6
- interface IRouteAssetPreparerOptions {
7
+ type IRouteAssetPreparerOptions = ({
7
8
  buildDir: string;
9
+ manifest?: never;
10
+ } | {
11
+ manifest: TRouteAssetsManifest;
12
+ buildDir?: never;
13
+ }) & {
8
14
  modulePreload?: boolean;
9
- }
15
+ };
10
16
  /**
11
17
  * Read a built document once and supply a fresh shell for each request.
12
18
  */
@@ -14,6 +20,6 @@ declare const loadHtmlShell: ({ indexFile, outlet, }: ILoadHtmlShellOptions) =>
14
20
  /**
15
21
  * Inject matched route assets using a manifest cache owned by this preparer.
16
22
  */
17
- declare const createRouteAssetPreparer: <TAppProps = Record<string, any>>({ buildDir, modulePreload, }: IRouteAssetPreparerOptions) => NonNullable<ICreateHandlerOptions<TAppProps>["prepare"]>;
23
+ declare const createRouteAssetPreparer: <TAppProps = Record<string, any>>({ buildDir, manifest, modulePreload, }: IRouteAssetPreparerOptions) => NonNullable<ICreateHandlerOptions<TAppProps>["prepare"]>;
18
24
  export { createRouteAssetPreparer, loadHtmlShell };
19
- export type { IHtmlShell, ILoadHtmlShellOptions, IRouteAssetPreparerOptions };
25
+ export type { IHtmlShell, ILoadHtmlShellOptions, IRouteAssetPreparerOptions, TRouteAssetsManifest };
@@ -1,2 +1,2 @@
1
- import{readFile as t}from"node:fs/promises";import{splitHtmlShell as e}from"../services/diagnostics.js";import s from"../services/route-assets.js";const o=async({indexFile:s,outlet:o="\x3c!--ssr-outlet--\x3e"})=>{const r=await t(s,"utf8"),[n,i]=e(r,s,o);return()=>({header:n,footer:i})},r=({buildDir:t,modulePreload:e=!1})=>{const o=new s(t,e);return async({context:t,executionContext:e})=>{const s=o.injectAssets(t);s.has("Link")&&await(e?.onEarlyHints?.(s))}};export{r as createRouteAssetPreparer,o as loadHtmlShell};
1
+ import{readFile as e}from"node:fs/promises";import{splitHtmlShell as r}from"../services/diagnostics.js";import s from"../services/route-asset-preparer.js";import o from"../services/route-assets.js";const t=async({indexFile:s,outlet:o="\x3c!--ssr-outlet--\x3e"})=>{const t=await e(s,"utf8"),[i,m]=r(t,s,o);return()=>({header:i,footer:m})},i=({buildDir:e,manifest:r,modulePreload:t=!1})=>s(new o(r??e,t));export{i as createRouteAssetPreparer,t as loadHtmlShell};
2
2
  //# sourceMappingURL=production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"production.js","sources":["../../src/node/production.ts"],"sourcesContent":[null],"names":["loadHtmlShell","async","indexFile","outlet","html","readFile","header","footer","splitHtmlShell","createRouteAssetPreparer","buildDir","modulePreload","assets","RouteAssets","context","executionContext","hints","injectAssets","has","onEarlyHints"],"mappings":"mJAkBA,MAAMA,EAAgBC,OACpBC,YACAC,SAAS,8BAET,MAAMC,QAAaC,EAASH,EAAW,SAChCI,EAAQC,GAAUC,EAAeJ,EAAMF,EAAWC,GAEzD,MAAO,KAAA,CAASG,SAAQC,YAMpBE,EAA2B,EAC/BC,WACAC,iBAAgB,MAEhB,MAAMC,EAAS,IAAIC,EAAYH,EAAUC,GAEzC,OAAOV,OAASa,UAASC,uBACvB,MAAMC,EAAQJ,EAAOK,aAAaH,GAE9BE,EAAME,IAAI,eACNH,GAAkBI,eAAeH"}
1
+ {"version":3,"file":"production.js","sources":["../../src/node/production.ts"],"sourcesContent":[null],"names":["loadHtmlShell","async","indexFile","outlet","html","readFile","header","footer","splitHtmlShell","createRouteAssetPreparer","buildDir","manifest","modulePreload","createAssetPreparer","RouteAssets"],"mappings":"sMAmBA,MAAMA,EAAgBC,OACpBC,YACAC,SAAS,8BAET,MAAMC,QAAaC,EAASH,EAAW,SAChCI,EAAQC,GAAUC,EAAeJ,EAAMF,EAAWC,GAEzD,MAAO,KAAA,CAASG,SAAQC,YAMpBE,EAA2B,EAC/BC,WACAC,WACAC,iBAAgB,KAETC,EAAoB,IAAIC,EAAYH,GAAYD,EAAUE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lomray/vite-ssr-boost",
3
- "version": "8.4.0-beta.3",
3
+ "version": "8.4.0-beta.4",
4
4
  "description": "SSR and streaming for existing Vite + React Router apps in Data mode, without Framework mode",
5
5
  "type": "module",
6
6
  "exports": {
@@ -93,7 +93,9 @@
93
93
  "test:bun": "bun scripts/test-bun.mjs",
94
94
  "test:template": "npm run build && node scripts/test-template.mjs",
95
95
  "test:coverage": "vitest run --coverage",
96
- "test:browser": "playwright test --config playwright.config.mjs"
96
+ "test:browser": "playwright test --config playwright.config.mjs",
97
+ "test:worker:packed": "node scripts/test-packed-worker.mjs",
98
+ "test:worker:browser": "playwright test --config playwright.worker.config.mjs"
97
99
  },
98
100
  "dependencies": {
99
101
  "chalk": "^6.0.0",
@@ -116,6 +118,8 @@
116
118
  "@babel/parser": "^8.0.4",
117
119
  "@babel/traverse": "^8.0.4",
118
120
  "@babel/types": "^8.0.4",
121
+ "@cloudflare/vite-plugin": "^1.54.4",
122
+ "@cloudflare/workers-types": "^5.20260906.1",
119
123
  "@commitlint/cli": "^21.2.2",
120
124
  "@commitlint/config-conventional": "^21.2.2",
121
125
  "@lomray/eslint-config": "^7.0.0",
@@ -163,7 +167,8 @@
163
167
  "typescript-eslint": "^8.69.0",
164
168
  "vite": "^8.2.2",
165
169
  "vitepress": "^1.6.4",
166
- "vitest": "^5.0.0"
170
+ "vitest": "^5.0.0",
171
+ "wrangler": "^4.129.0"
167
172
  },
168
173
  "peerDependencies": {
169
174
  "@babel/generator": ">=7.23.0",
@@ -0,0 +1,7 @@
1
+ import type { ICreateHandlerOptions } from '../core/handler.js';
2
+ import type RouteAssets from './route-assets-memory.js';
3
+ /**
4
+ * Share route injection across runtimes, computing hints only for supported transports.
5
+ */
6
+ declare const createAssetPreparer: <TAppProps = Record<string, any>>(assets: RouteAssets) => NonNullable<ICreateHandlerOptions<TAppProps>["prepare"]>;
7
+ export default createAssetPreparer;
@@ -0,0 +1,2 @@
1
+ const t=t=>async({context:n,executionContext:o})=>{const s=t.injectAssets(n,Boolean(o?.onEarlyHints));s.has("Link")&&await(o?.onEarlyHints?.(s))};export{t as default};
2
+ //# sourceMappingURL=route-asset-preparer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-asset-preparer.js","sources":["../../src/services/route-asset-preparer.ts"],"sourcesContent":[null],"names":["createAssetPreparer","assets","async","context","executionContext","hints","injectAssets","Boolean","onEarlyHints","has"],"mappings":"AAMA,MAAMA,EACJC,GAEOC,OAASC,UAASC,uBACvB,MAAMC,EAAQJ,EAAOK,aAAaH,EAASI,QAAQH,GAAkBI,eAEjEH,EAAMI,IAAI,eACNL,GAAkBI,eAAeH"}
@@ -0,0 +1,63 @@
1
+ import type { RouterState, StaticHandlerContext } from 'react-router';
2
+ declare enum AssetType {
3
+ style = "style",
4
+ script = "script",
5
+ image = "image",
6
+ font = "font"
7
+ }
8
+ interface IAsset {
9
+ type: string;
10
+ url: string;
11
+ weight: number;
12
+ isNested: boolean;
13
+ isPreload: boolean;
14
+ content?: string;
15
+ }
16
+ type TAssets = {
17
+ [id: string]: IAsset;
18
+ };
19
+ /** Parsed build/client/assets-manifest.json; accepts a JSON module directly. */
20
+ type TRouteAssetsManifest = Readonly<Record<string, readonly IAsset[]>>;
21
+ interface IInjectAssetsContext {
22
+ html: {
23
+ header: string;
24
+ };
25
+ routerContext?: StaticHandlerContext;
26
+ matches?: RouterState['matches'];
27
+ isSpa?: boolean;
28
+ }
29
+ /**
30
+ * Load and inject route assets with an independent cache for one build.
31
+ */
32
+ declare class RouteAssets {
33
+ protected readonly modulePreload: boolean;
34
+ protected routesAssets: TRouteAssetsManifest | null;
35
+ constructor(manifest: TRouteAssetsManifest, modulePreload?: boolean);
36
+ /**
37
+ * Development manifests override this to inject inline styles.
38
+ */
39
+ protected get isDev(): boolean;
40
+ /**
41
+ * Read the manifest without requiring a filesystem.
42
+ */
43
+ protected loadAssetsManifest(): TRouteAssetsManifest;
44
+ /**
45
+ * Sort assets
46
+ */
47
+ protected sortAssets(assets: IAsset[]): IAsset[];
48
+ /**
49
+ * Get route assets
50
+ */
51
+ protected getAssets(routes?: RouterState['matches'], _isSpa?: boolean): IAsset[];
52
+ /**
53
+ * Build preload hints without depending on a particular HTTP transport.
54
+ */
55
+ getEarlyHints(assets: IAsset[]): Headers;
56
+ /**
57
+ * Inject route assets to head html
58
+ */
59
+ injectAssets({ routerContext, matches, html, isSpa }: IInjectAssetsContext, earlyHints?: boolean): Headers;
60
+ }
61
+ export { AssetType };
62
+ export type { IAsset, TAssets, TRouteAssetsManifest };
63
+ export default RouteAssets;
@@ -0,0 +1,2 @@
1
+ var e;!function(e){e.style="style",e.script="script",e.image="image",e.font="font"}(e||(e={}));let t=class{modulePreload;routesAssets;constructor(e,t=!1){this.routesAssets=e,this.modulePreload=t}get isDev(){return!1}loadAssetsManifest(){return this.routesAssets??{}}sortAssets(e){return e.sort((e,t)=>e.weight===t.weight?Number(e.isNested)-Number(t.isNested):e.weight-t.weight)}getAssets(e,t){const s=e?.map(({route:e})=>e.id).filter(Boolean)??[];if(!s.length)return[];const r=this.loadAssetsManifest();return this.sortAssets(s.map(e=>r[e]).flat().filter(Boolean))}getEarlyHints(e){const t=new Headers;return e.forEach(({type:e,url:s})=>{e&&["style","script"].includes(e)&&t.append("Link",`<${s}>; rel=preload; as=${e}`)}),t}injectAssets({routerContext:e,matches:t,html:s,isSpa:r},i=!0){const l=this.getAssets(t??e?.matches,r),n=l.map(({type:e,url:t,isPreload:s,content:i=""})=>{switch(e){case"style":return this.isDev?`<style data-vite-dev-id="${t}">${i}</style>`:`<link rel="stylesheet" href="${t}">`;case"script":return s?this.modulePreload||r?`<link rel="modulepreload" as="script" crossorigin href="${t}">`:null:`<script async type="module" crossorigin src="${t}"><\/script>`}return null}).filter(Boolean);return s.header=s.header.replace("</head>",`${n.join("\n")}</head>`),i?this.getEarlyHints(l):new Headers}};export{e as AssetType,t as default};
2
+ //# sourceMappingURL=route-assets-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-assets-memory.js","sources":["../../src/services/route-assets-memory.ts"],"sourcesContent":[null],"names":["AssetType","RouteAssets$1","modulePreload","routesAssets","constructor","manifest","this","isDev","loadAssetsManifest","sortAssets","assets","sort","a","b","weight","Number","isNested","getAssets","routes","_isSpa","routeIds","map","route","id","filter","Boolean","length","routeId","flat","getEarlyHints","headers","Headers","forEach","type","url","includes","append","injectAssets","routerContext","matches","html","isSpa","earlyHints","htmlAssets","isPreload","content","header","replace","join"],"mappings":"AAEA,IAAKA,GAAL,SAAKA,GACHA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,MAAA,QACAA,EAAA,KAAA,MACD,CALD,CAAKA,IAAAA,EAAS,CAAA,IAiCd,IAAAC,EAAA,MACqBC,cAETC,aAEV,WAAAC,CAAYC,EAAgCH,GAAgB,GAC1DI,KAAKH,aAAeE,EACpBC,KAAKJ,cAAgBA,CACvB,CAKA,SAAcK,GACZ,OAAO,CACT,CAKU,kBAAAC,GACR,OAAOF,KAAKH,cAAgB,CAAA,CAC9B,CAKU,UAAAM,CAAWC,GACnB,OAAOA,EAAOC,KAAK,CAACC,EAAGC,IACrBD,EAAEE,SAAWD,EAAEC,OAASC,OAAOH,EAAEI,UAAYD,OAAOF,EAAEG,UAAYJ,EAAEE,OAASD,EAAEC,OAEnF,CAOU,SAAAG,CAAUC,EAAiCC,GACnD,MAAMC,EAAWF,GAAQG,IAAI,EAAGC,WAAYA,EAAMC,IAAIC,OAAOC,UAAY,GAEzE,IAAKL,EAASM,OACZ,MAAO,GAGT,MAAMvB,EAAeG,KAAKE,qBAE1B,OAAOF,KAAKG,WACVW,EACGC,IAAKM,GAAYxB,EAAawB,IAC9BC,OACAJ,OAAOC,SAEd,CAKO,aAAAI,CAAcnB,GACnB,MAAMoB,EAAU,IAAIC,QAUpB,OARArB,EAAOsB,QAAQ,EAAGC,OAAMC,UACjBD,GAAS,CAAC,QAAS,UAAUE,SAASF,IAI3CH,EAAQM,OAAO,OAAQ,IAAIF,uBAAyBD,OAG/CH,CACT,CAKO,YAAAO,EACLC,cAAEA,EAAaC,QAAEA,EAAOC,KAAEA,EAAIC,MAAEA,GAChCC,GAAa,GAEb,MAAMhC,EAASJ,KAAKW,UAAUsB,GAAWD,GAAeC,QAASE,GAC3DE,EAAajC,EAChBW,IAAI,EAAGY,OAAMC,MAAKU,YAAWC,UAAU,OACtC,OAAQZ,GACN,IAAK,QACH,OAAO3B,KAAKC,MACR,4BAA4B2B,MAAQW,YACpC,gCAAgCX,MAEtC,IAAK,SACH,OAAOU,EACHtC,KAAKJ,eAAiBuC,EAEpB,2DAA2DP,MAC3D,KACF,gDAAgDA,gBAGxD,OAAO,OAERV,OAAOC,SAIV,OAFAe,EAAKM,OAASN,EAAKM,OAAOC,QAAQ,UAAW,GAAGJ,EAAWK,KAAK,gBAEzDN,EAAapC,KAAKuB,cAAcnB,GAAU,IAAIqB,OACvD"}
@@ -1,66 +1,20 @@
1
- import type { RouterState, StaticHandlerContext } from 'react-router';
2
- declare enum AssetType {
3
- style = "style",
4
- script = "script",
5
- image = "image",
6
- font = "font"
7
- }
8
- interface IAsset {
9
- type: AssetType;
10
- url: string;
11
- weight: number;
12
- isNested: boolean;
13
- isPreload: boolean;
14
- content?: string;
15
- }
16
- type TAssets = {
17
- [id: string]: IAsset;
18
- };
19
- interface IInjectAssetsContext {
20
- html: {
21
- header: string;
22
- };
23
- routerContext?: StaticHandlerContext;
24
- matches?: RouterState['matches'];
25
- isSpa?: boolean;
26
- }
1
+ import MemoryRouteAssets from './route-assets-memory.js';
2
+ import type { TRouteAssetsManifest } from './route-assets-memory.js';
27
3
  /**
28
- * Load and inject route assets with an independent cache for one build.
4
+ * Keep the Node manifest cache while also accepting a parsed JSON manifest.
29
5
  */
30
- declare class RouteAssets {
6
+ declare class RouteAssets extends MemoryRouteAssets {
31
7
  protected readonly outputDir: string;
32
- protected readonly modulePreload: boolean;
33
- protected routesAssets: Record<string, IAsset[]> | null;
34
- constructor(buildDir: string, modulePreload?: boolean);
35
- /**
36
- * Development manifests override this to inject inline styles.
37
- */
38
- protected get isDev(): boolean;
8
+ constructor(buildDir: string | TRouteAssetsManifest, modulePreload?: boolean);
39
9
  /**
40
10
  * Get assets manifest file name.
41
11
  */
42
12
  protected getAssetsManifestFile(): string;
43
13
  /**
44
- * Load assets manifest
45
- */
46
- protected loadAssetsManifest(): Record<string, IAsset[]>;
47
- /**
48
- * Sort assets
49
- */
50
- protected sortAssets(assets: IAsset[]): IAsset[];
51
- /**
52
- * Get route assets
53
- */
54
- protected getAssets(routes?: RouterState['matches'], _isSpa?: boolean): IAsset[];
55
- /**
56
- * Build preload hints without depending on a particular HTTP transport.
57
- */
58
- getEarlyHints(assets: IAsset[]): Headers;
59
- /**
60
- * Inject route assets to head html
14
+ * Load and cache the Node manifest on first use.
61
15
  */
62
- injectAssets({ routerContext, matches, html, isSpa }: IInjectAssetsContext): Headers;
16
+ protected loadAssetsManifest(): TRouteAssetsManifest;
63
17
  }
64
- export { AssetType };
65
- export type { IAsset, TAssets };
18
+ export { AssetType } from './route-assets-memory.js';
19
+ export type { IAsset, TAssets, TRouteAssetsManifest } from './route-assets-memory.js';
66
20
  export default RouteAssets;
@@ -1,2 +1,2 @@
1
- import e from"node:fs";import s from"node:path";var t;!function(e){e.style="style",e.script="script",e.image="image",e.font="font"}(t||(t={}));class r{outputDir;modulePreload;routesAssets=null;constructor(e,t=!1){this.outputDir=s.resolve(e),this.modulePreload=t}get isDev(){return!1}getAssetsManifestFile(){return s.join(this.outputDir,"server","assets-manifest.json")}loadAssetsManifest(){if(null!==this.routesAssets)return this.routesAssets;const s=this.getAssetsManifestFile();return e.existsSync(s)?(this.routesAssets=JSON.parse(e.readFileSync(s,{encoding:"utf-8"})),this.routesAssets):{}}sortAssets(e){return e.sort((e,s)=>e.weight===s.weight?Number(e.isNested)-Number(s.isNested):e.weight-s.weight)}getAssets(e,s){const t=e?.map(({route:e})=>e.id).filter(Boolean)??[];if(!t.length)return[];const r=this.loadAssetsManifest();return this.sortAssets(t.map(e=>r[e]).flat().filter(Boolean))}getEarlyHints(e){const s=new Headers;return e.forEach(({type:e,url:t})=>{e&&["style","script"].includes(e)&&s.append("Link",`<${t}>; rel=preload; as=${e}`)}),s}injectAssets({routerContext:e,matches:s,html:r,isSpa:i}){const o=this.getAssets(s??e?.matches,i),n=o.map(({type:e,url:s,isPreload:r,content:o=""})=>{switch(e){case t.style:return this.isDev?`<style data-vite-dev-id="${s}">${o}</style>`:`<link rel="stylesheet" href="${s}">`;case t.script:return r?this.modulePreload||i?`<link rel="modulepreload" as="script" crossorigin href="${s}">`:null:`<script async type="module" crossorigin src="${s}"><\/script>`}return null}).filter(Boolean);return r.header=r.header.replace("</head>",`${n.join("\n")}</head>`),this.getEarlyHints(o)}}export{t as AssetType,r as default};
1
+ import s from"node:fs";import t from"node:path";import e from"./route-assets-memory.js";export{AssetType}from"./route-assets-memory.js";class r extends e{outputDir;constructor(s,e=!1){super("string"==typeof s?{}:s,e),this.outputDir="string"==typeof s?t.resolve(s):"",this.routesAssets="string"==typeof s?null:s}getAssetsManifestFile(){return t.join(this.outputDir,"server","assets-manifest.json")}loadAssetsManifest(){if(null!==this.routesAssets)return this.routesAssets;const t=this.getAssetsManifestFile();return s.existsSync(t)?(this.routesAssets=JSON.parse(s.readFileSync(t,"utf8")),this.routesAssets):{}}}export{r as default};
2
2
  //# sourceMappingURL=route-assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-assets.js","sources":["../../src/services/route-assets.ts"],"sourcesContent":[null],"names":["AssetType","RouteAssets","outputDir","modulePreload","routesAssets","constructor","buildDir","this","path","resolve","isDev","getAssetsManifestFile","join","loadAssetsManifest","manifestFile","fs","existsSync","JSON","parse","readFileSync","encoding","sortAssets","assets","sort","a","b","weight","Number","isNested","getAssets","routes","_isSpa","routeIds","map","route","id","filter","Boolean","length","routeId","flat","getEarlyHints","headers","Headers","forEach","type","url","includes","append","injectAssets","routerContext","matches","html","isSpa","htmlAssets","isPreload","content","style","script","header","replace"],"mappings":"gDAIA,IAAKA,GAAL,SAAKA,GACHA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,MAAA,QACAA,EAAA,KAAA,MACD,CALD,CAAKA,IAAAA,EAAS,CAAA,IA8Bd,MAAMC,EACeC,UAEAC,cAETC,aAAgD,KAE1D,WAAAC,CAAYC,EAAkBH,GAAgB,GAC5CI,KAAKL,UAAYM,EAAKC,QAAQH,GAC9BC,KAAKJ,cAAgBA,CACvB,CAKA,SAAcO,GACZ,OAAO,CACT,CAKU,qBAAAC,GACR,OAAOH,EAAKI,KAAKL,KAAKL,UAAW,SAAU,uBAC7C,CAKU,kBAAAW,GACR,GAA0B,OAAtBN,KAAKH,aACP,OAAOG,KAAKH,aAGd,MAAMU,EAAeP,KAAKI,wBAE1B,OAAKI,EAAGC,WAAWF,IAInBP,KAAKH,aAAea,KAAKC,MAAMH,EAAGI,aAAaL,EAAc,CAAEM,SAAU,WAKlEb,KAAKH,cARH,CAAA,CASX,CAKU,UAAAiB,CAAWC,GACnB,OAAOA,EAAOC,KAAK,CAACC,EAAGC,IACrBD,EAAEE,SAAWD,EAAEC,OAASC,OAAOH,EAAEI,UAAYD,OAAOF,EAAEG,UAAYJ,EAAEE,OAASD,EAAEC,OAEnF,CAOU,SAAAG,CAAUC,EAAiCC,GACnD,MAAMC,EAAWF,GAAQG,IAAI,EAAGC,WAAYA,EAAMC,IAAIC,OAAOC,UAAY,GAEzE,IAAKL,EAASM,OACZ,MAAO,GAGT,MAAMlC,EAAeG,KAAKM,qBAE1B,OAAON,KAAKc,WACVW,EACGC,IAAKM,GAAYnC,EAAamC,IAC9BC,OACAJ,OAAOC,SAEd,CAKO,aAAAI,CAAcnB,GACnB,MAAMoB,EAAU,IAAIC,QAUpB,OARArB,EAAOsB,QAAQ,EAAGC,OAAMC,UACjBD,GAAS,CAAC,QAAS,UAAUE,SAASF,IAI3CH,EAAQM,OAAO,OAAQ,IAAIF,uBAAyBD,OAG/CH,CACT,CAKO,YAAAO,EAAaC,cAAEA,EAAaC,QAAEA,EAAOC,KAAEA,EAAIC,MAAEA,IAClD,MAAM/B,EAASf,KAAKsB,UAAUsB,GAAWD,GAAeC,QAASE,GAC3DC,EAAahC,EAChBW,IAAI,EAAGY,OAAMC,MAAKS,YAAWC,UAAU,OACtC,OAAQX,GACN,KAAK7C,EAAUyD,MACb,OAAOlD,KAAKG,MACR,4BAA4BoC,MAAQU,YACpC,gCAAgCV,MAEtC,KAAK9C,EAAU0D,OACb,OAAOH,EACHhD,KAAKJ,eAAiBkD,EAEpB,2DAA2DP,MAC3D,KACF,gDAAgDA,gBAGxD,OAAO,OAERV,OAAOC,SAIV,OAFAe,EAAKO,OAASP,EAAKO,OAAOC,QAAQ,UAAW,GAAGN,EAAW1C,KAAK,gBAEzDL,KAAKkC,cAAcnB,EAC5B"}
1
+ {"version":3,"file":"route-assets.js","sources":["../../src/services/route-assets.ts"],"sourcesContent":[null],"names":["RouteAssets","MemoryRouteAssets","outputDir","constructor","buildDir","modulePreload","super","this","path","resolve","routesAssets","getAssetsManifestFile","join","loadAssetsManifest","manifestFile","fs","existsSync","JSON","parse","readFileSync"],"mappings":"wIAQA,MAAMA,UAAoBC,EACLC,UAEnB,WAAAC,CAAYC,EAAyCC,GAAgB,GACnEC,MAA0B,iBAAbF,EAAwB,CAAA,EAAKA,EAAUC,GACpDE,KAAKL,UAAgC,iBAAbE,EAAwBI,EAAKC,QAAQL,GAAY,GACzEG,KAAKG,aAAmC,iBAAbN,EAAwB,KAAOA,CAC5D,CAKU,qBAAAO,GACR,OAAOH,EAAKI,KAAKL,KAAKL,UAAW,SAAU,uBAC7C,CAKU,kBAAAW,GACR,GAA0B,OAAtBN,KAAKG,aACP,OAAOH,KAAKG,aAGd,MAAMI,EAAeP,KAAKI,wBAE1B,OAAKI,EAAGC,WAAWF,IAInBP,KAAKG,aAAeO,KAAKC,MAAMH,EAAGI,aAAaL,EAAc,SAEtDP,KAAKG,cALH,CAAA,CAMX"}
@@ -1,2 +1,2 @@
1
- import e from"node:fs";import t from"node:path";import s from"chalk";import i from"./parse-routes.js";import r from"./path-normalize.js";import o,{AssetType as a}from"./route-assets.js";class n extends o{static instance=null;config;pathNormalize;root;buildDir;manifestName="manifest.json";viteAliases;basename;renderBuiltUrl;constructor(e,{buildDir:s,viteAliases:i,basename:o,renderBuiltUrl:a}={}){super(t.resolve(e.getParams().root,s||""),e.isModulePreload),this.config=e,this.root=e.getParams().root,this.buildDir=s,this.viteAliases=i??e.getVite()?.config?.resolve.alias,this.pathNormalize=new r(e,i),this.basename=o,this.renderBuiltUrl=a}static get(e,t={}){return null===n.instance&&(n.instance=new n(e,t)),n.instance}get isDev(){return Boolean(this.config.getVite())}getOutDir(){return t.resolve(this.root,this.buildDir||"")}getAssetsManifestFile(){return`${this.getOutDir()}/server/assets-manifest.json`}loadClientManifest(){const s=t.resolve(this.root,`${this.buildDir||""}/client/.vite`),i=`${s}/${this.manifestName}`;if(!e.existsSync(i))return{};const r=JSON.parse(e.readFileSync(i,{encoding:"utf-8"}));return e.rmSync(i),0===e.readdirSync(s).length&&e.rmSync(s,{recursive:!0}),r}getRoutesTreeIds(e,t){const s={};return e.forEach(e=>{const i=[t,String(e.index)].filter(Boolean).join("-"),r=e.id??i;e.import&&(s[r]=this.pathNormalize.getAppPath(e.import)),e.children.length>0&&Object.assign(s,this.getRoutesTreeIds(e.children,i))}),s}getRouteAssets(e,s,i=!1){const r=[...s?.assets??[],...s?.css??[],s?.file].reduce((e,r)=>{if(r){const o=this.getAssetType(r),a=s.isEntry&&s.file===r;if(o){const s=t.posix.normalize(`${this.basename}/${r}`),n=this.renderBuiltUrl?.(s,{type:"asset",ssr:!0,hostId:"",hostType:s.split(".").at(-1)?.toLowerCase()});e[r]={url:"string"==typeof n?n:s,weight:a?1.9:this.getAssetWeight(r),type:o,isNested:i,isPreload:!a}}}return e},{});return s?.imports?.length&&s.imports.forEach(t=>{const s=e[t];s&&Object.assign(r,this.getRouteAssets(e,s,!0))}),r}buildRoutesManifest(){const t=this.loadClientManifest(),s=new i(this.config,this.viteAliases),r=this.getRoutesTreeIds(s.parse()),o=this.pathNormalize.getImportPostfix(),a={};Object.entries(r).forEach(([e,s])=>{const i=o.find(e=>void 0!==t[`${s}${e}`]),r=t[`${s}${i||""}`];a[e]=this.sortAssets(Object.values(this.getRouteAssets(t,r)))}),e.writeFileSync(this.getAssetsManifestFile(),JSON.stringify(a,null,2),{encoding:"utf-8"})}getAssets(e,t){return this.isDev?this.getAssetsDev(e,t):super.getAssets(e)}getDevRouteIds(e){return e?.map(({route:e})=>this.pathNormalize.getAppPath(e?.pathId,!0)).filter(Boolean)??[]}getDevModules(e){const s=this.getDevRouteIds(e),i=this.pathNormalize.getImportPostfix(),r=this.config.getPluginConfig(),o=[r?.clientFile??"client.ts",r?.serverFile??"server.ts"].map(e=>t.resolve(this.root,e)),a=[];return[...o,...s].forEach(e=>{for(const t of i){const s=this.config.getVite()?.moduleGraph.getModuleById(`${e}${t}`);if(s){a.push(s);break}}}),a}async prepareDevAssets(e,t=!1){const s=this.config.getVite();if(!s)return;t&&await Promise.all(this.getDevRouteIds(e).map(async e=>{const t=this.pathNormalize.findAppFile(e);t&&await s.transformRequest(`/@fs/${t}`)}));const i=new Set,r=async e=>{i.has(e.url)||(i.add(e.url),e.file&&/\.(?:css|less|s[ac]ss|styl(?:us)?|pcss|postcss)$/.test(e.file)&&await s.transformRequest(e.url),await Promise.all([...e.importedModules].map(r)))};await Promise.all(this.getDevModules(e).map(r))}getAssetsDev(e,t=!1){const s=Object.assign({},...this.getDevModules(e).map(e=>this.getModuleAssets(e))),i=t?this.getDevRouteIds(e).flatMap(e=>{const t=this.pathNormalize.getImportPostfix().map(t=>this.config.getVite()?.moduleGraph.getModuleById(`${e}${t}`)).find(Boolean);return t?[{type:a.script,url:t.url,weight:2,isNested:!1,isPreload:!0}]:[]}):[];return[...Object.values(s),...i]}getModuleAssets(e,t=new Set){const i=e?.importedModules??e?.clientImportedModules;if(!i?.size||t.has(e.file))return{};let r={};return t.add(e.file),i.forEach(e=>{const{file:i,transformResult:o}=e,n=i?.split(".").at(-1);if(i&&n&&["css","scss","sass","less","styl","stylus","pcss","postcss"].includes(n)){const e=o?.code.match(/__vite__css\s+=\s+"(?<css>.+)"/)?.groups?.css;if(e)try{r[i]={type:a.style,url:i,weight:this.getAssetWeight(i),content:JSON.parse(`{"style": "${e}"}`).style,isNested:Boolean(t.size),isPreload:!1}}catch{console.warn(s.yellowBright("Failed to parse style: ",i))}}else r={...r,...this.getModuleAssets(e,t)}}),r}getAssetWeight(e){switch(this.getAssetType(e)){case a.style:return 1;case a.script:return 2;default:return 3}}getAssetType(e){const t=e.split(".").at(-1)?.toLowerCase();switch(t){case"css":case"scss":return a.style;case"js":return a.script;case"svg":case"jpg":case"jpeg":case"png":case"webp":case"gif":case"ico":return a.image;case"ttf":case"otf":case"woff":case"woff2":return a.font;default:return null}}}export{n as default};
1
+ import e from"node:fs";import t from"node:path";import s from"chalk";import i from"./parse-routes.js";import r from"./path-normalize.js";import o from"./route-assets.js";import{AssetType as a}from"./route-assets-memory.js";class n extends o{static instance=null;config;pathNormalize;root;buildDir;manifestName="manifest.json";viteAliases;basename;renderBuiltUrl;constructor(e,{buildDir:s,viteAliases:i,basename:o,renderBuiltUrl:a}={}){super(t.resolve(e.getParams().root,s||""),e.isModulePreload),this.config=e,this.root=e.getParams().root,this.buildDir=s,this.viteAliases=i??e.getVite()?.config?.resolve.alias,this.pathNormalize=new r(e,i),this.basename=o,this.renderBuiltUrl=a}static get(e,t={}){return null===n.instance&&(n.instance=new n(e,t)),n.instance}get isDev(){return Boolean(this.config.getVite())}getOutDir(){return t.resolve(this.root,this.buildDir||"")}getAssetsManifestFile(){return`${this.getOutDir()}/server/assets-manifest.json`}loadClientManifest(){const s=t.resolve(this.root,`${this.buildDir||""}/client/.vite`),i=`${s}/${this.manifestName}`;if(!e.existsSync(i))return{};const r=JSON.parse(e.readFileSync(i,{encoding:"utf-8"}));return e.rmSync(i),0===e.readdirSync(s).length&&e.rmSync(s,{recursive:!0}),r}getRoutesTreeIds(e,t){const s={};return e.forEach(e=>{const i=[t,String(e.index)].filter(Boolean).join("-"),r=e.id??i;e.import&&(s[r]=this.pathNormalize.getAppPath(e.import)),e.children.length>0&&Object.assign(s,this.getRoutesTreeIds(e.children,i))}),s}getRouteAssets(e,s,i=!1){const r=[...s?.assets??[],...s?.css??[],s?.file].reduce((e,r)=>{if(r){const o=this.getAssetType(r),a=s.isEntry&&s.file===r;if(o){const s=t.posix.normalize(`${this.basename}/${r}`),n=this.renderBuiltUrl?.(s,{type:"asset",ssr:!0,hostId:"",hostType:s.split(".").at(-1)?.toLowerCase()});e[r]={url:"string"==typeof n?n:s,weight:a?1.9:this.getAssetWeight(r),type:o,isNested:i,isPreload:!a}}}return e},{});return s?.imports?.length&&s.imports.forEach(t=>{const s=e[t];s&&Object.assign(r,this.getRouteAssets(e,s,!0))}),r}buildRoutesManifest(){const s=this.loadClientManifest(),r=new i(this.config,this.viteAliases),o=this.getRoutesTreeIds(r.parse()),a=this.pathNormalize.getImportPostfix(),n={};Object.entries(o).forEach(([e,t])=>{const i=a.find(e=>void 0!==s[`${t}${e}`]),r=s[`${t}${i||""}`];n[e]=this.sortAssets(Object.values(this.getRouteAssets(s,r)))});const l=JSON.stringify(n,null,2);e.writeFileSync(this.getAssetsManifestFile(),l,{encoding:"utf-8"});const c=t.join(this.getOutDir(),"client");e.existsSync(c)&&e.writeFileSync(t.join(c,"assets-manifest.json"),l,{encoding:"utf-8"})}getAssets(e,t){return this.isDev?this.getAssetsDev(e,t):super.getAssets(e)}getDevRouteIds(e){return e?.map(({route:e})=>this.pathNormalize.getAppPath(e?.pathId,!0)).filter(Boolean)??[]}getDevModules(e){const s=this.getDevRouteIds(e),i=this.pathNormalize.getImportPostfix(),r=this.config.getPluginConfig(),o=[r?.clientFile??"client.ts",r?.serverFile??"server.ts"].map(e=>t.resolve(this.root,e)),a=[];return[...o,...s].forEach(e=>{for(const t of i){const s=this.config.getVite()?.moduleGraph.getModuleById(`${e}${t}`);if(s){a.push(s);break}}}),a}async prepareDevAssets(e,t=!1){const s=this.config.getVite();if(!s)return;t&&await Promise.all(this.getDevRouteIds(e).map(async e=>{const t=this.pathNormalize.findAppFile(e);t&&await s.transformRequest(`/@fs/${t}`)}));const i=new Set,r=async e=>{i.has(e.url)||(i.add(e.url),e.file&&/\.(?:css|less|s[ac]ss|styl(?:us)?|pcss|postcss)$/.test(e.file)&&await s.transformRequest(e.url),await Promise.all([...e.importedModules].map(r)))};await Promise.all(this.getDevModules(e).map(r))}getAssetsDev(e,t=!1){const s=Object.assign({},...this.getDevModules(e).map(e=>this.getModuleAssets(e))),i=t?this.getDevRouteIds(e).flatMap(e=>{const t=this.pathNormalize.getImportPostfix().map(t=>this.config.getVite()?.moduleGraph.getModuleById(`${e}${t}`)).find(Boolean);return t?[{type:a.script,url:t.url,weight:2,isNested:!1,isPreload:!0}]:[]}):[];return[...Object.values(s),...i]}getModuleAssets(e,t=new Set){const i=e?.importedModules??e?.clientImportedModules;if(!i?.size||t.has(e.file))return{};let r={};return t.add(e.file),i.forEach(e=>{const{file:i,transformResult:o}=e,n=i?.split(".").at(-1);if(i&&n&&["css","scss","sass","less","styl","stylus","pcss","postcss"].includes(n)){const e=o?.code.match(/__vite__css\s+=\s+"(?<css>.+)"/)?.groups?.css;if(e)try{r[i]={type:a.style,url:i,weight:this.getAssetWeight(i),content:JSON.parse(`{"style": "${e}"}`).style,isNested:Boolean(t.size),isPreload:!1}}catch{console.warn(s.yellowBright("Failed to parse style: ",i))}}else r={...r,...this.getModuleAssets(e,t)}}),r}getAssetWeight(e){switch(this.getAssetType(e)){case a.style:return 1;case a.script:return 2;default:return 3}}getAssetType(e){const t=e.split(".").at(-1)?.toLowerCase();switch(t){case"css":case"scss":return a.style;case"js":return a.script;case"svg":case"jpg":case"jpeg":case"png":case"webp":case"gif":case"ico":return a.image;case"ttf":case"otf":case"woff":case"woff2":return a.font;default:return null}}}export{n as default};
2
2
  //# sourceMappingURL=ssr-manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ssr-manifest.js","sources":["../../src/services/ssr-manifest.ts"],"sourcesContent":[null],"names":["SsrManifest","RouteAssets","static","config","pathNormalize","root","buildDir","manifestName","viteAliases","basename","renderBuiltUrl","constructor","super","path","resolve","getParams","isModulePreload","this","getVite","alias","PathNormalize","get","params","instance","isDev","Boolean","getOutDir","getAssetsManifestFile","loadClientManifest","clientManifestDir","clientSsrManifest","fs","existsSync","result","JSON","parse","readFileSync","encoding","rmSync","readdirSync","length","recursive","getRoutesTreeIds","routes","index","forEach","route","position","String","filter","join","routeId","id","import","getAppPath","children","Object","assign","getRouteAssets","manifest","module","isNested","assets","css","file","reduce","res","asset","type","getAssetType","isEntry","filename","posix","normalize","modifiedFilename","ssr","hostId","hostType","split","at","toLowerCase","url","weight","getAssetWeight","isPreload","imports","nestedAsset","nestedModule","buildRoutesManifest","routesService","ParseRoutes","routesPaths","postfixes","getImportPostfix","entries","routePath","routePostfix","find","postfix","undefined","routeMeta","sortAssets","values","writeFileSync","stringify","getAssets","isSpa","getAssetsDev","getDevRouteIds","map","pathId","getDevModules","routeIds","pluginConfig","getPluginConfig","rootIds","clientFile","serverFile","modules","moduleId","ext","moduleGraph","getModuleById","push","prepareDevAssets","vite","Promise","all","async","findAppFile","transformRequest","visited","Set","visit","has","add","test","importedModules","getModuleAssets","scripts","flatMap","AssetType","script","skipModules","clientImportedModules","size","subModule","transformResult","includes","code","match","groups","style","content","console","warn","chalk","yellowBright","image","font"],"mappings":"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"}
1
+ {"version":3,"file":"ssr-manifest.js","sources":["../../src/services/ssr-manifest.ts"],"sourcesContent":[null],"names":["SsrManifest","RouteAssets","static","config","pathNormalize","root","buildDir","manifestName","viteAliases","basename","renderBuiltUrl","constructor","super","path","resolve","getParams","isModulePreload","this","getVite","alias","PathNormalize","get","params","instance","isDev","Boolean","getOutDir","getAssetsManifestFile","loadClientManifest","clientManifestDir","clientSsrManifest","fs","existsSync","result","JSON","parse","readFileSync","encoding","rmSync","readdirSync","length","recursive","getRoutesTreeIds","routes","index","forEach","route","position","String","filter","join","routeId","id","import","getAppPath","children","Object","assign","getRouteAssets","manifest","module","isNested","assets","css","file","reduce","res","asset","type","getAssetType","isEntry","filename","posix","normalize","modifiedFilename","ssr","hostId","hostType","split","at","toLowerCase","url","weight","getAssetWeight","isPreload","imports","nestedAsset","nestedModule","buildRoutesManifest","routesService","ParseRoutes","routesPaths","postfixes","getImportPostfix","entries","routePath","routePostfix","find","postfix","undefined","routeMeta","sortAssets","values","json","stringify","writeFileSync","clientDir","getAssets","isSpa","getAssetsDev","getDevRouteIds","map","pathId","getDevModules","routeIds","pluginConfig","getPluginConfig","rootIds","clientFile","serverFile","modules","moduleId","ext","moduleGraph","getModuleById","push","prepareDevAssets","vite","Promise","all","async","findAppFile","transformRequest","visited","Set","visit","has","add","test","importedModules","getModuleAssets","scripts","flatMap","AssetType","script","skipModules","clientImportedModules","size","subModule","transformResult","includes","code","match","groups","style","content","console","warn","chalk","yellowBright","image","font"],"mappings":"+NAiCA,MAAMA,UAAoBC,EAIdC,gBAAsC,KAK7BC,OAKAC,cAKAC,KAKAC,SAKAC,aAAe,gBAKfC,YAKAC,SAKAC,eAKnB,WAAAC,CACER,GACAG,SAAEA,EAAQE,YAAEA,EAAWC,SAAEA,EAAQC,eAAEA,GAAuC,IAE1EE,MAAMC,EAAKC,QAAQX,EAAOY,YAAYV,KAAMC,GAAY,IAAKH,EAAOa,iBAEpEC,KAAKd,OAASA,EACdc,KAAKZ,KAAOF,EAAOY,YAAYV,KAC/BY,KAAKX,SAAWA,EAChBW,KAAKT,YAAcA,GAAeL,EAAOe,WAAWf,QAAQW,QAAQK,MACpEF,KAAKb,cAAgB,IAAIgB,EAAcjB,EAAQK,GAC/CS,KAAKR,SAAWA,EAChBQ,KAAKP,eAAiBA,CACxB,CAKO,UAAOW,CAAIlB,EAAsBmB,EAA6B,IAKnE,OAJ6B,OAAzBtB,EAAYuB,WACdvB,EAAYuB,SAAW,IAAIvB,EAAYG,EAAQmB,IAG1CtB,EAAYuB,QACrB,CAKA,SAAcC,GACZ,OAAOC,QAAQR,KAAKd,OAAOe,UAC7B,CAKU,SAAAQ,GACR,OAAOb,EAAKC,QAAQG,KAAKZ,KAAMY,KAAKX,UAAY,GAClD,CAKU,qBAAAqB,GACR,MAAO,GAAGV,KAAKS,yCACjB,CAKU,kBAAAE,GACR,MAAMC,EAAoBhB,EAAKC,QAAQG,KAAKZ,KAAM,GAAGY,KAAKX,UAAY,mBAChEwB,EAAoB,GAAGD,KAAqBZ,KAAKV,eAEvD,IAAKwB,EAAGC,WAAWF,GACjB,MAAO,CAAA,EAGT,MAAMG,EAASC,KAAKC,MAClBJ,EAAGK,aAAaN,EAAmB,CAAEO,SAAU,WAUjD,OAPAN,EAAGO,OAAOR,GAGuC,IAA7CC,EAAGQ,YAAYV,GAAmBW,QACpCT,EAAGO,OAAOT,EAAmB,CAAEY,WAAW,IAGrCR,CACT,CAKU,gBAAAS,CACRC,EACAC,GAEA,MAAMX,EAA6C,CAAA,EAenD,OAbAU,EAAOE,QAASC,IACd,MAAMC,EAAW,CAACH,EAAOI,OAAOF,EAAMF,QAAQK,OAAOxB,SAASyB,KAAK,KAC7DC,EAAUL,EAAMM,IAAML,EAExBD,EAAMO,SACRpB,EAAOkB,GAAWlC,KAAKb,cAAckD,WAAWR,EAAMO,SAGpDP,EAAMS,SAASf,OAAS,GAC1BgB,OAAOC,OAAOxB,EAAQhB,KAAKyB,iBAAiBI,EAAMS,SAAUR,MAIzDd,CACT,CAKU,cAAAyB,CACRC,EACAC,EACAC,GAAW,GAEX,MAEMC,EAFa,IAAKF,GAAQE,QAAU,MAASF,GAAQG,KAAO,GAAKH,GAAQI,MAErDC,OACxB,CAACC,EAAKC,KACJ,GAAIA,EAAO,CACT,MAAMC,EAAOnD,KAAKoD,aAAaF,GACzBG,EAAUV,EAAOU,SAAWV,EAAOI,OAASG,EAGlD,GAAIC,EAAM,CACR,MAAMG,EAAW1D,EAAK2D,MAAMC,UAAU,GAAGxD,KAAKR,YAAY0D,KACpDO,EAAmBzD,KAAKP,iBAAiB6D,EAAU,CACvDH,KAAM,QACNO,KAAK,EACLC,OAAQ,GACRC,SAAUN,EAASO,MAAM,KAAKC,IAAG,IAAKC,gBAGxCd,EAAIC,GAAS,CACXc,IAAiC,iBAArBP,EAAgCA,EAAmBH,EAC/DW,OAAQZ,EAAU,IAAMrD,KAAKkE,eAAehB,GAC5CC,OACAP,WACAuB,WAAYd,EAEhB,CACF,CAEA,OAAOJ,GAET,CAAA,GAcF,OAVIN,GAAQyB,SAAS7C,QACnBoB,EAAOyB,QAAQxC,QAASyC,IACtB,MAAMC,EAAe5B,EAAS2B,GAE1BC,GACF/B,OAAOC,OAAOK,EAAQ7C,KAAKyC,eAAeC,EAAU4B,GAAc,MAKjEzB,CACT,CAKO,mBAAA0B,GACL,MAAM7B,EAAW1C,KAAKW,qBAChB6D,EAAgB,IAAIC,EAAYzE,KAAKd,OAAQc,KAAKT,aAClDmF,EAAc1E,KAAKyB,iBAAiB+C,EAActD,SAElDyD,EAAY3E,KAAKb,cAAcyF,mBAC/B5D,EAAmC,CAAA,EAGzCuB,OAAOsC,QAAQH,GAAa9C,QAAQ,EAAEM,EAAS4C,MAC7C,MAAMC,EAAeJ,EAAUK,KAAMC,QAGLC,IAAvBxC,EAFU,GAAGoC,IAAYG,MAK5BE,EAAYzC,EADA,GAAGoC,IAAYC,GAAgB,MAGjD/D,EAAOkB,GAAWlC,KAAKoF,WAAW7C,OAAO8C,OAAOrF,KAAKyC,eAAeC,EAAUyC,OAGhF,MAAMG,EAAOrE,KAAKsE,UAAUvE,EAAQ,KAAM,GAE1CF,EAAG0E,cAAcxF,KAAKU,wBAAyB4E,EAAM,CAAElE,SAAU,UACjE,MAAMqE,EAAY7F,EAAKqC,KAAKjC,KAAKS,YAAa,UAG1CK,EAAGC,WAAW0E,IAChB3E,EAAG0E,cAAc5F,EAAKqC,KAAKwD,EAAW,wBAAyBH,EAAM,CAAElE,SAAU,SAErF,CAKU,SAAAsE,CAAUhE,EAAiCiE,GACnD,OAAO3F,KAAKO,MAAQP,KAAK4F,aAAalE,EAAQiE,GAAShG,MAAM+F,UAAUhE,EACzE,CAKU,cAAAmE,CAAenE,GACvB,OACGA,GACGoE,IAAI,EAAGjE,WAAY7B,KAAKb,cAAckD,WAAYR,GAAuBkE,QAAQ,IAClF/D,OAAOxB,UAAyB,EAEvC,CAKU,aAAAwF,CAActE,GACtB,MAAMuE,EAAWjG,KAAK6F,eAAenE,GAE/BiD,EAAY3E,KAAKb,cAAcyF,mBAC/BsB,EAAelG,KAAKd,OAAOiH,kBAC3BC,EAAU,CACdF,GAAcG,YAAc,YAC5BH,GAAcI,YAAc,aAC5BR,IAAK/C,GAASnD,EAAKC,QAAQG,KAAKZ,KAAM2D,IAClCwD,EAAwB,GAa9B,MAXA,IAAIH,KAAYH,GAAUrE,QAAS4E,IACjC,IAAK,MAAMC,KAAO9B,EAAW,CAC3B,MAAMhC,EAAS3C,KAAKd,OAAOe,WAAWyG,YAAYC,cAAc,GAAGH,IAAWC,KAE9E,GAAI9D,EAAQ,CACV4D,EAAQK,KAAKjE,GACb,KACF,CACF,IAGK4D,CACT,CAKO,sBAAMM,CAAiBnF,EAAiCiE,GAAQ,GACrE,MAAMmB,EAAO9G,KAAKd,OAAOe,UAEzB,IAAK6G,EACH,OAGEnB,SACIoB,QAAQC,IACZhH,KAAK6F,eAAenE,GAAQoE,IAAImB,MAAO9E,IACrC,MAAMY,EAAO/C,KAAKb,cAAc+H,YAAY/E,GAExCY,SACI+D,EAAKK,iBAAiB,QAAQpE,QAM5C,MAAMqE,EAAU,IAAIC,IAKdC,EAAQL,MAAOtE,IACfyE,EAAQG,IAAI5E,EAAOqB,OAIvBoD,EAAQI,IAAI7E,EAAOqB,KAEfrB,EAAOI,MAAQ,mDAAmD0E,KAAK9E,EAAOI,aAC1E+D,EAAKK,iBAAiBxE,EAAOqB,WAG/B+C,QAAQC,IAAI,IAAIrE,EAAO+E,iBAAiB5B,IAAIwB,YAG9CP,QAAQC,IAAIhH,KAAKgG,cAActE,GAAQoE,IAAIwB,GACnD,CAKU,YAAA1B,CAAalE,EAAiCiE,GAAQ,GAC9D,MAAM9C,EAASN,OAAOC,OACpB,CAAA,KACGxC,KAAKgG,cAActE,GAAQoE,IAAKnD,GAAW3C,KAAK2H,gBAAgBhF,KAG/DiF,EAAoBjC,EACtB3F,KAAK6F,eAAenE,GAAQmG,QAAS1F,IACnC,MAAMQ,EAAS3C,KAAKb,cACjByF,mBACAkB,IAAKW,GAAQzG,KAAKd,OAAOe,WAAWyG,YAAYC,cAAc,GAAGxE,IAAKsE,MACtEzB,KAAKxE,SAER,OAAOmC,EACH,CACE,CACEQ,KAAM2E,EAAUC,OAChB/D,IAAKrB,EAAOqB,IACZC,OAAQ,EACRrB,UAAU,EACVuB,WAAW,IAGf,KAEN,GAEJ,MAAO,IAAI5B,OAAO8C,OAAOxC,MAAY+E,EACvC,CAKU,eAAAD,CAAgBhF,EAAqBqF,EAA2B,IAAIX,KAC5E,MAAMjD,EAAUzB,GAAQ+E,iBAAmB/E,GAAQsF,sBAEnD,IAAK7D,GAAS8D,MAAQF,EAAYT,IAAI5E,EAAQI,MAC5C,MAAO,CAAA,EAGT,IAAIF,EAAkB,CAAA,EAsCtB,OApCAmF,EAAYR,IAAI7E,EAAQI,MAExBqB,EAAQxC,QAASuG,IACf,MAAMpF,KAAEA,EAAIqF,gBAAEA,GAAoBD,EAC5B1B,EAAM1D,GAAMc,MAAM,KAAKC,OAE7B,GACEf,GACA0D,GACA,CAAC,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,SAAU,OAAQ,WAAW4B,SAAS5B,GAC9E,CAEA,MAAM6B,EAAOF,GAAiBE,KAAKC,MAAM,mCAAmCC,QAAQ1F,IAEpF,GAAIwF,EACF,IACEzF,EAAOE,GAAQ,CACbI,KAAM2E,EAAUW,MAChBzE,IAAKjB,EACLkB,OAAQjE,KAAKkE,eAAenB,GAC5B2F,QAAUzH,KAAKC,MAAM,cAAcoH,OAAgCG,MACnE7F,SAAUpC,QAAQwH,EAAYE,MAC9B/D,WAAW,EAEf,CAAE,MACAwE,QAAQC,KAAKC,EAAMC,aAAa,0BAA2B/F,GAC7D,CAEJ,MACEF,EAAS,IACJA,KACA7C,KAAK2H,gBAAgBQ,EAAWH,MAKlCnF,CACT,CAKU,cAAAqB,CAAehB,GAGvB,OAFalD,KAAKoD,aAAaF,IAG7B,KAAK4E,EAAUW,MACb,OAAO,EAET,KAAKX,EAAUC,OACb,OAAO,EAET,QACE,OAAO,EAEb,CAKU,YAAA3E,CAAaF,GACrB,MAAMuD,EAAMvD,EAAMW,MAAM,KAAKC,IAAG,IAAKC,cAErC,OAAQ0C,GACN,IAAK,MACL,IAAK,OACH,OAAOqB,EAAUW,MAEnB,IAAK,KACH,OAAOX,EAAUC,OAEnB,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,MACH,OAAOD,EAAUiB,MAEnB,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,QACH,OAAOjB,EAAUkB,KAEnB,QACE,OAAO,KAEb"}