gemi 0.4.92 → 0.4.93

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.
Files changed (84) hide show
  1. package/dist/app/App.d.ts +2 -24
  2. package/dist/app/App.d.ts.map +1 -1
  3. package/dist/app/index.js +1 -1
  4. package/dist/bin/index.js +73 -31
  5. package/dist/broadcasting/index.js +1 -1
  6. package/dist/{chunk-8ee09f1f74206a04.js → chunk-035e233acf299392.js} +2 -2
  7. package/dist/{chunk-2c5ecf8dc0a97aba.js → chunk-04f04986e53516f0.js} +1 -1
  8. package/dist/{chunk-6b58f7c76c2a738c.js → chunk-0f0add364d3ea615.js} +1 -1
  9. package/dist/chunk-0fd23409fff0376b.js +2 -0
  10. package/dist/{chunk-07ad6201a5864cd0.js → chunk-1770e9abf10029e0.js} +1 -1
  11. package/dist/chunk-2573b2361de4a370.js +2 -0
  12. package/dist/{chunk-b13ef9b23e30af91.js → chunk-2f8839f406606d63.js} +1 -1
  13. package/dist/{chunk-7d5fe4acabfee228.js → chunk-33abc8f4f7df6791.js} +2 -2
  14. package/dist/chunk-494de321e3423d54.js +2 -0
  15. package/dist/chunk-496c32676431beab.js +18 -0
  16. package/dist/chunk-6286081da32e2feb.js +2 -0
  17. package/dist/{chunk-24a86f8f5ddc0cbd.js → chunk-7ce930fe69575c87.js} +1 -1
  18. package/dist/{chunk-9dc5c9b7a885d0bc.js → chunk-8fec55214eb03a61.js} +2 -2
  19. package/dist/chunk-9a9d43e4b919c267.js +2 -0
  20. package/dist/chunk-b6fb088270ea6584.js +3 -0
  21. package/dist/chunk-c459f3e37965c22f.js +2 -0
  22. package/dist/{chunk-0ba2cc302113ab40.js → chunk-cfb8c5b12b0e5378.js} +2 -2
  23. package/dist/chunk-cfbe2cbcadcb1ac1.js +2 -0
  24. package/dist/{chunk-542b3c90f0ff4ded.js → chunk-d09948245f5b426d.js} +1 -1
  25. package/dist/chunk-d7525516b1305ba3.js +6 -0
  26. package/dist/{chunk-332553172e3ab961.js → chunk-dfb863d471bf3b18.js} +2 -2
  27. package/dist/{chunk-28694e5e949df0ff.js → chunk-e1929f0f7003fbdf.js} +2 -2
  28. package/dist/chunk-e76c7e3bf2d698af.js +2 -0
  29. package/dist/{chunk-880cfc21ce7cc2c6.js → chunk-eabfa03c809e14df.js} +2 -2
  30. package/dist/{chunk-43b1a27bc037bc09.js → chunk-ef791082443c0cbd.js} +1 -1
  31. package/dist/{chunk-6a2141dd4169ce0e.js → chunk-f10ba402aaacfc12.js} +2 -2
  32. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  33. package/dist/client/index.js +3 -0
  34. package/dist/email/index.js +1 -1
  35. package/dist/facades/index.js +1 -1
  36. package/dist/http/I18nServiceContainer.d.ts.map +1 -1
  37. package/dist/http/index.js +1 -1
  38. package/dist/kernel/Kernel.d.ts +5 -4
  39. package/dist/kernel/Kernel.d.ts.map +1 -1
  40. package/dist/kernel/context.d.ts +2 -2
  41. package/dist/kernel/context.d.ts.map +1 -1
  42. package/dist/kernel/index.js +1 -1
  43. package/dist/server/index.js +5 -5
  44. package/dist/services/ServiceProvider.d.ts +1 -1
  45. package/dist/services/ServiceProvider.d.ts.map +1 -1
  46. package/dist/services/index.js +1 -10
  47. package/dist/services/router/ViewRouterServiceContainer.d.ts +12 -0
  48. package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -0
  49. package/dist/services/router/ViewRouterServiceProvider.d.ts +13 -0
  50. package/dist/services/router/ViewRouterServiceProvider.d.ts.map +1 -0
  51. package/dist/services/router/createComponentTree.d.ts +4 -0
  52. package/dist/services/router/createComponentTree.d.ts.map +1 -0
  53. package/dist/services/router/createComponentTree.test.d.ts +2 -0
  54. package/dist/services/router/createComponentTree.test.d.ts.map +1 -0
  55. package/dist/services/router/createFlatViewRoutes.d.ts +14 -0
  56. package/dist/services/router/createFlatViewRoutes.d.ts.map +1 -0
  57. package/dist/services/router/createFlatViewRoutes.test.d.ts +2 -0
  58. package/dist/services/router/createFlatViewRoutes.test.d.ts.map +1 -0
  59. package/dist/services/router/createRouteManifest.d.ts +3 -0
  60. package/dist/services/router/createRouteManifest.d.ts.map +1 -0
  61. package/dist/services/router/createRouteManifest.test.d.ts +2 -0
  62. package/dist/services/router/createRouteManifest.test.d.ts.map +1 -0
  63. package/package.json +1 -1
  64. package/dist/app/Plugin.d.ts +0 -10
  65. package/dist/app/Plugin.d.ts.map +0 -1
  66. package/dist/app/createComponentTree.d.ts +0 -4
  67. package/dist/app/createComponentTree.d.ts.map +0 -1
  68. package/dist/app/createFlatViewRoutes.d.ts +0 -10
  69. package/dist/app/createFlatViewRoutes.d.ts.map +0 -1
  70. package/dist/app/createRouteManifest.d.ts +0 -3
  71. package/dist/app/createRouteManifest.d.ts.map +0 -1
  72. package/dist/chunk-156c827bf8d5029c.js +0 -5
  73. package/dist/chunk-53b7d6267c9172bc.js +0 -2
  74. package/dist/chunk-63884944ac5ce0f0.js +0 -2
  75. package/dist/chunk-83938f41a5342f87.js +0 -2
  76. package/dist/chunk-9475c6ed18013dc8.js +0 -2
  77. package/dist/chunk-9d5c096c43928b37.js +0 -1
  78. package/dist/chunk-a1ef3b11adc01140.js +0 -6
  79. package/dist/chunk-ad396345e8e74292.js +0 -2
  80. package/dist/chunk-e1a4203ece554bc3.js +0 -2
  81. package/dist/chunk-e4a19367b5596f21.js +0 -2
  82. package/dist/chunk-fe8cfc6e6c3ce826.js +0 -16
  83. package/dist/server/generateEtag.d.ts +0 -2
  84. package/dist/server/generateEtag.d.ts.map +0 -1
package/dist/app/App.d.ts CHANGED
@@ -1,46 +1,24 @@
1
1
  import type { ApiRouter } from "../http/ApiRouter";
2
2
  import { ViewRouter } from "../http/ViewRouter";
3
- import type { ComponentTree } from "../client/types";
4
- import type { Plugin } from "./Plugin";
5
- import type { Middleware } from "../http/Middleware";
6
3
  import type { WebSocketHandler } from "bun";
7
4
  import { ComponentType } from "react";
8
5
  import { Kernel } from "../kernel";
9
- interface RenderParams {
10
- styles: string[];
11
- manifest: Record<string, any>;
12
- serverManifest: Record<string, any>;
13
- bootstrapModules?: string[];
14
- }
15
6
  interface AppParams {
16
7
  viewRouter: new () => ViewRouter;
17
8
  apiRouter: new () => ApiRouter;
18
- plugins?: (new () => Plugin)[];
19
- middlewareAliases?: Record<string, new () => Middleware>;
20
9
  root: ComponentType;
21
10
  kernel: new () => Kernel;
22
11
  }
23
12
  export declare class App {
24
- private renderParams;
25
- private flatViewRoutes;
26
- private routeManifest;
27
13
  name: string;
28
- private appId;
29
- private componentTree;
30
- middlewareAliases: Record<string, new () => Middleware>;
31
14
  devVersion: number;
32
- private params;
33
15
  private apiRouter;
34
16
  private viewRouter;
35
17
  private Root;
36
18
  private kernel;
37
- private i18nServiceContainer;
38
- private flatComponentTree;
39
19
  constructor(params: AppParams);
40
- private prepare;
41
- getComponentTree(): ComponentTree;
42
- setRenderParams(params: RenderParams): void;
43
- handleViewRequest(req: Request): Promise<Response>;
20
+ getComponentTree(): import("../client/types").ComponentTree;
21
+ getFlatComponentTree(): string[];
44
22
  fetch(req: Request): Promise<Response>;
45
23
  websocket: WebSocketHandler<{
46
24
  headers: Headers;
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../app/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAY5C,OAAO,EAAE,aAAa,EAA2B,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,UAAU,SAAS;IACjB,UAAU,EAAE,UAAU,UAAU,CAAC;IACjC,SAAS,EAAE,UAAU,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAC;IACzD,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,UAAU,MAAM,CAAC;CAC1B;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,YAAY,CAKlB;IACF,OAAO,CAAC,cAAc,CAGf;IAEP,OAAO,CAAC,aAAa,CAAgC;IAC9C,IAAI,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAgB;IAC9B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAM;IAC7D,UAAU,SAAK;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,MAAM,EAAE,SAAS;IAc7B,OAAO,CAAC,OAAO;IA+CR,gBAAgB;IAIhB,eAAe,CAAC,MAAM,EAAE,YAAY;IAIrC,iBAAiB,CAAC,GAAG,EAAE,OAAO;IA8P9B,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBrC,SAAS,EAAE,gBAAgB,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAoBtD;IAEK,SAAS,CACd,EAAE,EAAE,CACF,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,iBAAiB,EAChE,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI;CAIZ"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../app/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,UAAU,SAAS;IACjB,UAAU,EAAE,UAAU,UAAU,CAAC;IACjC,SAAS,EAAE,UAAU,SAAS,CAAC;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,UAAU,MAAM,CAAC;CAC1B;AAED,qBAAa,GAAG;IACP,IAAI,SAAS;IACb,UAAU,SAAK;IACtB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS;IAmCtB,gBAAgB;IAKhB,oBAAoB;IAKd,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgB5C,SAAS,EAAE,gBAAgB,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAoBtD;IAEK,SAAS,CACd,EAAE,EAAE,CACF,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,iBAAiB,EAChE,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI;CAIZ"}
package/dist/app/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{e as h,h as F,i as P,l as r} from"../http/index.js";import{x as v,y as D} from"../chunk-53b7d6267c9172bc.js";import{A as L} from"../chunk-9475c6ed18013dc8.js";import{B as Jo,C as d} from"../chunk-24a86f8f5ddc0cbd.js";var _=d((qo,N)=>{var Yo=function(o){if(typeof o==="function")return o;return(n)=>n.$extends(o)},Zo=function(o){return o},S=Object.defineProperty,fo=Object.getOwnPropertyDescriptor,Vo=Object.getOwnPropertyNames,Ho=Object.prototype.hasOwnProperty,To=(o,n)=>{for(var i in n)S(o,i,{get:n[i],enumerable:!0})},zo=(o,n,i,c)=>{if(n&&typeof n==="object"||typeof n==="function"){for(let y of Vo(n))if(!Ho.call(o,y)&&y!==i)S(o,y,{get:()=>n[y],enumerable:!(c=fo(n,y))||c.enumerable})}return o},Ao=(o)=>zo(S({},"__esModule",{value:!0}),o),q={};To(q,{Prisma:()=>t,PrismaClient:()=>Xo,default:()=>Qo});N.exports=Ao(q);var Go={enginesVersion:"393aa359c9ad4a4bb28630fb5613f9c281cde053"},Lo="5.17.0",Wo=Lo,Xo=class{constructor(){throw new Error('@prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.')}},t={defineExtension:Yo,getExtensionContext:Zo,prismaVersion:{client:Wo,engine:Go.enginesVersion}},Qo={Prisma:t}});var l=d((No,p)=>{p.exports={..._()}});function E(o){let n=[];for(let[i,c]of o)n.push(i,...E(c).flat());return Array.from(new Set(n))}function Q(o){const n=[];for(let[i,c]of Object.entries(o))if("run"in c){const y=c.viewPath;if("children"in c){const b=new c.children,$=Q(b.routes);n.push([y,$])}else n.push([y,[]])}else{const y=new c,b=Q(y.routes);n.push(...b)}return n}function J(o){const n={};for(let[i,c]of Object.entries(o))if("run"in c){const y=c;if("children"in y){const b=new y.children,$=J(b.routes);for(let[O,{exec:V,middleware:f}]of Object.entries($)){const A=i==="/"?O:`${i}${O}`,W=O==="/"&&i!=="/"?i:A;n[W]={exec:[y.run.bind(y),...V],middleware:[...y.middlewares,...f]}}}else n[i]={exec:[y.run.bind(y)],middleware:y.middlewares}}else{const y=new c,b=J(y.routes);for(let[$,{exec:O,middleware:V}]of Object.entries(b)){const f=i==="/"?$:`${i}${$}`,A=$==="/"&&i!=="/"?i:f;n[A]={exec:O,middleware:[...y.middlewares,...V]}}}return Object.fromEntries(Object.entries(n).sort(([i],[c])=>{const y=i.split("/").length+i.split(":").length,b=c.split("/").length+c.split(":").length;return y-b}))}function U(o){const n={};for(let[i,c]of Object.entries(o))if("run"in c){const y=c.viewPath;if("children"in c)n[i]=[y];if("children"in c){const b=new c.children,$=U(b.routes);for(let[O,V]of Object.entries($)){const f=i==="/"?O:`${i}${O}`,A=O==="/"&&i!=="/"?i:f;n[A]=[y,...V]}}else n[i]=[y]}else{const y=new c,b=U(y.routes);for(let[$,O]of Object.entries(b)){const V=i==="/"?$:`${i}${$}`,f=$==="/"&&i!=="/"?i:V;n[f]=O}}return n}import{renderToReadableStream as jo} from"react-dom/server.browser";import{createElement as g,Fragment as Oo} from"react";class R{renderParams={styles:[],manifest:{},serverManifest:{},bootstrapModules:[]};flatViewRoutes={};routeManifest={};name="APP";appId;componentTree;middlewareAliases={};devVersion=0;params;apiRouter;viewRouter;Root;kernel;i18nServiceContainer;flatComponentTree=[];constructor(o){this.params=o,this.apiRouter=o.apiRouter,this.viewRouter=o.viewRouter,this.Root=o.root,this.kernel=new o.kernel,this.prepare(),this.appId=D(Date.now()),this.i18nServiceContainer=this.kernel.getServices().i18nServiceContainer,this.i18nServiceContainer.boot()}prepare(){const o=this.params;this.middlewareAliases=o.middlewareAliases??{};const n=this.kernel.getServices(),i=n.authenticationServiceContainer.provider.basePath;let c={"/":this.viewRouter,[i]:n.authenticationServiceContainer.provider.routers.view},y={"/":this.apiRouter,[i]:n.authenticationServiceContainer.provider.routers.api,"/__gemi__/services/i18n":n.i18nServiceContainer.routers.api};for(let b of o.plugins??[]){const $=new b;if($.viewRouter)c={...c,[$.viewRoutesBasePath]:$.viewRouter};if($.apiRouter)y={...y,[$.apiRoutesBasePath]:$.apiRouter}}this.kernel.getServices().apiRouterServiceContainer.service.boot(y),this.flatViewRoutes=J(c),this.componentTree=Q(c),this.flatComponentTree=E(this.componentTree),this.routeManifest=U(c)}getComponentTree(){return this.componentTree}setRenderParams(o){this.renderParams=o}async handleViewRequest(o){const n=new URL(o.url),i=n.searchParams.get("json");let c=null;try{let w=[],j=[],H=null,z={};for(let[T,Y]of Object.entries(this.flatViewRoutes)){const Z=new v({pathname:T});if(Z.test({pathname:n.pathname})){H=T,z=Z.exec({pathname:n.pathname})?.pathname.groups,w=Y.exec,j=Y.middleware;break}}const G=new P(o,z),{data:u,cookies:io,headers:co,user:yo,prefetchedData:wo}=await F.run(G,async()=>{const T=F.getStore();T.setRequest(G),await L.getStore().middlewareServiceContainer.runMiddleware(j,H);const Y=await Promise.all([...w.map((C)=>C(G)),...Array.from(T.prefetchPromiseQueue).map((C)=>C())]),Z=T.cookies,$o=T.headers,bo=T.prefetchedResources;return{data:Y,cookies:Z,headers:$o,user:T.user,prefetchedData:Object.fromEntries(bo.entries())}});c={data:u,prefetchedData:wo,currentPathName:H,user:yo,params:z,cookies:io,headers:co}}catch(w){if(w.kind===h)if(i){const{status:j=400,data:H,directive:z,headers:G}=w.payload.api;return new Response(JSON.stringify({data:H,directive:z}),{headers:G,status:j})}else{const{status:j=400,error:H}=w.payload.view;return new Response(H?.message,{...w.payload.view,status:j})}else throw w}const{data:y,params:b,currentPathName:$,user:O,cookies:V}=c,f=y.reduce((w,j)=>{return{...w,...j}},{}),A=this.i18nServiceContainer.isEnabled;let W={};if(A){const w=this.i18nServiceContainer.detectLocale(new P(o,b)),j=this.i18nServiceContainer.getPageTranslations(w,$);W={supportedLocales:this.i18nServiceContainer.supportedLocales,currentLocale:w,dictionary:{[w]:j}}}if(i){const w=new Headers;return w.set("Content-Type","application/json"),V.forEach((j)=>w.append("Set-Cookie",j.toString())),w.append("Cache-Control",O?"private, no-cache, no-store, max-age=0, must-revalidate":"public, max-age=864000, must-revalidate"),new Response(JSON.stringify({data:{[n.pathname]:f},prefetchedData:c.prefetchedData,i18n:W,is404:!$}),{headers:w})}const{styles:e,manifest:M,serverManifest:x,bootstrapModules:a}=this.renderParams,B={};let K=null;const k=(w,j)=>`"${w}": () => import("${j}")`,I=[];for(let w of["404",...this.flatComponentTree])if(!M){K=`${process.env.APP_DIR}`;const j=await import(`${K}/views/${w}.tsx?t=${this.appId}`);B[w]=j.default,I.push(k(w,`${K}/views/${w}.tsx?t=${this.appId}`))}else{const j=x[`app/views/${w}.tsx`];if(!j?.file){console.log(`Server file not found for ${w}`),console.log(j);const G=Object.keys(x),u=`app/views/${w}.tsx`;console.log(`${u} not found in server manifest`),console.log(G)}const H=await import(`${process.env.DIST_DIR}/server/${j?.file}?t=${this.appId}`);B[w]=H.default;const z=M[`app/views/${w}.tsx`];if(z)I.push(k(w,`/${z?.file}?t=${this.appId}`))}const oo=`{${I.join(",")}}`,X=new Headers;X.set("Content-Type","text/html"),X.set("Cache-Control",O?"private, no-cache, no-store, max-age=0, must-revalidate":"public, max-age=864000, must-revalidate"),X.set("ETag",this.appId),c.cookies.forEach((w)=>X.append("Set-Cookie",w.toString()));const s={kind:"view",data:{pageData:{[n.pathname]:f},prefetchedData:c.prefetchedData,i18n:W,auth:{user:O},routeManifest:this.routeManifest,router:{pathname:$,params:b,currentPath:n.pathname,searchParams:n.search,is404:!$?!0:!1},componentTree:[["404",[]],...this.componentTree]},head:{}},no=await jo(g(Oo,{children:[e,g(this.Root,{data:s.data,viewImportMap:B})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(s.data)}; window.loaders=${oo}`,bootstrapModules:a});return new Response(no,{status:!$?404:200,headers:X})}async fetch(o){const n=new URL(o.url);return this.kernel.run.bind(this.kernel)(async()=>{if(n.pathname.startsWith("/api"))return await this.kernel.services.apiRouterServiceContainer.handleApiRequest(o);else return await this.handleViewRequest(o)})}websocket={message:(o,n)=>{this.kernel.run.bind(this.kernel)(()=>{L.getStore().broadcastingServiceContainer.run(o.data.headers,()=>{L.getStore().broadcastingServiceContainer.handleMessage(o,n)})})},open:(o)=>{},close:(o)=>{console.log("closed ws"),o.terminate()}};onPublish(o){this.kernel.services.broadcastingServiceContainer.onPublish(o)}}var m=Jo(l(),1);var Uo=m.Prisma.defineExtension({name:"Gemi Policies",query:{async $allOperations({args:o,operation:n,query:i,model:c}){const b=L.getStore().policiesServiceProvider.policiesList[`${c}Policies`];if(!b)return await i(o);if(!await b.all.call(b,n,o))throw new r;return await i(o)}}});export{Uo as prismaExtension,R as App};
2
+ import{x as o} from"../chunk-6286081da32e2feb.js";import{y,z as a} from"../chunk-7ce930fe69575c87.js";var R=a((j,v)=>{var K=function(e){if(typeof e==="function")return e;return(r)=>r.$extends(e)},W=function(e){return e},s=Object.defineProperty,w=Object.getOwnPropertyDescriptor,S=Object.getOwnPropertyNames,C=Object.prototype.hasOwnProperty,k=(e,r)=>{for(var i in r)s(e,i,{get:r[i],enumerable:!0})},A=(e,r,i,n)=>{if(r&&typeof r==="object"||typeof r==="function"){for(let t of S(r))if(!C.call(e,t)&&t!==i)s(e,t,{get:()=>r[t],enumerable:!(n=w(r,t))||n.enumerable})}return e},g=(e)=>A(s({},"__esModule",{value:!0}),e),c={};k(c,{Prisma:()=>p,PrismaClient:()=>H,default:()=>d});v.exports=g(c);var T={enginesVersion:"393aa359c9ad4a4bb28630fb5613f9c281cde053"},V="5.17.0",B=V,H=class{constructor(){throw new Error('@prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.')}},p={defineExtension:K,getExtensionContext:W,prismaVersion:{client:B,engine:T.enginesVersion}},d={Prisma:p}});var l=a((z,h)=>{h.exports={...R()}});class u{name="APP";devVersion=0;apiRouter;viewRouter;Root;kernel;constructor(e){this.apiRouter=e.apiRouter,this.viewRouter=e.viewRouter,this.Root=e.root,this.kernel=new e.kernel;const r=this.kernel.getServices(),i=r.authenticationServiceContainer.provider.basePath,n={"/":this.viewRouter,[i]:r.authenticationServiceContainer.provider.routers.view},t={"/":this.apiRouter,[i]:r.authenticationServiceContainer.provider.routers.api,"/__gemi__/services/i18n":r.i18nServiceContainer.routers.api};r.apiRouterServiceContainer.service.boot(t),r.viewRouterServiceContainer.service.boot(n,this.Root),r.i18nServiceContainer.boot()}getComponentTree(){return this.kernel.getServices().viewRouterServiceContainer.service.componentTree}getFlatComponentTree(){return this.kernel.getServices().viewRouterServiceContainer.service.flatComponentTree}async fetch(e){const r=new URL(e.url);return this.kernel.run.call(this.kernel,async()=>{if(r.pathname.startsWith("/api"))return await this.kernel.services.apiRouterServiceContainer.handleApiRequest(e);else return await this.kernel.services.viewRouterServiceContainer.handleViewRequest(e)})}websocket={message:(e,r)=>{this.kernel.run.bind(this.kernel)(()=>{o.getStore().broadcastingServiceContainer.run(e.data.headers,()=>{o.getStore().broadcastingServiceContainer.handleMessage(e,r)})})},open:(e)=>{},close:(e)=>{console.log("closed ws"),e.terminate()}};onPublish(e){this.kernel.services.broadcastingServiceContainer.onPublish(e)}}var b=y(l(),1),F=b.Prisma.defineExtension({name:"Gemi Policies",query:{async $allOperations({args:e,operation:r,query:i,model:n}){return await i(e)}}});export{F as prismaExtension,u as App};
package/dist/bin/index.js CHANGED
@@ -9129,27 +9129,8 @@ async function startDevServer() {
9129
9129
  }
9130
9130
  }
9131
9131
  async function getApp() {
9132
- let app2;
9133
9132
  try {
9134
- app2 = (await vite.ssrLoadModule(join(appDir, "bootstrap.ts"))).app;
9135
- const { default: css } = await vite.ssrLoadModule(`${appDir}/app.css`);
9136
- const styles2 = [];
9137
- styles2.push({
9138
- isDev: true,
9139
- id: `${appDir}/app.css`,
9140
- content: css
9141
- });
9142
- app2.setRenderParams({
9143
- styles: createStyles(styles2),
9144
- manifest: null,
9145
- serverManifest: null,
9146
- bootstrapModules: [
9147
- "/refresh.js",
9148
- "/app/client.tsx",
9149
- "http://localhost:5173/@vite/client"
9150
- ]
9151
- });
9152
- return app2;
9133
+ return (await vite.ssrLoadModule(join(appDir, "bootstrap.ts"))).app;
9153
9134
  } catch (err) {
9154
9135
  console.log("Can't load bootstrap.ts");
9155
9136
  console.error(err);
@@ -9175,7 +9156,43 @@ async function startDevServer() {
9175
9156
  return await imageHandler(req);
9176
9157
  }
9177
9158
  try {
9178
- return await handler(req);
9159
+ const result = await handler(req);
9160
+ if (result instanceof Response) {
9161
+ return result;
9162
+ } else {
9163
+ const viewImportMap = {};
9164
+ const template = (viewName, path) => `"${viewName}": () => import("${path}")`;
9165
+ const templates = [];
9166
+ for (const fileName of [
9167
+ "404",
9168
+ ...app2.getFlatComponentTree.call(app2)
9169
+ ]) {
9170
+ if (false) {
9171
+ }
9172
+ const appDir = `${process.env.APP_DIR}`;
9173
+ const mod = await vite.ssrLoadModule(`${appDir}/views/${fileName}.tsx`);
9174
+ viewImportMap[fileName] = mod.default;
9175
+ templates.push(template(fileName, `${appDir}/views/${fileName}.tsx`));
9176
+ }
9177
+ const loaders = `{${templates.join(",")}}`;
9178
+ const { default: css } = await vite.ssrLoadModule(`${appDir}/app.css`);
9179
+ const styles2 = [];
9180
+ styles2.push({
9181
+ isDev: true,
9182
+ id: `${appDir}/app.css`,
9183
+ content: css
9184
+ });
9185
+ return await result({
9186
+ styles: createStyles(styles2),
9187
+ bootstrapModules: [
9188
+ "/refresh.js",
9189
+ "/app/client.tsx",
9190
+ "http://localhost:5173/@vite/client"
9191
+ ],
9192
+ viewImportMap,
9193
+ loaders
9194
+ });
9195
+ }
9179
9196
  } catch (err) {
9180
9197
  console.error(err);
9181
9198
  if (pathname.startsWith("/api")) {
@@ -9203,7 +9220,7 @@ async function startDevServer() {
9203
9220
  console.log(`Server started on http://localhost:${process.env.PORT || 5173}`);
9204
9221
  vite.watcher.on("change", async (file) => {
9205
9222
  const fileRelativePath = file.replace(rootDir, "");
9206
- if (fileRelativePath.startsWith("app/views")) {
9223
+ if (fileRelativePath.startsWith("/app/views")) {
9207
9224
  console.log(`[vite] ${fileRelativePath} changed. \uD83C\uDF5C Hot reloading...`);
9208
9225
  return;
9209
9226
  }
@@ -10035,8 +10052,6 @@ async function startProdServer() {
10035
10052
  const { app } = await import(`${distDir}/server/bootstrap.mjs`);
10036
10053
  const manifest = await import(`${distDir}/client/.vite/manifest.json`);
10037
10054
  const serverManifest = await import(`${distDir}/server/.vite/manifest.json`);
10038
- const cssFile = Bun.file(`${distDir}/client/${manifest["app/client.tsx"].css}`);
10039
- const cssContent = await cssFile.text();
10040
10055
  process.env.ROOT_DIR = rootDir2;
10041
10056
  process.env.APP_DIR = appDir2;
10042
10057
  process.env.DIST_DIR = distDir;
@@ -10067,18 +10082,45 @@ async function startProdServer() {
10067
10082
  });
10068
10083
  }
10069
10084
  const styles3 = [];
10085
+ const cssFile = Bun.file(`${distDir}/client/${manifest["app/client.tsx"].css}`);
10086
+ const cssContent = await cssFile.text();
10070
10087
  styles3.push({
10071
10088
  content: cssContent
10072
10089
  });
10073
- app.setRenderParams({
10074
- styles: createStyles(styles3),
10075
- manifest,
10076
- serverManifest,
10077
- bootstrapModules: [`/${manifest["app/client.tsx"].file}`]
10078
- });
10090
+ const viewImportMap = {};
10091
+ const template = (viewName, path) => `"${viewName}": () => import("${path}")`;
10092
+ const templates = [];
10093
+ for (const fileName of ["404", ...app.getFlatComponentTree.call(app)]) {
10094
+ const serverFile = serverManifest[`app/views/${fileName}.tsx`];
10095
+ if (!serverFile?.file) {
10096
+ console.log(`Server file not found for ${fileName}`);
10097
+ console.log(serverFile);
10098
+ const files = Object.keys(serverManifest);
10099
+ const path = `app/views/${fileName}.tsx`;
10100
+ console.log(`${path} not found in server manifest`);
10101
+ console.log(files);
10102
+ }
10103
+ const mod = await import(`${process.env.DIST_DIR}/server/${serverFile?.file}`);
10104
+ viewImportMap[fileName] = mod.default;
10105
+ const clientFile = manifest[`app/views/${fileName}.tsx`];
10106
+ if (clientFile) {
10107
+ templates.push(template(fileName, `/${clientFile?.file}`));
10108
+ }
10109
+ }
10110
+ const loaders = `{${templates.join(",")}}`;
10079
10111
  const handler = app.fetch.bind(app);
10080
10112
  try {
10081
- return await handler(req);
10113
+ const result = await handler(req);
10114
+ if (result instanceof Response) {
10115
+ return result;
10116
+ } else {
10117
+ return await result({
10118
+ styles: createStyles(styles3),
10119
+ bootstrapModules: [`/${manifest["app/client.tsx"].file}`],
10120
+ loaders,
10121
+ viewImportMap
10122
+ });
10123
+ }
10082
10124
  } catch (err) {
10083
10125
  console.error(err);
10084
10126
  if (pathname.startsWith("/api")) {
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import"../chunk-24a86f8f5ddc0cbd.js";class n{async subscribe(r){return!0}publish(r){return{}}}export{n as BroadcastingChannel};
2
+ import"../chunk-7ce930fe69575c87.js";class n{async subscribe(r){return!0}publish(r){return{}}}export{n as BroadcastingChannel};