gemi 0.160.1 → 0.161.0

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 (233) hide show
  1. package/dist/ai/generate.d.ts.map +1 -1
  2. package/dist/ai/index.js +2 -2
  3. package/dist/ai/index.js.map +1 -1
  4. package/dist/app/App.d.ts +5 -0
  5. package/dist/app/App.d.ts.map +1 -1
  6. package/dist/app/index.js +2 -2
  7. package/dist/app/index.js.map +1 -1
  8. package/dist/auth/config.d.ts +3 -2
  9. package/dist/auth/config.d.ts.map +1 -1
  10. package/dist/auth/routes.d.ts +20 -42
  11. package/dist/auth/routes.d.ts.map +1 -1
  12. package/dist/bin/gemi.js +8 -1
  13. package/dist/bin/gemi.js.map +3 -3
  14. package/dist/bun/plugin.js +2 -2
  15. package/dist/bun/plugin.js.map +1 -1
  16. package/dist/bun/preload.js +2 -2
  17. package/dist/bun/preload.js.map +1 -1
  18. package/dist/{chunk-4vqnv41y.js → chunk-04ffq2ge.js} +2 -2
  19. package/dist/{chunk-4vqnv41y.js.map → chunk-04ffq2ge.js.map} +1 -1
  20. package/dist/{chunk-27habdva.js → chunk-04h49y2f.js} +2 -2
  21. package/dist/{chunk-27habdva.js.map → chunk-04h49y2f.js.map} +1 -1
  22. package/dist/{chunk-fcjjd162.js → chunk-10zbxbwk.js} +2 -2
  23. package/dist/{chunk-fcjjd162.js.map → chunk-10zbxbwk.js.map} +1 -1
  24. package/dist/{chunk-8tyw6faf.js → chunk-1btx3kkv.js} +2 -2
  25. package/dist/{chunk-8tyw6faf.js.map → chunk-1btx3kkv.js.map} +1 -1
  26. package/dist/{chunk-bfj2jafb.js → chunk-1cjr8hvc.js} +3 -3
  27. package/dist/{chunk-bfj2jafb.js.map → chunk-1cjr8hvc.js.map} +2 -2
  28. package/dist/{chunk-9f2ps5v2.js → chunk-22jm6sn1.js} +2 -2
  29. package/dist/{chunk-9f2ps5v2.js.map → chunk-22jm6sn1.js.map} +1 -1
  30. package/dist/{chunk-4ye6p5yk.js → chunk-2hhwsm69.js} +2 -2
  31. package/dist/{chunk-4ye6p5yk.js.map → chunk-2hhwsm69.js.map} +1 -1
  32. package/dist/{chunk-mn9v157z.js → chunk-36x1a1mz.js} +4 -4
  33. package/dist/{chunk-mn9v157z.js.map → chunk-36x1a1mz.js.map} +4 -3
  34. package/dist/{chunk-wtddr3vs.js → chunk-3tyqnh59.js} +2 -2
  35. package/dist/{chunk-wtddr3vs.js.map → chunk-3tyqnh59.js.map} +1 -1
  36. package/dist/chunk-3yvdvv3d.js +24 -0
  37. package/dist/{chunk-0gazmssx.js.map → chunk-3yvdvv3d.js.map} +3 -3
  38. package/dist/{chunk-m4pkbndk.js → chunk-51fvpq55.js} +2 -2
  39. package/dist/{chunk-m4pkbndk.js.map → chunk-51fvpq55.js.map} +1 -1
  40. package/dist/{chunk-k43m5dvs.js → chunk-576g6eyk.js} +2 -2
  41. package/dist/{chunk-k43m5dvs.js.map → chunk-576g6eyk.js.map} +1 -1
  42. package/dist/{chunk-ttvzfwqw.js → chunk-5z7mqgkp.js} +17 -17
  43. package/dist/{chunk-ttvzfwqw.js.map → chunk-5z7mqgkp.js.map} +3 -3
  44. package/dist/{chunk-3cvza61a.js → chunk-6w2v33bd.js} +2 -2
  45. package/dist/{chunk-3cvza61a.js.map → chunk-6w2v33bd.js.map} +1 -1
  46. package/dist/{chunk-p9syxzxh.js → chunk-70kpm72z.js} +3 -3
  47. package/dist/{chunk-p9syxzxh.js.map → chunk-70kpm72z.js.map} +1 -1
  48. package/dist/{chunk-44ensgdq.js → chunk-75ajptxk.js} +4 -4
  49. package/dist/{chunk-44ensgdq.js.map → chunk-75ajptxk.js.map} +3 -3
  50. package/dist/{chunk-qbsk0jr8.js → chunk-7effp39a.js} +2 -2
  51. package/dist/{chunk-qbsk0jr8.js.map → chunk-7effp39a.js.map} +1 -1
  52. package/dist/{chunk-57qnqcrp.js → chunk-7ex7aczc.js} +3 -3
  53. package/dist/{chunk-57qnqcrp.js.map → chunk-7ex7aczc.js.map} +1 -1
  54. package/dist/{chunk-r3v2cnrj.js → chunk-7txst143.js} +2 -2
  55. package/dist/{chunk-r3v2cnrj.js.map → chunk-7txst143.js.map} +1 -1
  56. package/dist/{chunk-v8fx4vgq.js → chunk-89168m0z.js} +2 -2
  57. package/dist/{chunk-v8fx4vgq.js.map → chunk-89168m0z.js.map} +1 -1
  58. package/dist/{chunk-fcqx2t0p.js → chunk-8m9kgynj.js} +2 -2
  59. package/dist/{chunk-fcqx2t0p.js.map → chunk-8m9kgynj.js.map} +1 -1
  60. package/dist/{chunk-m8a80sgn.js → chunk-8x0q9h0j.js} +3 -3
  61. package/dist/{chunk-m8a80sgn.js.map → chunk-8x0q9h0j.js.map} +1 -1
  62. package/dist/{chunk-7rfw4h2x.js → chunk-95gag2pg.js} +2 -2
  63. package/dist/{chunk-7rfw4h2x.js.map → chunk-95gag2pg.js.map} +1 -1
  64. package/dist/{chunk-7bc9ypbk.js → chunk-99be7vbh.js} +3 -3
  65. package/dist/{chunk-7bc9ypbk.js.map → chunk-99be7vbh.js.map} +1 -1
  66. package/dist/{chunk-kan3yz82.js → chunk-a5htej1f.js} +2 -2
  67. package/dist/{chunk-kan3yz82.js.map → chunk-a5htej1f.js.map} +1 -1
  68. package/dist/chunk-a5qn2sq8.js +4 -0
  69. package/dist/chunk-a5qn2sq8.js.map +10 -0
  70. package/dist/{chunk-ctrmztan.js → chunk-akgd3c0k.js} +2 -2
  71. package/dist/{chunk-ctrmztan.js.map → chunk-akgd3c0k.js.map} +1 -1
  72. package/dist/{chunk-vb73ddwz.js → chunk-asnk2jqn.js} +2 -2
  73. package/dist/{chunk-vb73ddwz.js.map → chunk-asnk2jqn.js.map} +1 -1
  74. package/dist/{chunk-a22h5cby.js → chunk-bwg7genv.js} +2 -2
  75. package/dist/{chunk-a22h5cby.js.map → chunk-bwg7genv.js.map} +1 -1
  76. package/dist/{chunk-j144nwvh.js → chunk-cd847h0t.js} +3 -3
  77. package/dist/{chunk-j144nwvh.js.map → chunk-cd847h0t.js.map} +1 -1
  78. package/dist/{chunk-8m3m5hcf.js → chunk-cjefq3ry.js} +3 -3
  79. package/dist/{chunk-8m3m5hcf.js.map → chunk-cjefq3ry.js.map} +1 -1
  80. package/dist/{chunk-664ewdjv.js → chunk-dj6bw2jm.js} +3 -3
  81. package/dist/{chunk-664ewdjv.js.map → chunk-dj6bw2jm.js.map} +2 -2
  82. package/dist/{chunk-s0xwqcrf.js → chunk-dkmf4eg1.js} +3 -3
  83. package/dist/{chunk-s0xwqcrf.js.map → chunk-dkmf4eg1.js.map} +1 -1
  84. package/dist/{chunk-5qzxyj68.js → chunk-dwxgr189.js} +1 -1
  85. package/dist/{chunk-79nypedr.js → chunk-e0w1mf72.js} +3 -3
  86. package/dist/{chunk-79nypedr.js.map → chunk-e0w1mf72.js.map} +1 -1
  87. package/dist/{chunk-csvffxjh.js → chunk-e9c02bq0.js} +3 -3
  88. package/dist/{chunk-csvffxjh.js.map → chunk-e9c02bq0.js.map} +1 -1
  89. package/dist/{chunk-szdbsmq7.js → chunk-egzfxdr1.js} +2 -2
  90. package/dist/{chunk-szdbsmq7.js.map → chunk-egzfxdr1.js.map} +1 -1
  91. package/dist/{chunk-yzw2tvqq.js → chunk-fv1r0w0r.js} +2 -2
  92. package/dist/{chunk-yzw2tvqq.js.map → chunk-fv1r0w0r.js.map} +1 -1
  93. package/dist/{chunk-d249m2ct.js → chunk-fyyf44aj.js} +2 -2
  94. package/dist/{chunk-d249m2ct.js.map → chunk-fyyf44aj.js.map} +1 -1
  95. package/dist/{chunk-gmeeyg19.js → chunk-g3sryyn4.js} +2 -2
  96. package/dist/{chunk-gmeeyg19.js.map → chunk-g3sryyn4.js.map} +1 -1
  97. package/dist/{chunk-rq3wrwfa.js → chunk-g3vasg0d.js} +1 -1
  98. package/dist/{chunk-qsbtqh47.js → chunk-gcxk8j84.js} +3 -3
  99. package/dist/{chunk-qsbtqh47.js.map → chunk-gcxk8j84.js.map} +1 -1
  100. package/dist/{chunk-1xxh48bd.js → chunk-gn8ee1dp.js} +2 -2
  101. package/dist/{chunk-1xxh48bd.js.map → chunk-gn8ee1dp.js.map} +1 -1
  102. package/dist/{chunk-0vb4j7cx.js → chunk-h4h8m3yr.js} +3 -3
  103. package/dist/{chunk-0vb4j7cx.js.map → chunk-h4h8m3yr.js.map} +1 -1
  104. package/dist/chunk-hdr0m0md.js +5 -0
  105. package/dist/{chunk-0qrbspbe.js.map → chunk-hdr0m0md.js.map} +1 -1
  106. package/dist/{chunk-ryq2ezgt.js → chunk-hkp00b9x.js} +3 -3
  107. package/dist/{chunk-ryq2ezgt.js.map → chunk-hkp00b9x.js.map} +1 -1
  108. package/dist/{chunk-5pc21syf.js → chunk-hx8vkwsb.js} +2 -2
  109. package/dist/{chunk-5pc21syf.js.map → chunk-hx8vkwsb.js.map} +1 -1
  110. package/dist/{chunk-0b8m1f07.js → chunk-jr7hdp5z.js} +3 -3
  111. package/dist/{chunk-0b8m1f07.js.map → chunk-jr7hdp5z.js.map} +1 -1
  112. package/dist/{chunk-cq16azbw.js → chunk-jry03jqj.js} +4 -4
  113. package/dist/{chunk-cq16azbw.js.map → chunk-jry03jqj.js.map} +1 -1
  114. package/dist/{chunk-qz9n2e59.js → chunk-k5xxwr5h.js} +2 -2
  115. package/dist/{chunk-qz9n2e59.js.map → chunk-k5xxwr5h.js.map} +1 -1
  116. package/dist/{chunk-p6nkfcn1.js → chunk-kqbnsthz.js} +2 -2
  117. package/dist/{chunk-p6nkfcn1.js.map → chunk-kqbnsthz.js.map} +1 -1
  118. package/dist/{chunk-w0rfypzx.js → chunk-kscwjycy.js} +2 -2
  119. package/dist/{chunk-w0rfypzx.js.map → chunk-kscwjycy.js.map} +1 -1
  120. package/dist/{chunk-pyyhmeg1.js → chunk-kt83h150.js} +3 -3
  121. package/dist/{chunk-pyyhmeg1.js.map → chunk-kt83h150.js.map} +1 -1
  122. package/dist/{chunk-msxhf3m6.js → chunk-m683535s.js} +3 -3
  123. package/dist/{chunk-msxhf3m6.js.map → chunk-m683535s.js.map} +1 -1
  124. package/dist/{chunk-98byy5m4.js → chunk-mg5gq632.js} +1 -1
  125. package/dist/{chunk-bzcfw8qd.js → chunk-mp9hfbs3.js} +2 -2
  126. package/dist/{chunk-bzcfw8qd.js.map → chunk-mp9hfbs3.js.map} +1 -1
  127. package/dist/{chunk-2ednvght.js → chunk-mqbx7hc4.js} +2 -2
  128. package/dist/{chunk-2ednvght.js.map → chunk-mqbx7hc4.js.map} +1 -1
  129. package/dist/{chunk-epvpmakp.js → chunk-mvd4mc8p.js} +2 -2
  130. package/dist/{chunk-epvpmakp.js.map → chunk-mvd4mc8p.js.map} +1 -1
  131. package/dist/{chunk-g71ppv6x.js → chunk-mxhy19a9.js} +2 -2
  132. package/dist/{chunk-g71ppv6x.js.map → chunk-mxhy19a9.js.map} +1 -1
  133. package/dist/{chunk-3d8jxky6.js → chunk-n3pc62tc.js} +3 -3
  134. package/dist/{chunk-3d8jxky6.js.map → chunk-n3pc62tc.js.map} +1 -1
  135. package/dist/{chunk-8z29qvvm.js → chunk-n6ywagxv.js} +2 -2
  136. package/dist/{chunk-8z29qvvm.js.map → chunk-n6ywagxv.js.map} +1 -1
  137. package/dist/{chunk-191gkynh.js → chunk-nc1gstvq.js} +3 -3
  138. package/dist/{chunk-191gkynh.js.map → chunk-nc1gstvq.js.map} +1 -1
  139. package/dist/{chunk-0qernzn1.js → chunk-pfjky33c.js} +2 -2
  140. package/dist/{chunk-0qernzn1.js.map → chunk-pfjky33c.js.map} +1 -1
  141. package/dist/chunk-pg16c4nx.js +58 -0
  142. package/dist/{chunk-cb873vjm.js.map → chunk-pg16c4nx.js.map} +3 -3
  143. package/dist/{chunk-3vmc6adw.js → chunk-q4q5mxte.js} +2 -2
  144. package/dist/{chunk-3vmc6adw.js.map → chunk-q4q5mxte.js.map} +1 -1
  145. package/dist/{chunk-weyv3zrt.js → chunk-r94gpbjv.js} +4 -4
  146. package/dist/{chunk-weyv3zrt.js.map → chunk-r94gpbjv.js.map} +1 -1
  147. package/dist/{chunk-tsbxdz4h.js → chunk-rh811v1f.js} +2 -2
  148. package/dist/{chunk-tsbxdz4h.js.map → chunk-rh811v1f.js.map} +1 -1
  149. package/dist/{chunk-kk18xqgc.js → chunk-s0z61m9j.js} +2 -2
  150. package/dist/{chunk-kk18xqgc.js.map → chunk-s0z61m9j.js.map} +1 -1
  151. package/dist/{chunk-6d6p0q3p.js → chunk-s4nqy979.js} +2 -2
  152. package/dist/{chunk-6d6p0q3p.js.map → chunk-s4nqy979.js.map} +1 -1
  153. package/dist/{chunk-6ytezxzj.js → chunk-s7w7pn80.js} +2 -2
  154. package/dist/{chunk-6ytezxzj.js.map → chunk-s7w7pn80.js.map} +1 -1
  155. package/dist/chunk-sadtazf5.js +117 -0
  156. package/dist/{chunk-dvwfhc5n.js.map → chunk-sadtazf5.js.map} +7 -7
  157. package/dist/{chunk-xp7x27n8.js → chunk-vqar6ysw.js} +3 -3
  158. package/dist/{chunk-xp7x27n8.js.map → chunk-vqar6ysw.js.map} +1 -1
  159. package/dist/{chunk-5c6dfy75.js → chunk-wamxfhh6.js} +2 -2
  160. package/dist/{chunk-5c6dfy75.js.map → chunk-wamxfhh6.js.map} +1 -1
  161. package/dist/{chunk-egwz89ze.js → chunk-wgre66wq.js} +2 -2
  162. package/dist/{chunk-egwz89ze.js.map → chunk-wgre66wq.js.map} +1 -1
  163. package/dist/{chunk-bqxt1she.js → chunk-xzbhy9n5.js} +1 -1
  164. package/dist/{chunk-jarsydtr.js → chunk-xzkr8yck.js} +3 -3
  165. package/dist/{chunk-jarsydtr.js.map → chunk-xzkr8yck.js.map} +1 -1
  166. package/dist/{chunk-4670xxae.js → chunk-yc2pnb1w.js} +2 -2
  167. package/dist/{chunk-4670xxae.js.map → chunk-yc2pnb1w.js.map} +1 -1
  168. package/dist/{chunk-v0gjdknx.js → chunk-yvpgy1p1.js} +2 -2
  169. package/dist/{chunk-v0gjdknx.js.map → chunk-yvpgy1p1.js.map} +1 -1
  170. package/dist/{chunk-zz2n9pa5.js → chunk-z2btwd27.js} +3 -3
  171. package/dist/{chunk-zz2n9pa5.js.map → chunk-z2btwd27.js.map} +1 -1
  172. package/dist/{chunk-day21sfa.js → chunk-z94ms1jv.js} +3 -3
  173. package/dist/{chunk-day21sfa.js.map → chunk-z94ms1jv.js.map} +1 -1
  174. package/dist/{chunk-m73mjzeh.js → chunk-zh0knwen.js} +2 -2
  175. package/dist/{chunk-m73mjzeh.js.map → chunk-zh0knwen.js.map} +1 -1
  176. package/dist/{chunk-9983zmhx.js → chunk-zzgzz4hb.js} +3 -3
  177. package/dist/{chunk-9983zmhx.js.map → chunk-zzgzz4hb.js.map} +1 -1
  178. package/dist/config/index.js +1 -1
  179. package/dist/console/run.js +2 -2
  180. package/dist/console/run.js.map +1 -1
  181. package/dist/container/index.js +2 -2
  182. package/dist/container/index.js.map +1 -1
  183. package/dist/database/index.js +2 -2
  184. package/dist/database/index.js.map +1 -1
  185. package/dist/email/index.js +2 -2
  186. package/dist/email/index.js.map +1 -1
  187. package/dist/facades/index.js +2 -2
  188. package/dist/facades/index.js.map +1 -1
  189. package/dist/foundation/index.js +2 -2
  190. package/dist/foundation/index.js.map +1 -1
  191. package/dist/http/index.js +2 -2
  192. package/dist/http/index.js.map +1 -1
  193. package/dist/i18n/dictionaryRuntime.js +2 -2
  194. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  195. package/dist/i18n/index.js +2 -2
  196. package/dist/i18n/index.js.map +1 -1
  197. package/dist/kernel/index.js +2 -2
  198. package/dist/kernel/index.js.map +1 -1
  199. package/dist/orm/index.js +2 -2
  200. package/dist/orm/index.js.map +1 -1
  201. package/dist/probe/index.js +2 -2
  202. package/dist/probe/index.js.map +1 -1
  203. package/dist/server/devFetch.d.ts.map +1 -1
  204. package/dist/server/httpProd.d.ts.map +1 -1
  205. package/dist/server/index.js +2 -2
  206. package/dist/server/index.js.map +1 -1
  207. package/dist/server/requiredViews.d.ts +7 -0
  208. package/dist/server/requiredViews.d.ts.map +1 -0
  209. package/dist/services/index.js +2 -2
  210. package/dist/services/index.js.map +1 -1
  211. package/dist/services/queue/work.js +2 -2
  212. package/dist/services/queue/work.js.map +1 -1
  213. package/dist/services/router/DomainRouter.d.ts +3 -0
  214. package/dist/services/router/DomainRouter.d.ts.map +1 -1
  215. package/dist/services/router/RouteServiceProvider.d.ts.map +1 -1
  216. package/dist/services/router/ViewRouteDispatcher.d.ts +12 -1
  217. package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
  218. package/dist/stats/route-table.js +1 -1
  219. package/dist/support/index.js +2 -2
  220. package/dist/support/index.js.map +1 -1
  221. package/dist/vitest/index.js +2 -2
  222. package/dist/vitest/index.js.map +1 -1
  223. package/package.json +1 -1
  224. package/dist/chunk-0gazmssx.js +0 -24
  225. package/dist/chunk-0qrbspbe.js +0 -5
  226. package/dist/chunk-982x8jps.js +0 -4
  227. package/dist/chunk-982x8jps.js.map +0 -10
  228. package/dist/chunk-cb873vjm.js +0 -58
  229. package/dist/chunk-dvwfhc5n.js +0 -117
  230. /package/dist/{chunk-5qzxyj68.js.map → chunk-dwxgr189.js.map} +0 -0
  231. /package/dist/{chunk-rq3wrwfa.js.map → chunk-g3vasg0d.js.map} +0 -0
  232. /package/dist/{chunk-98byy5m4.js.map → chunk-mg5gq632.js.map} +0 -0
  233. /package/dist/{chunk-bqxt1she.js.map → chunk-xzbhy9n5.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ViewRouteDispatcher.d.ts","sourceRoot":"","sources":["../../../services/router/ViewRouteDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewRouteDispatcher.d.ts","sourceRoot":"","sources":["../../../services/router/ViewRouteDispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import"../chunk-egwz89ze.js";import M from"path";import{writeFileSync as Q}from"fs";var L=new Set(["FILE","REDIRECT"]);function H(j){return j.run(()=>{let x=[];for(let{group:z,view:D}of j.domains().viewGroups())for(let[G,B]of Object.entries(D.flatViewRoutes)){let C=D.routeManifest[G]??B.segments.map((K)=>K.viewPath);if(C.length===0||L.has(C.at(-1)))continue;x.push({path:G,group:z,views:C,...B.static?{static:{...B.static.layout?{layout:B.static.layout}:{},...B.static.navigation?{navigation:!0}:{}}}:{}})}return x})}var J=process.argv[2];async function U(){if(!J)throw Error("usage: route-table <out.json>");let j=M.resolve(process.cwd(),"app/kernel/Kernel.ts"),x=await import(j);if(typeof x.default!=="function")throw Error(`${j} has no default export (the Kernel subclass).`);let z=new x.default;z.boot();try{Q(J,JSON.stringify(H(z)))}finally{z.destroy()}}U().then(()=>process.exit(0),(j)=>{console.error(j?.stack??String(j)),process.exit(1)});
2
+ import"../chunk-wgre66wq.js";import M from"path";import{writeFileSync as Q}from"fs";var L=new Set(["FILE","REDIRECT"]);function H(j){return j.run(()=>{let x=[];for(let{group:z,view:D}of j.domains().viewGroups())for(let[G,B]of Object.entries(D.flatViewRoutes)){let C=D.routeManifest[G]??B.segments.map((K)=>K.viewPath);if(C.length===0||L.has(C.at(-1)))continue;x.push({path:G,group:z,views:C,...B.static?{static:{...B.static.layout?{layout:B.static.layout}:{},...B.static.navigation?{navigation:!0}:{}}}:{}})}return x})}var J=process.argv[2];async function U(){if(!J)throw Error("usage: route-table <out.json>");let j=M.resolve(process.cwd(),"app/kernel/Kernel.ts"),x=await import(j);if(typeof x.default!=="function")throw Error(`${j} has no default export (the Kernel subclass).`);let z=new x.default;z.boot();try{Q(J,JSON.stringify(H(z)))}finally{z.destroy()}}U().then(()=>process.exit(0),(j)=>{console.error(j?.stack??String(j)),process.exit(1)});
3
3
 
4
4
  //# debugId=05EB0087C5A2060D64756E2164756E21
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{ee as Y}from"../chunk-yzw2tvqq.js";import{Zj as M}from"../chunk-5c6dfy75.js";import{$k as P,bl as R}from"../chunk-xp7x27n8.js";import"../chunk-g71ppv6x.js";import{rl as Q,sl as U,tl as V,ul as W}from"../chunk-qbsk0jr8.js";import"../chunk-egwz89ze.js";class S{static token;async boot(){}static inject(){if(!this.token)throw Error(`Service [${this.name}] does not declare a \`static token\`, so the container has no key to resolve it by.`);try{return R(this)}catch(x){throw Error(`Could not inject [${this.name}]. Services are constructed when the kernel boots, so `+"inject() only works from code that runs after that \u2014 a constructor default or a method "+`body, never module top level. Check that [${this.name}] is listed in \`services\` on your Kernel.`,{cause:x})}}static with(x){let f=new this;for(let[C,g]of Object.entries(x))if(g!==void 0)f[C]=g;return f}}import{readdir as z}from"fs/promises";import{join as B,parse as j}from"path";var H=[".ts",".tsx",".js",".mjs",".jsx"];function J(x={}){let f={};for(let[C,g]of Object.entries(x))f[C]=q(g);return new P(f)}async function L(x,f=new P){let C=[];try{C=await z(x)}catch(D){return f}let g=C.filter((D)=>{let{ext:v,name:F}=j(D);return H.includes(v)&&!F.startsWith(".")}).sort();for(let D of g){let{name:v}=j(D),F=await import(B(x,D));f.set(v,q(F))}return f}function q(x){if(x&&typeof x==="object"&&"default"in x)return x.default;return x}export{M as withDefaults,Q as sourceFiles,W as projectRoot,L as loadConfigFrom,V as discoverClasses,J as createConfigRepository,Y as ServiceProvider,S as Service,P as Repository,U as DiscoveryError};
2
+ import{fe as Y}from"../chunk-fv1r0w0r.js";import{_j as M}from"../chunk-wamxfhh6.js";import{al as P,cl as R}from"../chunk-vqar6ysw.js";import"../chunk-mxhy19a9.js";import{sl as Q,tl as U,ul as V,vl as W}from"../chunk-7effp39a.js";import"../chunk-wgre66wq.js";class S{static token;async boot(){}static inject(){if(!this.token)throw Error(`Service [${this.name}] does not declare a \`static token\`, so the container has no key to resolve it by.`);try{return R(this)}catch(x){throw Error(`Could not inject [${this.name}]. Services are constructed when the kernel boots, so `+"inject() only works from code that runs after that \u2014 a constructor default or a method "+`body, never module top level. Check that [${this.name}] is listed in \`services\` on your Kernel.`,{cause:x})}}static with(x){let f=new this;for(let[C,g]of Object.entries(x))if(g!==void 0)f[C]=g;return f}}import{readdir as z}from"fs/promises";import{join as B,parse as j}from"path";var H=[".ts",".tsx",".js",".mjs",".jsx"];function J(x={}){let f={};for(let[C,g]of Object.entries(x))f[C]=q(g);return new P(f)}async function L(x,f=new P){let C=[];try{C=await z(x)}catch(D){return f}let g=C.filter((D)=>{let{ext:v,name:F}=j(D);return H.includes(v)&&!F.startsWith(".")}).sort();for(let D of g){let{name:v}=j(D),F=await import(B(x,D));f.set(v,q(F))}return f}function q(x){if(x&&typeof x==="object"&&"default"in x)return x.default;return x}export{M as withDefaults,Q as sourceFiles,W as projectRoot,L as loadConfigFrom,V as discoverClasses,J as createConfigRepository,Y as ServiceProvider,S as Service,P as Repository,U as DiscoveryError};
3
3
 
4
- //# debugId=A054E61D85B8190564756E2164756E21
4
+ //# debugId=60A2171FA8A6714064756E2164756E21
@@ -6,6 +6,6 @@
6
6
  "import { readdir } from \"node:fs/promises\";\nimport { join, parse } from \"node:path\";\n\nimport { Repository } from \"./Repository\";\n\nconst CONFIG_EXTENSIONS = [\".ts\", \".tsx\", \".js\", \".mjs\", \".jsx\"];\n\n// Builds a Repository from an already-imported map of config modules. The map\n// key becomes the top-level config key, so `{ mail: mailModule }` is readable\n// as `config.get(\"mail.driver\")`. Each entry may be either the module namespace\n// (its `default` export is unwrapped) or the config object itself.\nexport function createConfigRepository(\n modules: Record<string, any> = {},\n): Repository {\n const items: Record<string, any> = {};\n\n for (const [key, mod] of Object.entries(modules)) {\n items[key] = unwrap(mod);\n }\n\n return new Repository(items);\n}\n\n// Reads every config module in an app's `app/config` directory into a\n// Repository. The file's basename is the top-level key: `app/config/mail.ts`\n// populates `mail.*`. A missing directory yields an empty Repository so apps\n// that declare no config still boot.\nexport async function loadConfigFrom(\n directory: string,\n repository = new Repository(),\n): Promise<Repository> {\n let entries: string[] = [];\n\n try {\n entries = await readdir(directory);\n } catch (err) {\n return repository;\n }\n\n const files = entries\n .filter((entry) => {\n const { ext, name } = parse(entry);\n return CONFIG_EXTENSIONS.includes(ext) && !name.startsWith(\".\");\n })\n .sort();\n\n for (const file of files) {\n const { name } = parse(file);\n const mod = await import(join(directory, file));\n repository.set(name, unwrap(mod));\n }\n\n return repository;\n}\n\nfunction unwrap(mod: any) {\n if (mod && typeof mod === \"object\" && \"default\" in mod) {\n return mod.default;\n }\n return mod;\n}\n"
7
7
  ],
8
8
  "mappings": ";2RAgCO,CAAe,JAAQ,EAOrB,OAMD,AAAI,EAAkB,QAmBrB,OAAS,EAKX,CACH,GAAI,CAAC,KAAK,MACR,MAAU,MACR,YAAY,KAAK,0FACnB,EAGF,GAAI,CACF,OAAO,EAAI,IAAuB,EAClC,MAAO,EAAO,CACd,MAAU,MACR,qBAAqB,KAAK,6DACxB,+FACA,6CAA6C,KAAK,kDAEpD,CAAE,OAAM,CACV,SAoBG,KAAuB,CAAoB,EAA0B,CAC1E,IAAM,EAAW,IAAI,KACrB,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAS,EACjD,GAAI,IAAU,OAAW,EAAS,GAAO,EAE3C,OAAO,EAEX,CChHA,kBAAS,oBACT,eAAS,WAAM,aAIf,IAAM,EAAoB,CAAC,MAAO,OAAQ,MAAO,OAAQ,MAAM,EAMxD,SAAS,CAAsB,CACpC,EAA+B,CAAC,EACpB,CACZ,IAAM,EAA6B,CAAC,EAEpC,QAAY,EAAK,KAAQ,OAAO,QAAQ,CAAO,EAC7C,EAAM,GAAO,EAAO,CAAG,EAGzB,OAAO,IAAI,EAAW,CAAK,EAO7B,eAAsB,CAAc,CAClC,EACA,EAAa,IAAI,EACI,CACrB,IAAI,EAAoB,CAAC,EAEzB,GAAI,CACF,EAAU,MAAM,EAAQ,CAAS,EACjC,MAAO,EAAK,CACZ,OAAO,EAGT,IAAM,EAAQ,EACX,OAAO,CAAC,IAAU,CACjB,IAAQ,MAAK,QAAS,EAAM,CAAK,EACjC,OAAO,EAAkB,SAAS,CAAG,GAAK,CAAC,EAAK,WAAW,GAAG,EAC/D,EACA,KAAK,EAER,QAAW,KAAQ,EAAO,CACxB,IAAQ,QAAS,EAAM,CAAI,EACrB,EAAM,MAAa,SAAK,EAAW,CAAI,GAC7C,EAAW,IAAI,EAAM,EAAO,CAAG,CAAC,EAGlC,OAAO,EAGT,SAAS,CAAM,CAAC,EAAU,CACxB,GAAI,GAAO,OAAO,IAAQ,UAAY,YAAa,EACjD,OAAO,EAAI,QAEb,OAAO",
9
- "debugId": "A054E61D85B8190564756E2164756E21",
9
+ "debugId": "60A2171FA8A6714064756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{fa as B,ga as D}from"../chunk-weyv3zrt.js";import"../chunk-qsbtqh47.js";import"../chunk-s0xwqcrf.js";import{Aa as J}from"../chunk-9983zmhx.js";import"../chunk-9f2ps5v2.js";import"../chunk-egwz89ze.js";function N(){return{name:"gemi-custom-request",enforce:"pre",async transform(G,H){let j=H.split("?",1)[0];if(j.includes("/node_modules/")||!B.test(j))return null;return{code:await D(G),map:null}}}}export{N as gemiRequestPlugin,J as gemiIslandPlugin};
2
+ import{ga as B,ha as D}from"../chunk-r94gpbjv.js";import"../chunk-gcxk8j84.js";import"../chunk-dkmf4eg1.js";import{Ba as J}from"../chunk-zzgzz4hb.js";import"../chunk-22jm6sn1.js";import"../chunk-wgre66wq.js";function N(){return{name:"gemi-custom-request",enforce:"pre",async transform(G,H){let j=H.split("?",1)[0];if(j.includes("/node_modules/")||!B.test(j))return null;return{code:await D(G),map:null}}}}export{N as gemiRequestPlugin,J as gemiIslandPlugin};
3
3
 
4
- //# debugId=C11E8611E15123D864756E2164756E21
4
+ //# debugId=CE19A4044ADA908764756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import type { Plugin } from \"vite\";\nimport {\n CUSTOM_REQUEST_FILTER,\n customRequestParser,\n} from \"../bun/customRequestParser\";\n\n/**\n * The request-param rewrite, as a Vite plugin, for running an app's routes\n * under vitest.\n *\n * gemi calls a route handler and a controller method with no arguments, and a\n * handler written `async (req: HttpRequest<…>) => …` only gets its request\n * because the build rewrites it to `async (req = new HttpRequest()) => …`, which\n * reads the current request from the request context. The app's build and dev\n * server get that rewrite from `gemi/bun/plugin`. Vitest loads modules through\n * Vite instead, even under `bun --bun vitest`, so without this plugin a route\n * dispatched with `App.fetch` in a test sees `req === undefined`.\n *\n * Same transform, same files (`/http/controllers/` and `/http/routes/`) as the\n * Bun plugin. `enforce: \"pre\"` so it sees the TypeScript annotations before\n * Vite strips them.\n *\n * ```ts\n * // vitest.config.ts\n * import { defineConfig } from \"vitest/config\";\n * import { gemiRequestPlugin } from \"gemi/vitest\";\n *\n * export default defineConfig({ plugins: [gemiRequestPlugin()] });\n * ```\n */\nexport function gemiRequestPlugin(): Plugin {\n return {\n name: \"gemi-custom-request\",\n enforce: \"pre\",\n async transform(code, id) {\n const path = id.split(\"?\", 1)[0];\n if (path.includes(\"/node_modules/\") || !CUSTOM_REQUEST_FILTER.test(path)) {\n return null;\n }\n return { code: await customRequestParser(code), map: null };\n },\n };\n}\n\n/**\n * gemi's island transform, for an app's `vitest.config.ts`: with it, a test\n * that renders a static view through `App.fetch` sees each\n * `island(() => import(\"./Counter\"))` with the same module key as the build,\n * and a hydrated view renders the component in place instead of lazily.\n *\n * Without it islands still render (the component is loaded with the\n * `import()`), but their keys are unknown.\n *\n * ```ts\n * // vitest.config.ts\n * import { defineConfig } from \"vitest/config\";\n * import { gemiIslandPlugin, gemiRequestPlugin } from \"gemi/vitest\";\n *\n * export default defineConfig({ plugins: [gemiRequestPlugin(), gemiIslandPlugin()] });\n * ```\n */\nexport { gemiIslandPlugin } from \"../vite/islandPlugin\";\n"
6
6
  ],
7
7
  "mappings": ";yOA8BO,IAAS,JAAiB,HAAW,JAC1C,CAAO,CACL,KAAM,sBACN,QAAS,WACH,UAAS,CAAC,EAAM,EAAI,CACxB,IAAM,EAAO,EAAG,MAAM,IAAK,CAAC,EAAE,GAC9B,GAAI,EAAK,SAAS,gBAAgB,GAAK,CAAC,EAAsB,KAAK,CAAI,EACrE,OAAO,KAET,MAAO,CAAE,KAAM,MAAM,EAAoB,CAAI,EAAG,IAAK,IAAK,EAE9D",
8
- "debugId": "C11E8611E15123D864756E2164756E21",
8
+ "debugId": "CE19A4044ADA908764756E2164756E21",
9
9
  "names": []
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemi",
3
- "version": "0.160.1",
3
+ "version": "0.161.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "Enes Tufekci <enes@gemijs.dev>",
@@ -1,24 +0,0 @@
1
- // @bun
2
- import{X as k,Y as xJ,Z as KJ}from"./chunk-mn9v157z.js";import{oa as M,sa as F,ta as zJ}from"./chunk-a22h5cby.js";import"./chunk-kk18xqgc.js";import{Dg as VJ,Eg as OJ,Fg as UJ,ie as t,ug as jJ,vg as B}from"./chunk-dvwfhc5n.js";import"./chunk-7bc9ypbk.js";import"./chunk-3d8jxky6.js";import{Kh as i,Lh as a,Oh as r}from"./chunk-0b8m1f07.js";import{Qi as GJ}from"./chunk-w0rfypzx.js";import"./chunk-bzcfw8qd.js";import"./chunk-ryq2ezgt.js";import"./chunk-p9syxzxh.js";import"./chunk-8tyw6faf.js";import"./chunk-szdbsmq7.js";import"./chunk-tsbxdz4h.js";import"./chunk-5c6dfy75.js";import"./chunk-j144nwvh.js";import"./chunk-m73mjzeh.js";import"./chunk-4vqnv41y.js";import"./chunk-0qernzn1.js";import"./chunk-xp7x27n8.js";import"./chunk-g71ppv6x.js";import{gl as $J}from"./chunk-9f2ps5v2.js";import"./chunk-4670xxae.js";import{ul as YJ}from"./chunk-qbsk0jr8.js";import{wl as R}from"./chunk-m4pkbndk.js";import"./chunk-egwz89ze.js";import{createHash as H2}from"crypto";import{join as v,resolve as LJ,sep as CJ}from"path";import{Duplex as wJ}from"stream";import{constants as P,createBrotliCompress as kJ,createGzip as vJ}from"zlib";var EJ=["br","gzip"],gJ=1024,yJ=5,uJ=19,fJ=6;function mJ(J){if(J===void 0)return 1;if(!/^\d+(\.\d{0,3})?$/.test(J.trim()))return 1;let $=Number(J.trim());return Number.isFinite($)?Math.min($,1):1}function hJ(J){if(J===null||J===void 0)return null;let $=new Map;for(let Z of J.split(",")){let[X,...Q]=Z.split(";"),j=X.trim().toLowerCase();if(j==="")continue;let H=1;for(let Y of Q){let V=Y.indexOf("=");if(V===-1)continue;if(Y.slice(0,V).trim().toLowerCase()==="q"){H=mJ(Y.slice(V+1));break}}$.set(j,H)}return $}function b(J,$=EJ){let Z=hJ(J);if(!Z)return null;let X=Z.get("*"),Q=null,j=0;for(let H of $){let Y=Z.get(H)??X??0;if(Y>j)Q=H,j=Y}return Q}function pJ(J,$){if(!J)return!1;return J.split(",").some((Z)=>Z.trim().toLowerCase().split("=")[0].trim()===$)}function cJ(J,$){if(J==="HEAD")return!1;if($.status<200||$.status===204||$.status===206||$.status===304)return!1;if($.headers.has("Content-Range"))return!1;let Z=$.headers.get("Content-Type");if(!Z||!/^\s*text\/html\s*(;|$)/i.test(Z))return!1;if(!$.body)return!1;let X=$.headers.get("Content-Encoding");if(X&&X.trim().toLowerCase()!=="identity")return!1;if(pJ($.headers.get("Cache-Control"),"no-transform"))return!1;let Q=$.headers.get("Content-Length");if(Q!==null&&Number(Q)<gJ)return!1;return!0}function dJ(J){let $=J==="br"?kJ({params:{[P.BROTLI_PARAM_QUALITY]:yJ,[P.BROTLI_PARAM_LGWIN]:uJ},flush:P.BROTLI_OPERATION_FLUSH}):vJ({level:fJ,flush:P.Z_SYNC_FLUSH});return wJ.toWeb($)}function lJ(J){let $=J.get("Vary");if(!$){J.set("Vary","Accept-Encoding");return}let Z=$.split(",").map((X)=>X.trim().toLowerCase());if(Z.includes("*")||Z.includes("accept-encoding"))return;J.append("Vary","Accept-Encoding")}function d(J,$){if(!cJ(J.method,$))return $;let Z=new Headers($.headers);lJ(Z);let X=b(J.headers.get("Accept-Encoding"));if(!X)return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z});let Q;try{Q=dJ(X)}catch{return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}return Z.set("Content-Encoding",X),Z.delete("Content-Length"),new Response($.body.pipeThrough(Q),{status:$.status,statusText:$.statusText,headers:Z})}import{readdir as sJ,stat as s}from"fs/promises";import{join as eJ}from"path";import{mkdir as L2,readFile as oJ,stat as C2,writeFile as F2}from"fs/promises";import{dirname as _2,join as nJ}from"path";import{promisify as l}from"util";import{brotliCompress as iJ,constants as P2,gzip as aJ}from"zlib";var rJ=".vite/static-assets.json";var o={br:".br",gzip:".gz"},tJ=["br","gzip"],A2=l(iJ),B2=l(aJ);async function n(J){let $;try{$=await oJ(nJ(J,rJ),"utf8")}catch{return null}let Z;try{Z=JSON.parse($)?.files}catch{return null}if(!Z||typeof Z!=="object")return null;let X={files:{}};for(let[Q,j]of Object.entries(Z)){if(!Array.isArray(j))continue;X.files[Q]=tJ.filter((H)=>j.includes(H))}return X}function S(J){let $=J.toString(),Z=new Bun.CryptoHasher("sha1");return Z.update($),Z.digest("hex")}async function e(J){let $=new Set;async function Z(X,Q){let j;try{j=await sJ(X,{withFileTypes:!0})}catch{return}for(let H of j){if(H.name.startsWith("."))continue;if(Q&&H.name==="assets")continue;let Y=eJ(X,H.name),V=H.isDirectory(),O=H.isFile();if(H.isSymbolicLink())try{let K=await s(Y);V=K.isDirectory(),O=K.isFile()}catch{continue}if(O)$.add(Y);else if(V&&!H.isSymbolicLink())await Z(Y,!1)}}return await Z(J,!0),$}var J2="public, max-age=31536000, must-revalidate",$2="public, max-age=31536000, immutable";async function Z2(J,$,Z){if(Z.length===0||J.headers.has("Range"))return null;let X=b(J.headers.get("Accept-Encoding"),Z);if(!X)return null;let Q=$+o[X];try{let j=await s(Q);return j.isFile()?{encoding:X,path:Q,size:j.size}:null}catch{return null}}async function JJ(J,$,Z={}){let X=Bun.file($),Q=Z.encodings??[],j={"Content-Type":X.type||"application/octet-stream","Cache-Control":Z.immutable?$2:J2,"Accept-Ranges":"bytes"};if(Q.length>0)j.Vary="Accept-Encoding";let H=await Z2(J,$,Q);if(H){let O=Bun.file(H.path);return new Response(O.stream(),{headers:{...j,"Content-Encoding":H.encoding,"Content-Length":String(H.size),ETag:`${S(O.lastModified)}-${H.encoding}`}})}let Y=X.size;j.ETag=S(X.lastModified);let V=i(J.headers.get("Range"));if(V){let O=a(V,Y);if(!O)return t(Y);return new Response(X.slice(O.start,O.end+1).stream(),{status:206,headers:{...j,"Content-Range":r(O.start,O.end,Y),"Content-Length":String(O.length)}})}return new Response(X.stream(),{headers:{...j,"Content-Length":String(Y)}})}import{stat as G2}from"fs/promises";var A="app/client.tsx";function ZJ(J,$=M){let Z=J[A]?.file;if(!Z)return;return{module:F(Z,$),preload:C(J,A,$)}}function C(J,$,Z=M){let X=[],Q=new Set,j=(H)=>{if(Q.has(H))return;Q.add(H);let Y=J[H];if(!Y?.file)return;X.push(F(Y.file,Z));for(let V of Y.imports??[])j(V)};return j($),X}function X2(J,$,Z=M){let X=new Set(C(J,$,Z)),Q=[],j=new Set,H=(V)=>{if(j.has(V))return;j.add(V);let O=J[V];if(!O)return;for(let K of O.dynamicImports??[])if(!/(^|\/)node_modules\//.test(K)&&!Q.includes(K))Q.push(K);for(let K of O.imports??[])H(K)};H($);let Y=[];for(let V of Q)for(let O of C(J,V,Z))if(!X.has(O))X.add(O),Y.push(O);return Y}function XJ(J,$){let Z=[],X=new Set,Q=new Set,j=(H)=>{if(Q.has(H))return;Q.add(H);let Y=J[H];if(!Y)return;for(let V of Y.imports??[])j(V);for(let V of Y.css??[])if(!X.has(V))X.add(V),Z.push(V)};return j($),Z}function QJ(J,$=M){let Z=new Map;return(X)=>{if(!Z.has(X)){let Q=`${X}${$J}`,j=J[Q]?.file;Z.set(X,j?{src:F(j,$),preload:C(J,Q,$),dynamicPreload:X2(J,Q,$)}:void 0)}return Z.get(X)}}function WJ(J,$=30000){let Z=JSON.stringify("gemi:chunk-reload"),X=JSON.stringify(`Failed to fetch dynamically imported module: ${J}`);return`var r=!1;try{var s=window.sessionStorage,m=JSON.parse(s.getItem(${Z})||"null");var d=m?Date.now()-m.at:NaN;if(navigator.onLine!==!1&&!(d>=0&&d<${$})){s.setItem(${Z},JSON.stringify({url:window.location.href,at:Date.now()}));r=!0}}catch(e){}if(r)window.location.reload();else throw new Error(${X});export {}`}var Q2=new RegExp(`^${jJ}/.+\\.m?js$`);function W2(J){return Q2.test(J)}function HJ(J){if(W2(J))return new Response(WJ(J),{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store"}});if(B(J))return new Response("Not found",{status:404});return}var j2=`<!DOCTYPE html>
3
- <html lang="en">
4
- <head>
5
- <meta charset="UTF-8" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Internal Server Error</title>
8
- <style>
9
- body { font-family: system-ui, sans-serif; margin: 0; min-height: 100vh; display: grid; place-items: center; }
10
- main { text-align: center; padding: 16px; }
11
- h1 { font-size: 1.5rem; margin: 0 0 0.5rem; }
12
- p { margin: 0; opacity: 0.7; }
13
- </style>
14
- </head>
15
- <body>
16
- <main>
17
- <h1>Something went wrong</h1>
18
- <p>Please try again later.</p>
19
- </main>
20
- </body>
21
- </html>`;function w(J,$,Z){if(!Z)console.error(J);else try{Z(J instanceof Error?J:Error(String(J),{cause:J}))}catch(X){console.error(J),console.error(X)}if(R($))return new Response(JSON.stringify({error:GJ("server_error","Internal Server Error",500)}),{status:500,headers:{"Content-Type":"application/json"}});return new Response(j2,{status:500,headers:{"Content-Type":"text/html; charset=utf-8"}})}var D=YJ(),Y2=v(D,"app"),L=v(D,"dist"),I=v(L,"client");function V2(J){let $;try{$=decodeURIComponent(J)}catch{return null}let Z=LJ(I,"."+$.replace("/assets/assets","/assets"));return Z.startsWith(I+CJ)?Z:null}async function O2(J){try{return(await G2(J)).isFile()}catch{return!1}}async function G3(J,$){let Z=await import(`${L}/client/.vite/manifest.json`),X=await import(`${L}/server/.vite/manifest.json`),Q=await zJ(`${L}/client`);process.env.ROOT_DIR=D,process.env.APP_DIR=Y2,process.env.DIST_DIR=L;let j={},H={},Y={},V={},O={},K=(W,G)=>`"${W}": () => import("${G}")`,E=[];for(let W of["404",...J.getFlatComponentTree.call(J)]){let G=X[`app/views/${W}.tsx`];if(!G?.file){console.log(`Server file not found for ${W}`),console.log(G);let x=Object.keys(X),N=`app/views/${W}.tsx`;console.log(`${N} not found in server manifest`),console.log(x)}let U=await import(`${process.env.DIST_DIR}/server/${G?.file}`);j[W]=U.default,H[W]=U.OpenGraph,Y[W]=U;let z=Z[`app/views/${W}.tsx`];if(z?.css&&z?.css.length>0)V[W]=z?.css;if(z)E.push(K(W,F(z?.file,Q))),O[W]=C(Z,`app/views/${W}.tsx`,Q)}let FJ=`{${E.join(",")}}`,g=ZJ(Z,Q);if(!g)console.error(`Client manifest has no "${A}" entry \u2014 dist/client is incomplete, so documents will render but never hydrate.`);let IJ=Z["app/client.tsx"]?.css??[],y=(await Promise.all(IJ.map((W)=>Bun.file(`${L}/client/${W}`).text()))).join(`
22
- `),_J=QJ(Z,Q),MJ=H2("sha256").update(await Bun.file(`${L}/client/.vite/manifest.json`).text()).digest("base64url").slice(0,12),u=new Map,NJ=(W)=>{let G=u.get(W);if(!G)G=Bun.file(`${L}/client/${W}`).text(),u.set(W,G);return G},PJ=async(W,G)=>{let U=new Set;for(let x of G?[G,...W]:W)for(let N of XJ(Z,`app/views/${x}.tsx`))U.add(N);let z=await Promise.all([...U].map(async(x)=>({id:x,content:await NJ(x)})));return k(G?z:[{content:y},...z])},AJ=await e(I),f=new Map;for(let[W,G]of Object.entries((await n(I))?.files??{})){let U=LJ(I,W);if(U.startsWith(I+CJ))f.set(U,{immutable:!0,encodings:G})}async function BJ(W){let{pathname:G}=new URL(W.url);if(R(G))return await T(W,G);let U=V2(G);if(B(G)||G.startsWith("/.well-known")||U!==null&&AJ.has(U)){if(!U||!await O2(U))return HJ(G)??await T(W,G);try{return await JJ(W,U,f.get(U))}catch(x){return J.onException?.(x),new Response("Not found",{status:404})}}return await T(W,G)}async function T(W,G){let U=J.fetch.bind(J);try{let z=await U(W);if(z instanceof Response)return z;else{let x=[];return x.push({content:y}),await z({getStyles:async(TJ,h)=>{let p=TJ??["404"];if(h?.static)return PJ(p,h.layout);for(let qJ of p){let bJ=Z[`app/views/${qJ}.tsx`];for(let c of bJ?.css??[]){let SJ=Bun.file(`${process.env.DIST_DIR}/client/${c}`);x.push({id:c,content:await SJ.text()})}}return k(x)},clientEntry:g,modulePreloadManifest:O,loaders:FJ,viewImportMap:j,viewModules:Y,ogMap:H,cssManifest:V,assetBase:Q,resolveIsland:_J,buildId:MJ})}}catch(z){return w(z,G,J.onException)}}let RJ=(process.env.GEMI_COMPRESSION??"auto").toLowerCase()!=="off",m=VJ(process.env.GEMI_TRUST_PROXY),DJ=UJ(process.env),_=J.sockets();if(_&&m.kind==="none"&&!DJ)console.warn("[gemi] Broadcast sockets: GEMI_TRUST_PROXY is not set, so a socket's address is its TCP peer. Behind a proxy or load balancer every client shares the proxy's address, and broadcast.maxConnectionsPerIp caps the whole app per process. Set GEMI_TRUST_PROXY (see forwardedFor) or raise that limit.");let q=Bun.serve({maxRequestBodySize:10737418240,fetch:async(W,G)=>{if(OJ(W.headers,G.requestIP(W)?.address??null,m),J.applyTrustedClientIp(W),_?.matches(W))return _.upgrade(W,G);let U=await $(W,(z)=>J.withGlobalMiddleware(z,BJ,(x)=>w(x,new URL(z.url).pathname,J.onException)));return RJ?d(W,U):U},idleTimeout:KJ(),port:process.env.PORT||5173,websocket:_?.websocket});return await _?.start(q),xJ({port:q.port,rootDir:D}),q}export{G3 as httpProd};
23
-
24
- //# debugId=AEE0BC591476AB6D64756E2164756E21
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{de as o}from"./chunk-day21sfa.js";import{ee as i}from"./chunk-yzw2tvqq.js";import{Zj as t}from"./chunk-5c6dfy75.js";import{Zk as r}from"./chunk-0qernzn1.js";class n extends i{register(){this.app.singleton(r,()=>new r(t(o(),this.app.config.get("translation",{}))))}}
3
- export{n as ab};
4
-
5
- //# debugId=F815EE904E2BE54164756E2164756E21
@@ -1,4 +0,0 @@
1
- // @bun
2
- import{wl as J}from"./chunk-m4pkbndk.js";class L{kernel;onException;constructor(f){this.kernel=new f.kernel,this.kernel.boot.call(this.kernel),this.onException=f.onException??((A)=>{console.error("Unhandled exception in App:",A)})}async waitForBoot(){await this.kernel.waitForBoot()}getComponentTree(){return this.kernel.viewRoutes().componentTree}getFlatComponentTree(){let f=new Set;for(let A of this.kernel.domains().viewDispatchers())for(let C of A.flatComponentTree)f.add(C);return Array.from(f)}devAllowedHosts(){let f=this.kernel.domains();if(!f.resolver)return[];return f.acceptsCustomDomains?!0:[`.${f.resolver.root}`]}sockets(){return this.kernel.sockets.call(this.kernel)}applyTrustedClientIp(f){this.kernel.domains().applyClientIp(f)}getRouteManifest(){return this.kernel.viewRoutes().routeManifest}globallyGated=new WeakMap;async withGlobalMiddleware(f,A,C){let z;try{z=await this.kernel.run.call(this.kernel,()=>this.kernel.globalMiddleware(f))}catch(F){return await C(F)}if(z.refusal)return z.refusal;return this.globallyGated.set(f,z.carried),z.apply(await A(f))}async fetch(f){let A=new URL(f.url);return this.kernel.run.call(this.kernel,async()=>{this.applyTrustedClientIp(f);let C=this.globallyGated.has(f),z=C?null:await this.kernel.globalMiddleware(f),F=C?this.globallyGated.get(f):z.carried;if(z?.refusal)return z.refusal;let H=this.kernel.mcpHttp();if(H){let B=await H.handle(f);if(B)return z?z.apply(B):B}let I=this.kernel.domains(),D=await I.ask(f)??await I.route(f);if(D instanceof Response)return z?z.apply(D):D;if(!D){let B=new Response("Unknown host",{status:404});return z?z.apply(B):B}let G=J(A.pathname)?await D.api.handleApiRequest(f,F):await D.view.handleViewRequest(f,F);if(!z)return G;if(typeof G==="function"){let B=G;return async(...M)=>z.apply(await B(...M))}return z.apply(G)})}dispatchJob(f,A){return this.kernel.run.bind(this.kernel)(()=>{return this.kernel.queue().dispatchJob(f,A)})}shutdown(f){return this.kernel.shutdown(f)}destroy(){this.kernel.destroy()}clone(){return Object.assign(Object.create(Object.getPrototypeOf(this)),this)}}export{L as Da};
3
-
4
- //# debugId=C7FEC65E971F41B764756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../app/App.ts"],
4
- "sourcesContent": [
5
- "import type { Kernel } from \"../kernel\";\nimport type { CarriedContext } from \"../http/requestContext\";\nimport { isApiPath } from \"../services/router/apiPath\";\nimport type { SocketHub } from \"../services/broadcast/SocketHub\";\n\n/** What the servers use of the broadcast `SocketHub`. */\nexport type SocketTransport = Pick<\n SocketHub,\n \"matches\" | \"upgrade\" | \"websocket\" | \"socketOptions\" | \"start\" | \"shutdown\"\n>;\n\ninterface AppParams {\n kernel: new () => Kernel;\n onException?: (error: Error) => void;\n}\n\nexport class App {\n private kernel: Kernel;\n public onException?: (error: Error) => void;\n\n constructor(params: AppParams) {\n this.kernel = new params.kernel();\n this.kernel.boot.call(this.kernel);\n this.onException =\n params.onException ??\n ((error: Error) => {\n console.error(\"Unhandled exception in App:\", error);\n });\n }\n\n // Every service this class touches is resolved through a `this.kernel.*`\n // accessor rather than by importing the service class and calling `app()`\n // here. That is deliberate: the built bin (`dist/bin/gemi.js`) bundles its own\n // copy of gemi, while the app's Kernel is loaded from source and resolves\n // `gemi/*` to the source modules — so the two copies have *different*\n // `kernelContext` AsyncLocalStorage instances and different `Application`\n // class objects. A method call on the Kernel executes in the app's copy and\n // reads the app's container; a resolution attempted here would not. Service\n // *tokens* still cross the boundary safely (they are plain strings), which is\n // why `kernel.resolve()` works from either side.\n public async waitForBoot() {\n await this.kernel.waitForBoot();\n }\n\n public getComponentTree() {\n return this.kernel.viewRoutes().componentTree;\n }\n\n // Every host group's views, not just the root's: the servers load these\n // modules up front, and a view only an `admin.` group routes to still has\n // to be among them.\n public getFlatComponentTree() {\n const views = new Set<string>();\n for (const dispatcher of this.kernel.domains().viewDispatchers()) {\n for (const view of dispatcher.flatComponentTree) {\n views.add(view);\n }\n }\n return Array.from(views);\n }\n\n /**\n * The hosts the dev server's Vite may answer: the `route.domains` root and\n * its subdomains, or any host when custom domains are on, since those are\n * only known to the app's resolver.\n */\n public devAllowedHosts(): true | string[] {\n const domains = this.kernel.domains();\n if (!domains.resolver) {\n return [];\n }\n return domains.acceptsCustomDomains ? true : [`.${domains.resolver.root}`];\n }\n\n /**\n * The broadcast WebSocket endpoint the servers wire into `Bun.serve`, or\n * `null` when the app has no `route.channels`. Typed structurally: the hub\n * belongs to the app's copy of gemi (see the note above).\n */\n public sockets(): SocketTransport | null {\n return this.kernel.sockets.call(this.kernel);\n }\n\n /**\n * Applies `route.domains.trustProxy.clientIpHeader`, or\n * `GEMI_CLIENT_IP_HEADER` for an app without `route.domains`: on a request\n * that carries the proxy's secret, the address that header names becomes\n * the one in `X-Forwarded-For`. The servers call it right after settling\n * `X-Forwarded-For` (`GEMI_TRUST_PROXY`) and before anything reads it —\n * the socket upgrade and the global middleware included. `fetch` calls it\n * too, for a caller that is not one of the servers. Idempotent.\n */\n public applyTrustedClientIp(req: Request) {\n this.kernel.domains().applyClientIp(req);\n }\n\n public getRouteManifest() {\n return this.kernel.viewRoutes().routeManifest;\n }\n\n // Requests `withGlobalMiddleware` already ran the global middleware for, so\n // `fetch` inside it does not run the list a second time, and can still hand\n // the route what the list carried. Keyed by the Request object: the servers\n // hand `fetch` the same one they gated.\n private globallyGated = new WeakMap<Request, CarriedContext | null>();\n\n /**\n * Runs the `global` middleware list, then `next` — what the servers put in\n * front of everything they serve, so the list covers static files, which\n * never reach `fetch`, as well as routes. A refusal is answered without\n * calling `next`. A global middleware that throws something other than a\n * break is answered by `onError` rather than by `next`, since a gate that\n * failed must not let a static file through.\n */\n public async withGlobalMiddleware(\n req: Request,\n next: (req: Request) => Promise<Response>,\n onError: (err: unknown) => Response | Promise<Response>,\n ): Promise<Response> {\n let outcome: Awaited<ReturnType<Kernel[\"globalMiddleware\"]>>;\n try {\n outcome = await this.kernel.run.call(this.kernel, () => this.kernel.globalMiddleware(req));\n } catch (err) {\n return await onError(err);\n }\n if (outcome.refusal) {\n return outcome.refusal;\n }\n this.globallyGated.set(req, outcome.carried);\n return outcome.apply(await next(req));\n }\n\n public async fetch(req: Request): Promise<Response> {\n const url = new URL(req.url);\n return this.kernel.run.call(this.kernel, async () => {\n // Repeated from the servers, for a caller that is not one of them.\n this.applyTrustedClientIp(req);\n // Run here too for a caller that is not one of the servers, a test or an\n // app's own `Bun.serve`, so the list is not skipped by calling `fetch`.\n const gated = this.globallyGated.has(req);\n const outcome = gated ? null : await this.kernel.globalMiddleware(req);\n const carried = gated ? this.globallyGated.get(req) : outcome.carried;\n if (outcome?.refusal) {\n return outcome.refusal;\n }\n // The MCP endpoint, and its OAuth endpoints, on the host it is\n // configured for. Ahead of routing, so no route can shadow it, and after\n // the global middleware, which covers it as it covers everything.\n const mcp = this.kernel.mcpHttp();\n if (mcp) {\n const answered = await mcp.handle(req);\n if (answered) {\n return outcome ? outcome.apply(answered) : answered;\n }\n }\n const domains = this.kernel.domains();\n const dispatchers = (await domains.ask(req)) ?? (await domains.route(req));\n if (dispatchers instanceof Response) {\n return outcome ? outcome.apply(dispatchers) : dispatchers;\n }\n if (!dispatchers) {\n const unknown = new Response(\"Unknown host\", { status: 404 });\n return outcome ? outcome.apply(unknown) : unknown;\n }\n const result = isApiPath(url.pathname)\n ? await dispatchers.api.handleApiRequest(req, carried)\n : await dispatchers.view.handleViewRequest(req, carried);\n if (!outcome) {\n return result;\n }\n // A document comes back as a render function the server calls with its\n // manifests, and the Response only exists once it has.\n if (typeof result === \"function\") {\n const render = result as (...args: any[]) => Promise<Response>;\n return (async (...args: any[]) => outcome.apply(await render(...args))) as any;\n }\n return outcome.apply(result);\n });\n }\n\n public dispatchJob(jobName: string, args: string) {\n const kernelRun = this.kernel.run.bind(this.kernel);\n return kernelRun(() => {\n return this.kernel.queue().dispatchJob(jobName, args);\n });\n }\n\n /** Every provider's `shutdown()`; see `Kernel.shutdown`. */\n public shutdown(options?: { timeoutMs?: number }) {\n return this.kernel.shutdown(options);\n }\n\n public destroy() {\n this.kernel.destroy();\n }\n\n public clone() {\n return Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n }\n}\n\nexport type FetchHandler = InstanceType<typeof App>[\"fetch\"];\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "C7FEC65E971F41B764756E2164756E21",
9
- "names": []
10
- }
@@ -1,58 +0,0 @@
1
- // @bun
2
- import{W as S,Y as h,Z as u}from"./chunk-mn9v157z.js";import{ma as q,na as w}from"./chunk-m8a80sgn.js";import"./chunk-a22h5cby.js";import"./chunk-epvpmakp.js";import"./chunk-r3v2cnrj.js";import"./chunk-9983zmhx.js";import"./chunk-kk18xqgc.js";import"./chunk-982x8jps.js";import{Qi as N}from"./chunk-w0rfypzx.js";import{gl as C}from"./chunk-9f2ps5v2.js";import{wl as y}from"./chunk-m4pkbndk.js";import"./chunk-egwz89ze.js";import{join as $J}from"path";import{createServer as zJ}from"vite";import{join as l}from"path";import{IncomingMessage as d,ServerResponse as p}from"http";import{Socket as i}from"net";function c(J){return J.replace(/\x1b\[[0-9;]*m/g,"").replace(/\[[0-9;]*m/g,"").replace(/\n\s*\n/g,`
3
- `).split(`
4
- `).map((W)=>W.trim()).filter((W)=>W.length>0).join(`
5
- `).trim()}function _(J){return`
6
- <!DOCTYPE html>
7
- <html lang="en">
8
- <head>
9
- <meta charset="UTF-8" />
10
- <meta
11
- name="viewport"
12
- content="width=device-width, initial-scale=1.0"
13
- />
14
-
15
- <title>Error</title>
16
- <style>
17
- body {
18
- font-family: Arial, sans-serif;
19
- padding: 20px;
20
- }
21
- h1 {
22
- color: red;
23
- }
24
- </style>
25
- </head>
26
- <body>
27
- <div id="overlay"></div>
28
- <script type="module" src="/refresh.js"></script>
29
- <script type="module" src="/@vite/client"></script>
30
- <script>
31
- ${c.toString()}
32
- const err = ${JSON.stringify(J,Object.getOwnPropertyNames(J),2)}
33
-
34
- window.addEventListener('load', () => {
35
- const container = document.getElementById('overlay')
36
- const ErrorOverlay = customElements.get('vite-error-overlay')
37
- if (ErrorOverlay) {
38
- const overlay = new ErrorOverlay({ ...err, message: cleanupTerminalText(err.message) });
39
- container.appendChild(overlay)
40
- }
41
- })
42
- </script>
43
- </body>
44
- </html>
45
- `}function n(J,W){let Z=new URL(W.url),$=new d(new i);$.url=Z.pathname+Z.search,$.method=W.method,$.headers=Object.fromEntries(W.headers);let z=new p($),Q=[];return new Promise((U)=>{z.write=(X)=>{if(X)Q.push(Buffer.from(X));return!0},z.end=(X)=>{if(X&&typeof X!=="function")Q.push(Buffer.from(X));let G=new Headers;for(let[j,L]of Object.entries(z.getHeaders())){if(L==null)continue;for(let K of Array.isArray(L)?L:[L])G.append(j,String(K))}return U(new Response(Q.length?Buffer.concat(Q):null,{status:z.statusCode,headers:G})),z},J.middlewares($,z,()=>U(null))})}function o(J,W,Z){let $=String(W),z=" ".repeat($.length),Q=" ".repeat(Math.max(0,Z-1))+"^";return`${$} | ${J}
46
- ${z} | ${Q}
47
- `}function I(J){if(J&&typeof J==="object"){let W=J.position;if(W&&typeof W==="object"&&typeof W.file==="string")return{message:typeof J.message==="string"?J.message:String(J),stack:"",frame:typeof W.lineText==="string"?o(W.lineText,W.line,W.column):void 0,loc:{file:W.file,line:W.line,column:W.column}};return{message:typeof J.message==="string"?J.message:String(J),stack:typeof J.stack==="string"?J.stack:""}}return{message:String(J),stack:""}}function O(J){let W=globalThis.__gemiVite;if(!W)return;W.ws.send({type:"error",err:I(J)}),globalThis.__gemiErrorActive=!0}function V(J){let W=J.environments.ssr;if(typeof W?.runner?.import!=="function")throw Error("gemi dev requires a runnable Vite SSR environment.");return W.runner}var T="/@gemi/dev-entry.js",a=`const report = (error) => console.error(error);
48
- await import("/refresh.js").catch(report);
49
- await import("/@vite/client").catch(report);
50
- await import("/app/client.tsx");
51
- `,s=`import RefreshRuntime from "/@react-refresh";
52
- RefreshRuntime.injectIntoGlobalHook(window);
53
- window.$RefreshReg$ = () => {};
54
- window.$RefreshSig$ = () => (type) => type;
55
- window.__vite_plugin_react_preamble_installed__ = true;
56
- `;function t(J){let{pathname:W}=new URL(J.url),Z=($)=>new Response($,{headers:{"Content-Type":"application/javascript"}});if(W===T)return Z(a);if(W.startsWith("/render-error.js"))return Z("window.render_error = true");if(W.startsWith("/refresh.js"))return Z(s);return null}function P(J,W,Z){let $=l(process.cwd(),"app");return async(z)=>{let{pathname:Q}=new URL(z.url),U=(G)=>{if(console.error(G),Z.ssrFixStacktrace?.(G),O(G),y(Q))return new Response(JSON.stringify({error:N("server_error",G?.message??String(G),500)}),{status:500,headers:{"Content-Type":"application/json"}});return globalThis.__gemiErrorPageServed=!0,new Response(_(I(G)),{status:500,headers:{"Content-Type":"text/html"}})},X=async(G)=>{let j=t(G);if(j)return j;try{let L=J.fetch.bind(J),K=await n(Z,G)??await L(G);if(K instanceof Response)return K;let A={},F={},D={},m=(Y,B)=>`"${Y}": () => import("${B}")`,b=[];for(let Y of["404",...J.getFlatComponentTree.call(J)]){if(Bun.env.NODE_ENV==="test")break;let B=`${process.env.APP_DIR}`,x=await V(Z).import(`${B}/views/${Y}.tsx`);A[Y]=x.default,F[Y]=x?.OpenGraph,D[Y]=x,b.push(m(Y,`/app/views/${Y}.tsx`))}let v=`{${b.join(",")}}`;return await K({getStyles:async(Y,B)=>await S($,Z,Y,B?.layout),resolveIsland:(Y)=>({src:`/${Y}${C}`,preload:[]}),buildId:"dev",bootstrapModules:[T],viewImportMap:A,viewModules:D,ogMap:F,loaders:v,cssManifest:{}})}catch(L){return U(L)}};return await W(z,(G)=>J.withGlobalMiddleware(G,X,U))}}function r(J){try{return Bun.listen({hostname:"0.0.0.0",port:J,socket:{data(){}}}).stop(!0),!0}catch(W){return W?.code!=="EADDRINUSE"}}function f(J,W=r){let Z=24678+(J-5173);if(Z>65471)Z=24678;for(let $=Z;$<Z+64;$++)if(W($))return $;throw Error(`Could not find a free port for Vite's HMR websocket: tried ${Z}-${Z+64-1}. Set one explicitly in gemi.config.ts as \`vite: { server: { ws: { port } } }\`.`)}import{createServer as e}from"http";var JJ=new Set(["vite-hmr","vite-ping"]);async function R(J){let W=e((Z,$)=>{$.writeHead(426,{"Content-Type":"text/plain"}),$.end("Upgrade Required")});return await new Promise((Z,$)=>{W.once("error",$),W.listen(J,"127.0.0.1",()=>{W.off("error",$),Z()})}),W}function k(J){if(!J||typeof J!=="object")return null;let Z=J.server?.address?.();if(Z&&typeof Z==="object"&&"port"in Z)return Number(Z.port)||null;return null}function E(J){if(J.headers.get("upgrade")?.toLowerCase()!=="websocket")return!1;return JJ.has(J.headers.get("sec-websocket-protocol")??"")}var WJ=(J)=>typeof J==="string"?J:new Uint8Array(J);async function g(J,W,Z){let $=new URL(J.url),z=J.headers.get("sec-websocket-protocol")??"vite-hmr",Q={host:J.headers.get("host")??$.host},U=J.headers.get("origin");if(U)Q.origin=U;let X=new WebSocket(`ws://127.0.0.1:${Z}${$.pathname}${$.search}`,{protocols:[z],headers:Q});X.binaryType="arraybuffer";let G={upstream:X,early:[]};if(X.onmessage=(K)=>{let A=WJ(K.data);if(G.browser)G.browser.send(A);else G.early.push(A)},X.onclose=(K)=>{G.browser?.close(ZJ(K.code),K.reason)},X.onerror=()=>{},!await new Promise((K)=>{X.addEventListener("open",()=>K(!0),{once:!0}),X.addEventListener("close",()=>K(!1),{once:!0})}))return new Response("Vite refused the HMR websocket",{status:403});if(!W.upgrade(J,{headers:{"Sec-WebSocket-Protocol":z},data:G}))return X.close(),new Response("WebSocket upgrade failed",{status:400});return}function ZJ(J){if(J===1000||J>=1001&&J<=1003||J>=1007&&J<=1014)return J;if(J>=3000&&J<=4999)return J;return 1000}var H={open(J){let W=J.data;for(let Z of W.early)J.send(Z);if(W.early=[],W.browser=J,W.upstream.readyState!==WebSocket.OPEN)J.close(1000)},message(J,W){if(J.data.upstream.readyState===WebSocket.OPEN)J.data.upstream.send(W)},close(J){let{upstream:W}=J.data;if(W.readyState<=WebSocket.OPEN)W.close()}};function GJ(J,W){let Z=W.websocket,$=(z)=>z.data?.gemiSocket===!0;return{...W.socketOptions(),maxPayloadLength:16777216,closeOnBackpressureLimit:!1,open:(z)=>$(z)?Z.open?.(z):J.open?.(z),message:(z,Q)=>$(z)?Z.message(z,Q):J.message(z,Q),close:(z,Q,U)=>$(z)?Z.close?.(z,Q,U):J.close?.(z,Q,U)}}var M=process.cwd(),QJ=$J(M,"app");if(!globalThis.__gemiErrorHooked)globalThis.__gemiErrorHooked=!0,process.on("unhandledRejection",(J)=>{console.error(J),O(J)}),process.on("uncaughtException",(J)=>{console.error(J),O(J)});async function TJ(J,W){let Z=Number(process.env.PORT)||5173,$=u(),z=Boolean(globalThis.__gemiVite),Q=globalThis.__gemiVite??=await zJ({configFile:!1,plugins:[w()],server:{middlewareMode:!0,port:Z,ws:{server:await R(f(Z))},allowedHosts:J.devAllowedHosts.call(J),watch:{ignored:(L)=>{let K=L.split(/[/\\]/).pop()??"";return K===".env"||K.startsWith(".env.")}}},appType:"custom",resolve:{dedupe:["react","react-dom"]},optimizeDeps:{include:["react","react-dom","react-dom/client"]},ssr:{external:[...q]}});process.env.ROOT_DIR=M,process.env.APP_DIR=QJ;let U=P(J,W,Q),X=k(Q.config?.server?.ws),G=J.sockets(),j=Bun.serve({port:Z,idleTimeout:$,fetch:(L,K)=>{if(X!==null&&E(L))return g(L,K,X);if(J.applyTrustedClientIp(L),G?.matches(L))return G.upgrade(L,K);return U(L)},websocket:G?GJ(H,G):H});if(await G?.start(j),z)V(Q).clearCache();if(z)if(globalThis.__gemiErrorActive&&globalThis.__gemiErrorPageServed)globalThis.__gemiErrorActive=!1,globalThis.__gemiErrorPageServed=!1,Q.ws.send({type:"full-reload"});else globalThis.__gemiErrorActive=!1,Q.ws.send({type:"custom",event:"http-reload"});else h({port:j.port,rootDir:M});return j}export{I as viteErrorPayload,TJ as httpDev};
57
-
58
- //# debugId=6B1A0AB807F7440164756E2164756E21