@lomray/vite-ssr-boost 8.0.0-beta.4 → 8.0.0-beta.6
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/adapters/express/render.d.ts +4 -2
- package/adapters/express/render.js +1 -1
- package/adapters/express/render.js.map +1 -1
- package/adapters/express/server.js.map +1 -1
- package/core/render.d.ts +1 -0
- package/core/render.js +1 -1
- package/core/render.js.map +1 -1
- package/core/transform-html.d.ts +1 -1
- package/core/transform-html.js +1 -1
- package/core/transform-html.js.map +1 -1
- package/package.json +1 -1
- package/services/parse-routes.d.ts +4 -0
- package/services/parse-routes.js +1 -1
- package/services/parse-routes.js.map +1 -1
|
@@ -8,6 +8,7 @@ import type ServerConfig from '../../services/server-config.js';
|
|
|
8
8
|
export interface IRequestContext<TAppProps = Record<any, any>> {
|
|
9
9
|
req: ExpressRequest;
|
|
10
10
|
res: ExpressResponse;
|
|
11
|
+
request: Request;
|
|
11
12
|
appProps: NonNullable<TAppProps>;
|
|
12
13
|
html: {
|
|
13
14
|
header: string;
|
|
@@ -19,7 +20,7 @@ export interface IRequestContext<TAppProps = Record<any, any>> {
|
|
|
19
20
|
hasEarlyHints?: boolean;
|
|
20
21
|
didError?: StreamError;
|
|
21
22
|
}
|
|
22
|
-
export type TRender<TAppProps = Record<any, any>> = (config: ServerConfig, context: IRequestContext<TAppProps>, options: IRenderOptions) => Promise<void>;
|
|
23
|
+
export type TRender<TAppProps = Record<any, any>> = (config: ServerConfig, context: Omit<IRequestContext<TAppProps>, 'request'>, options: IRenderOptions) => Promise<void>;
|
|
23
24
|
export interface IRenderParams<TAppProps = Record<string, any>> {
|
|
24
25
|
App: TApp<TAppProps>;
|
|
25
26
|
handler: StaticHandler;
|
|
@@ -44,6 +45,7 @@ export interface IRenderOptions<TAppProps = Record<string, any>> {
|
|
|
44
45
|
onResponse?: (params: {
|
|
45
46
|
context: IRequestContext<TAppProps>;
|
|
46
47
|
html: string;
|
|
48
|
+
isEnd: boolean;
|
|
47
49
|
}) => string | undefined | void;
|
|
48
50
|
getState?: (params: {
|
|
49
51
|
context: IRequestContext<TAppProps>;
|
|
@@ -59,5 +61,5 @@ export interface IShellReadyOut {
|
|
|
59
61
|
/**
|
|
60
62
|
* Render application
|
|
61
63
|
*/
|
|
62
|
-
declare function render({ App, handler }: IRenderParams, config: ServerConfig,
|
|
64
|
+
declare function render({ App, handler }: IRenderParams, config: ServerConfig, initialContext: Omit<IRequestContext, 'request'>, { onRouterReady, onShellReady, onResponse, onShellError, onError, getBody, getState, abortDelay, }: IRenderOptions): Promise<void>;
|
|
63
65
|
export default render;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"chalk";import r from"react";import t from"./create-request.js";import o from"../../constants/stream-error.js";import s from"../../core/early-hints.js";import{getHeaderEntries as n,getSetCookieHeaders as a}from"../../core/headers.js";import i from"../../core/render.js";import d from"../../node/render-to-stream.js";import c from"../../node/request-signal.js";import m from"../../node/write-early-hints.js";import p,{writeFetchHeaders as l}from"../../node/write-fetch-response.js";import
|
|
1
|
+
import e from"chalk";import r from"react";import t from"./create-request.js";import o from"../../constants/stream-error.js";import s from"../../core/early-hints.js";import{getHeaderEntries as n,getSetCookieHeaders as a}from"../../core/headers.js";import i from"../../core/render.js";import d from"../../node/render-to-stream.js";import c from"../../node/request-signal.js";import m from"../../node/write-early-hints.js";import p,{writeFetchHeaders as l}from"../../node/write-fetch-response.js";import u from"../../services/ssr-manifest.js";const h=(e,r,o)=>{const s={signal:r};return o&&"GET"!==e.method&&"HEAD"!==e.method&&(s.body=o(e)??null),t(e,s)};async function f({App:t,handler:f},x,y,{onRouterReady:g,onShellReady:E,onResponse:S,onShellError:j,onError:w,getBody:C,getState:v,abortDelay:R=15e3}){const{appProps:b,html:q,req:A,res:H}=y,k=x.getLogger(),D=c(A,H);try{const c=Object.assign(y,{request:h(A,D.signal,C)}),L={appProps:b,html:q,request:c.request,response:{headers:new Headers}},P=e=>(c.request=e.request,c.didError=e.didError,c.html=e.html,c.isStream=e.isStream,c.routerContext=e.routerContext,c.serverContext=e.serverContext,c),T=await i({createApp:(e,o)=>r.createElement(t,{server:{...o.appProps,req:A}},e),handler:f,renderToStream:d},L,{abortDelay:R,getState:v?({context:e})=>v({context:P(e)}):void 0,onError:({context:r,error:t})=>{const{code:s,message:n}=t;if(w?.({context:P(r),error:t}),k.info(e.red(`Stream error. Code: ${s}`)),[o.RenderAborted,o.RenderTimeout,o.RenderCancel].includes(s))return void k.info(e.dim(n));const{original:a}=t;k.error(a)},onResponse:S?({context:e,html:r,isEnd:t})=>S({context:P(e),html:r,isEnd:t}):void 0,onRouterReady:g?({context:e})=>g({context:P(e)}):void 0,onShellError:j?({context:e,error:r})=>j({context:P(e),error:r}):void 0,onShellReady:({context:e})=>{const r=P(e);((e,r)=>{if(r.headersSent||r.writableEnded)return;r.status(e.response.status??200),n(e.response.headers).forEach(([e,t])=>r.setHeader(e,t));const t=a(e.response.headers);t.length&&r.setHeader("Set-Cookie",t)})(e,H);const t=E?.({context:r});return((e,r)=>{const t=new Headers(e.response.headers);t.delete("Set-Cookie");for(const[e,o]of Object.entries(r.getHeaders()))if("set-cookie"!==e.toLowerCase()&&void 0!==o)if(Array.isArray(o))for(const r of o)t.append(e,r);else t.set(e,"number"==typeof o?String(o):o);e.response.headers=t,e.response.status=r.statusCode})(e,H),t??{}},prepare:async({context:e,executionContext:r})=>{const t=P(e),o=u.get(x);await o.prepareDevAssets(e.routerContext?.matches);const n=o.injectAssets(t);t.hasEarlyHints&&await s(r,n)},routerRequestContext:c},{onEarlyHints:e=>m(H,e)});P(L),await(async(e,r)=>{const t=r.headers.get("Location");if(t&&r.status>=300&&r.status<400&&!e.headersSent&&!e.writableEnded&&!e.destroyed)return l(e,r),await(r.body?.cancel()),void e.redirect(r.status,t);await p(e,r)})(H,T)}finally{D.dispose()}}export{f as default};
|
|
2
2
|
//# sourceMappingURL=render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["../../../src/adapters/express/render.tsx"],"sourcesContent":[null],"names":["createRenderRequest","req","signal","getBody","options","method","body","createFetchRequest","async","render","App","handler","config","
|
|
1
|
+
{"version":3,"file":"render.js","sources":["../../../src/adapters/express/render.tsx"],"sourcesContent":[null],"names":["createRenderRequest","req","signal","getBody","options","method","body","createFetchRequest","async","render","App","handler","config","initialContext","onRouterReady","onShellReady","onResponse","onShellError","onError","getState","abortDelay","appProps","html","shellHtml","res","Logger","getLogger","requestSignal","createRequestSignal","context","Object","assign","request","coreContext","response","headers","Headers","syncContext","updated","didError","isStream","routerContext","serverContext","coreRender","createApp","children","React","createElement","server","renderToStream","undefined","error","code","message","info","chalk","red","StreamError","RenderAborted","RenderTimeout","RenderCancel","includes","dim","original","isEnd","legacyContext","headersSent","writableEnded","status","getHeaderEntries","forEach","name","value","setHeader","cookies","getSetCookieHeaders","length","prepareResponse","shell","delete","entries","getHeaders","toLowerCase","Array","isArray","item","append","set","String","statusCode","syncResponse","prepare","executionContext","manifest","SsrManifest","get","prepareDevAssets","matches","hints","injectAssets","hasEarlyHints","emitEarlyHints","routerRequestContext","onEarlyHints","writeEarlyHints","location","destroyed","writeFetchHeaders","cancel","redirect","writeFetchResponse","writeResponse","dispose"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sources":["../../../src/adapters/express/server.ts"],"sourcesContent":[null],"names":["async","createServer","config","app","express","disable","isProd","set","serverApi","ServerApi","setApp","prepareServer","PrepareServer","init","vite","server","middlewareMode","watch","usePolling","interval","appType","mode","use","middlewares","setVite","isSPA","getParams","onAppCreated","root","publicDir","compression","compressionConfig","expressStatic","getMiddlewaresConfig","req","_","next","url","hasAccessIndexHtml","basename","expressStaticOpts","static","path","resolve","index","undefined","res","html","loadHtml","join","send","e","getLogger","error","message","render","onRequest","renderParams","clientHtml","Promise","all","loadEntrypoint","appProps","hasEarlyHints","shouldSkip","shouldCancel","header","footer","
|
|
1
|
+
{"version":3,"file":"server.js","sources":["../../../src/adapters/express/server.ts"],"sourcesContent":[null],"names":["async","createServer","config","app","express","disable","isProd","set","serverApi","ServerApi","setApp","prepareServer","PrepareServer","init","vite","server","middlewareMode","watch","usePolling","interval","appType","mode","use","middlewares","setVite","isSPA","getParams","onAppCreated","root","publicDir","compression","compressionConfig","expressStatic","getMiddlewaresConfig","req","_","next","url","hasAccessIndexHtml","basename","expressStaticOpts","static","path","resolve","index","undefined","res","html","loadHtml","join","send","e","getLogger","error","message","render","onRequest","renderParams","clientHtml","Promise","all","loadEntrypoint","appProps","hasEarlyHints","shouldSkip","shouldCancel","header","footer","renderInput","run","version","isPrintInfo","port","host","isHTTPS","Boolean","getVite","https","isHost","http","listen","onServerStarted","printServerInfo"],"mappings":"+PAqBAA,eAAeC,EAAaC,GAC1B,MAAMC,EAAMC,IAAUC,QAAQ,gBAE1BH,EAAOI,QACTH,EAAII,IAAI,MAAO,cAGjB,MAAMC,EAAY,IAAIC,EAEtBP,EAAOQ,OAAOP,GAEd,MAAMQ,EAAgBC,EAAcC,KAAKX,EAAQM,GAEjD,IAAKN,EAAOI,OAAQ,CAMlB,MAAMQ,qBACS,UACbb,aAAa,CACbc,OAAQ,CACNC,gBAAgB,EAChBC,MAAO,CAKLC,YAAY,EACZC,SAAU,MAGdC,QAAS,SACTC,KAAMnB,EAAOmB,OAMflB,EAAImB,IAAIR,EAAKS,aAEbrB,EAAOsB,QAAQV,EACjB,CAEA,MAAMW,MAAEA,GAAUvB,EAAOwB,YAMzB,GAJKD,SACGd,EAAcgB,eAGlBzB,EAAOI,OAAQ,CACjB,MAAMsB,KAAEA,EAAIC,UAAEA,GAAc3B,EAAOwB,aAC3BI,YAAaC,EAAiBC,cAAEA,GAAkBrB,EAAcsB,uBAmBxE,GAjBIF,GACF5B,EAAImB,IAAIQ,EAAYC,IAGjBN,GAIHtB,EAAImB,IAAI,CAACY,EAAKC,EAAGC,KACC,gBAAZF,EAAIG,KAA0B7B,EAAU8B,uBAC1CJ,EAAIG,IAAM,yBAGZD,MAIAJ,EAAe,CACjB,MAAMO,SAAEA,KAAaC,GAAsBR,EAE3C7B,EAAImB,IACFiB,EACAnC,EAAQqC,OAAOC,EAAKC,QAAQ,GAAGf,KAAQC,KAAc,IAChDW,EACHI,QAAOnB,QAAQoB,IAGrB,CACF,CA8DA,OAzDKpB,EAyCHtB,EAAImB,IAAI,OAAQ,CAACY,EAAKY,EAAKV,KACpB,WACH,IACE,MAAMW,SAAcpC,EAAcqC,SAASd,IAAMe,KAAK,IAEtDH,EAAII,KAAKH,EACX,CAAE,MAAOI,GACPjD,EACGkD,YACAC,MAAM,6BAA8BF,GAAaG,UAAW,CAAED,MAAOF,IACxEf,EAAKe,EACP,CACD,EAXI,KAzCPhD,EAAImB,IAAI,OAAQ,CAACY,EAAKY,EAAKV,KACpB,WACH,IACE,OAAOmB,OAAEA,EAAMC,UAAEA,KAAcC,GAAgBC,SAAoBC,QAAQC,IAAI,CAC7EjD,EAAckD,iBACdlD,EAAcqC,SAASd,MAEnB4B,SAAEA,EAAQC,cAAEA,EAAaC,WAAEA,EAAUC,aAAEA,SACpCT,IAAYtB,EAAKY,KAAS,CAAA,GAC5BoB,EAAQC,GAAUT,EAEzB,GAAIO,EACF,OAGF,GAAID,EACF,OAAO5B,IAGT,MAAMgC,EAAsC,CAC1ClC,MACAY,MACAiB,gBACAD,SAAUA,GAAY,CAAA,EACtBf,KAAM,CAAEmB,SAAQC,iBAGZZ,EAAOrD,EAAQkE,EAAaX,EACpC,CAAE,MAAON,GACPjD,EACGkD,YACAC,MAAM,6BAA8BF,GAAaG,UAAW,CAAED,MAAOF,IACxEf,EAAKe,EACP,CACD,EAjCI,KAuDF,CAILkB,IAAK,EAAGC,UAASC,eAAc,GAAS,CAAA,KACtC,MAAMC,KAAEA,EAAIC,KAAEA,GAASvE,EAAOwB,YACxBgD,EAAUC,QAAQzE,EAAO0E,WAAW1E,QAAQa,QAAQ8D,OAKtD3E,EAAO4E,SAAW5E,EAAOI,SAC3BJ,EAAO0E,UAAW1E,OAAOa,OAAO0D,KAAOA,GAGzC,MAAM1D,GACJ2D,EACIG,EAAM5E,aAAaC,EAAO0E,UAAW1E,OAAOa,OAAO8D,MAAQ1E,GAC3D4E,EAAK9E,aAAaE,IACtB6E,OAAOR,EAAMC,EAAM,KACd9D,EAAcsE,kBAAkB9E,EAAKK,EAAWO,GAEhDwD,GAIAW,EAAgBhF,EAAQ,CAAEoE,UAASvD,aAG1C,OAAOA,GAETZ,MAEJ"}
|
package/core/render.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ export interface ICoreRenderOptions<TAppProps = Record<string, any>> {
|
|
|
70
70
|
onResponse?: (params: {
|
|
71
71
|
context: ISsrRequestContext<TAppProps>;
|
|
72
72
|
html: string;
|
|
73
|
+
isEnd: boolean;
|
|
73
74
|
}) => string | undefined | void;
|
|
74
75
|
onRouterReady?: (params: {
|
|
75
76
|
context: ISsrRequestContext<TAppProps>;
|
package/core/render.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import{createStaticRouter as t,StaticRouterProvider as r}from"react-router";import o from"../constants/stream-error.js";import{ServerProvider as s}from"../context/server.js";import a from"./compose-html.js";import n from"./head-response.js";import{mergeResponseHeaders as c}from"./headers.js";import d from"./transform-html.js";import l from"../helpers/build-custom-state.js";import u from"../helpers/build-router-state.js";import i from"../helpers/obtain-stream-error.js";const m="text/html",h="Content-Type",p=async({createApp:p,handler:x,renderToStream:f},R,{abortDelay:C=15e3,getState:w,onError:E,onResponse:y,onRouterReady:b,onShellError:q,onShellReady:S,prepare:g,routerRequestContext:v},j)=>{const T=await x.query(R.request,{requestContext:v??R});if(T instanceof Response)return n(R.request,c(T,R.response.headers));R.routerContext=T,await(g?.({context:R,executionContext:j}));const{isStream:A=!0}=await(b?.({context:R}))??{};R.isStream=A,R.serverContext={basename:R.routerContext.basename,isServer:!0,response:null};const H=t(x.dataRoutes,R.routerContext),D=e.createElement(s,{context:R.serverContext},p(e.createElement(r,{router:H,context:R.routerContext,hydrate:!1}),R)),L=new AbortController;let k,B,I=!1;const z=()=>J(R.request.signal.reason),F=()=>clearTimeout(K),G=()=>{F(),R.request.signal.removeEventListener("abort",z)},J=e=>{I||(I=!0,k=e,G(),R.didError??=o.RenderCancel,L.abort(e),B?.abort(e))},K=setTimeout(()=>{R.didError=o.RenderTimeout,J()},C);R.request.signal.aborted?J(R.request.signal.reason):R.request.signal.addEventListener("abort",z,{once:!0});try{B=await f(D,{onError:e=>{const t=i(e);!I||t.code!==o.RenderAborted&&e!==L.signal.reason||(t.code=R.didError===o.RenderTimeout?o.RenderTimeout:o.RenderCancel);const{code:r}=t;R.didError??=r,E?.({context:R,error:t})},signal:L.signal}),I&&B.abort(k),B.allReady.then(F,F),await(A?B.shellReady:B.allReady)}catch(e){return J(e),await(B?.stream.cancel(e).catch(()=>{})),((e,t,r)=>{const o=t instanceof Error?t:new Error(String(t)),s=r?.({context:e,error:o})||"<!doctype html><p>Internal Server Error</p>",a=new Headers(e.response.headers);return a.set(h,m),new Response("HEAD"===e.request.method?null:s,{headers:a,status:500})})(R,e,q)}try{const e=R.serverContext.response;if(e&&(M=e,Boolean(M&&M.status>=300&&M.status<400&&M.headers.has("Location"))))return J(),await B.stream.cancel().catch(()=>{}),n(R.request,c(e,R.response.headers));const{header:t,footer:r,headers:o,status:s}=((e,{getState:t,onShellReady:r})=>{const o=e.serverContext.response;e.response.status=o?.status??e.response.status??e.routerContext.statusCode??200,e.response.headers.has(h)||e.response.headers.set(h,m);const s=r?.({context:e})??{},a=u(e.routerContext),n=l(t?.({context:e}));return{header:s.header||e.html.header,footer:n+a+(s.footer||e.html.footer),headers:new Headers(e.response.headers),status:e.response.status}})(R,{getState:w,onShellReady:S});if("HEAD"===R.request.method||[204,205,304].includes(s))return J(),await B.stream.cancel().catch(()=>{}),new Response(null,{headers:o,status:s});const i=a(t,B.stream,r,J,G),p=d(i,y?e=>y({context:R,html:e}):void 0);return B.start(),new Response(p,{headers:o,status:s})}catch(e){throw J(e),B.stream.locked||await B.stream.cancel(e).catch(()=>{}),e}var M};export{p as default};
|
|
1
|
+
import e from"react";import{createStaticRouter as t,StaticRouterProvider as r}from"react-router";import o from"../constants/stream-error.js";import{ServerProvider as s}from"../context/server.js";import a from"./compose-html.js";import n from"./head-response.js";import{mergeResponseHeaders as c}from"./headers.js";import d from"./transform-html.js";import l from"../helpers/build-custom-state.js";import u from"../helpers/build-router-state.js";import i from"../helpers/obtain-stream-error.js";const m="text/html",h="Content-Type",p=async({createApp:p,handler:x,renderToStream:f},R,{abortDelay:C=15e3,getState:w,onError:E,onResponse:y,onRouterReady:b,onShellError:q,onShellReady:S,prepare:g,routerRequestContext:v},j)=>{const T=await x.query(R.request,{requestContext:v??R});if(T instanceof Response)return n(R.request,c(T,R.response.headers));R.routerContext=T,await(g?.({context:R,executionContext:j}));const{isStream:A=!0}=await(b?.({context:R}))??{};R.isStream=A,R.serverContext={basename:R.routerContext.basename,isServer:!0,response:null};const H=t(x.dataRoutes,R.routerContext),D=e.createElement(s,{context:R.serverContext},p(e.createElement(r,{router:H,context:R.routerContext,hydrate:!1}),R)),L=new AbortController;let k,B,I=!1;const z=()=>J(R.request.signal.reason),F=()=>clearTimeout(K),G=()=>{F(),R.request.signal.removeEventListener("abort",z)},J=e=>{I||(I=!0,k=e,G(),R.didError??=o.RenderCancel,L.abort(e),B?.abort(e))},K=setTimeout(()=>{R.didError=o.RenderTimeout,J()},C);R.request.signal.aborted?J(R.request.signal.reason):R.request.signal.addEventListener("abort",z,{once:!0});try{B=await f(D,{onError:e=>{const t=i(e);!I||t.code!==o.RenderAborted&&e!==L.signal.reason||(t.code=R.didError===o.RenderTimeout?o.RenderTimeout:o.RenderCancel);const{code:r}=t;R.didError??=r,E?.({context:R,error:t})},signal:L.signal}),I&&B.abort(k),B.allReady.then(F,F),await(A?B.shellReady:B.allReady)}catch(e){return J(e),await(B?.stream.cancel(e).catch(()=>{})),((e,t,r)=>{const o=t instanceof Error?t:new Error(String(t)),s=r?.({context:e,error:o})||"<!doctype html><p>Internal Server Error</p>",a=new Headers(e.response.headers);return a.set(h,m),new Response("HEAD"===e.request.method?null:s,{headers:a,status:500})})(R,e,q)}try{const e=R.serverContext.response;if(e&&(M=e,Boolean(M&&M.status>=300&&M.status<400&&M.headers.has("Location"))))return J(),await B.stream.cancel().catch(()=>{}),n(R.request,c(e,R.response.headers));const{header:t,footer:r,headers:o,status:s}=((e,{getState:t,onShellReady:r})=>{const o=e.serverContext.response;e.response.status=o?.status??e.response.status??e.routerContext.statusCode??200,e.response.headers.has(h)||e.response.headers.set(h,m);const s=r?.({context:e})??{},a=u(e.routerContext),n=l(t?.({context:e}));return{header:s.header||e.html.header,footer:n+a+(s.footer||e.html.footer),headers:new Headers(e.response.headers),status:e.response.status}})(R,{getState:w,onShellReady:S});if("HEAD"===R.request.method||[204,205,304].includes(s))return J(),await B.stream.cancel().catch(()=>{}),new Response(null,{headers:o,status:s});const i=a(t,B.stream,r,J,G),p=d(i,y?(e,t)=>y({context:R,html:e,isEnd:t}):void 0);return B.start(),new Response(p,{headers:o,status:s})}catch(e){throw J(e),B.stream.locked||await B.stream.cancel(e).catch(()=>{}),e}var M};export{p as default};
|
|
2
2
|
//# sourceMappingURL=render.js.map
|
package/core/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["../../src/core/render.tsx"],"sourcesContent":[null],"names":["HTML_CONTENT_TYPE","CONTENT_TYPE","render","async","createApp","handler","renderToStream","context","abortDelay","getState","onError","onResponse","onRouterReady","onShellError","onShellReady","prepare","routerRequestContext","executionContext","queried","query","request","requestContext","Response","headResponse","mergeResponseHeaders","response","headers","routerContext","isStream","serverContext","basename","isServer","router","createStaticRouter","dataRoutes","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","aborted","addEventListener","once","error","streamError","obtainStreamError","code","RenderAborted","allReady","then","shellReady","stream","cancel","catch","shellError","Error","String","html","Headers","set","method","status","createShellErrorResponse","serverResponse","Boolean","has","header","footer","statusCode","shell","routerState","buildRouterState","customState","buildCustomState","prepareHtmlResponse","includes","body","composeHtml","transformed","transformHtml","undefined","start","locked"],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.js","sources":["../../src/core/render.tsx"],"sourcesContent":[null],"names":["HTML_CONTENT_TYPE","CONTENT_TYPE","render","async","createApp","handler","renderToStream","context","abortDelay","getState","onError","onResponse","onRouterReady","onShellError","onShellReady","prepare","routerRequestContext","executionContext","queried","query","request","requestContext","Response","headResponse","mergeResponseHeaders","response","headers","routerContext","isStream","serverContext","basename","isServer","router","createStaticRouter","dataRoutes","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","aborted","addEventListener","once","error","streamError","obtainStreamError","code","RenderAborted","allReady","then","shellReady","stream","cancel","catch","shellError","Error","String","html","Headers","set","method","status","createShellErrorResponse","serverResponse","Boolean","has","header","footer","statusCode","shell","routerState","buildRouterState","customState","buildCustomState","prepareHtmlResponse","includes","body","composeHtml","transformed","transformHtml","isEnd","undefined","start","locked"],"mappings":"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"}
|
package/core/transform-html.d.ts
CHANGED
package/core/transform-html.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=(e,
|
|
1
|
+
const e=(e,n)=>{if(!n)return e;const r=new TextDecoder,o=new TextEncoder,t=(e,r)=>{e&&r.enqueue(o.encode(n(e,!1)??e))};return e.pipeThrough(new TransformStream({flush:e=>{t(r.decode(),e);const c=n("",!0);c&&e.enqueue(o.encode(c))},transform:(e,n)=>t(r.decode(e,{stream:!0}),n)}))};export{e as default};
|
|
2
2
|
//# sourceMappingURL=transform-html.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-html.js","sources":["../../src/core/transform-html.ts"],"sourcesContent":[null],"names":["transformHtml","stream","transform","decoder","TextDecoder","encoder","TextEncoder","apply","html","controller","enqueue","encode","pipeThrough","TransformStream","flush","decode","chunk"],"mappings":"AAKA,MAAMA,EAAgB,CACpBC,EACAC,KAEA,IAAKA,EACH,OAAOD,EAGT,MAAME,EAAU,IAAIC,YACdC,EAAU,IAAIC,YAKdC,EAAQ,CAACC,EAAcC,KACtBD,GAILC,EAAWC,QAAQL,EAAQM,OAAOT,EAAUM,
|
|
1
|
+
{"version":3,"file":"transform-html.js","sources":["../../src/core/transform-html.ts"],"sourcesContent":[null],"names":["transformHtml","stream","transform","decoder","TextDecoder","encoder","TextEncoder","apply","html","controller","enqueue","encode","pipeThrough","TransformStream","flush","decode","chunk"],"mappings":"AAKA,MAAMA,EAAgB,CACpBC,EACAC,KAEA,IAAKA,EACH,OAAOD,EAGT,MAAME,EAAU,IAAIC,YACdC,EAAU,IAAIC,YAKdC,EAAQ,CAACC,EAAcC,KACtBD,GAILC,EAAWC,QAAQL,EAAQM,OAAOT,EAAUM,GAAM,IAAUA,KAG9D,OAAOP,EAAOW,YACZ,IAAIC,gBAAwC,CAI1CC,MAAQL,IACNF,EAAMJ,EAAQY,SAAUN,GAExB,MAAMD,EAAON,EAAU,IAAI,GAEvBM,GACFC,EAAWC,QAAQL,EAAQM,OAAOH,KAOtCN,UAAW,CAACc,EAAOP,IAAeF,EAAMJ,EAAQY,OAAOC,EAAO,CAAEf,QAAQ,IAASQ"}
|
package/package.json
CHANGED
package/services/parse-routes.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"fs";import{resolve as t}from"node:path";import r from"path";import n from"@babel/generator";import*as o from"@babel/parser";import a from"@babel/traverse";import{
|
|
1
|
+
import e from"fs";import{resolve as t}from"node:path";import r from"path";import n from"@babel/generator";import*as o from"@babel/parser";import a from"@babel/traverse";import{isArrayExpression as i,isObjectProperty as s,isIdentifier as l,isBooleanLiteral as p,isJSXElement as u,isFunction as c,objectProperty as m,identifier as f,stringLiteral as d,isJSXIdentifier as h,isObjectExpression as y}from"@babel/types";import E from"../constants/plugin-name.js";import v from"./path-normalize.js";const x=n.default??n,g=a.default??a;class I{static unwrapExpression(e){switch(e?.type){case"TSSatisfiesExpression":case"TSAsExpression":case"TSTypeAssertion":case"TSNonNullExpression":case"ParenthesizedExpression":return I.unwrapExpression(e.expression);default:return e}}pathNormalize;config;constructor(e,t){this.config=e,this.pathNormalize=new v(e,t)}parse(){const{clientFile:e,root:r}=this.config.getParams(),n=t(r,e),o=this.findRoutesEntrypoint(n);if(!o?.routesPath)throw new Error(`Unable to find routes file import in ${e}`);const{routesPath:a,exportName:i}=o,s=this.resolveFilename(a,n);return this.recursiveBuildRoutesTree(s,i)}parseFile(t){try{const r=e.readFileSync(t,"utf-8");return o.parse(r,{sourceType:"module",createImportExpressions:!0,plugins:["typescript","jsx"]})}catch{return null}}getImportPath(e,t){let r=null,n=null;return g(e,{ImportDeclaration(e){const o=e.node;o.specifiers.forEach(e=>{e.local.name===t&&(n="ImportDefaultSpecifier"===e.type?null:t,r=o.source.value)})}}),{routesPath:r,exportName:n}}findRoutesDefinition(e,t){let r=t,n=null;if(g(e,{ExportNamedDeclaration({node:e}){!e.declaration&&e.specifiers.length>0&&e.specifiers.forEach(e=>{const n=e.exported.name;null===t&&"ExportSpecifier"===e.type?"default"===e.local.name&&(r=n):n===t&&(r=e.local.name)})},ExportDefaultDeclaration({node:e}){null===t&&(n=e,"Identifier"===e.declaration.type?r=e.declaration.name:"VariableDeclaration"===e.declaration.type&&(r=e.declaration.declarations[0].id.name))}}),r){let t=null;return g(e,{VariableDeclaration({node:e}){e.declarations.forEach(n=>{n.id.name===r&&(t=e)})}}),t}return n}findRoutesEntrypoint(e){const t=this.parseFile(e);let r=null;return t?(g(t,{CallExpression({node:e}){"entryClient"===e.callee.name&&e.arguments.length>=2&&"Identifier"===e.arguments[1].type&&(r=e.arguments[1].name)}}),this.getImportPath(t,r)):r}resolveFilename(e,t){let n=e;(e.startsWith("./")||e.startsWith("../"))&&t&&(n=r.resolve(r.dirname(t),e));const o=this.pathNormalize.getAppPath(n,!0);return this.pathNormalize.findAppFile(o)}parseRoutesArray(e,t,r){const n=[];return e.forEach((e,o)=>{if("ObjectExpression"===e.type){const a={index:o,import:"",children:[]};e.properties.forEach(e=>{const n=e;if("children"===n.key.name){const e=I.unwrapExpression(n.value);i(e)&&(a.children=this.parseRoutesArray(e.elements,t,r))}if("lazy"===n.key.name&&"ArrowFunctionExpression"===n.value.type){const e=n.value.body;if("ImportExpression"===e.type){const t=e.source;"StringLiteral"===t.type&&(a.import=t.value)}}if("Component"===n.key.name&&"Identifier"===n.value.type){const e=n.value.name,{path:r}=t[e]??{};r&&(a.import=r)}if("element"===n.key.name&&"JSXElement"===n.value.type){const e=n.value?.openingElement?.name?.name,{path:r}=t[e]??{};r&&(a.import=r)}if("children"===n.key.name&&"Identifier"===n.value.type){const e=n.value.name,{path:o,isDefault:i}=t[e]??{};if(o){const t=this.resolveFilename(o,r);t&&(a.children=this.recursiveBuildRoutesTree(t,i?null:e))}}}),(a.import||a.children.length>0)&&n.push(a)}}),n}static parseImportsMap(e){const t={};return g(e,{ImportDeclaration(e){const r=e.node;r.specifiers.forEach(e=>{t[e.local.name]={path:r.source.value,isDefault:"ImportDefaultSpecifier"===e.type}})}}),t}recursiveBuildRoutesTree(e,t=null){if(!e)return[];const r=this.parseFile(e);if(!r)return[];const n=this.findRoutesDefinition(r,t),o=[];if(!n)return o;const a=I.parseImportsMap(r),s=I.unwrapExpression("VariableDeclaration"===n.type?n.declarations[0].init:n.declaration);if(!i(s)){if("ExportDefaultDeclaration"===n.type){return this.config.getLogger().warn(`Routes manifest: default export of ${e} is a ${s?.type} and cannot be analyzed; lazy route assets will not be injected.`),o}throw new Error(`Expected routes array in ${e}, received ${s?.type??"undefined"}.`)}return o.push(...this.parseRoutesArray(s.elements,a,e)),o}static processRouteFileCode(e,t,r,n){e.node.properties.forEach(o=>{if(s(o)&&l(o.key)){if("lazy"===o.key.name&&"ArrowFunctionExpression"===o.value.type){const t=o.value.body,a=e.node.properties.find(e=>s(e)&&l(e.key)&&"onlyClient"===e.key.name);if(o.value={type:"CallExpression",callee:{type:"Identifier",name:"n"},arguments:s(a)&&(p(a.value)||u(a.value)||c(a.value)||l(a.value))?[o.value,a.value]:[o.value]},a&&(e.node.properties=e.node.properties.filter(e=>e!==a)),n(),"ImportExpression"===t.type){const n=t.source,a=e.findParent?.(e=>i(I.unwrapExpression(e.node)));if(a&&"StringLiteral"===n.type&&n.value&&r){const t=m(f("pathId"),d(n.value));e.node.properties.splice(e.node.properties.indexOf(o)+1,0,t)}}}if("element"===o.key.name||"Component"===o.key.name){let n="";u(o.value)&&h(o.value.openingElement.name)?n=o.value.openingElement.name.name:l(o.value)&&(n=o.value.name);const a=e.findParent?.(e=>i(I.unwrapExpression(e.node))),s=t[n]?.path;if(a&&s&&r){const t=m(f("pathId"),d(s));e.node.properties.splice(e.node.properties.indexOf(o)+1,0,t)}}const a=I.unwrapExpression(o.value);"children"===o.key.name&&i(a)&&a.elements.forEach(e=>{y(e)&&I.processRouteFileCode({node:e},t,r,n)})}})}static handleRoutes(e,t){if(!e)return e;const r=o.parse(e,{sourceType:"module",createImportExpressions:!0,plugins:["typescript","jsx"]});if(!r)return e;const n=I.parseImportsMap(r);let a=!1;return g(r,{ObjectExpression(e){I.processRouteFileCode(e,n,t,()=>{a=!0})}}),a&&r.program.body.unshift({type:"ImportDeclaration",specifiers:[{type:"ImportDefaultSpecifier",local:{type:"Identifier",name:"n"}}],source:{type:"StringLiteral",value:`${E}/helpers/import-route`}}),x(r,{retainLines:!0}).code}}export{I as default};
|
|
2
2
|
//# sourceMappingURL=parse-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-routes.js","sources":["../../src/services/parse-routes.ts"],"sourcesContent":[null],"names":["generate","babelGenerate","default","traverse","babelTraverse","ParseRoutes","pathNormalize","config","constructor","viteAliases","this","PathNormalize","parse","clientFile","root","getParams","clientEntrypoint","resolve","routesEntrypoint","findRoutesEntrypoint","routesPath","Error","exportName","routeFilepath","resolveFilename","recursiveBuildRoutesTree","parseFile","filename","code","fs","readFileSync","parser","sourceType","createImportExpressions","plugins","getImportPath","ast","importName","ImportDeclaration","nodePath","importNode","
|
|
1
|
+
{"version":3,"file":"parse-routes.js","sources":["../../src/services/parse-routes.ts"],"sourcesContent":[null],"names":["generate","babelGenerate","default","traverse","babelTraverse","ParseRoutes","unwrapExpression","node","type","expression","pathNormalize","config","constructor","viteAliases","this","PathNormalize","parse","clientFile","root","getParams","clientEntrypoint","resolve","routesEntrypoint","findRoutesEntrypoint","routesPath","Error","exportName","routeFilepath","resolveFilename","recursiveBuildRoutesTree","parseFile","filename","code","fs","readFileSync","parser","sourceType","createImportExpressions","plugins","getImportPath","ast","importName","ImportDeclaration","nodePath","importNode","specifiers","forEach","specifier","local","name","source","value","findRoutesDefinition","exportNameResolved","defaultExportNode","ExportNamedDeclaration","declaration","length","exportedName","exported","ExportDefaultDeclaration","declarations","id","variableNode","VariableDeclaration","routesVariable","CallExpression","callee","arguments","relativeFile","resolvedFilename","startsWith","path","dirname","filepath","getAppPath","findAppFile","parseRoutesArray","elements","importsMap","results","index","routeInfo","import","children","properties","prop","objectProp","key","isArrayExpression","importCall","body","importArg","importPath","openingElement","isDefault","childrenFilePath","push","parseImportsMap","routesNode","routesArray","init","getLogger","warn","processRouteFileCode","shouldAddPathId","addImportRouteWrapper","property","isObjectProperty","isIdentifier","onlyClientProp","find","p","isBooleanLiteral","isJSXElement","isFunction","filter","parent","findParent","pathIdProperty","objectProperty","identifier","stringLiteral","splice","indexOf","componentName","isJSXIdentifier","element","isObjectExpression","handleRoutes","shouldAddRoutesImport","ObjectExpression","program","unshift","PLUGIN_NAME","retainLines"],"mappings":"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"}
|