gemi 0.13.7 → 0.13.8

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 (104) hide show
  1. package/dist/app/index.js +2 -2
  2. package/dist/app/index.js.map +1 -1
  3. package/dist/broadcasting/index.js +1 -1
  4. package/dist/{chunk-5q5qjyxf.js → chunk-012pty5m.js} +2 -2
  5. package/dist/{chunk-5q5qjyxf.js.map → chunk-012pty5m.js.map} +1 -1
  6. package/dist/{chunk-dak25pw2.js → chunk-27wb042h.js} +2 -2
  7. package/dist/{chunk-dak25pw2.js.map → chunk-27wb042h.js.map} +1 -1
  8. package/dist/{chunk-6fy0y9na.js → chunk-3za8zsph.js} +2 -2
  9. package/dist/{chunk-6fy0y9na.js.map → chunk-3za8zsph.js.map} +1 -1
  10. package/dist/{chunk-pvxzx61f.js → chunk-4zy0b2cq.js} +3 -3
  11. package/dist/{chunk-pvxzx61f.js.map → chunk-4zy0b2cq.js.map} +1 -1
  12. package/dist/{chunk-00q77h4a.js → chunk-5p9mcds2.js} +2 -2
  13. package/dist/{chunk-00q77h4a.js.map → chunk-5p9mcds2.js.map} +1 -1
  14. package/dist/{chunk-0mfpz0sr.js → chunk-7hhtnc5w.js} +2 -2
  15. package/dist/{chunk-0mfpz0sr.js.map → chunk-7hhtnc5w.js.map} +1 -1
  16. package/dist/{chunk-0wr6m6f4.js → chunk-8nyhavne.js} +2 -2
  17. package/dist/{chunk-0wr6m6f4.js.map → chunk-8nyhavne.js.map} +1 -1
  18. package/dist/{chunk-m2p40y0k.js → chunk-9bat8gf8.js} +2 -2
  19. package/dist/{chunk-m2p40y0k.js.map → chunk-9bat8gf8.js.map} +1 -1
  20. package/dist/chunk-a1hr4h7e.js +4 -0
  21. package/dist/{chunk-6pwjkfk5.js.map → chunk-a1hr4h7e.js.map} +1 -1
  22. package/dist/{chunk-rre72epn.js → chunk-b91cs7rz.js} +3 -3
  23. package/dist/{chunk-rre72epn.js.map → chunk-b91cs7rz.js.map} +1 -1
  24. package/dist/{chunk-qcr71k85.js → chunk-brew2st9.js} +2 -2
  25. package/dist/{chunk-qcr71k85.js.map → chunk-brew2st9.js.map} +1 -1
  26. package/dist/{chunk-0vq2p4bq.js → chunk-d0c15za6.js} +2 -2
  27. package/dist/{chunk-0vq2p4bq.js.map → chunk-d0c15za6.js.map} +1 -1
  28. package/dist/{chunk-4e18rqet.js → chunk-ee0fv5gm.js} +2 -2
  29. package/dist/{chunk-4e18rqet.js.map → chunk-ee0fv5gm.js.map} +1 -1
  30. package/dist/{chunk-jn8jhrkd.js → chunk-ejrp23v3.js} +2 -2
  31. package/dist/{chunk-jn8jhrkd.js.map → chunk-ejrp23v3.js.map} +1 -1
  32. package/dist/{chunk-3nzz6kqw.js → chunk-gjhm9wdg.js} +2 -2
  33. package/dist/{chunk-3nzz6kqw.js.map → chunk-gjhm9wdg.js.map} +1 -1
  34. package/dist/{chunk-jxftkhsd.js → chunk-j2ymcc6q.js} +2 -2
  35. package/dist/{chunk-jxftkhsd.js.map → chunk-j2ymcc6q.js.map} +1 -1
  36. package/dist/{chunk-0wa1m3yq.js → chunk-jt1cpbzj.js} +4 -4
  37. package/dist/{chunk-0wa1m3yq.js.map → chunk-jt1cpbzj.js.map} +3 -4
  38. package/dist/{chunk-svh4hjg3.js → chunk-kcpnz8df.js} +2 -2
  39. package/dist/{chunk-svh4hjg3.js.map → chunk-kcpnz8df.js.map} +1 -1
  40. package/dist/{chunk-67ytmbmn.js → chunk-m2mrqsmj.js} +3 -3
  41. package/dist/{chunk-67ytmbmn.js.map → chunk-m2mrqsmj.js.map} +1 -1
  42. package/dist/{chunk-acfdk70y.js → chunk-mpybe78g.js} +3 -3
  43. package/dist/{chunk-acfdk70y.js.map → chunk-mpybe78g.js.map} +1 -1
  44. package/dist/{chunk-tyv9h73f.js → chunk-n221batm.js} +3 -3
  45. package/dist/{chunk-tyv9h73f.js.map → chunk-n221batm.js.map} +1 -1
  46. package/dist/{chunk-nxrhps23.js → chunk-ng2p76w0.js} +2 -2
  47. package/dist/{chunk-nxrhps23.js.map → chunk-ng2p76w0.js.map} +1 -1
  48. package/dist/{chunk-wbg45cdc.js → chunk-nryqtba3.js} +2 -2
  49. package/dist/{chunk-wbg45cdc.js.map → chunk-nryqtba3.js.map} +1 -1
  50. package/dist/{chunk-wewz52mc.js → chunk-qkvwfa7s.js} +2 -2
  51. package/dist/{chunk-wewz52mc.js.map → chunk-qkvwfa7s.js.map} +1 -1
  52. package/dist/{chunk-95b1a8cw.js → chunk-t82sd6ag.js} +2 -2
  53. package/dist/{chunk-95b1a8cw.js.map → chunk-t82sd6ag.js.map} +1 -1
  54. package/dist/{chunk-yvrp97kk.js → chunk-ta13zfs4.js} +3 -3
  55. package/dist/{chunk-yvrp97kk.js.map → chunk-ta13zfs4.js.map} +1 -1
  56. package/dist/{chunk-6kfbsmxx.js → chunk-w3bpe08v.js} +2 -2
  57. package/dist/{chunk-6kfbsmxx.js.map → chunk-w3bpe08v.js.map} +1 -1
  58. package/dist/{chunk-68kvbrqd.js → chunk-wbjejbf3.js} +2 -2
  59. package/dist/{chunk-68kvbrqd.js.map → chunk-wbjejbf3.js.map} +1 -1
  60. package/dist/{chunk-jwebzy40.js → chunk-x2v7c34f.js} +2 -2
  61. package/dist/{chunk-jwebzy40.js.map → chunk-x2v7c34f.js.map} +1 -1
  62. package/dist/{chunk-cgh2sw3g.js → chunk-xr2hsrr8.js} +2 -2
  63. package/dist/{chunk-cgh2sw3g.js.map → chunk-xr2hsrr8.js.map} +1 -1
  64. package/dist/chunk-xs7ze1bn.js +4 -0
  65. package/dist/{chunk-3q85w7aa.js.map → chunk-xs7ze1bn.js.map} +1 -1
  66. package/dist/{chunk-fe1gn043.js → chunk-xttpe58q.js} +2 -2
  67. package/dist/{chunk-fe1gn043.js.map → chunk-xttpe58q.js.map} +1 -1
  68. package/dist/{chunk-tw3t6x2n.js → chunk-z2117ncx.js} +3 -3
  69. package/dist/{chunk-tw3t6x2n.js.map → chunk-z2117ncx.js.map} +1 -1
  70. package/dist/client/ClientRouter.d.ts.map +1 -1
  71. package/dist/client/ClientRouterContext.d.ts +2 -0
  72. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  73. package/dist/client/I18nContext.d.ts +2 -1
  74. package/dist/client/I18nContext.d.ts.map +1 -1
  75. package/dist/client/Link.d.ts +2 -1
  76. package/dist/client/Link.d.ts.map +1 -1
  77. package/dist/client/RouteStateContext.d.ts +1 -0
  78. package/dist/client/RouteStateContext.d.ts.map +1 -1
  79. package/dist/client/ServerDataProvider.d.ts +1 -0
  80. package/dist/client/ServerDataProvider.d.ts.map +1 -1
  81. package/dist/client/index.js +165 -109
  82. package/dist/client/index.js.map +1 -1
  83. package/dist/client/useLocale.d.ts.map +1 -1
  84. package/dist/client/useLocation.d.ts +1 -0
  85. package/dist/client/useLocation.d.ts.map +1 -1
  86. package/dist/client/useNavigate.d.ts +4 -0
  87. package/dist/client/useNavigate.d.ts.map +1 -1
  88. package/dist/client/useTranslator.d.ts.map +1 -1
  89. package/dist/email/index.js +1 -1
  90. package/dist/facades/index.js +4 -4
  91. package/dist/facades/index.js.map +3 -3
  92. package/dist/http/index.js +2 -2
  93. package/dist/http/index.js.map +1 -1
  94. package/dist/i18n/index.js +1 -1
  95. package/dist/kernel/index.js +2 -2
  96. package/dist/kernel/index.js.map +1 -1
  97. package/dist/server/index.js +2 -2
  98. package/dist/server/index.js.map +1 -1
  99. package/dist/services/index.js +44 -44
  100. package/dist/services/index.js.map +2 -2
  101. package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -1
  102. package/package.json +1 -1
  103. package/dist/chunk-3q85w7aa.js +0 -4
  104. package/dist/chunk-6pwjkfk5.js +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"useLocale.d.ts","sourceRoot":"","sources":["../../client/useLocale.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS,+BAKU,MAAM,oBAMxC"}
1
+ {"version":3,"file":"useLocale.d.ts","sourceRoot":"","sources":["../../client/useLocale.ts"],"names":[],"mappings":"AAMA,wBAAgB,SAAS,+BAMU,MAAM,oBAaxC"}
@@ -4,5 +4,6 @@ export declare function useLocation(): {
4
4
  pathname: string;
5
5
  search: string;
6
6
  state: Record<string, unknown>;
7
+ locale: string;
7
8
  };
8
9
  //# sourceMappingURL=useLocation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLocation.d.ts","sourceRoot":"","sources":["../../client/useLocation.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW;;;;;;EAa1B"}
1
+ {"version":3,"file":"useLocation.d.ts","sourceRoot":"","sources":["../../client/useLocation.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW;;;;;;;EAc1B"}
@@ -2,10 +2,14 @@ import type { UrlParser, ViewPaths } from "./types";
2
2
  type Options<T extends ViewPaths> = UrlParser<T> extends Record<string, never> ? {
3
3
  search?: Record<string, string | number | boolean | undefined | null>;
4
4
  shallow?: boolean;
5
+ hash?: string;
6
+ locale?: string;
5
7
  } : {
6
8
  search?: Record<string, string | number | boolean | undefined | null>;
7
9
  params: UrlParser<T>;
10
+ hash?: string;
8
11
  shallow?: boolean;
12
+ locale?: string;
9
13
  };
10
14
  export declare function useNavigate(): {
11
15
  push: <T extends ViewPaths>(path: T | (string & {}), ...args: UrlParser<T> extends Record<string, never> ? [options?: Options<T>] : [options: Options<T>]) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../client/useNavigate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpD,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC1E;IACE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACtE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEN,wBAAgB,WAAW;WAIT,CAAC,SAAS,SAAS,QACzB,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,WACd,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC/C,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;cAJb,CAAC,SAAS,SAAS,QACzB,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,WACd,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC/C,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAmC9B"}
1
+ {"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../client/useNavigate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpD,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC1E;IACE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACtE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,wBAAgB,WAAW;WAKT,CAAC,SAAS,SAAS,QACzB,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,WACd,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC/C,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;cAJb,CAAC,SAAS,SAAS,QACzB,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,WACd,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC/C,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAiD9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTranslator.d.ts","sourceRoot":"","sources":["../../client/useTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAc,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAI7C,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,QAAQ,CACtD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC,MAAM,CAAC,CAAC,CACX,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnD,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAChB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhB,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,SAAS,EAAE,CAAC;KAItE,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAC/C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4CAC3B,CAAC,WAAW,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAczC,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAC/C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4CAE3B,CAAC,WACG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAEiB,GAAG,CAAC,OAAO;EAIhE"}
1
+ {"version":3,"file":"useTranslator.d.ts","sourceRoot":"","sources":["../../client/useTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAc,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAK7C,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,QAAQ,CACtD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC,MAAM,CAAC,CAAC,CACX,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnD,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAChB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhB,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,SAAS,EAAE,CAAC;KAItE,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAC/C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4CAC3B,CAAC,WAAW,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAczC,CAAC,SAAS,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAC/C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,4CAE3B,CAAC,WACG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAEiB,GAAG,CAAC,OAAO;EAIhE"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{T as B}from"../chunk-6pwjkfk5.js";import{U as A}from"../chunk-dak25pw2.js";import"../chunk-nxrhps23.js";import"../chunk-6fy0y9na.js";import{render as P}from"jsx-email";import{jsx as Q}from"react/jsx-runtime";class D{from="";to=[];subject="No Subject";cc=[];bcc=[];attachments=[];template;static async send(q){let k=new this,F=A.use().service.defaultLocale,{to:G=k.to,from:H=k.from,subject:w=typeof k.subject==="string"?k.subject:k.subject[q.locale||F],cc:J=k.cc,bcc:K=k.bcc,attachments:M=k.attachments,data:O}=q,y=await k.render({...O,locale:q.locale});if(process.env.EMAIL_DEBUG==="true"){let z=`${process.env.ROOT_DIR}/.debug/emails/${new Date().toISOString()}${w}.html`;await Bun.write(z,y),Bun.spawnSync(["open",z]);return}await B.use().service.driver.send({bcc:K,cc:J,from:H,subject:w,to:G,attachments:M,html:y})}async render(q){let k=this.template;return await P(Q(k,{...q}))}}export{D as Email};
2
+ import{T as B}from"../chunk-a1hr4h7e.js";import{U as A}from"../chunk-27wb042h.js";import"../chunk-ng2p76w0.js";import"../chunk-3za8zsph.js";import{render as P}from"jsx-email";import{jsx as Q}from"react/jsx-runtime";class D{from="";to=[];subject="No Subject";cc=[];bcc=[];attachments=[];template;static async send(q){let k=new this,F=A.use().service.defaultLocale,{to:G=k.to,from:H=k.from,subject:w=typeof k.subject==="string"?k.subject:k.subject[q.locale||F],cc:J=k.cc,bcc:K=k.bcc,attachments:M=k.attachments,data:O}=q,y=await k.render({...O,locale:q.locale});if(process.env.EMAIL_DEBUG==="true"){let z=`${process.env.ROOT_DIR}/.debug/emails/${new Date().toISOString()}${w}.html`;await Bun.write(z,y),Bun.spawnSync(["open",z]);return}await B.use().service.driver.send({bcc:K,cc:J,from:H,subject:w,to:G,attachments:M,html:y})}async render(q){let k=this.template;return await P(Q(k,{...q}))}}export{D as Email};
3
3
 
4
4
  //# debugId=3CD313A52C95A57264756E2164756E21
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{G as xc,H as _c,I as M,J as a,K as W,L as z,M as F,O as jc,P as d,Q as V,R as x}from"../http/index.js";import{U as B}from"../chunk-dak25pw2.js";import{V as Wc}from"../chunk-mtbjk5px.js";import{qc as Nc}from"../chunk-pvxzx61f.js";import{rc as k,tc as X,uc as Cc}from"../chunk-fe1gn043.js";import{vc as $c}from"../chunk-3q85w7aa.js";import{xc as D}from"../chunk-nxrhps23.js";import{zc as Kc}from"../chunk-6fy0y9na.js";import{AsyncLocalStorage as Zc}from"async_hooks";class N extends D{service;static _name="BroadcastingServiceContainer";publishCb;context=new Zc;constructor(c){super();this.service=c}onPublish(c){this.publishCb=c}publish(...c){let[s,f,i]=c;this.publishCb(s,f,i)}async handleMessage(c,s){let f=JSON.parse(s);if(f.type==="subscribe"){let i=Object.entries(this.service.channels).sort(([l],[w])=>l.length-w.length);for(let[l,w]of i){let b=new URLPattern({pathname:l});if(b.test({pathname:f.topic})){let y=b.exec({pathname:f.topic})?.pathname.groups,g=new w;if(await g.subscribe.call(g,y))c.subscribe(f.topic);break}}}if(f.type==="broadcast")c.publish(f.topic,JSON.stringify({topic:f.topic,data:f.payload}));if(f.type==="unsubscribe")c.unsubscribe(f.topic)}run(c,s){let f=c.get("Cookie"),i=new Map;if(f){let l=f.split(";");for(let w of l){let[b,y]=w.split("=");i.set(b.trim(),y.trim())}}this.context.run({headers:c,cookies:i},s)}}class U{static async user(){let c=z.getStore(),s=N.use().context.getStore(),f="",i="";if(c?.req)f=c.req.cookies.get("access_token"),i=c.req.headers.get("User-Agent");if(s?.cookies)i=s.headers.get("User-Agent"),f=s.cookies.get("access_token");let l=c?.user;if(!l)l=(await x.use().getSession(f,i))?.user,c?.setUser(l);if(l)return l;return null}static async guard(c){let s=await U.user();if(!s)throw new d;try{if(!await c(s))throw new d}catch(f){throw new d}}static async guardSafe(c){let s=await U.user();if(!s)return!1;try{return await c(s)}catch(f){return!1}}static async authenticate(c){await x.use().authenticate(c)}static async createMagicLink(c){return await x.use().createMagicLinkToken(c)}}class G{static getSupportedLocales(){return B.use().service.supportedLocales}static getDefaultLocale(){return B.use().service.defaultLocale}static locale(){return B.use().detectLocale(z.getStore().req)}static setLocale(c=G.locale()){let s=B.use(),f=c;if(!s.service.supportedLocales.includes(c))f=s.service.defaultLocale;return z.getStore().setCookie("i18n-locale",f,{expires:new Date(Date.now()+31536000000)}),f}}var Oc=Kc(Nc(),1);import{Buffer as Hc}from"buffer";class I extends D{service;static _name="FileStorageServiceContainer";constructor(c){super();this.service=c}}class Lc{static async put(c){return I.use().service.driver.put(c)}static async metadata(c){let s=Hc.from(await c.arrayBuffer());try{return await Oc.default(s).metadata()}catch{return{}}}static async fetch(c){return I.use().service.driver.fetch(c)}static list(c){return I.use().service.driver.list(c)}static delete(){}}function Fc(c){return Object.fromEntries(Object.entries(c).filter(([,s])=>{return s!==null&&s!==void 0}))}class Y extends Error{constructor(){super("Adapter not found");this.name="AdapterNotFound"}}class e{createSession(){throw new Y}deleteSession(){throw new Y}findSession(){throw new Y}findUserByEmailAddress(){throw new Y}updateSession(){throw new Y}createUser(){throw new Y}}class zc extends F{schema={email:{required:"Email is required",string:"Invalid email",email:"Invalid email"},password:{required:"Password is required"}}}class Tc extends F{schema={name:{string:"Invalid name",required:"Name is required","min:2":"Name must be at least 3 characters"},email:{string:"Invalid email",required:"Email is required",email:"Invalid email"},password:{required:"Password is required","min:8":"Password must be at least 8 characters"}}}class Dc extends F{schema={email:{required:"Email is required",email:"Invalid email"}}}class Bc extends F{schema={password:{required:"Password is required",password:"Invalid password"}}}class o extends xc{provider=x.use()?.provider;async me(){let c=await U.user();if(!c)throw new jc;return c}async verifyEmail(c=new F){let s=await c.input(),f=x.use()?.provider,i=await f.adapter.findUserByVerificationToken(s.get("token"));if(!i)return{email:null};if(await f.adapter.verifyUser(i.email),i)return{email:i.email};return{email:null}}async signInWithMagicLink(c=new F){let s=x.use(),f=s.provider,i=c.search.get("token"),l=decodeURIComponent(c.search.get("email")),w=null;try{w=await f.adapter.findUserMagicLinkToken({email:l,token:i})}catch(y){return console.log(y),{error:JSON.stringify(y)}}if(!w)return{error:"Invalid token"};await f.adapter.verifyUser(l),await f.adapter.deleteMagicLinkToken(l);let b=await s.createOrUpdateSession({email:l});return c.ctx().setCookie("access_token",b.token,{expires:b.absoluteExpiresAt}),await f.onSignIn(b),{session:b}}async signInWithPin(c=new F){let s=x.use(),f=s.provider,i=await c.input(),{email:l,pin:w}=i.toJSON();if(!await f.adapter.findUserMagicLinkToken({email:l,pin:w}))throw new W({pin:["Invalid pin"]});await f.adapter.deleteMagicLinkToken(l),await f.adapter.verifyUser(l);let y=await s.createOrUpdateSession({email:l});return c.ctx().setCookie("access_token",y.token,{expires:y.absoluteExpiresAt}),await f.onSignIn(y),{session:y}}async signIn(c=new zc){let s=await c.input(),{email:f,password:i}=s.toJSON(),l=x.use().provider,w=await l.adapter.findUserByEmailAddress(f,l.verifyEmail);if(!w)throw new W({invalid_credentials:["Invalid credentials"]});if(!await l.verifyPassword(i,w.password))throw new W({invalid_credentials:["Invalid credentials"]});let y=await x.use().createOrUpdateSession({email:w.email,id:w.id});c.ctx().setCookie("access_token",y.token,{expires:y.absoluteExpiresAt}),await l.onSignIn(w);let{password:g,...n}=w;return n}async signUp(c=new Tc){let s=await c.input(),{email:f,password:i,name:l,invitationId:w}=s.toJSON(),b=x.use().provider;if(await b.adapter.findUserByEmailAddress(f,!1))throw new W({email:["Email address already exists"]});let g=await b.hashPassword(i),n=B.use().detectLocale(c),p;if(w){if(p=await b.adapter.findInvitation(w,f),p)await b.adapter.deleteInvitationById(w)}let O,L;if(p)O=await b.adapter.createUser({email:f,name:l,password:g,emailVerifiedAt:new Date,locale:n}),await b.adapter.createAccount({organizationId:p.organizationId,userId:O.id,organizationRole:p.role});else L=await b.generateEmailVerificationToken(f),O=await b.adapter.createUser({email:f,name:l,password:g,verificationToken:L,locale:n});return await b.onSignUp(O,L),O}async signOut(c=new F){let s=c.cookies.get("access_token"),f=await U.user(),i=x.use().provider;return await i.adapter.deleteSession({token:s}),c.ctx().setCookie("access_token","",{expires:new Date(0)}),await i.onSignOut(f),{}}async forgotPassword(c=new Dc){let s=await c.input(),{email:f}=s.toJSON(),i=x.use().provider,l=await i.adapter.findUserByEmailAddress(f,i.verifyEmail);if(!l)return{};let w=await i.generateForgotPasswordToken(l);return await i.adapter.createPasswordResetToken({user:l,token:w}),await i.onForgotPassword(l,w),{}}async resetPassword(c=new Bc){let s=x.use().provider,f=await c.input(),{password:i,token:l}=f.toJSON(),w=await s.adapter.findPasswordResetToken({token:l});if(!w)throw new W({token:["Invalid token"]});if(V.Instant.from(w.createdAt.toISOString()).add({hours:24}).until(V.Now.instant()).sign>=0)throw new W({token:["Token expired"]});await s.adapter.deletePasswordResetToken({token:l});let y=await s.adapter.findUserByEmailAddress(w.user.email,s.verifyEmail);if(!y)throw new W({email:["User not found"]});let g=await s.hashPassword(i);return await s.adapter.updateUserPassword({id:y.id,password:g}),await s.adapter.deleteAllUserSessions(y.id),await s.onResetPassword(y),{}}async changePassword(c=new F){let s=x.use().provider,f=await U.user(),i=await c.input(),{oldPassword:l,newPassword:w}=i.toJSON(),{password:b}=await s.adapter.findUserByEmailAddress(f.email,s.verifyEmail);if(!await s.verifyPassword(l,b))throw new W({oldPassword:["Incorrect password"]});let g=await s.hashPassword(w);return await s.adapter.updateUserPassword({id:f.id,password:g}),await s.adapter.deleteAllUserSessions(f.id),{}}async oauthRedirect(c=new F){let{provider:s}=c.params,f=x.use().provider.oauthProviders[s];if(!f)throw new Error(`Invalid provider: ${s}`);return{destination:await f.getRedirectUrl(c)}}async oauthCallback(c=new F){let{provider:s}=c.params,f=x.use(),i=f.provider,l=i.oauthProviders[s],{email:w,name:b,username:y,providerId:g}=await l.onCallback(c);if(!y&&!w)throw new Error("Email or username is required");let n=w??`${y}:${s}`,p=await i.adapter.findUserByEmailAddress(n,!1),O=B.use().detectLocale(c);if(!p)p=await i.adapter.createUser({email:n,name:b,locale:O,emailVerifiedAt:new Date}),await i.adapter.createSocialAccount({provider:s,userId:p.id,email:n,username:y,providerId:g,expiresAt:new Date,accessToken:"",refreshToken:""});let L=await f.createOrUpdateSession({email:p.email,id:p.id});return c.ctx().setCookie("access_token",L.token,{expires:L.expiresAt}),await i.onSignIn(p),{destination:i.redirectPath}}async createMagicLinkToken(c=new F){let s=await c.input(),{email:f}=s.toJSON(),i=x.use(),l=i.provider,{user:w,pin:b,token:y}=await i.createMagicLinkToken(f);return await l.onMagicLinkCreated(w,{email:f,pin:b,token:y}),{email:f}}}class oc extends a{routes={"/:provider":this.redirect([o,"oauthRedirect"]),"/:provider/callback":this.redirect([o,"oauthCallback"])}}class cc extends a{routes={"/sign-in/magic-link":this.view("auth/MagicLinkSignIn",[o,"signInWithMagicLink"]),"/oauth":oc}}class sc extends M{middlewares=["cache:private"];routes={"/sign-in":this.post(o,"signIn"),"/sign-up":this.post(o,"signUp"),"/sign-out":this.post(o,"signOut"),"/forgot-password":this.post(o,"forgotPassword"),"/reset-password":this.post(o,"resetPassword"),"/change-password":this.post(o,"changePassword"),"/verify-email":this.post(o,"verifyEmail"),"/me":this.get(o,"me").middleware(["auth"]),"/magic-link":this.post(o,"createMagicLinkToken"),"/sign-in-with-pin":this.post(o,"signInWithPin")}}class Qc extends $c{basePath="/auth";verifyEmail=!0;redirectPath="/dashboard";sessionExpiresInHours=24;sessionAbsoluteExpiresInHours=672;adapter=new e;oauthProviders={};boot(){}async verifyPassword(c,s){return await Bun.password.verify(c,s)}async hashPassword(c){return await Bun.password.hash(c)}async generateForgotPasswordToken(c){let s=new Bun.CryptoHasher("sha256");return s.update(`${c.email}${Date.now()}`),s.digest("hex")}generateEmailVerificationToken(c){if(!this.verifyEmail)return"";let s=new Bun.CryptoHasher("sha256");return s.update(`${c}${Date.now()}`),s.digest("hex")}generateMagicLinkToken(c){let s=new Bun.CryptoHasher("sha256");return s.update(`${c}${Date.now()}`),s.digest("hex")}extendSession(c){return{}}onSignUp(c,s){}onSignIn(c){}onSignOut(c){}onForgotPassword(c,s){}onResetPassword(c){}onMagicLinkCreated(c,s){return}}class fc extends M{middlewares=["cache:private,0,no-store"];routes={"/translations/:locale/:scope*":this.get(async()=>{let c=new F,s=`/${c.params.scope??""}`,i=c.params.locale??B.use().detectLocale(c),l=B.use().getPageTranslations(i,s);return c.ctx().setCookie("i18n-locale",i,{expires:new Date(Date.now()+31536000000)}),{[i]:l}})}}class ic extends M{routes={"/resize":this.file(async()=>{let c=new F,s=new URL(c.rawRequest.url),f=s.searchParams.get("url"),i=Number(s.searchParams.get("w")),l=Number(s.searchParams.get("h")),w=s.searchParams.get("fit")??"cover",b=Number(s.searchParams.get("q"));if(!f)return new Response(JSON.stringify({error:"url query parameter is required"}),{headers:{"Content-Type":"application/json"},status:404});let g=`${f.startsWith("http")?"":`http://localhost:${process.env.PORT||5173}`}${f}`,n=await fetch(g);if(!n.ok)return new Response(JSON.stringify({error:"Image not found",info:g}),{headers:{"Content-Type":"application/json"},status:404});let p=Buffer.from(await n.arrayBuffer()),O=await Jc.use().service.driver.resize(p,{height:l,width:i,fit:w,quality:b});return n.headers.delete("Content-Type"),n.headers.delete("Content-Length"),new Response(O,{headers:{"Content-Type":"image/webp","Content-Length":`${O.byteLength}`,...n.headers.toJSON()}})})}}class Jc extends D{service;static _name="ImageOptimizationServiceContainer";constructor(c){super();this.service=c}}import{mkdir as lc,exists as wc,readdir as Sc}from"fs/promises";class R{static channel(c,s){let f=N.use().service.channels[c];if(!f)return console.error(`Channel ${c} not found`),{publish:()=>{}};let i=new f;return{publish:(l,w=!1)=>{let b=X(c,s);N.use().publish(b,JSON.stringify({topic:b,data:i.publish(l)}),w)}}}}class _ extends D{service;static _name="LoggingServiceContainer";writer;isReady=!1;logsDirPath=`${process.env.ROOT_DIR}/storage/logs`;flushTimeout;fileSize=0;writerSize=0;isCreatingFile=!1;currentLogFilePath;constructor(c){super();this.service=c;this.boot().then(()=>{this.isReady=!0})}async boot(){if(!process.env.ROOT_DIR)return;if(!await wc(`${process.env.ROOT_DIR}/storage`))await lc(`${process.env.ROOT_DIR}/storage`);if(!await wc(this.logsDirPath))await lc(this.logsDirPath);this.newLogFile()}async newLogFile(){if(!await wc(this.logsDirPath))await lc(this.logsDirPath);if(this.isCreatingFile=!0,this.currentLogFilePath){this.writer.flush(),this.writer.end(),this.writer=null;let f=new File([await Bun.file(this.currentLogFilePath).arrayBuffer()],this.currentLogFilePath.split("/").pop(),{type:"text/plain"});this.service.onLogFileClosed(f),this.fileSize=0,this.writerSize=0}let s=(await Sc(this.logsDirPath)).sort().reverse()[0];if(s){let f=Bun.file(`${this.logsDirPath}/${s}`);if(f.size<this.service.maxFileSize)this.currentLogFilePath=`${this.logsDirPath}/${s}`,this.writer=f.writer(),this.writer.write(await f.text()),this.writer.write(`
3
- `),this.writer.flush(),this.fileSize=f.size}if(!this.writer){let f=`${new Date(Date.now()).toISOString()}.log`.replaceAll(":","-");this.currentLogFilePath=`${this.logsDirPath}/${f}`;let i=Bun.file(`${this.logsDirPath}/${f}`);this.writer=i.writer(),this.fileSize=0,this.writerSize=0}this.isCreatingFile=!1}async log(c,s,f={}){if(!this.isReady)await new Promise((y)=>{let g=setInterval(()=>{if(this.isReady)y({}),clearInterval(g)},100)});let i=z.getStore(),l={};if(i)l={url:i.req.rawRequest.url,method:i.req.rawRequest.method,headers:i.req.rawRequest.headers,body:i.req.rawRequest.body};let w={timestamp:new Date(Date.now()).toISOString(),env:"production",level:c,message:s,metadata:{...l,...f}},b="";try{b=JSON.stringify(w)}catch(y){throw new Error("Metadata must be a valid JSON object")}this.writerSize+=b.length,this.fileSize+=b.length,this.writer.write(b),this.writer.write(`
4
- `),R.channel("/logs/live",{}).publish(JSON.stringify(w)),this.service.onLogCreated(w),this.tryFlush()}async tryFlush(){if(this.fileSize>this.service.maxFileSize){if(!this.isCreatingFile)await this.newLogFile()}if(this.writerSize>this.service.maxFileSize/2)await this.writer.flush(),this.writerSize=0,await this.newLogFile();else clearTimeout(this.flushTimeout),this.flushTimeout=setTimeout(async()=>{await this.writer.flush(),this.writerSize=0},100)}}class bc extends M{middlewares=["cache:private,0"];routes={"/live":this.get(async()=>{let c=Bun.file(_.use().currentLogFilePath);return new Response(await c.text(),{headers:{"Content-Type":"text/plain"}})})}}function Gc(c){let s=new Map;for(let f of c)if(typeof f==="string"){let[i,l=""]=f.split(":");if(i.startsWith("-")){if(s.has(i.replace("-","")))s.delete(i.replace("-",""))}else s.set(i,l.split(",").filter(Boolean))}else s.set(f,[]);return s}class E extends D{service;static _name="MiddlewareServiceContainer";constructor(c){super();this.service=c}runMiddleware(c){let s=new F;return Array.from(Gc(c).entries()).map(([f,i])=>{if(typeof f==="string"){let l=this.service.aliases[f];if(l){let w=new l(s);return()=>w.run.call(w,...i)}}else{if(_c(f)){let l=new f(s);return l.run.bind(l)}return f}}).filter(Boolean).reduce((f,i)=>{return async()=>{return{...await f(),...await i()}}},()=>Promise.resolve({}))()}}function Ic(c){return"run"in c}function Vc(c){return Object.hasOwn(c,"get")||Object.hasOwn(c,"post")||Object.hasOwn(c,"put")||Object.hasOwn(c,"delete")}function Ec(c){return Object.hasOwn(c,"first")&&Object.hasOwn(c,"second")}function kc(c){if("__brand"in c)return c.__brand==="ApiRouter";return!1}function yc(c,s="",f=[]){let i={};function l(w,b,y,g){let n=w==="/"?"":w,p=s==="/"?"":s,O=(`${p}${n}`===""?"/":`${p}${n}`).replaceAll("//","/");if(!i[O])i[O]={};i[O][b.toUpperCase()]={exec:y,middleware:[...f,...g]},i[O].OPTIONS={exec:()=>{let j=new F().ctx().headers;return new Response(null,{headers:j,status:204})},middleware:[]}}for(let[w,b]of Object.entries(c)){if(Ic(b)){let y=b,g=y.method,n=y.middlewares,p=y.run.bind(y);l(w,g,p,n)}if(Vc(b))for(let[y,g]of Object.entries(b)){let n=g.middlewares,p=g.run.bind(g);l(w,y,p,n)}if(kc(b)){let y=new b,g=yc(y.routes,`${s}${w}`,y.middlewares);for(let[n,p]of Object.entries(g))i[n.replaceAll("//","/")]=p}if(Ec(b)){let{first:y,second:g}=b;for(let[n,p]of Object.entries(y)){let O=p.middlewares,L=p.run.bind(p),[j,...$]=w.split("/").reverse();if(!j.startsWith(":"))throw new Error("Resource route must end with a dynamic segment");l($.reverse().join("/"),n,L,O)}for(let[n,p]of Object.entries(g)){let O=p.middlewares,L=p.run.bind(p);l(w,n,L,O)}}}return Object.fromEntries(Object.entries(i).sort(([w],[b])=>{let y=w.split("/").length+w.split(":").length,g=b.split("/").length+b.split(":").length;return y-g}))}function nc(c){return c.replace(/\([^)]*\)/g,"").replace(/\/\//g,"/")}function A(c){let s={};for(let[f,i]of Object.entries(c))if("run"in i){let l=i;if("children"in l){let w=new l.children,b=A(w.routes);for(let[y,{exec:g,middleware:n}]of Object.entries(b)){let p=f==="/"?y:`${f}${y}`,O=y==="/"&&f!=="/"?f:p,L=(j)=>l.run.call(l,j,f);s[nc(O)]={exec:[L,...g],middleware:[...l.middlewares,...n],viewPath:l.viewPath}}}else{let w=(b)=>l.run.call(l,b,f);s[nc(f)]={exec:[w],middleware:l.middlewares,viewPath:l.viewPath}}}else{let l=new i,w=A(l.routes);for(let[b,{exec:y,middleware:g,viewPath:n}]of Object.entries(w)){let p=f==="/"?b:`${f}${b}`,O=b==="/"&&f!=="/"?f:p;s[nc(O)]={exec:y,middleware:[...l.middlewares,...g],viewPath:n}}}return Object.fromEntries(Object.entries(s).sort(([f],[i])=>{let l=f.split("/").length+f.split(":").length,w=i.split("/").length+i.split(":").length;return l-w}))}import{renderToReadableStream as Rc}from"react-dom/server.browser";import{createElement as Mc,Fragment as Ac}from"react";function dc(c){return c.replace(/\([^)]*\)/g,"").replace(/\/\//g,"/")}function C(c){let s={};for(let[f,i]of Object.entries(c))if("run"in i){let l=i.viewPath;if("children"in i){s[f]=[l];let w=new i.children,b=C(w.routes);for(let[y,g]of Object.entries(b)){let n=f==="/"?y:`${f}${y}`,p=y==="/"&&f!=="/"?f:n;s[p]=[l,...g]}if(s[f].length===1)delete s[f]}else s[f]=[l]}else{let l=new i,w=C(l.routes);for(let[b,y]of Object.entries(w)){let g=f==="/"?b:`${f}${b}`,n=b==="/"&&f!=="/"?f:g;s[n]=y}}return Object.fromEntries(Object.entries(s).map(([f,i])=>[dc(f),i]))}function t(c){let s=[];for(let[f,i]of Object.entries(c))if("run"in i){let l=i.viewPath;if(l==="__")continue;if(l==="REDIRECT")continue;if("children"in i){let w=new i.children,b=t(w.routes);s.push([l,b])}else s.push([l,[]])}else{let l=new i,w=t(l.routes);s.push(...w)}return s}function gc(c){let s=[];for(let[f,i]of c)s.push(f,...gc(i).flat());return Array.from(new Set(s))}class P{static debug(c,s){_.use().log("debug",c,s)}static info(c,s){_.use().log("info",c,s)}static notice(c,s){_.use().log("notice",c,s)}static warning(c,s){_.use().log("warning",c,s)}static error(c,s){_.use().log("error",c,s)}static critical(c,s){_.use().log("critical",c,s)}static alert(c,s){_.use().log("alert",c,s)}static emergency(c,s){_.use().log("emergency",c,s)}}class pc extends D{service;static _name="ViewRouterServiceContainer";flatViewRoutes={};routeManifest={};componentTree=[];flatComponentTree=[];root=null;constructor(c){super();this.service=c;let s={"/":c.rootRouter,"/auth":cc};this.flatViewRoutes=A(s),this.routeManifest=C(s),this.componentTree=t(s),this.flatComponentTree=gc(this.componentTree),this.root=c.root}boot(){}async onRequestEnd(c){if(!c.cookies.has("session_id"))c.ctx().setCookie("session_id",Bun.randomUUIDv7(),{httpOnly:!0,secure:!0,sameSite:"Strict",expires:new Date(Date.now()+31536000000)});return await this.service.onRequestEnd(c)}async render(c){let{csrfTokenHMAC:s,currentPathName:f,headers:i,i18n:l,params:w,pathname:b,prefetchedData:y,url:g,user:n,viewData:p,breadcrumbs:O}=c,L={kind:"view",data:{pageData:{[b]:p},__csrf:s.toString("base64"),prefetchedData:y,i18n:l,auth:{user:n},routeManifest:this.routeManifest,breadcrumbs:O,router:{pathname:f,params:w,currentPath:b,searchParams:g.search,is404:!f?!0:!1},componentTree:[["404",[]],...this.componentTree]},head:{}},j=this.root,$=this.routeManifest[f];return async(m)=>{let{bootstrapModules:J,loaders:Z,getStyles:q,viewImportMap:H,cssManifest:Q}=m;L.data.cssManifest=Q;let K=await Rc(Mc(Ac,{children:[...await q($),Mc(j,{data:L.data,viewImportMap:H,key:"root"})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(L.data)}; window.loaders=${Z}`,bootstrapModules:J});return new Response(K,{status:!f?404:200,headers:i})}}async handleViewRequest(c){let s=new URL(c.url),f=s.pathname.endsWith(".json"),i=s.pathname.replace(".json",""),l=[],w=[],b=null,y={};try{for(let[n,p]of Object.entries(this.flatViewRoutes)){let O=new Wc({pathname:n});if(O.test({pathname:i})){b=n,y=O.exec({pathname:i})?.pathname.groups,l=p.exec,w=p.middleware;break}}}catch(n){throw n}let g=new F(c,y,"view",b);return await z.run(g,async()=>{G.setLocale();let n=null,p=z.getStore(),O=p.req;try{await E.use().runMiddleware(w);let L=await Promise.all([...l.map((T)=>T(O)),...Array.from(p.prefetchPromiseQueue).map((T)=>T())]),j=p.cookies,$=p.headers,m=p.prefetchedResources;n={data:L,cookies:j,headers:$,user:p.user,prefetchedData:Object.fromEntries(m.entries()),currentPathName:O.routePath,params:O.params};let{params:J,currentPathName:Z,user:q}=n,H={},Q={};for(let T of L){let[S,r]=Object.entries(T)?.[0]??[];if(!S||!r)continue;Q[`${S}:${Z}`]=r.breadcrumb,H[S]=r}let K=B.use(),Xc=K.isEnabled,u={};if(Xc){let T=K.detectLocale(new F(c,J)),S=K.getPageTranslations(T,Z);u={supportedLocales:K.service.supportedLocales,currentLocale:T,dictionary:{[T]:S}}}if(f)return $.set("Content-Type","application/json"),j.forEach((T)=>$.append("Set-Cookie",T.toString())),await this.service.onRequestEnd(O),new Response(JSON.stringify({data:{[i]:H},breadcrumbs:Q,prefetchedData:n.prefetchedData,i18n:u,is404:!Z}),{headers:$});$.set("Content-Type","text/html");for(let T of j)$.append("Set-Cookie",T.toString());let Yc=Bun.CSRF.generate(process.env.SECRET);$.append("Set-Cookie",`csrf_token=${Yc}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now()+86400000).toUTCString()}`);try{await this.onRequestEnd(O)}catch(T){P.error(T?.message??'Error in "onRequestEnd" event handler',{err:JSON.stringify(T)})}return await this.render({csrfTokenHMAC:Buffer.from(""),currentPathName:Z,headers:$,i18n:u,params:J,pathname:s.pathname,prefetchedData:n.prefetchedData,url:s,user:q,viewData:H,breadcrumbs:Q})}catch(L){if(L.kind===k)if(f){let{status:j=400,data:$,directive:m,headers:J}=L.payload.api;return new Response(JSON.stringify({data:$,directive:m}),{headers:J,status:j})}else{let{status:j=400,error:$}=L.payload.view;return new Response($?.message,{...L.payload.view,status:j})}else throw this.service.onRequestFail(O,L),L}})}}class mc extends M{routes={"/api-routes":this.get(()=>{let c=v.use().flatRoutes,s=[];for(let[f,i]of Object.entries(c))for(let[l,w]of Object.entries(i)){let{exec:b,middleware:y}=w;s.push({path:f,method:l,middleware:y})}return s}),"/view-routes":this.get(()=>{let c=pc.use().flatViewRoutes,s=[];for(let[f,{middleware:i,viewPath:l}]of Object.entries(c))s.push({path:f,method:"GET",viewPath:l,middleware:i});return s})}}class v extends D{service;static _name="ApiRouterServiceContainer";flatRoutes={};constructor(c){super();this.service=c;this.flatRoutes=yc({"/":this.service.rootRouter.bind(this.service),"/auth":sc,"/__gemi__/services/i18n":fc,"/__gemi__/services/logs":bc,"/__gemi__/services/image":ic,"/__gemi__/debug":mc})}getRouteHandlerAndParams(c){let f=new URL(c.url).pathname.replace("/api",""),i={},l;for(let[w]of Object.entries(this.flatRoutes))try{let b=new URLPattern({pathname:w});if(b.test({pathname:f})){l=w,i=b.exec({pathname:f})?.pathname.groups;break}}catch(b){console.error(b)}return{params:i,path:l}}async runRouteMiddleware(c,s){let i=this.flatRoutes[c][s.rawRequest.method].middleware;try{await E.use().runMiddleware(i)}catch(l){if(l.kind===k){if(s.rawRequest.url.includes("/api")){let{status:w=400,data:b,headers:y}=l.payload.api;return new Response(JSON.stringify(b),{status:w,headers:{"Content-Type":"application/json",...y}})}}else throw this.service.onRequestFail(s,l),console.error(l),l}}async getRouteData(c){let s=this.flatRoutes[c],f=z.getStore(),i=s[f.req.rawRequest.method].exec??(()=>Promise.resolve({})),l={};try{l=await i()}catch(w){if(w.kind===k){let{status:b=400,data:y,headers:g}=w.payload.api;return new Response(JSON.stringify(y),{status:b,headers:{"Content-Type":"application/json",...g}})}throw this.service.onRequestFail(f.req,w),console.error(w),w}return l}async handleApiRequest(c){let{params:s,path:f}=this.getRouteHandlerAndParams(c),i=this.flatRoutes[f];if(!i||!i[c.method])return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404});let l=new F(c,s,"api",f);if(!c.url.includes("/__gemi__"))this.service.onRequestStart(l);return await z.run(l,async()=>{let w=z.getStore();w.setRequest(l);let b=await this.runRouteMiddleware(f,l);if(b instanceof Response)return b;let y=await this.getRouteData(f);if(y instanceof Response)return y;let g=w.headers;if(g.append("Content-Type","application/json"),w.cookies.forEach((n)=>g.append("Set-Cookie",n.toString())),w.destroy(),!c.url.includes("/__gemi__"))this.service.onRequestEnd(l);return new Response(JSON.stringify(y),{headers:g})})}}class h{static prepare(c,...s){let f={params:{},search:{}},[i={}]=s,{search:l,params:w}={...f,...i},b=z.getStore();if(b.req.kind==="api")throw new Error("Query.prefetch() cannot be called from an API request");let y=b.req.rawRequest,g=new URL(y.url),n=new URLSearchParams(Fc(l));n.delete("json"),n.sort();let p=[`${X(c,w)}`,n.toString()].filter((J)=>J.length>0).join("?"),O=`${g.origin}/${p}`,L=new Request(O,{headers:y.headers}),j=new F(L,w),$=(J)=>{b.prefetchedResources.set(X(c,w),{[n.toString()]:J})},m=()=>{return z.run(j,async()=>{let J=await v.use().getRouteData(c);return $(J),J})};return{instant:m,prefetch:()=>{b.prefetchPromiseQueue.add(m)}}}static instant(c,...s){return h.prepare(c,...s).instant()}static prefetch(c,...s){return h.prepare(c,...s).prefetch()}}class Uc{static absolute(c,...s){return`${process.env.HOST_NAME}${X(String(c),s[0]??{})}`}static relative(c,...s){return X(String(c),s[0]??{})}}export{Uc as Url,Cc as Redirect,h as Query,P as Log,G as I18n,Lc as FileStorage,R as Broadcast,U as Auth};export{N as y,I as z,_ as A,Qc as B,Jc as C,E as D,pc as E,v as F};
2
+ import{G as Ls,H as Zs,I as Y,J as ws,K,L as D,M as x,O as Js,P as C,Q as k,R as j}from"../http/index.js";import{U as L}from"../chunk-27wb042h.js";import{V as Ns}from"../chunk-mtbjk5px.js";import{pc as Vs}from"../chunk-4zy0b2cq.js";import{qc as A,sc as Q,tc as hs}from"../chunk-xttpe58q.js";import{uc as Bs}from"../chunk-xs7ze1bn.js";import{wc as M}from"../chunk-ng2p76w0.js";import{yc as ms}from"../chunk-3za8zsph.js";import{AsyncLocalStorage as Ss}from"async_hooks";class S extends M{service;static _name="BroadcastingServiceContainer";publishCb;context=new Ss;constructor(s){super();this.service=s}onPublish(s){this.publishCb=s}publish(...s){let[c,f,w]=s;this.publishCb(c,f,w)}async handleMessage(s,c){let f=JSON.parse(c);if(f.type==="subscribe"){let w=Object.entries(this.service.channels).sort(([i],[l])=>i.length-l.length);for(let[i,l]of w){let b=new URLPattern({pathname:i});if(b.test({pathname:f.topic})){let y=b.exec({pathname:f.topic})?.pathname.groups,p=new l;if(await p.subscribe.call(p,y))s.subscribe(f.topic);break}}}if(f.type==="broadcast")s.publish(f.topic,JSON.stringify({topic:f.topic,data:f.payload}));if(f.type==="unsubscribe")s.unsubscribe(f.topic)}run(s,c){let f=s.get("Cookie"),w=new Map;if(f){let i=f.split(";");for(let l of i){let[b,y]=l.split("=");w.set(b.trim(),y.trim())}}this.context.run({headers:s,cookies:w},c)}}class N{static async user(){let s=D.getStore(),c=S.use().context.getStore(),f="",w="";if(s?.req)f=s.req.cookies.get("access_token"),w=s.req.headers.get("User-Agent");if(c?.cookies)w=c.headers.get("User-Agent"),f=c.cookies.get("access_token");let i=s?.user;if(!i)i=(await j.use().getSession(f,w))?.user,s?.setUser(i);if(i)return i;return null}static async guard(s){let c=await N.user();if(!c)throw new C;try{if(!await s(c))throw new C}catch(f){throw new C}}static async guardSafe(s){let c=await N.user();if(!c)return!1;try{return await s(c)}catch(f){return!1}}static async authenticate(s){await j.use().authenticate(s)}static async createMagicLink(s){return await j.use().createMagicLinkToken(s)}}class m{static getSupportedLocales(){return L.use().service.supportedLocales}static getDefaultLocale(){return L.use().service.defaultLocale}static locale(){return L.use().detectLocale(D.getStore().req)}static setLocale(s=m.locale()){let c=L.use(),f=s;if(!c.service.supportedLocales.includes(s))f=c.service.defaultLocale;return D.getStore().setCookie("i18n-locale",f,{expires:new Date(Date.now()+31536000000)}),f}}var zs=ms(Vs(),1);import{Buffer as os}from"buffer";class E extends M{service;static _name="FileStorageServiceContainer";constructor(s){super();this.service=s}}class Ts{static async put(s){return E.use().service.driver.put(s)}static async metadata(s){let c=os.from(await s.arrayBuffer());try{return await zs.default(c).metadata()}catch{return{}}}static async fetch(s){return E.use().service.driver.fetch(s)}static list(s){return E.use().service.driver.list(s)}static delete(){}}function Ds(s){return Object.fromEntries(Object.entries(s).filter(([,c])=>{return c!==null&&c!==void 0}))}class G extends Error{constructor(){super("Adapter not found");this.name="AdapterNotFound"}}class is{createSession(){throw new G}deleteSession(){throw new G}findSession(){throw new G}findUserByEmailAddress(){throw new G}updateSession(){throw new G}createUser(){throw new G}}class Ms extends x{schema={email:{required:"Email is required",string:"Invalid email",email:"Invalid email"},password:{required:"Password is required"}}}class _s extends x{schema={name:{string:"Invalid name",required:"Name is required","min:2":"Name must be at least 3 characters"},email:{string:"Invalid email",required:"Email is required",email:"Invalid email"},password:{required:"Password is required","min:8":"Password must be at least 8 characters"}}}class Ws extends x{schema={email:{required:"Email is required",email:"Invalid email"}}}class Us extends x{schema={password:{required:"Password is required",password:"Invalid password"}}}class _ extends Ls{provider=j.use()?.provider;async me(){let s=await N.user();if(!s)throw new Js;return s}async verifyEmail(s=new x){let c=await s.input(),f=j.use()?.provider,w=await f.adapter.findUserByVerificationToken(c.get("token"));if(!w)return{email:null};if(await f.adapter.verifyUser(w.email),w)return{email:w.email};return{email:null}}async signInWithMagicLink(s=new x){let c=j.use(),f=c.provider,w=s.search.get("token"),i=decodeURIComponent(s.search.get("email")),l=null;try{l=await f.adapter.findUserMagicLinkToken({email:i,token:w})}catch(y){return console.log(y),{error:JSON.stringify(y)}}if(!l)return{error:"Invalid token"};await f.adapter.verifyUser(i),await f.adapter.deleteMagicLinkToken(i);let b=await c.createOrUpdateSession({email:i});return s.ctx().setCookie("access_token",b.token,{expires:b.absoluteExpiresAt}),await f.onSignIn(b),{session:b}}async signInWithPin(s=new x){let c=j.use(),f=c.provider,w=await s.input(),{email:i,pin:l}=w.toJSON();if(!await f.adapter.findUserMagicLinkToken({email:i,pin:l}))throw new K({pin:["Invalid pin"]});await f.adapter.deleteMagicLinkToken(i),await f.adapter.verifyUser(i);let y=await c.createOrUpdateSession({email:i});return s.ctx().setCookie("access_token",y.token,{expires:y.absoluteExpiresAt}),await f.onSignIn(y),{session:y}}async signIn(s=new Ms){let c=await s.input(),{email:f,password:w}=c.toJSON(),i=j.use().provider,l=await i.adapter.findUserByEmailAddress(f,i.verifyEmail);if(!l)throw new K({invalid_credentials:["Invalid credentials"]});if(!await i.verifyPassword(w,l.password))throw new K({invalid_credentials:["Invalid credentials"]});let y=await j.use().createOrUpdateSession({email:l.email,id:l.id});s.ctx().setCookie("access_token",y.token,{expires:y.absoluteExpiresAt}),await i.onSignIn(l);let{password:p,...O}=l;return O}async signUp(s=new _s){let c=await s.input(),{email:f,password:w,name:i,invitationId:l}=c.toJSON(),b=j.use().provider;if(await b.adapter.findUserByEmailAddress(f,!1))throw new K({email:["Email address already exists"]});let p=await b.hashPassword(w),O=L.use().detectLocale(s),g;if(l){if(g=await b.adapter.findInvitation(l,f),g)await b.adapter.deleteInvitationById(l)}let F,$;if(g)F=await b.adapter.createUser({email:f,name:i,password:p,emailVerifiedAt:new Date,locale:O}),await b.adapter.createAccount({organizationId:g.organizationId,userId:F.id,organizationRole:g.role});else $=await b.generateEmailVerificationToken(f),F=await b.adapter.createUser({email:f,name:i,password:p,verificationToken:$,locale:O});return await b.onSignUp(F,$),F}async signOut(s=new x){let c=s.cookies.get("access_token"),f=await N.user(),w=j.use().provider;return await w.adapter.deleteSession({token:c}),s.ctx().setCookie("access_token","",{expires:new Date(0)}),await w.onSignOut(f),{}}async forgotPassword(s=new Ws){let c=await s.input(),{email:f}=c.toJSON(),w=j.use().provider,i=await w.adapter.findUserByEmailAddress(f,w.verifyEmail);if(!i)return{};let l=await w.generateForgotPasswordToken(i);return await w.adapter.createPasswordResetToken({user:i,token:l}),await w.onForgotPassword(i,l),{}}async resetPassword(s=new Us){let c=j.use().provider,f=await s.input(),{password:w,token:i}=f.toJSON(),l=await c.adapter.findPasswordResetToken({token:i});if(!l)throw new K({token:["Invalid token"]});if(k.Instant.from(l.createdAt.toISOString()).add({hours:24}).until(k.Now.instant()).sign>=0)throw new K({token:["Token expired"]});await c.adapter.deletePasswordResetToken({token:i});let y=await c.adapter.findUserByEmailAddress(l.user.email,c.verifyEmail);if(!y)throw new K({email:["User not found"]});let p=await c.hashPassword(w);return await c.adapter.updateUserPassword({id:y.id,password:p}),await c.adapter.deleteAllUserSessions(y.id),await c.onResetPassword(y),{}}async changePassword(s=new x){let c=j.use().provider,f=await N.user(),w=await s.input(),{oldPassword:i,newPassword:l}=w.toJSON(),{password:b}=await c.adapter.findUserByEmailAddress(f.email,c.verifyEmail);if(!await c.verifyPassword(i,b))throw new K({oldPassword:["Incorrect password"]});let p=await c.hashPassword(l);return await c.adapter.updateUserPassword({id:f.id,password:p}),await c.adapter.deleteAllUserSessions(f.id),{}}async oauthRedirect(s=new x){let{provider:c}=s.params,f=j.use().provider.oauthProviders[c];if(!f)throw new Error(`Invalid provider: ${c}`);return{destination:await f.getRedirectUrl(s)}}async oauthCallback(s=new x){let{provider:c}=s.params,f=j.use(),w=f.provider,i=w.oauthProviders[c],{email:l,name:b,username:y,providerId:p}=await i.onCallback(s);if(!y&&!l)throw new Error("Email or username is required");let O=l??`${y}:${c}`,g=await w.adapter.findUserByEmailAddress(O,!1),F=L.use().detectLocale(s);if(!g)g=await w.adapter.createUser({email:O,name:b,locale:F,emailVerifiedAt:new Date}),await w.adapter.createSocialAccount({provider:c,userId:g.id,email:O,username:y,providerId:p,expiresAt:new Date,accessToken:"",refreshToken:""});let $=await f.createOrUpdateSession({email:g.email,id:g.id});return s.ctx().setCookie("access_token",$.token,{expires:$.expiresAt}),await w.onSignIn(g),{destination:w.redirectPath}}async createMagicLinkToken(s=new x){let c=await s.input(),{email:f}=c.toJSON(),w=j.use(),i=w.provider,{user:l,pin:b,token:y}=await w.createMagicLinkToken(f);return await i.onMagicLinkCreated(l,{email:f,pin:b,token:y}),{email:f}}}class Xs extends ws{routes={"/:provider":this.redirect([_,"oauthRedirect"]),"/:provider/callback":this.redirect([_,"oauthCallback"])}}class ls extends ws{routes={"/sign-in/magic-link":this.view("auth/MagicLinkSignIn",[_,"signInWithMagicLink"]),"/oauth":Xs}}class bs extends Y{middlewares=["cache:private"];routes={"/sign-in":this.post(_,"signIn"),"/sign-up":this.post(_,"signUp"),"/sign-out":this.post(_,"signOut"),"/forgot-password":this.post(_,"forgotPassword"),"/reset-password":this.post(_,"resetPassword"),"/change-password":this.post(_,"changePassword"),"/verify-email":this.post(_,"verifyEmail"),"/me":this.get(_,"me").middleware(["auth"]),"/magic-link":this.post(_,"createMagicLinkToken"),"/sign-in-with-pin":this.post(_,"signInWithPin")}}class Es extends Bs{basePath="/auth";verifyEmail=!0;redirectPath="/dashboard";sessionExpiresInHours=24;sessionAbsoluteExpiresInHours=672;adapter=new is;oauthProviders={};boot(){}async verifyPassword(s,c){return await Bun.password.verify(s,c)}async hashPassword(s){return await Bun.password.hash(s)}async generateForgotPasswordToken(s){let c=new Bun.CryptoHasher("sha256");return c.update(`${s.email}${Date.now()}`),c.digest("hex")}generateEmailVerificationToken(s){if(!this.verifyEmail)return"";let c=new Bun.CryptoHasher("sha256");return c.update(`${s}${Date.now()}`),c.digest("hex")}generateMagicLinkToken(s){let c=new Bun.CryptoHasher("sha256");return c.update(`${s}${Date.now()}`),c.digest("hex")}extendSession(s){return{}}onSignUp(s,c){}onSignIn(s){}onSignOut(s){}onForgotPassword(s,c){}onResetPassword(s){}onMagicLinkCreated(s,c){return}}class ys extends Y{middlewares=["cache:private,0,no-store"];routes={"/translations/:locale/:scope*":this.get(async()=>{let s=new x,c=`/${s.params.scope??""}`,w=s.params.locale??L.use().detectLocale(s),i=L.use().getPageTranslations(w,c);return s.ctx().setCookie("i18n-locale",w,{expires:new Date(Date.now()+31536000000)}),{[w]:i}})}}class ps extends Y{routes={"/resize":this.file(async()=>{let s=new x,c=new URL(s.rawRequest.url),f=c.searchParams.get("url"),w=Number(c.searchParams.get("w")),i=Number(c.searchParams.get("h")),l=c.searchParams.get("fit")??"cover",b=Number(c.searchParams.get("q"));if(!f)return new Response(JSON.stringify({error:"url query parameter is required"}),{headers:{"Content-Type":"application/json"},status:404});let p=`${f.startsWith("http")?"":`http://localhost:${process.env.PORT||5173}`}${f}`,O=await fetch(p);if(!O.ok)return new Response(JSON.stringify({error:"Image not found",info:p}),{headers:{"Content-Type":"application/json"},status:404});let g=Buffer.from(await O.arrayBuffer()),F=await Ys.use().service.driver.resize(g,{height:i,width:w,fit:l,quality:b});return O.headers.delete("Content-Type"),O.headers.delete("Content-Length"),new Response(F,{headers:{"Content-Type":"image/webp","Content-Length":`${F.byteLength}`,...O.headers.toJSON()}})})}}class Ys extends M{service;static _name="ImageOptimizationServiceContainer";constructor(s){super();this.service=s}}import{mkdir as Os,exists as gs,readdir as ks}from"fs/promises";class P{static channel(s,c){let f=S.use().service.channels[s];if(!f)return console.error(`Channel ${s} not found`),{publish:()=>{}};let w=new f;return{publish:(i,l=!1)=>{let b=Q(s,c);S.use().publish(b,JSON.stringify({topic:b,data:w.publish(i)}),l)}}}}class W extends M{service;static _name="LoggingServiceContainer";writer;isReady=!1;logsDirPath=`${process.env.ROOT_DIR}/storage/logs`;flushTimeout;fileSize=0;writerSize=0;isCreatingFile=!1;currentLogFilePath;constructor(s){super();this.service=s;this.boot().then(()=>{this.isReady=!0})}async boot(){if(!process.env.ROOT_DIR)return;if(!await gs(`${process.env.ROOT_DIR}/storage`))await Os(`${process.env.ROOT_DIR}/storage`);if(!await gs(this.logsDirPath))await Os(this.logsDirPath);this.newLogFile()}async newLogFile(){if(!await gs(this.logsDirPath))await Os(this.logsDirPath);if(this.isCreatingFile=!0,this.currentLogFilePath){this.writer.flush(),this.writer.end(),this.writer=null;let f=new File([await Bun.file(this.currentLogFilePath).arrayBuffer()],this.currentLogFilePath.split("/").pop(),{type:"text/plain"});this.service.onLogFileClosed(f),this.fileSize=0,this.writerSize=0}let c=(await ks(this.logsDirPath)).sort().reverse()[0];if(c){let f=Bun.file(`${this.logsDirPath}/${c}`);if(f.size<this.service.maxFileSize)this.currentLogFilePath=`${this.logsDirPath}/${c}`,this.writer=f.writer(),this.writer.write(await f.text()),this.writer.write(`
3
+ `),this.writer.flush(),this.fileSize=f.size}if(!this.writer){let f=`${new Date(Date.now()).toISOString()}.log`.replaceAll(":","-");this.currentLogFilePath=`${this.logsDirPath}/${f}`;let w=Bun.file(`${this.logsDirPath}/${f}`);this.writer=w.writer(),this.fileSize=0,this.writerSize=0}this.isCreatingFile=!1}async log(s,c,f={}){if(!this.isReady)await new Promise((y)=>{let p=setInterval(()=>{if(this.isReady)y({}),clearInterval(p)},100)});let w=D.getStore(),i={};if(w)i={url:w.req.rawRequest.url,method:w.req.rawRequest.method,headers:w.req.rawRequest.headers,body:w.req.rawRequest.body};let l={timestamp:new Date(Date.now()).toISOString(),env:"production",level:s,message:c,metadata:{...i,...f}},b="";try{b=JSON.stringify(l)}catch(y){throw new Error("Metadata must be a valid JSON object")}this.writerSize+=b.length,this.fileSize+=b.length,this.writer.write(b),this.writer.write(`
4
+ `),P.channel("/logs/live",{}).publish(JSON.stringify(l)),this.service.onLogCreated(l),this.tryFlush()}async tryFlush(){if(this.fileSize>this.service.maxFileSize){if(!this.isCreatingFile)await this.newLogFile()}if(this.writerSize>this.service.maxFileSize/2)await this.writer.flush(),this.writerSize=0,await this.newLogFile();else clearTimeout(this.flushTimeout),this.flushTimeout=setTimeout(async()=>{await this.writer.flush(),this.writerSize=0},100)}}class Fs extends Y{middlewares=["cache:private,0"];routes={"/live":this.get(async()=>{let s=Bun.file(W.use().currentLogFilePath);return new Response(await s.text(),{headers:{"Content-Type":"text/plain"}})})}}function ds(s){let c=new Map;for(let f of s)if(typeof f==="string"){let[w,i=""]=f.split(":");if(w.startsWith("-")){if(c.has(w.replace("-","")))c.delete(w.replace("-",""))}else c.set(w,i.split(",").filter(Boolean))}else c.set(f,[]);return c}class d extends M{service;static _name="MiddlewareServiceContainer";constructor(s){super();this.service=s}runMiddleware(s){let c=new x;return Array.from(ds(s).entries()).map(([f,w])=>{if(typeof f==="string"){let i=this.service.aliases[f];if(i){let l=new i(c);return()=>l.run.call(l,...w)}}else{if(Zs(f)){let i=new f(c);return i.run.bind(i)}return f}}).filter(Boolean).reduce((f,w)=>{return async()=>{return{...await f(),...await w()}}},()=>Promise.resolve({}))()}}function As(s){return"run"in s}function Rs(s){return Object.hasOwn(s,"get")||Object.hasOwn(s,"post")||Object.hasOwn(s,"put")||Object.hasOwn(s,"delete")}function Cs(s){return Object.hasOwn(s,"first")&&Object.hasOwn(s,"second")}function Ps(s){if("__brand"in s)return s.__brand==="ApiRouter";return!1}function xs(s,c="",f=[]){let w={};function i(l,b,y,p){let O=l==="/"?"":l,g=c==="/"?"":c,F=(`${g}${O}`===""?"/":`${g}${O}`).replaceAll("//","/");if(!w[F])w[F]={};w[F][b.toUpperCase()]={exec:y,middleware:[...f,...p]},w[F].OPTIONS={exec:()=>{let X=new x().ctx().headers;return new Response(null,{headers:X,status:204})},middleware:[]}}for(let[l,b]of Object.entries(s)){if(As(b)){let y=b,p=y.method,O=y.middlewares,g=y.run.bind(y);i(l,p,g,O)}if(Rs(b))for(let[y,p]of Object.entries(b)){let O=p.middlewares,g=p.run.bind(p);i(l,y,g,O)}if(Ps(b)){let y=new b,p=xs(y.routes,`${c}${l}`,y.middlewares);for(let[O,g]of Object.entries(p))w[O.replaceAll("//","/")]=g}if(Cs(b)){let{first:y,second:p}=b;for(let[O,g]of Object.entries(y)){let F=g.middlewares,$=g.run.bind(g),[X,...n]=l.split("/").reverse();if(!X.startsWith(":"))throw new Error("Resource route must end with a dynamic segment");i(n.reverse().join("/"),O,$,F)}for(let[O,g]of Object.entries(p)){let F=g.middlewares,$=g.run.bind(g);i(l,O,$,F)}}}return Object.fromEntries(Object.entries(w).sort(([l],[b])=>{let y=l.split("/").length+l.split(":").length,p=b.split("/").length+b.split(":").length;return y-p}))}function $s(s){return s.replace(/\([^)]*\)/g,"").replace(/\/\//g,"/")}function t(s){let c={};for(let[f,w]of Object.entries(s))if("run"in w){let i=w;if("children"in i){let l=new i.children,b=t(l.routes);for(let[y,{exec:p,middleware:O}]of Object.entries(b)){let g=f==="/"?y:`${f}${y}`,F=y==="/"&&f!=="/"?f:g,$=(X)=>i.run.call(i,X,f);c[$s(F)]={exec:[$,...p],middleware:[...i.middlewares,...O],viewPath:i.viewPath}}}else{let l=(b)=>i.run.call(i,b,f);c[$s(f)]={exec:[l],middleware:i.middlewares,viewPath:i.viewPath}}}else{let i=new w,l=t(i.routes);for(let[b,{exec:y,middleware:p,viewPath:O}]of Object.entries(l)){let g=f==="/"?b:`${f}${b}`,F=b==="/"&&f!=="/"?f:g;c[$s(F)]={exec:y,middleware:[...i.middlewares,...p],viewPath:O}}}return Object.fromEntries(Object.entries(c).sort(([f],[w])=>{let i=f.split("/").length+f.split(":").length,l=w.split("/").length+w.split(":").length;return i-l}))}import{renderToReadableStream as vs}from"react-dom/server.browser";import{createElement as Ks,Fragment as qs}from"react";function ts(s){return s.replace(/\([^)]*\)/g,"").replace(/\/\//g,"/")}function v(s){let c={};for(let[f,w]of Object.entries(s))if("run"in w){let i=w.viewPath;if("children"in w){c[f]=[i];let l=new w.children,b=v(l.routes);for(let[y,p]of Object.entries(b)){let O=f==="/"?y:`${f}${y}`,g=y==="/"&&f!=="/"?f:O;c[g]=[i,...p]}if(c[f].length===1)delete c[f]}else c[f]=[i]}else{let i=new w,l=v(i.routes);for(let[b,y]of Object.entries(l)){let p=f==="/"?b:`${f}${b}`,O=b==="/"&&f!=="/"?f:p;c[O]=y}}return Object.fromEntries(Object.entries(c).map(([f,w])=>[ts(f),w]))}function q(s){let c=[];for(let[f,w]of Object.entries(s))if("run"in w){let i=w.viewPath;if(i==="__")continue;if(i==="REDIRECT")continue;if("children"in w){let l=new w.children,b=q(l.routes);c.push([i,b])}else c.push([i,[]])}else{let i=new w,l=q(i.routes);c.push(...l)}return c}function js(s){let c=[];for(let[f,w]of s)c.push(f,...js(w).flat());return Array.from(new Set(c))}class h{static debug(s,c){W.use().log("debug",s,c)}static info(s,c){W.use().log("info",s,c)}static notice(s,c){W.use().log("notice",s,c)}static warning(s,c){W.use().log("warning",s,c)}static error(s,c){W.use().log("error",s,c)}static critical(s,c){W.use().log("critical",s,c)}static alert(s,c){W.use().log("alert",s,c)}static emergency(s,c){W.use().log("emergency",s,c)}}class ns extends M{service;static _name="ViewRouterServiceContainer";flatViewRoutes={};routeManifest={};componentTree=[];flatComponentTree=[];root=null;constructor(s){super();this.service=s;let c={"/":s.rootRouter,"/auth":ls};this.flatViewRoutes=t(c),this.routeManifest=v(c),this.componentTree=q(c),this.flatComponentTree=js(this.componentTree),this.root=s.root}boot(){}async onRequestEnd(s){if(!s.cookies.has("session_id"))s.ctx().setCookie("session_id",Bun.randomUUIDv7(),{httpOnly:!0,secure:!0,sameSite:"Strict",expires:new Date(Date.now()+31536000000)});return await this.service.onRequestEnd(s)}async render(s){let{csrfTokenHMAC:c,currentPathName:f,headers:w,i18n:i,params:l,pathname:b,prefetchedData:y,url:p,user:O,viewData:g,breadcrumbs:F,urlLocaleSegment:$}=s,n={kind:"view",data:{pageData:{[b.replace(`/${$}`,"")]:g},__csrf:c.toString("base64"),prefetchedData:y,i18n:i,auth:{user:O},routeManifest:this.routeManifest,breadcrumbs:F,router:{urlLocaleSegment:$,pathname:f,params:l,currentPath:b,searchParams:p.search,is404:!f?!0:!1},componentTree:[["404",[]],...this.componentTree]},head:{}},B=this.root,z=this.routeManifest[f];return async(U)=>{let{bootstrapModules:Z,loaders:J,getStyles:V,viewImportMap:H,cssManifest:I}=U;n.data.cssManifest=I;let e=await vs(Ks(qs,{children:[...await V(z),Ks(B,{data:n.data,viewImportMap:H,key:"root"})]}),{bootstrapScriptContent:`window.__GEMI_DATA__ = ${JSON.stringify(n.data)}; window.loaders=${J}`,bootstrapModules:Z});return new Response(e,{status:!f?404:200,headers:w})}}async handleViewRequest(s){let c=new URL(s.url),f=c.pathname.endsWith(".json"),w=c.pathname.replace(".json",""),[,i,...l]=w.split("/"),b=`/${l.join("/")}`,y=null,p=null;if(!L.use().service.supportedLocales.includes(i))b=w;else y=i,p=i;if(L.use().isEnabled){if(p===null){let n=L.use().detectLocale(new x(s,{},"view",b)),B=c.pathname==="/"?"":c.pathname;return new Response("",{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:`/${n}${B}`}})}}b=b.replace("//","/");let O=[],g=[],F=null,$={};try{for(let[n,B]of Object.entries(this.flatViewRoutes)){let z=new Ns({pathname:n});if(z.test({pathname:b})){F=n,$=z.exec({pathname:b})?.pathname.groups,O=B.exec,g=B.middleware;break}}}catch(n){throw n}let X=new x(s,$,"view",F);return await D.run(X,async()=>{if(p)m.setLocale(p.replaceAll("/",""));else m.setLocale();let n=null,B=D.getStore(),z=B.req;try{await d.use().runMiddleware(g);let U=await Promise.all([...O.map((T)=>T(z)),...Array.from(B.prefetchPromiseQueue).map((T)=>T())]),Z=B.cookies,J=B.headers,V=B.prefetchedResources;n={data:U,cookies:Z,headers:J,user:B.user,prefetchedData:Object.fromEntries(V.entries()),currentPathName:z.routePath,params:z.params,urlLocaleSegment:y};let{params:H,currentPathName:I,user:e}=n,a={},ss={};for(let T of U){let[o,fs]=Object.entries(T)?.[0]??[];if(!o||!fs)continue;ss[`${o}:${I}`]=fs.breadcrumb,a[o]=fs}let R=L.use(),Hs=R.isEnabled,cs={};if(Hs){let T=null;if(p)T=p.replaceAll("/","");else T=R.detectLocale(new x(s,H));let o=R.getPageTranslations(T,I);cs={supportedLocales:R.service.supportedLocales,currentLocale:T,dictionary:{[T]:o}}}if(f)return J.set("Content-Type","application/json"),Z.forEach((T)=>J.append("Set-Cookie",T.toString())),await this.service.onRequestEnd(z),new Response(JSON.stringify({data:{[b]:a},breadcrumbs:ss,prefetchedData:n.prefetchedData,i18n:cs,is404:!I}),{headers:J});J.set("Content-Type","text/html");for(let T of Z)J.append("Set-Cookie",T.toString());let Is=Bun.CSRF.generate(process.env.SECRET);J.append("Set-Cookie",`csrf_token=${Is}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now()+86400000).toUTCString()}`);try{await this.onRequestEnd(z)}catch(T){h.error(T?.message??'Error in "onRequestEnd" event handler',{err:JSON.stringify(T)})}return await this.render({csrfTokenHMAC:Buffer.from(""),currentPathName:I,headers:J,i18n:cs,params:H,pathname:c.pathname,prefetchedData:n.prefetchedData,url:c,user:e,viewData:a,breadcrumbs:ss,urlLocaleSegment:y})}catch(U){if(U.kind===A)if(f){let{status:Z=400,data:J,directive:V,headers:H}=U.payload.api;return new Response(JSON.stringify({data:J,directive:V}),{headers:H,status:Z})}else{let{status:Z=400,error:J}=U.payload.view;return new Response(J?.message,{...U.payload.view,status:Z})}else throw this.service.onRequestFail(z,U),U}})}}class Qs extends Y{routes={"/api-routes":this.get(()=>{let s=u.use().flatRoutes,c=[];for(let[f,w]of Object.entries(s))for(let[i,l]of Object.entries(w)){let{exec:b,middleware:y}=l;c.push({path:f,method:i,middleware:y})}return c}),"/view-routes":this.get(()=>{let s=ns.use().flatViewRoutes,c=[];for(let[f,{middleware:w,viewPath:i}]of Object.entries(s))c.push({path:f,method:"GET",viewPath:i,middleware:w});return c})}}class u extends M{service;static _name="ApiRouterServiceContainer";flatRoutes={};constructor(s){super();this.service=s;this.flatRoutes=xs({"/":this.service.rootRouter.bind(this.service),"/auth":bs,"/__gemi__/services/i18n":ys,"/__gemi__/services/logs":Fs,"/__gemi__/services/image":ps,"/__gemi__/debug":Qs})}getRouteHandlerAndParams(s){let f=new URL(s.url).pathname.replace("/api",""),w={},i;for(let[l]of Object.entries(this.flatRoutes))try{let b=new URLPattern({pathname:l});if(b.test({pathname:f})){i=l,w=b.exec({pathname:f})?.pathname.groups;break}}catch(b){console.error(b)}return{params:w,path:i}}async runRouteMiddleware(s,c){let w=this.flatRoutes[s][c.rawRequest.method].middleware;try{await d.use().runMiddleware(w)}catch(i){if(i.kind===A){if(c.rawRequest.url.includes("/api")){let{status:l=400,data:b,headers:y}=i.payload.api;return new Response(JSON.stringify(b),{status:l,headers:{"Content-Type":"application/json",...y}})}}else throw this.service.onRequestFail(c,i),console.error(i),i}}async getRouteData(s){let c=this.flatRoutes[s],f=D.getStore(),w=c[f.req.rawRequest.method].exec??(()=>Promise.resolve({})),i={};try{i=await w()}catch(l){if(l.kind===A){let{status:b=400,data:y,headers:p}=l.payload.api;return new Response(JSON.stringify(y),{status:b,headers:{"Content-Type":"application/json",...p}})}throw this.service.onRequestFail(f.req,l),console.error(l),l}return i}async handleApiRequest(s){let{params:c,path:f}=this.getRouteHandlerAndParams(s),w=this.flatRoutes[f];if(!w||!w[s.method])return new Response(JSON.stringify({error:{message:"Not found"}}),{status:404});let i=new x(s,c,"api",f);if(!s.url.includes("/__gemi__"))this.service.onRequestStart(i);return await D.run(i,async()=>{let l=D.getStore();l.setRequest(i);let b=await this.runRouteMiddleware(f,i);if(b instanceof Response)return b;let y=await this.getRouteData(f);if(y instanceof Response)return y;let p=l.headers;if(p.append("Content-Type","application/json"),l.cookies.forEach((O)=>p.append("Set-Cookie",O.toString())),l.destroy(),!s.url.includes("/__gemi__"))this.service.onRequestEnd(i);return new Response(JSON.stringify(y),{headers:p})})}}class r{static prepare(s,...c){let f={params:{},search:{}},[w={}]=c,{search:i,params:l}={...f,...w},b=D.getStore();if(b.req.kind==="api")throw new Error("Query.prefetch() cannot be called from an API request");let y=b.req.rawRequest,p=new URL(y.url),O=new URLSearchParams(Ds(i));O.delete("json"),O.sort();let g=[`${Q(s,l)}`,O.toString()].filter((z)=>z.length>0).join("?"),F=`${p.origin}/${g}`,$=new Request(F,{headers:y.headers}),X=new x($,l),n=(z)=>{b.prefetchedResources.set(Q(s,l),{[O.toString()]:z})},B=()=>{return D.run(X,async()=>{let z=await u.use().getRouteData(s);return n(z),z})};return{instant:B,prefetch:()=>{b.prefetchPromiseQueue.add(B)}}}static instant(s,...c){return r.prepare(s,...c).instant()}static prefetch(s,...c){return r.prepare(s,...c).prefetch()}}class Gs{static absolute(s,...c){return`${process.env.HOST_NAME}${Q(String(s),c[0]??{})}`}static relative(s,...c){return Q(String(s),c[0]??{})}}export{Gs as Url,hs as Redirect,r as Query,h as Log,m as I18n,Ts as FileStorage,P as Broadcast,N as Auth};export{S as y,E as z,W as A,Es as B,Ys as C,d as D,ns as E,u as F};
5
5
 
6
- //# debugId=EC1AC1B19AA7720464756E2164756E21
6
+ //# debugId=B8431DA6D969B4CF64756E2164756E21
@@ -18,7 +18,7 @@
18
18
  "import { HttpRequest, Middleware, MiddlewareServiceProvider } from \"../../http\";\nimport type { RouterMiddleware } from \"../../http/Router\";\nimport { isConstructor } from \"../../internal/isConstructor\";\nimport { ServiceContainer } from \"../ServiceContainer\";\n\nfunction transformMiddleware(input: (string | Function)[]) {\n const map = new Map();\n for (const middleware of input) {\n if (typeof middleware === \"string\") {\n const [alias, params = \"\"] = middleware.split(\":\");\n if (alias.startsWith(\"-\")) {\n if (map.has(alias.replace(\"-\", \"\"))) {\n map.delete(alias.replace(\"-\", \"\"));\n }\n } else {\n map.set(alias, params.split(\",\").filter(Boolean));\n }\n } else {\n map.set(middleware, []);\n }\n }\n return map;\n}\n\nexport class MiddlewareServiceContainer extends ServiceContainer {\n static _name = \"MiddlewareServiceContainer\";\n\n constructor(public service: MiddlewareServiceProvider) {\n super();\n }\n\n public runMiddleware(\n middleware: (\n | string\n | RouterMiddleware\n | (new (req: HttpRequest) => Middleware)\n )[],\n ) {\n const req = new HttpRequest();\n return Array.from(transformMiddleware(middleware).entries())\n .map(([key, params]) => {\n if (typeof key === \"string\") {\n const Middleware = this.service.aliases[key];\n if (Middleware) {\n const middleware = new Middleware(req);\n return () => middleware.run.call(middleware, ...params);\n }\n } else {\n if (isConstructor(key)) {\n const middleware = new key(req);\n return middleware.run.bind(middleware);\n }\n return key;\n }\n })\n .filter(Boolean)\n .reduce(\n (acc: any, middleware: any) => {\n return async () => {\n return {\n ...(await acc()),\n ...(await middleware()),\n };\n };\n },\n () => Promise.resolve({}),\n )();\n }\n}\n",
19
19
  "import { HttpRequest, type Middleware } from \"../../http\";\nimport {\n type ApiRoutes,\n type RouteHandlers,\n type ApiRouter,\n type ResourceRoutes,\n RouteHandler,\n} from \"../../http/ApiRouter\";\nimport type { RouterMiddleware } from \"../../http/Router\";\n\ntype ApiRouteExec = any;\nexport type FlatApiRoutes = Record<\n string,\n Record<\n string,\n {\n exec: ApiRouteExec;\n middleware: (string | (new () => Middleware) | RouterMiddleware)[];\n }\n >\n>;\n\nfunction isRouteHandler(\n option: ApiRoutes[string],\n): option is RouteHandler<any, any, any, any> {\n return \"run\" in option;\n}\n\nfunction isRouteHandlers(option: ApiRoutes[string]): option is RouteHandlers {\n return (\n Object.hasOwn(option, \"get\") ||\n Object.hasOwn(option, \"post\") ||\n Object.hasOwn(option, \"put\") ||\n Object.hasOwn(option, \"delete\")\n );\n}\n\nfunction isResouceRoutes(\n option: ApiRoutes[string],\n): option is ResourceRoutes<any> {\n return Object.hasOwn(option, \"first\") && Object.hasOwn(option, \"second\");\n}\n\nfunction isApiRouter(\n routeHandlers: ApiRoutes[string],\n): routeHandlers is new () => ApiRouter {\n if (\"__brand\" in routeHandlers) {\n return routeHandlers.__brand === \"ApiRouter\";\n }\n return false;\n}\n\nexport function createFlatApiRoutes(\n routes: ApiRoutes,\n rootPath = \"\",\n rootMiddleware: RouterMiddleware[] | string[] = [],\n) {\n const flatApiRoutes: FlatApiRoutes = {};\n\n function addRoute(\n path: string,\n method: string,\n exec: ApiRouteExec,\n middleware: RouterMiddleware[] | string[],\n ) {\n const subPath = path === \"/\" ? \"\" : path;\n const _rootPath = rootPath === \"/\" ? \"\" : rootPath;\n const finalPath = (\n `${_rootPath}${subPath}` === \"\" ? \"/\" : `${_rootPath}${subPath}`\n ).replaceAll(\"//\", \"/\");\n if (!flatApiRoutes[finalPath]) {\n flatApiRoutes[finalPath] = {};\n }\n flatApiRoutes[finalPath][method.toUpperCase()] = {\n exec,\n middleware: [...rootMiddleware, ...middleware],\n };\n flatApiRoutes[finalPath].OPTIONS = {\n exec: () => {\n const req = new HttpRequest();\n const headers = req.ctx().headers;\n return new Response(null, { headers, status: 204 });\n },\n middleware: [],\n };\n }\n\n for (const [path, option] of Object.entries(routes)) {\n if (isRouteHandler(option)) {\n const routeHandler = option;\n const method = routeHandler.method;\n const middleware = routeHandler.middlewares;\n const exec = routeHandler.run.bind(routeHandler);\n addRoute(path, method, exec, middleware);\n }\n\n if (isRouteHandlers(option)) {\n for (const [method, routeHandler] of Object.entries(option)) {\n const middleware = routeHandler.middlewares;\n const exec = routeHandler.run.bind(routeHandler);\n addRoute(path, method, exec, middleware);\n }\n }\n\n if (isApiRouter(option)) {\n const router = new option();\n const routes = createFlatApiRoutes(\n router.routes,\n `${rootPath}${path}`,\n router.middlewares,\n );\n for (const [path, route] of Object.entries(routes)) {\n flatApiRoutes[path.replaceAll(\"//\", \"/\")] = route;\n }\n }\n\n if (isResouceRoutes(option)) {\n const { first, second } = option;\n for (const [method, routeHandler] of Object.entries(first)) {\n const middleware = routeHandler.middlewares;\n const exec = routeHandler.run.bind(routeHandler);\n const [lastSegment, ...rest] = path.split(\"/\").reverse();\n if (!lastSegment.startsWith(\":\")) {\n throw new Error(\"Resource route must end with a dynamic segment\");\n }\n addRoute(rest.reverse().join(\"/\"), method, exec, middleware);\n }\n for (const [method, routeHandler] of Object.entries(second)) {\n const middleware = routeHandler.middlewares;\n const exec = routeHandler.run.bind(routeHandler);\n addRoute(path, method, exec, middleware);\n }\n }\n }\n\n return Object.fromEntries(\n Object.entries(flatApiRoutes).sort(([a], [b]) => {\n const x = a.split(\"/\").length + a.split(\":\").length;\n const y = b.split(\"/\").length + b.split(\":\").length;\n return x - y;\n }),\n );\n}\n",
20
20
  "import { HttpRequest } from \"../../http\";\nimport type { ViewRoutes } from \"../../http/ViewRouter\";\n\nexport type ViewRouteExec = (req: HttpRequest<any, any>) => any; // TODO: fix type\n\nexport type FlatViewRoutes = Record<\n string,\n { exec: ViewRouteExec[]; middleware: (string | any)[]; viewPath: string }\n>;\n\nfunction removeGroupPrefix(input: string) {\n // Remove all (str) patterns\n const withoutParentheses = input.replace(/\\([^)]*\\)/g, \"\");\n\n // Remove all double slashes // by replacing with single slash\n const withoutDoubleSlashes = withoutParentheses.replace(/\\/\\//g, \"/\");\n return withoutDoubleSlashes;\n}\n\nexport function createFlatViewRoutes(routes: ViewRoutes) {\n const flatRoutes: FlatViewRoutes = {};\n\n for (const [routePath, viewConfigOrViewRouter] of Object.entries(routes)) {\n if (\"run\" in viewConfigOrViewRouter) {\n const route = viewConfigOrViewRouter;\n if (\"children\" in route) {\n const children = new route.children();\n const result = createFlatViewRoutes(children.routes);\n\n for (const [path, { exec, middleware }] of Object.entries(result)) {\n const key = routePath === \"/\" ? path : `${routePath}${path}`;\n const _key = path === \"/\" && routePath !== \"/\" ? routePath : key;\n\n const handler = (req: HttpRequest<any, any>) =>\n route.run.call(route, req, routePath);\n\n flatRoutes[removeGroupPrefix(_key)] = {\n exec: [handler, ...exec],\n middleware: [...route.middlewares, ...middleware],\n viewPath: route.viewPath,\n };\n }\n } else {\n const handler = (req: HttpRequest<any, any>) =>\n route.run.call(route, req, routePath);\n flatRoutes[removeGroupPrefix(routePath)] = {\n exec: [handler],\n middleware: route.middlewares,\n viewPath: route.viewPath,\n };\n }\n } else {\n const router = new viewConfigOrViewRouter();\n const result = createFlatViewRoutes(router.routes);\n for (const [path, { exec, middleware, viewPath }] of Object.entries(\n result,\n )) {\n const key = routePath === \"/\" ? path : `${routePath}${path}`;\n const _key = path === \"/\" && routePath !== \"/\" ? routePath : key;\n flatRoutes[removeGroupPrefix(_key)] = {\n exec,\n middleware: [...router.middlewares, ...middleware],\n viewPath,\n };\n }\n }\n }\n\n return Object.fromEntries(\n Object.entries(flatRoutes).sort(([a], [b]) => {\n const x = a.split(\"/\").length + a.split(\":\").length;\n const y = b.split(\"/\").length + b.split(\":\").length;\n return x - y;\n }),\n );\n}\n",
21
- "import { HttpRequest } from \"../../http\";\nimport type { Cookie } from \"../../http/Cookie\";\nimport { GEMI_REQUEST_BREAKER_ERROR } from \"../../http/Error\";\nimport { RequestContext } from \"../../http/requestContext\";\nimport type { RouterMiddleware } from \"../../http/Router\";\nimport {\n createFlatViewRoutes,\n type FlatViewRoutes,\n type ViewRouteExec,\n} from \"./createFlatViewRoutes\";\nimport type { ViewRouterServiceProvider } from \"./ViewRouterServiceProvider\";\n// @ts-ignore\nimport { renderToReadableStream } from \"react-dom/server.browser\";\nimport { createElement, Fragment } from \"react\";\n\n// @ts-ignore\nimport { URLPattern } from \"urlpattern-polyfill/urlpattern\";\nimport { ServiceContainer } from \"../ServiceContainer\";\nimport type { ViewRoutes } from \"../../http/ViewRouter\";\nimport { createRouteManifest } from \"./createRouteManifest\";\nimport { createComponentTree } from \"./createComponentTree\";\nimport { flattenComponentTree } from \"../../client/helpers/flattenComponentTree\";\nimport type { ComponentTree } from \"../../client/types\";\nimport { I18nServiceContainer } from \"../../i18n/I18nServiceContainer\";\nimport { MiddlewareServiceContainer } from \"../middleware/MiddlewareServiceContainer\";\nimport { Log } from \"../../facades/Log\";\nimport { I18n } from \"../../facades/I18n\";\nimport { AuthViewRouter } from \"../../auth/AuthenticationServiceProvider\";\n\nexport class ViewRouterServiceContainer extends ServiceContainer {\n static _name = \"ViewRouterServiceContainer\";\n\n flatViewRoutes: FlatViewRoutes = {};\n routeManifest: Record<string, string[]> = {};\n componentTree: ComponentTree = [];\n flatComponentTree: string[] = [];\n root: any = null;\n\n constructor(public service: ViewRouterServiceProvider) {\n super();\n const routes: ViewRoutes = {\n \"/\": service.rootRouter,\n \"/auth\": AuthViewRouter,\n };\n this.flatViewRoutes = createFlatViewRoutes(routes);\n this.routeManifest = createRouteManifest(routes);\n this.componentTree = createComponentTree(routes);\n this.flatComponentTree = flattenComponentTree(this.componentTree);\n this.root = service.root;\n }\n\n boot() {}\n\n async onRequestEnd(req: HttpRequest) {\n if (!req.cookies.has(\"session_id\")) {\n req.ctx().setCookie(\"session_id\", Bun.randomUUIDv7(), {\n httpOnly: true,\n secure: process.env.NODE_ENV === \"production\",\n sameSite: \"Strict\",\n expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 365),\n });\n }\n\n return await this.service.onRequestEnd(req);\n }\n\n private async render(props: {\n viewData: any;\n pathname: string;\n currentPathName: string;\n csrfTokenHMAC: Buffer;\n headers: any;\n url: URL;\n i18n: any;\n user: any;\n prefetchedData: any;\n params: any;\n breadcrumbs: any;\n }) {\n const {\n csrfTokenHMAC,\n currentPathName,\n headers,\n i18n,\n params,\n pathname,\n prefetchedData,\n url,\n user,\n viewData,\n breadcrumbs,\n } = props;\n\n const result = {\n kind: \"view\",\n data: {\n pageData: {\n [pathname]: viewData,\n },\n __csrf: csrfTokenHMAC.toString(\"base64\"),\n prefetchedData,\n i18n,\n auth: { user },\n routeManifest: this.routeManifest,\n breadcrumbs,\n router: {\n pathname: currentPathName,\n params,\n currentPath: pathname,\n searchParams: url.search,\n is404: !currentPathName ? true : false,\n },\n componentTree: [[\"404\", []], ...this.componentTree],\n },\n head: {},\n };\n\n const Root = this.root;\n const currentViews = this.routeManifest[currentPathName];\n return async (params: {\n getStyles: (p: string[]) => Promise<any[]>;\n viewImportMap: any;\n bootstrapModules: string[];\n loaders: string;\n cssManifest: Record<string, string[]>;\n }) => {\n const {\n bootstrapModules,\n loaders,\n getStyles,\n viewImportMap,\n cssManifest,\n } = params;\n\n result.data[\"cssManifest\"] = cssManifest;\n const stream = await renderToReadableStream(\n createElement(Fragment, {\n children: [\n ...(await getStyles(currentViews)),\n createElement(Root, {\n data: result.data,\n viewImportMap,\n key: \"root\",\n }),\n ],\n }),\n {\n bootstrapScriptContent: `window.__GEMI_DATA__ = ${JSON.stringify(result.data)}; window.loaders=${loaders}`,\n bootstrapModules,\n },\n );\n\n return new Response(stream, {\n status: !currentPathName ? 404 : 200,\n headers,\n });\n };\n }\n\n async handleViewRequest(req: Request) {\n const url = new URL(req.url);\n const isViewDataRequest = url.pathname.endsWith(\".json\");\n const urlPathname = url.pathname.replace(\".json\", \"\");\n\n let handlers: ViewRouteExec[] = [];\n let middlewares: (RouterMiddleware | string)[] = [];\n let currentPathName: null | string = null;\n let params: Record<string, any> = {};\n\n try {\n for (const [pathname, handler] of Object.entries(this.flatViewRoutes)) {\n const pattern = new URLPattern({ pathname });\n if (pattern.test({ pathname: urlPathname })) {\n currentPathName = pathname;\n params = pattern.exec({ pathname: urlPathname })?.pathname.groups!;\n handlers = handler.exec;\n middlewares = handler.middleware;\n break;\n }\n }\n } catch (err) {\n // TODO: Handle this\n throw err;\n }\n\n const httpRequest = new HttpRequest(req, params, \"view\", currentPathName);\n return await RequestContext.run(httpRequest, async () => {\n I18n.setLocale();\n let pageData: {\n cookies: Set<Cookie>;\n headers: Headers;\n currentPathName: string;\n data: Record<string, any>;\n prefetchedData: Record<string, any>;\n user: any; // TODO: fix type\n params: Record<string, any>;\n } | null = null;\n const ctx = RequestContext.getStore();\n\n const httpRequest = ctx.req;\n\n try {\n await MiddlewareServiceContainer.use().runMiddleware(middlewares);\n\n const data = await Promise.all([\n ...handlers.map((fn) => fn(httpRequest as any)),\n ...Array.from(ctx.prefetchPromiseQueue).map((fn) => fn()),\n ]);\n\n const cookies = ctx.cookies;\n const headers = ctx.headers;\n const prefetchedResources = ctx.prefetchedResources;\n\n pageData = {\n data,\n cookies,\n headers,\n user: ctx.user,\n prefetchedData: Object.fromEntries(prefetchedResources.entries()),\n currentPathName: httpRequest.routePath,\n params: httpRequest.params,\n };\n const { params, currentPathName, user } = pageData;\n\n const viewData = {};\n const breadcrumbs = {};\n for (const part of data) {\n const [key, value] = Object.entries(part)?.[0] ?? [];\n if (!key || !value) {\n continue;\n }\n breadcrumbs[`${key}:${currentPathName}`] = (value as any).breadcrumb;\n viewData[key] = value;\n }\n\n const i18nServiceContainer = I18nServiceContainer.use();\n const isI18nEnabled = i18nServiceContainer.isEnabled;\n let i18n: Record<string, any> = {};\n if (isI18nEnabled) {\n const locale = i18nServiceContainer.detectLocale(\n new HttpRequest(req, params as any),\n );\n\n const translations = i18nServiceContainer.getPageTranslations(\n locale,\n currentPathName,\n );\n\n i18n = {\n supportedLocales: i18nServiceContainer.service.supportedLocales,\n currentLocale: locale,\n dictionary: {\n [locale]: translations,\n },\n };\n }\n\n if (isViewDataRequest) {\n headers.set(\"Content-Type\", \"application/json\");\n\n cookies.forEach((cookie) =>\n headers.append(\"Set-Cookie\", cookie.toString()),\n );\n\n await this.service.onRequestEnd(httpRequest);\n\n return new Response(\n JSON.stringify({\n data: {\n [urlPathname]: viewData,\n },\n breadcrumbs,\n prefetchedData: pageData.prefetchedData,\n i18n,\n is404: !currentPathName,\n }),\n {\n headers,\n },\n );\n }\n\n headers.set(\"Content-Type\", \"text/html\");\n\n for (const cookie of cookies) {\n headers.append(\"Set-Cookie\", cookie.toString());\n }\n\n // const { csrfToken, csrfTokenHMAC } = this.generateCSRFTokenWithHmac();\n\n const csrfToken = Bun.CSRF.generate(process.env.SECRET);\n headers.append(\n \"Set-Cookie\",\n `csrf_token=${csrfToken}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now() + 1000 * 60 * 60 * 24).toUTCString()}`,\n );\n\n try {\n await this.onRequestEnd(httpRequest);\n } catch (err) {\n Log.error(err?.message ?? 'Error in \"onRequestEnd\" event handler', {\n err: JSON.stringify(err),\n });\n }\n\n return await this.render({\n csrfTokenHMAC: Buffer.from(\"\"),\n currentPathName,\n headers,\n i18n,\n params,\n pathname: url.pathname,\n prefetchedData: pageData.prefetchedData,\n url,\n user,\n viewData,\n breadcrumbs,\n });\n } catch (err) {\n if (err.kind === GEMI_REQUEST_BREAKER_ERROR) {\n if (isViewDataRequest) {\n const { status = 400, data, directive, headers } = err.payload.api;\n return new Response(JSON.stringify({ data, directive }), {\n headers,\n status,\n });\n } else {\n const { status = 400, error } = err.payload.view;\n return new Response(error?.message, {\n ...err.payload.view,\n status,\n });\n }\n } else {\n this.service.onRequestFail(httpRequest, err);\n throw err;\n }\n }\n });\n }\n}\n",
21
+ "import { HttpRequest } from \"../../http\";\nimport type { Cookie } from \"../../http/Cookie\";\nimport { GEMI_REQUEST_BREAKER_ERROR } from \"../../http/Error\";\nimport { RequestContext } from \"../../http/requestContext\";\nimport type { RouterMiddleware } from \"../../http/Router\";\nimport {\n createFlatViewRoutes,\n type FlatViewRoutes,\n type ViewRouteExec,\n} from \"./createFlatViewRoutes\";\nimport type { ViewRouterServiceProvider } from \"./ViewRouterServiceProvider\";\n// @ts-ignore\nimport { renderToReadableStream } from \"react-dom/server.browser\";\nimport { createElement, Fragment } from \"react\";\n\n// @ts-ignore\nimport { URLPattern } from \"urlpattern-polyfill/urlpattern\";\nimport { ServiceContainer } from \"../ServiceContainer\";\nimport type { ViewRoutes } from \"../../http/ViewRouter\";\nimport { createRouteManifest } from \"./createRouteManifest\";\nimport { createComponentTree } from \"./createComponentTree\";\nimport { flattenComponentTree } from \"../../client/helpers/flattenComponentTree\";\nimport type { ComponentTree } from \"../../client/types\";\nimport { I18nServiceContainer } from \"../../i18n/I18nServiceContainer\";\nimport { MiddlewareServiceContainer } from \"../middleware/MiddlewareServiceContainer\";\nimport { Log } from \"../../facades/Log\";\nimport { I18n } from \"../../facades/I18n\";\nimport { AuthViewRouter } from \"../../auth/AuthenticationServiceProvider\";\nimport { Redirect } from \"../../facades\";\n\nexport class ViewRouterServiceContainer extends ServiceContainer {\n static _name = \"ViewRouterServiceContainer\";\n\n flatViewRoutes: FlatViewRoutes = {};\n routeManifest: Record<string, string[]> = {};\n componentTree: ComponentTree = [];\n flatComponentTree: string[] = [];\n root: any = null;\n\n constructor(public service: ViewRouterServiceProvider) {\n super();\n const routes: ViewRoutes = {\n \"/\": service.rootRouter,\n \"/auth\": AuthViewRouter,\n };\n this.flatViewRoutes = createFlatViewRoutes(routes);\n this.routeManifest = createRouteManifest(routes);\n this.componentTree = createComponentTree(routes);\n this.flatComponentTree = flattenComponentTree(this.componentTree);\n this.root = service.root;\n }\n\n boot() {}\n\n async onRequestEnd(req: HttpRequest) {\n if (!req.cookies.has(\"session_id\")) {\n req.ctx().setCookie(\"session_id\", Bun.randomUUIDv7(), {\n httpOnly: true,\n secure: process.env.NODE_ENV === \"production\",\n sameSite: \"Strict\",\n expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 365),\n });\n }\n\n return await this.service.onRequestEnd(req);\n }\n\n private async render(props: {\n viewData: any;\n pathname: string;\n currentPathName: string;\n csrfTokenHMAC: Buffer;\n headers: any;\n url: URL;\n i18n: any;\n user: any;\n prefetchedData: any;\n params: any;\n breadcrumbs: any;\n urlLocaleSegment?: string;\n }) {\n const {\n csrfTokenHMAC,\n currentPathName,\n headers,\n i18n,\n params,\n pathname,\n prefetchedData,\n url,\n user,\n viewData,\n breadcrumbs,\n urlLocaleSegment,\n } = props;\n\n const pageDataKey = pathname.replace(`/${urlLocaleSegment}`, \"\");\n\n const result = {\n kind: \"view\",\n data: {\n pageData: {\n [pageDataKey]: viewData,\n },\n __csrf: csrfTokenHMAC.toString(\"base64\"),\n prefetchedData,\n i18n,\n auth: { user },\n routeManifest: this.routeManifest,\n breadcrumbs,\n router: {\n urlLocaleSegment,\n pathname: currentPathName,\n params,\n currentPath: pathname,\n searchParams: url.search,\n is404: !currentPathName ? true : false,\n },\n componentTree: [[\"404\", []], ...this.componentTree],\n },\n head: {},\n };\n\n const Root = this.root;\n const currentViews = this.routeManifest[currentPathName];\n return async (params: {\n getStyles: (p: string[]) => Promise<any[]>;\n viewImportMap: any;\n bootstrapModules: string[];\n loaders: string;\n cssManifest: Record<string, string[]>;\n }) => {\n const {\n bootstrapModules,\n loaders,\n getStyles,\n viewImportMap,\n cssManifest,\n } = params;\n\n result.data[\"cssManifest\"] = cssManifest;\n const stream = await renderToReadableStream(\n createElement(Fragment, {\n children: [\n ...(await getStyles(currentViews)),\n createElement(Root, {\n data: result.data,\n viewImportMap,\n key: \"root\",\n }),\n ],\n }),\n {\n bootstrapScriptContent: `window.__GEMI_DATA__ = ${JSON.stringify(result.data)}; window.loaders=${loaders}`,\n bootstrapModules,\n },\n );\n\n return new Response(stream, {\n status: !currentPathName ? 404 : 200,\n headers,\n });\n };\n }\n\n async handleViewRequest(req: Request) {\n const url = new URL(req.url);\n const isViewDataRequest = url.pathname.endsWith(\".json\");\n const urlPathnameWithLocale = url.pathname.replace(\".json\", \"\");\n\n const [, maybeLocale, ...rest] = urlPathnameWithLocale.split(\"/\");\n let urlPathname = `/${rest.join(\"/\")}`;\n let urlLocaleSegment = null;\n let urlLocale: string | null = null;\n\n if (\n !I18nServiceContainer.use().service.supportedLocales.includes(maybeLocale)\n ) {\n urlPathname = urlPathnameWithLocale;\n } else {\n urlLocaleSegment = maybeLocale;\n urlLocale = maybeLocale;\n }\n\n if (I18nServiceContainer.use().isEnabled) {\n if (urlLocale === null) {\n const locale = I18nServiceContainer.use().detectLocale(\n new HttpRequest(req, {}, \"view\", urlPathname),\n );\n const _pathname = url.pathname === \"/\" ? \"\" : url.pathname;\n return new Response(\"\", {\n status: 302,\n headers: {\n \"Cache-Control\":\n \"private, no-cache, no-store, max-age=0, must-revalidate\",\n Location: `/${locale}${_pathname}`,\n },\n });\n }\n }\n\n urlPathname = urlPathname.replace(\"//\", \"/\");\n let handlers: ViewRouteExec[] = [];\n let middlewares: (RouterMiddleware | string)[] = [];\n let currentPathName: null | string = null;\n let params: Record<string, any> = {};\n\n try {\n for (const [pathname, handler] of Object.entries(this.flatViewRoutes)) {\n const pattern = new URLPattern({ pathname });\n if (pattern.test({ pathname: urlPathname })) {\n currentPathName = pathname;\n params = pattern.exec({ pathname: urlPathname })?.pathname.groups!;\n handlers = handler.exec;\n middlewares = handler.middleware;\n break;\n }\n }\n } catch (err) {\n // TODO: Handle this\n throw err;\n }\n\n const httpRequest = new HttpRequest(req, params, \"view\", currentPathName);\n return await RequestContext.run(httpRequest, async () => {\n if (urlLocale) {\n I18n.setLocale(urlLocale.replaceAll(\"/\", \"\"));\n } else {\n I18n.setLocale();\n }\n let pageData: {\n cookies: Set<Cookie>;\n headers: Headers;\n currentPathName: string;\n data: Record<string, any>;\n prefetchedData: Record<string, any>;\n user: any; // TODO: fix type\n params: Record<string, any>;\n urlLocaleSegment: string | null;\n } | null = null;\n const ctx = RequestContext.getStore();\n\n const httpRequest = ctx.req;\n\n try {\n await MiddlewareServiceContainer.use().runMiddleware(middlewares);\n\n const data = await Promise.all([\n ...handlers.map((fn) => fn(httpRequest as any)),\n ...Array.from(ctx.prefetchPromiseQueue).map((fn) => fn()),\n ]);\n\n const cookies = ctx.cookies;\n const headers = ctx.headers;\n const prefetchedResources = ctx.prefetchedResources;\n\n pageData = {\n data,\n cookies,\n headers,\n user: ctx.user,\n prefetchedData: Object.fromEntries(prefetchedResources.entries()),\n currentPathName: httpRequest.routePath,\n params: httpRequest.params,\n urlLocaleSegment,\n };\n const { params, currentPathName, user } = pageData;\n\n const viewData = {};\n const breadcrumbs = {};\n for (const part of data) {\n const [key, value] = Object.entries(part)?.[0] ?? [];\n if (!key || !value) {\n continue;\n }\n breadcrumbs[`${key}:${currentPathName}`] = (value as any).breadcrumb;\n viewData[key] = value;\n }\n\n const i18nServiceContainer = I18nServiceContainer.use();\n const isI18nEnabled = i18nServiceContainer.isEnabled;\n let i18n: Record<string, any> = {};\n if (isI18nEnabled) {\n let locale = null;\n if (urlLocale) {\n locale = urlLocale.replaceAll(\"/\", \"\");\n } else {\n locale = i18nServiceContainer.detectLocale(\n new HttpRequest(req, params as any),\n );\n }\n\n const translations = i18nServiceContainer.getPageTranslations(\n locale,\n currentPathName,\n );\n\n i18n = {\n supportedLocales: i18nServiceContainer.service.supportedLocales,\n currentLocale: locale,\n dictionary: {\n [locale]: translations,\n },\n };\n }\n\n if (isViewDataRequest) {\n headers.set(\"Content-Type\", \"application/json\");\n\n cookies.forEach((cookie) =>\n headers.append(\"Set-Cookie\", cookie.toString()),\n );\n\n await this.service.onRequestEnd(httpRequest);\n\n return new Response(\n JSON.stringify({\n data: {\n [urlPathname]: viewData,\n },\n breadcrumbs,\n prefetchedData: pageData.prefetchedData,\n i18n,\n is404: !currentPathName,\n }),\n {\n headers,\n },\n );\n }\n\n headers.set(\"Content-Type\", \"text/html\");\n\n for (const cookie of cookies) {\n headers.append(\"Set-Cookie\", cookie.toString());\n }\n\n // const { csrfToken, csrfTokenHMAC } = this.generateCSRFTokenWithHmac();\n\n const csrfToken = Bun.CSRF.generate(process.env.SECRET);\n headers.append(\n \"Set-Cookie\",\n `csrf_token=${csrfToken}; HttpOnly; Secure; SameSite=Strict; Expires=${new Date(Date.now() + 1000 * 60 * 60 * 24).toUTCString()}`,\n );\n\n try {\n await this.onRequestEnd(httpRequest);\n } catch (err) {\n Log.error(err?.message ?? 'Error in \"onRequestEnd\" event handler', {\n err: JSON.stringify(err),\n });\n }\n\n return await this.render({\n csrfTokenHMAC: Buffer.from(\"\"),\n currentPathName,\n headers,\n i18n,\n params,\n pathname: url.pathname,\n prefetchedData: pageData.prefetchedData,\n url,\n user,\n viewData,\n breadcrumbs,\n urlLocaleSegment,\n });\n } catch (err) {\n if (err.kind === GEMI_REQUEST_BREAKER_ERROR) {\n if (isViewDataRequest) {\n const { status = 400, data, directive, headers } = err.payload.api;\n return new Response(JSON.stringify({ data, directive }), {\n headers,\n status,\n });\n } else {\n const { status = 400, error } = err.payload.view;\n return new Response(error?.message, {\n ...err.payload.view,\n status,\n });\n }\n } else {\n this.service.onRequestFail(httpRequest, err);\n throw err;\n }\n }\n });\n }\n}\n",
22
22
  "import type { ViewRoutes } from \"../../http/ViewRouter\";\nfunction removeGroupPrefix(input: string) {\n // Remove all (str) patterns\n const withoutParentheses = input.replace(/\\([^)]*\\)/g, \"\");\n\n // Remove all double slashes // by replacing with single slash\n const withoutDoubleSlashes = withoutParentheses.replace(/\\/\\//g, \"/\");\n return withoutDoubleSlashes;\n}\n\nexport function createRouteManifest(routes: ViewRoutes) {\n const routeManifest: Record<string, string[]> = {};\n for (const [routePath, routeHandler] of Object.entries(routes)) {\n if (\"run\" in routeHandler) {\n const viewPath = routeHandler.viewPath;\n\n if (\"children\" in routeHandler) {\n // Add the layout view\n routeManifest[routePath] = [viewPath];\n const children = new routeHandler.children();\n const manifest = createRouteManifest(children.routes);\n for (const [path, viewPaths] of Object.entries(manifest)) {\n const key = routePath === \"/\" ? path : `${routePath}${path}`;\n const _key = path === \"/\" && routePath !== \"/\" ? routePath : key;\n routeManifest[_key] = [viewPath, ...viewPaths];\n }\n if (routeManifest[routePath].length === 1) {\n // If the layout doesn't have any children, remove it from the manifest\n delete routeManifest[routePath];\n }\n } else {\n routeManifest[routePath] = [viewPath];\n }\n } else {\n const router = new routeHandler();\n\n const manifest = createRouteManifest(router.routes);\n for (const [path, viewPaths] of Object.entries(manifest)) {\n const key = routePath === \"/\" ? path : `${routePath}${path}`;\n const _key = path === \"/\" && routePath !== \"/\" ? routePath : key;\n routeManifest[_key] = viewPaths;\n }\n }\n }\n\n return Object.fromEntries(\n Object.entries(routeManifest).map(([key, value]) => [\n removeGroupPrefix(key),\n value,\n ]),\n );\n}\n",
23
23
  "import type { ComponentTree } from \"../../client/types\";\nimport type { ViewRoutes } from \"../../http/ViewRouter\";\n\nexport function createComponentTree(routes: ViewRoutes): ComponentTree {\n const componentTree: ComponentTree = [];\n\n for (const [_, routeHandler] of Object.entries(routes)) {\n if (\"run\" in routeHandler) {\n const viewPath = routeHandler.viewPath;\n if (viewPath === \"__\") {\n continue;\n }\n if (viewPath === \"REDIRECT\") {\n continue;\n }\n\n if (\"children\" in routeHandler) {\n const router = new routeHandler.children();\n const branch = createComponentTree(router.routes);\n componentTree.push([viewPath, branch]);\n } else {\n componentTree.push([viewPath, []]);\n }\n } else {\n const router = new routeHandler();\n const branch = createComponentTree(router.routes);\n componentTree.push(...branch);\n }\n }\n\n return componentTree;\n}\n",
24
24
  "import type { ComponentTree } from \"../types\";\n\nexport function flattenComponentTree(componentTree: ComponentTree): string[] {\n let out: string[] = [];\n for (const [root, branches] of componentTree) {\n out.push(root, ...flattenComponentTree(branches).flat());\n }\n return Array.from(new Set(out));\n}\n",
@@ -27,7 +27,7 @@
27
27
  "import type { RPC } from \"../client/rpc\";\nimport type { UrlParser } from \"../client/types\";\nimport type { ApiRouterHandler } from \"../http/ApiRouter\";\nimport { HttpRequest } from \"../http/HttpRequest\";\nimport { RequestContext } from \"../http/requestContext\";\nimport { applyParams } from \"../utils/applyParams\";\nimport { omitNullishValues } from \"../utils/omitNullishValues\";\nimport { ApiRouterServiceContainer } from \"../services/router/ApiRouterServiceContainer\";\n\ntype GetRPC = {\n [K in keyof RPC as K extends `GET:${infer P}` ? P : never]: RPC[K];\n};\n\ntype Data<T extends keyof GetRPC> =\n GetRPC[T] extends ApiRouterHandler<any, infer Data, any>\n ? Awaited<Data>\n : never;\n\ntype Input<T extends keyof GetRPC> =\n GetRPC[T] extends ApiRouterHandler<infer Input, any, any> ? Input : never;\n\nexport class Query {\n private static prepare<T extends keyof GetRPC>(\n path: T,\n ...args: [\n options?: {\n search?: Partial<Input<T>>;\n params?: Partial<UrlParser<T>>;\n },\n ]\n ) {\n const defaultOptions = { params: {}, search: {} };\n const [options = {}] = args;\n const { search, params } = { ...defaultOptions, ...options };\n const ctx = RequestContext.getStore();\n\n if (ctx.req.kind === \"api\") {\n throw new Error(\"Query.prefetch() cannot be called from an API request\");\n }\n\n const req = ctx.req.rawRequest;\n const url = new URL(req.url);\n const searchParams = new URLSearchParams(\n omitNullishValues(search as Record<string, string>),\n );\n searchParams.delete(\"json\");\n searchParams.sort();\n const pathnameWithSearchParams = [\n `${applyParams(path, params)}`,\n searchParams.toString(),\n ]\n .filter((s) => s.length > 0)\n .join(\"?\");\n\n const urlStr = `${url.origin}/${pathnameWithSearchParams}`;\n const newReq = new Request(urlStr, { headers: req.headers });\n const httpRequest = new HttpRequest(newReq, params);\n const store = (data: any) => {\n ctx.prefetchedResources.set(applyParams(path, params), {\n [searchParams.toString()]: data,\n });\n };\n\n const trigger = () => {\n return RequestContext.run(httpRequest, async () => {\n const data: Data<T> =\n await ApiRouterServiceContainer.use().getRouteData(path);\n store(data);\n return data;\n });\n };\n\n return {\n instant: trigger,\n prefetch: () => {\n ctx.prefetchPromiseQueue.add(trigger);\n },\n };\n }\n\n static instant<T extends keyof GetRPC>(\n path: T,\n ...args: [\n options?: { search?: Partial<Input<T>>; params?: Partial<UrlParser<T>> },\n ]\n ) {\n return Query.prepare(path, ...args).instant();\n }\n\n static prefetch<T extends keyof GetRPC>(\n path: T,\n ...args: [\n options?: { search?: Partial<Input<T>>; params?: Partial<UrlParser<T>> },\n ]\n ) {\n return Query.prepare(path, ...args).prefetch();\n }\n}\n",
28
28
  "import type { UrlParser, ViewPaths } from \"../client/types\";\nimport { applyParams } from \"../utils/applyParams\";\n\nexport class Url {\n static absolute<T extends ViewPaths>(\n key: T,\n ...args: UrlParser<T> extends Record<string, never>\n ? []\n : [params: UrlParser<T>]\n ) {\n return `${process.env.HOST_NAME}${applyParams(String(key), args[0] ?? {})}`;\n }\n\n static relative<T extends ViewPaths>(\n key: T,\n ...args: UrlParser<T> extends Record<string, never>\n ? []\n : [params: UrlParser<T>]\n ) {\n return applyParams(String(key), args[0] ?? {});\n }\n}\n"
29
29
  ],
30
- "mappings": "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",
31
- "debugId": "EC1AC1B19AA7720464756E2164756E21",
30
+ "mappings": "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",
31
+ "debugId": "B8431DA6D969B4CF64756E2164756E21",
32
32
  "names": []
33
33
  }