gemi 0.30.2 → 0.30.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/facades/index.js
CHANGED
|
@@ -74,6 +74,6 @@ if('system'===e||(!e&&'system'===defaultTheme)){
|
|
|
74
74
|
}else if(e){
|
|
75
75
|
c.add(e||'')
|
|
76
76
|
}}catch(e){}}()
|
|
77
|
-
`;async function NV(J,K,Y){let X=`${Y==="italic"?"italic,":""}wght@${Y==="italic"?"1,":""}${K}`,W=(await(await fetch(`https://fonts.googleapis.com/css2?family=${J}:${X}&display=swap`,{headers:{"User-Agent":"Mozilla/5.0 Firefox/1.0"}})).text()).match(/url\(([^)]+)\)/)?.[1];return await fetch(W).then((w)=>w.arrayBuffer())}class m4 extends x0{service;static _name="ViewRouterServiceContainer";flatViewRoutes={};routeManifest={};componentTree=[];flatComponentTree=[];root=null;constructor(J){super();this.service=J;let K={"/":J.rootRouter,"/auth":K6};this.flatViewRoutes=i5(K),this.routeManifest=o5(K),this.componentTree=r5(K),this.flatComponentTree=x4(this.componentTree),this.root=J.root}boot(){}async onRequestEnd(J){if(!J.cookies.has("session_id"))J.ctx().setCookie("session_id",Bun.randomUUIDv7(),{httpOnly:!0,secure:!0,sameSite:"Strict",expires:new Date(Date.now()+31536000000)});return await this.service.onRequestEnd(J)}async render(J){let{csrfTokenHMAC:K,currentPathName:Y,headers:X,i18n:Z,params:Q,pathname:W,prefetchedData:w,url:H,user:z,viewData:U,breadcrumbs:V,urlLocaleSegment:$,meta:B,isOgRequest:M,appId:A}=J,q=W.replace(`/${$}`,""),O={kind:"view",data:{meta:B,pageData:{[q]:U},__csrf:K.toString("base64"),prefetchedData:w,i18n:Z,auth:{user:z},routeManifest:this.routeManifest,breadcrumbs:V,router:{urlLocaleSegment:$,pathname:Y,params:Q,currentPath:W,searchParams:H.search,is404:!Y?!0:!1},appId:A,componentTree:[["404",[]],...this.componentTree]},head:{}},j=this.root,E=this.routeManifest[Y];return async(R)=>{let{bootstrapModules:_,loaders:L,getStyles:T,viewImportMap:D,cssManifest:P,ogMap:x}=R;if(M){let c=null,i=null;for(let C of E)if(typeof x[C]==="function")i=C,c=x[C];if(!c)return new Response("Not found",{status:404});let r=Object.values(O.data.pageData)[0];try{await h4(i8(c,r[i]),{onError:()=>{}})}catch(C){let{fonts:S,...I}=C.satoriOptions,f=await Promise.all(S.map((m)=>{return NV(m.name,m.weight,m.style).then((d)=>({...m,data:d}))})),l=new Headers(X);l.set("Content-Type","image/png");let u=await lK(C.jsx,{...I,fonts:f}),p=await GV(Buffer.from(u)).png({compressionLevel:0,effort:10}).toBuffer();return new Response(p,{headers:l})}return new Response("data")}O.data.cssManifest=P;try{let c=await h4(i8(MV,{children:[...await T(E),i8("script",{key:"theme-script",dangerouslySetInnerHTML:{__html:qV}}),i8(j,{data:O.data,viewImportMap:D,key:"root"})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(O.data)}; window.loaders=${L}`,bootstrapModules:_});return new Response(c,{status:!Y?404:200,headers:X})}catch(c){let i=await h4(i8("div"),{bootstrapScriptContent:`window.error= ${JSON.stringify(c.message)}; window.stack_trace=${JSON.stringify(c.stack)};window.__GEMI_DATA__ = ${JSON.stringify(O.data)}; window.loaders=${L}`,bootstrapModules:_});return new Response(i,{status:!Y?404:200,headers:X})}}}async handleViewRequest(J){let K=new URL(J.url),Y=K.pathname.endsWith(".json"),X=K.pathname.endsWith(".og"),Z=K.pathname.replace(".json","").replace(".og",""),[,Q,...W]=Z.split("/"),w=`/${W.join("/")}`,H=null,z=null,U=C0.use();if(!U.service.supportedLocales.includes(Q))w=Z;else H=Q,z=Q;if(U.isEnabled&&!X){let O=C0.use().detectLocale(new W0(J,{},"view",w));if(z===null&&O!==U.service.defaultLocale){let j=C0.use().detectLocale(new W0(J,{},"view",w)),E=K.pathname==="/"?"":K.pathname;return new Response("",{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:`/${j}${E}`}})}}w=w.replace("//","/");let $=[],B=[],M=null,A={};try{for(let[O,j]of Object.entries(this.flatViewRoutes)){let E=new cK({pathname:O});if(E.test({pathname:w})){M=O,A=E.exec({pathname:w})?.pathname.groups,$=j.exec,B=j.middleware;break}}}catch(O){throw O}let q=new W0(J,A,"view",M);return await M0.run(q,async()=>{let O=null,j=M0.getStore();if(z){let R=z.replaceAll("/","");w8.setLocale(R)}else w8.setLocale();let E=j.req;try{await j8.use().runMiddleware(B);let R=C0.use(),_=R.isEnabled,L={};if(_){let u=null;if(z)u=z.replaceAll("/",""),j.setLocale(u);else u=R.detectLocale(new W0(J,E.params)),j.setLocale(u);let p=R.getPageTranslations(u,E.routePath);L={supportedLocales:R.service.supportedLocales,currentLocale:u,dictionary:{[u]:p},defaultLocale:R.service.defaultLocale}}let T=await Promise.all([...$.map((u)=>u(E)),...Array.from(j.prefetchPromiseQueue).map((u)=>u())]),D=j.cookies,P=j.headers,x=j.prefetchedResources;O={data:T,cookies:D,headers:P,user:j.user,prefetchedData:Object.fromEntries(x.entries()),currentPathName:E.routePath,params:E.params,urlLocaleSegment:H,meta:j.renderMeta(),appId:b4.use().service.id};let{params:c,currentPathName:i,user:r}=O,C={},S={};for(let u of T){let[p,m]=Object.entries(u)?.[0]??[];if(!p||!m)continue;S[`${p}:${i}`]=m.breadcrumb,C[p]=m}let I=this.routeManifest[i];if(I?.[I?.length??-1]==="FILE"){let u=C.FILE;return P.set("Content-Type",u.type||"application/octet-stream"),new Response(u.stream(),{headers:P})}if(Y)return P.set("Content-Type","application/json"),D.forEach((u)=>P.append("Set-Cookie",u.toString())),await this.service.onRequestEnd(E),new Response(JSON.stringify({meta:O.meta,data:{[w]:C},breadcrumbs:S,prefetchedData:O.prefetchedData,i18n:L,is404:!i,appId:O.appId}),{headers:P});P.set("Content-Type","text/html");for(let u of D)P.append("Set-Cookie",u.toString());let l=Bun.CSRF.generate(process.env.SECRET);P.append("Set-Cookie",`csrf_token=${l}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now()+86400000).toUTCString()}`);try{await this.onRequestEnd(E)}catch(u){n5.error(u?.message??'Error in "onRequestEnd" event handler',{err:JSON.stringify(u)})}return await this.render({csrfTokenHMAC:Buffer.from(""),currentPathName:i,headers:P,i18n:L,params:c,pathname:K.pathname,prefetchedData:O.prefetchedData,url:K,user:r,viewData:C,breadcrumbs:S,urlLocaleSegment:H,meta:O.meta,appId:O.appId,isOgRequest:X})}catch(R){if(R.kind===o8)if(Y){let{status:_=400,data:L,directive:T,headers:D}=R.payload.api;return new Response(JSON.stringify({data:L,directive:T}),{headers:D,status:_})}else{let{status:_=400,error:L}=R.payload.view;return new Response(L?.message,{...R.payload.view,status:_})}throw this.service.onRequestFail(E,R),R}})}}class uK extends M1{routes={"/api-routes":this.get(()=>{let J=s5.use().flatRoutes,K=[];for(let[Y,X]of Object.entries(J))for(let[Z,Q]of Object.entries(X)){let{exec:W,middleware:w}=Q;K.push({path:Y,method:Z,middleware:w})}return K}),"/view-routes":this.get(()=>{let J=m4.use().flatViewRoutes,K=[];for(let[Y,{middleware:X,viewPath:Z}]of Object.entries(J))K.push({path:Y,method:"GET",viewPath:Z,middleware:X});return K})}}class s5 extends x0{service;static _name="ApiRouterServiceContainer";flatRoutes={};constructor(J){super();this.service=J;this.flatRoutes=w6({"/":this.service.rootRouter.bind(this.service),"/auth":Y6,"/__gemi__/services/i18n":X6,"/__gemi__/services/logs":H6,"/__gemi__/services/image":Z6,"/__gemi__/debug":uK})}getRouteHandlerAndParams(J){let Y=new URL(J.url).pathname.replace("/api",""),X={},Z;for(let[Q]of Object.entries(this.flatRoutes))try{let W=new URLPattern({pathname:Q});if(W.test({pathname:Y})){Z=Q,X=W.exec({pathname:Y})?.pathname.groups;break}}catch(W){console.error(W)}return{params:X,path:Z}}async runRouteMiddleware(J,K){let X=this.flatRoutes[J][K.rawRequest.method].middleware;try{await j8.use().runMiddleware(X)}catch(Z){if(Z.kind===o8){if(K.rawRequest.url.includes("/api")){let{status:Q=400,data:W,headers:w}=Z.payload.api;return new Response(JSON.stringify(W),{status:Q,headers:{"Content-Type":"application/json",...w}})}}else throw this.service.onRequestFail(K,Z),console.error(Z),Z}}async getRouteData(J){let K=this.flatRoutes[J],Y=M0.getStore(),X=K[Y.req.rawRequest.method].exec??(()=>Promise.resolve({})),Z={};try{Z=await X()}catch(Q){if(Q.kind===o8){let{status:W=400,data:w,headers:H}=Q.payload.api;return new Response(JSON.stringify(w),{status:W,headers:{"Content-Type":"application/json",...H}})}throw this.service.onRequestFail(Y.req,Q),console.error(Q),Q}return Z}async handleApiRequest(J){let{params:K,path:Y}=this.getRouteHandlerAndParams(J),X=this.flatRoutes[Y];if(!X||!X[J.method])return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404});let Z=new W0(J,K,"api",Y);if(!J.url.includes("/__gemi__"))this.service.onRequestStart(Z);return await M0.run(Z,async()=>{let Q=M0.getStore(),W=C0.use();if(W.isEnabled){let U=W.detectLocale(Z);Q.setLocale(U)}Q.setRequest(Z);let w=await this.runRouteMiddleware(Y,Z);if(w instanceof Response)return w;let H=await this.getRouteData(Y);if(H instanceof Response)return H;let z=Q.headers;if(z.append("Content-Type","application/json"),Q.cookies.forEach((U)=>z.append("Set-Cookie",U.toString())),Q.destroy(),!J.url.includes("/__gemi__"))this.service.onRequestEnd(Z);return new Response(JSON.stringify(H),{headers:z})})}}class a5{static prepare(J,...K){let Y={params:{},search:{}},[X={}]=K,{search:Z,params:Q}={...Y,...X},W=M0.getStore();if(W.req.kind==="api")throw Error("Query.prefetch() cannot be called from an API request");let w=W.req.rawRequest,H=new URL(w.url),z=new URLSearchParams(p4(Z));z.delete("json"),z.sort();let U=[`${p1(J,Q)}`,z.toString()].filter((q)=>q.length>0).join("?"),V=`${H.origin}/${U}`,$=new Request(V,{headers:w.headers}),B=new W0($,Q),M=(q)=>{W.prefetchedResources.set(p1(J,Q),{[z.toString()]:q})},A=()=>{return M0.run(B,async()=>{let q=await s5.use().getRouteData(J);return M(q),q})};return{instant:A,prefetch:()=>{W.prefetchPromiseQueue.add(A)}}}static instant(J,...K){return a5.prepare(J,...K).instant()}static prefetch(J,...K){return a5.prepare(J,...K).prefetch()}}class pK{static channel(J,K){let Y=H8.use().service.channels[J];if(!Y)return console.error(`Channel ${J} not found`),{publish:()=>{}};let X=new Y;return{publish:(Z,Q=!1)=>{let W=p1(J,K);H8.use().publish(W,JSON.stringify({topic:W,data:X.publish(Z)}),Q)}}}}class iK{static absolute(J,...K){return`${process.env.HOST_NAME}${p1(String(J),K[0]??{})}`}static relative(J,...K){return p1(String(J),K[0]??{})}}class oK{name="Meta";static description(J){M0.getStore().metadata.description(J)}static title(J){M0.getStore().metadata.title(J)}static openGraph(J){M0.getStore().metadata.openGraph(J)}}var OV={set(J,K,Y){M0.getStore().setCookie(J,K,Y)},setIfAbsent(J,K,Y){if(M0.getStore().req.cookies.has(J))return!1;return M0.getStore().setCookie(J,K,Y),!0},delete(J){M0.getStore().deleteCookie(J)}};export{iK as Url,jV as Redirect,a5 as Query,oK as Meta,n5 as Log,w8 as I18n,u4 as FileStorage,OV as Cookie,pK as Broadcast,k1 as Auth};export{H8 as g,w8 as h,N8 as i,t0 as j,aK as k,e4 as l,j8 as m,b4 as n,m4 as o,s5 as p};
|
|
77
|
+
`;async function NV(J,K,Y){let X=`${Y==="italic"?"italic,":""}wght@${Y==="italic"?"1,":""}${K}`,W=(await(await fetch(`https://fonts.googleapis.com/css2?family=${J}:${X}&display=swap`,{headers:{"User-Agent":"Mozilla/5.0 Firefox/1.0"}})).text()).match(/url\(([^)]+)\)/)?.[1];return await fetch(W).then((w)=>w.arrayBuffer())}class m4 extends x0{service;static _name="ViewRouterServiceContainer";flatViewRoutes={};routeManifest={};componentTree=[];flatComponentTree=[];root=null;constructor(J){super();this.service=J;let K={"/":J.rootRouter,"/auth":K6};this.flatViewRoutes=i5(K),this.routeManifest=o5(K),this.componentTree=r5(K),this.flatComponentTree=x4(this.componentTree),this.root=J.root}boot(){}async onRequestEnd(J){if(!J.cookies.has("session_id"))J.ctx().setCookie("session_id",Bun.randomUUIDv7(),{httpOnly:!0,secure:!0,sameSite:"Strict",expires:new Date(Date.now()+31536000000)});return await this.service.onRequestEnd(J)}async render(J){let{csrfTokenHMAC:K,currentPathName:Y,headers:X,i18n:Z,params:Q,pathname:W,prefetchedData:w,url:H,user:z,viewData:U,breadcrumbs:V,urlLocaleSegment:$,meta:B,isOgRequest:M,appId:A}=J,q=W.replace(`/${$}`,""),O={kind:"view",data:{meta:B,pageData:{[q]:U},__csrf:K.toString("base64"),prefetchedData:w,i18n:Z,auth:{user:z},routeManifest:this.routeManifest,breadcrumbs:V,router:{urlLocaleSegment:$,pathname:Y,params:Q,currentPath:W,searchParams:H.search,is404:!Y?!0:!1},appId:A,componentTree:[["404",[]],...this.componentTree]},head:{}},j=this.root,E=this.routeManifest[Y];return async(R)=>{let{bootstrapModules:_,loaders:L,getStyles:T,viewImportMap:D,cssManifest:P,ogMap:x}=R;if(M){let c=null,i=null;for(let C of E)if(typeof x[C]==="function")i=C,c=x[C];if(!c)return new Response("Not found",{status:404});let r=Object.values(O.data.pageData)[0];try{await h4(i8(c,r[i]),{onError:()=>{}})}catch(C){let{fonts:S,...I}=C.satoriOptions,f=await Promise.all(S.map((m)=>{return NV(m.name,m.weight,m.style).then((d)=>({...m,data:d}))})),l=new Headers(X);l.set("Content-Type","image/png");let u=await lK(C.jsx,{...I,fonts:f}),p=await GV(Buffer.from(u)).png({compressionLevel:0,effort:10}).toBuffer();return new Response(p,{headers:l})}return new Response("data")}O.data.cssManifest=P;try{let c=await h4(i8(MV,{children:[...await T(E),i8("script",{key:"theme-script",dangerouslySetInnerHTML:{__html:qV}}),i8(j,{data:O.data,viewImportMap:D,key:"root"})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(O.data)}; window.loaders=${L}`,bootstrapModules:_});return new Response(c,{status:!Y?404:200,headers:X})}catch(c){let i=await h4(i8("div"),{bootstrapScriptContent:`window.error= ${JSON.stringify(c.message)}; window.stack_trace=${JSON.stringify(c.stack)};window.__GEMI_DATA__ = ${JSON.stringify(O.data)}; window.loaders=${L}`,bootstrapModules:_});return new Response(i,{status:!Y?404:200,headers:X})}}}async handleViewRequest(J){let K=new URL(J.url),Y=K.pathname.endsWith(".json"),X=K.pathname.endsWith(".og"),Z=K.pathname.replace(".json","").replace(".og",""),[,Q,...W]=Z.split("/"),w=`/${W.join("/")}`,H=null,z=null,U=C0.use();if(!U.service.supportedLocales.includes(Q))w=Z;else H=Q,z=Q;if(U.isEnabled&&!X){let O=C0.use().detectLocale(new W0(J,{},"view",w));if(z===null&&O!==U.service.defaultLocale){let j=C0.use().detectLocale(new W0(J,{},"view",w)),E=K.pathname==="/"?"":K.pathname;return new Response("",{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:`/${j}${E}${K.search}`}})}}w=w.replace("//","/");let $=[],B=[],M=null,A={};try{for(let[O,j]of Object.entries(this.flatViewRoutes)){let E=new cK({pathname:O});if(E.test({pathname:w})){M=O,A=E.exec({pathname:w})?.pathname.groups,$=j.exec,B=j.middleware;break}}}catch(O){throw O}let q=new W0(J,A,"view",M);return await M0.run(q,async()=>{let O=null,j=M0.getStore();if(z){let R=z.replaceAll("/","");w8.setLocale(R)}else w8.setLocale();let E=j.req;try{await j8.use().runMiddleware(B);let R=C0.use(),_=R.isEnabled,L={};if(_){let u=null;if(z)u=z.replaceAll("/",""),j.setLocale(u);else u=R.detectLocale(new W0(J,E.params)),j.setLocale(u);let p=R.getPageTranslations(u,E.routePath);L={supportedLocales:R.service.supportedLocales,currentLocale:u,dictionary:{[u]:p},defaultLocale:R.service.defaultLocale}}let T=await Promise.all([...$.map((u)=>u(E)),...Array.from(j.prefetchPromiseQueue).map((u)=>u())]),D=j.cookies,P=j.headers,x=j.prefetchedResources;O={data:T,cookies:D,headers:P,user:j.user,prefetchedData:Object.fromEntries(x.entries()),currentPathName:E.routePath,params:E.params,urlLocaleSegment:H,meta:j.renderMeta(),appId:b4.use().service.id};let{params:c,currentPathName:i,user:r}=O,C={},S={};for(let u of T??[]){let[p,m]=Object.entries(u)?.[0]??[];if(!p||!m)continue;S[`${p}:${i}`]=m.breadcrumb,C[p]=m}let I=this.routeManifest[i];if(I?.[I?.length??-1]==="FILE"){let u=C.FILE;return P.set("Content-Type",u.type||"application/octet-stream"),new Response(u.stream(),{headers:P})}if(Y)return P.set("Content-Type","application/json"),D.forEach((u)=>P.append("Set-Cookie",u.toString())),await this.service.onRequestEnd(E),new Response(JSON.stringify({meta:O.meta,data:{[w]:C},breadcrumbs:S,prefetchedData:O.prefetchedData,i18n:L,is404:!i,appId:O.appId}),{headers:P});P.set("Content-Type","text/html");for(let u of D)P.append("Set-Cookie",u.toString());let l=Bun.CSRF.generate(process.env.SECRET);P.append("Set-Cookie",`csrf_token=${l}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now()+86400000).toUTCString()}`);try{await this.onRequestEnd(E)}catch(u){n5.error(u?.message??'Error in "onRequestEnd" event handler',{err:JSON.stringify(u)})}return await this.render({csrfTokenHMAC:Buffer.from(""),currentPathName:i,headers:P,i18n:L,params:c,pathname:K.pathname,prefetchedData:O.prefetchedData,url:K,user:r,viewData:C,breadcrumbs:S,urlLocaleSegment:H,meta:O.meta,appId:O.appId,isOgRequest:X})}catch(R){if(R.kind===o8)if(Y){let{status:_=400,data:L,directive:T,headers:D}=R.payload.api;return new Response(JSON.stringify({data:L,directive:T}),{headers:D,status:_})}else{let{status:_=400,error:L}=R.payload.view;return new Response(L?.message,{...R.payload.view,status:_})}throw this.service.onRequestFail(E,R),R}})}}class uK extends M1{routes={"/api-routes":this.get(()=>{let J=s5.use().flatRoutes,K=[];for(let[Y,X]of Object.entries(J))for(let[Z,Q]of Object.entries(X)){let{exec:W,middleware:w}=Q;K.push({path:Y,method:Z,middleware:w})}return K}),"/view-routes":this.get(()=>{let J=m4.use().flatViewRoutes,K=[];for(let[Y,{middleware:X,viewPath:Z}]of Object.entries(J))K.push({path:Y,method:"GET",viewPath:Z,middleware:X});return K})}}class s5 extends x0{service;static _name="ApiRouterServiceContainer";flatRoutes={};constructor(J){super();this.service=J;this.flatRoutes=w6({"/":this.service.rootRouter.bind(this.service),"/auth":Y6,"/__gemi__/services/i18n":X6,"/__gemi__/services/logs":H6,"/__gemi__/services/image":Z6,"/__gemi__/debug":uK})}getRouteHandlerAndParams(J){let Y=new URL(J.url).pathname.replace("/api",""),X={},Z;for(let[Q]of Object.entries(this.flatRoutes))try{let W=new URLPattern({pathname:Q});if(W.test({pathname:Y})){Z=Q,X=W.exec({pathname:Y})?.pathname.groups;break}}catch(W){console.error(W)}return{params:X,path:Z}}async runRouteMiddleware(J,K){let X=this.flatRoutes[J][K.rawRequest.method].middleware;try{await j8.use().runMiddleware(X)}catch(Z){if(Z.kind===o8){if(K.rawRequest.url.includes("/api")){let{status:Q=400,data:W,headers:w}=Z.payload.api;return new Response(JSON.stringify(W),{status:Q,headers:{"Content-Type":"application/json",...w}})}}else throw this.service.onRequestFail(K,Z),console.error(Z),Z}}async getRouteData(J){let K=this.flatRoutes[J],Y=M0.getStore(),X=K[Y.req.rawRequest.method].exec??(()=>Promise.resolve({})),Z={};try{Z=await X()}catch(Q){if(Q.kind===o8){let{status:W=400,data:w,headers:H}=Q.payload.api;return new Response(JSON.stringify(w),{status:W,headers:{"Content-Type":"application/json",...H}})}throw this.service.onRequestFail(Y.req,Q),console.error(Q),Q}return Z}async handleApiRequest(J){let{params:K,path:Y}=this.getRouteHandlerAndParams(J),X=this.flatRoutes[Y];if(!X||!X[J.method])return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404});let Z=new W0(J,K,"api",Y);if(!J.url.includes("/__gemi__"))this.service.onRequestStart(Z);return await M0.run(Z,async()=>{let Q=M0.getStore(),W=C0.use();if(W.isEnabled){let U=W.detectLocale(Z);Q.setLocale(U)}Q.setRequest(Z);let w=await this.runRouteMiddleware(Y,Z);if(w instanceof Response)return w;let H=await this.getRouteData(Y);if(H instanceof Response)return H;let z=Q.headers;if(z.append("Content-Type","application/json"),Q.cookies.forEach((U)=>z.append("Set-Cookie",U.toString())),Q.destroy(),!J.url.includes("/__gemi__"))this.service.onRequestEnd(Z);return new Response(JSON.stringify(H),{headers:z})})}}class a5{static prepare(J,...K){let Y={params:{},search:{}},[X={}]=K,{search:Z,params:Q}={...Y,...X},W=M0.getStore();if(W.req.kind==="api")throw Error("Query.prefetch() cannot be called from an API request");let w=W.req.rawRequest,H=new URL(w.url),z=new URLSearchParams(p4(Z));z.delete("json"),z.sort();let U=[`${p1(J,Q)}`,z.toString()].filter((q)=>q.length>0).join("?"),V=`${H.origin}/${U}`,$=new Request(V,{headers:w.headers}),B=new W0($,Q),M=(q)=>{W.prefetchedResources.set(p1(J,Q),{[z.toString()]:q})},A=()=>{return M0.run(B,async()=>{let q=await s5.use().getRouteData(J);return M(q),q})};return{instant:A,prefetch:()=>{W.prefetchPromiseQueue.add(A)}}}static instant(J,...K){return a5.prepare(J,...K).instant()}static prefetch(J,...K){return a5.prepare(J,...K).prefetch()}}class pK{static channel(J,K){let Y=H8.use().service.channels[J];if(!Y)return console.error(`Channel ${J} not found`),{publish:()=>{}};let X=new Y;return{publish:(Z,Q=!1)=>{let W=p1(J,K);H8.use().publish(W,JSON.stringify({topic:W,data:X.publish(Z)}),Q)}}}}class iK{static absolute(J,...K){return`${process.env.HOST_NAME}${p1(String(J),K[0]??{})}`}static relative(J,...K){return p1(String(J),K[0]??{})}}class oK{name="Meta";static description(J){M0.getStore().metadata.description(J)}static title(J){M0.getStore().metadata.title(J)}static openGraph(J){M0.getStore().metadata.openGraph(J)}}var OV={set(J,K,Y){M0.getStore().setCookie(J,K,Y)},setIfAbsent(J,K,Y){if(M0.getStore().req.cookies.has(J))return!1;return M0.getStore().setCookie(J,K,Y),!0},delete(J){M0.getStore().deleteCookie(J)}};export{iK as Url,jV as Redirect,a5 as Query,oK as Meta,n5 as Log,w8 as I18n,u4 as FileStorage,OV as Cookie,pK as Broadcast,k1 as Auth};export{H8 as g,w8 as h,N8 as i,t0 as j,aK as k,e4 as l,j8 as m,b4 as n,m4 as o,s5 as p};
|
|
78
78
|
|
|
79
|
-
//# debugId=
|
|
79
|
+
//# debugId=E6492B9EBCDFAE5A64756E2164756E21
|