gemi 0.119.2 → 0.120.1

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 (234) hide show
  1. package/dist/ai/index.js +2 -2
  2. package/dist/ai/index.js.map +1 -1
  3. package/dist/app/index.js +2 -2
  4. package/dist/app/index.js.map +1 -1
  5. package/dist/bin/gemi.js +32 -5
  6. package/dist/bin/gemi.js.map +6 -5
  7. package/dist/bun/plugin.js +1 -1
  8. package/dist/bun/preload.js +1 -1
  9. package/dist/{chunk-x5m12vkw.js → chunk-0ejjgzwc.js} +2 -2
  10. package/dist/{chunk-x5m12vkw.js.map → chunk-0ejjgzwc.js.map} +1 -1
  11. package/dist/{chunk-7rffbkmg.js → chunk-0k02tza1.js} +1 -1
  12. package/dist/{chunk-14xk8kq0.js → chunk-0yj0s1pn.js} +2 -2
  13. package/dist/{chunk-14xk8kq0.js.map → chunk-0yj0s1pn.js.map} +1 -1
  14. package/dist/{chunk-6pqbsc5y.js → chunk-19dpzp4y.js} +3 -3
  15. package/dist/{chunk-6pqbsc5y.js.map → chunk-19dpzp4y.js.map} +1 -1
  16. package/dist/{chunk-3vt172y7.js → chunk-1wnnkde0.js} +3 -3
  17. package/dist/{chunk-3vt172y7.js.map → chunk-1wnnkde0.js.map} +1 -1
  18. package/dist/{chunk-ct1vwaw7.js → chunk-1xdrs2hx.js} +3 -3
  19. package/dist/{chunk-ct1vwaw7.js.map → chunk-1xdrs2hx.js.map} +1 -1
  20. package/dist/{chunk-79rtpahn.js → chunk-2c0s0561.js} +2 -2
  21. package/dist/{chunk-79rtpahn.js.map → chunk-2c0s0561.js.map} +1 -1
  22. package/dist/{chunk-nfq127pg.js → chunk-2n3pgfnb.js} +2 -2
  23. package/dist/{chunk-nfq127pg.js.map → chunk-2n3pgfnb.js.map} +1 -1
  24. package/dist/{chunk-s2h85rbf.js → chunk-32n8t8x6.js} +2 -2
  25. package/dist/{chunk-s2h85rbf.js.map → chunk-32n8t8x6.js.map} +1 -1
  26. package/dist/{chunk-6gfsjgra.js → chunk-3gsv1vv1.js} +2 -2
  27. package/dist/{chunk-6gfsjgra.js.map → chunk-3gsv1vv1.js.map} +1 -1
  28. package/dist/{chunk-862jeyz0.js → chunk-3wnghdsx.js} +2 -2
  29. package/dist/{chunk-862jeyz0.js.map → chunk-3wnghdsx.js.map} +1 -1
  30. package/dist/{chunk-yn4x9wxc.js → chunk-471htqmz.js} +2 -2
  31. package/dist/{chunk-yn4x9wxc.js.map → chunk-471htqmz.js.map} +1 -1
  32. package/dist/{chunk-w1zqg54r.js → chunk-48gmyaxc.js} +2 -2
  33. package/dist/{chunk-w1zqg54r.js.map → chunk-48gmyaxc.js.map} +1 -1
  34. package/dist/{chunk-299zx9dv.js → chunk-4acpw92g.js} +3 -3
  35. package/dist/{chunk-299zx9dv.js.map → chunk-4acpw92g.js.map} +1 -1
  36. package/dist/{chunk-9c5s06gc.js → chunk-4fx8p02c.js} +2 -2
  37. package/dist/{chunk-9c5s06gc.js.map → chunk-4fx8p02c.js.map} +1 -1
  38. package/dist/{chunk-xpz1bp50.js → chunk-51w5ktv2.js} +3 -3
  39. package/dist/{chunk-xpz1bp50.js.map → chunk-51w5ktv2.js.map} +1 -1
  40. package/dist/{chunk-9qkjkse0.js → chunk-5nj94s66.js} +4 -4
  41. package/dist/{chunk-9qkjkse0.js.map → chunk-5nj94s66.js.map} +1 -1
  42. package/dist/{chunk-j632p533.js → chunk-5tdxbwzg.js} +3 -3
  43. package/dist/{chunk-j632p533.js.map → chunk-5tdxbwzg.js.map} +1 -1
  44. package/dist/{chunk-zq1bhsdg.js → chunk-65beps2q.js} +3 -3
  45. package/dist/{chunk-zq1bhsdg.js.map → chunk-65beps2q.js.map} +1 -1
  46. package/dist/{chunk-xeh1mw1d.js → chunk-6yhpprzs.js} +3 -3
  47. package/dist/{chunk-xeh1mw1d.js.map → chunk-6yhpprzs.js.map} +1 -1
  48. package/dist/{chunk-620yeafr.js → chunk-7ftj43vp.js} +2 -2
  49. package/dist/{chunk-620yeafr.js.map → chunk-7ftj43vp.js.map} +1 -1
  50. package/dist/{chunk-4kj4e22e.js → chunk-7g649j8h.js} +2 -2
  51. package/dist/{chunk-4kj4e22e.js.map → chunk-7g649j8h.js.map} +1 -1
  52. package/dist/{chunk-675kzd7z.js → chunk-7mmw0jr2.js} +2 -2
  53. package/dist/{chunk-675kzd7z.js.map → chunk-7mmw0jr2.js.map} +1 -1
  54. package/dist/{chunk-k1ncgq7p.js → chunk-9d2d08qm.js} +2 -2
  55. package/dist/{chunk-k1ncgq7p.js.map → chunk-9d2d08qm.js.map} +1 -1
  56. package/dist/{chunk-wdg83tgd.js → chunk-9rr5h818.js} +3 -3
  57. package/dist/{chunk-wdg83tgd.js.map → chunk-9rr5h818.js.map} +1 -1
  58. package/dist/{chunk-30xxc6r7.js → chunk-9xyxbxgk.js} +2 -2
  59. package/dist/{chunk-30xxc6r7.js.map → chunk-9xyxbxgk.js.map} +1 -1
  60. package/dist/{chunk-khd9ft0s.js → chunk-ar4d3vmr.js} +3 -3
  61. package/dist/{chunk-khd9ft0s.js.map → chunk-ar4d3vmr.js.map} +1 -1
  62. package/dist/chunk-b5a5vvkk.js +57 -0
  63. package/dist/{chunk-bz5gda3b.js.map → chunk-b5a5vvkk.js.map} +7 -6
  64. package/dist/{chunk-6ggmk2eg.js → chunk-c0v61fp5.js} +2 -2
  65. package/dist/{chunk-6ggmk2eg.js.map → chunk-c0v61fp5.js.map} +1 -1
  66. package/dist/{chunk-bw2pfaz3.js → chunk-c7qs1xp3.js} +2 -2
  67. package/dist/{chunk-bw2pfaz3.js.map → chunk-c7qs1xp3.js.map} +1 -1
  68. package/dist/{chunk-2kegxt0s.js → chunk-cca0grq3.js} +2 -2
  69. package/dist/{chunk-2kegxt0s.js.map → chunk-cca0grq3.js.map} +1 -1
  70. package/dist/{chunk-b336h3hj.js → chunk-cskqet01.js} +2 -2
  71. package/dist/{chunk-b336h3hj.js.map → chunk-cskqet01.js.map} +1 -1
  72. package/dist/{chunk-pzk2a5sr.js → chunk-cvr5624r.js} +1 -1
  73. package/dist/chunk-cytq2msw.js +24 -0
  74. package/dist/{chunk-w8d37mcq.js.map → chunk-cytq2msw.js.map} +3 -3
  75. package/dist/{chunk-8507ez1g.js → chunk-d2c3947c.js} +2 -2
  76. package/dist/{chunk-8507ez1g.js.map → chunk-d2c3947c.js.map} +1 -1
  77. package/dist/{chunk-q0djcyj2.js → chunk-d5f1m3d2.js} +2 -2
  78. package/dist/{chunk-q0djcyj2.js.map → chunk-d5f1m3d2.js.map} +1 -1
  79. package/dist/{chunk-f9tfpn3w.js → chunk-dedqr5wb.js} +2 -2
  80. package/dist/{chunk-f9tfpn3w.js.map → chunk-dedqr5wb.js.map} +1 -1
  81. package/dist/{chunk-h02kyxgg.js → chunk-dhbgrv58.js} +1 -1
  82. package/dist/{chunk-d4dd7jde.js → chunk-dwedx1jb.js} +3 -3
  83. package/dist/{chunk-d4dd7jde.js.map → chunk-dwedx1jb.js.map} +1 -1
  84. package/dist/{chunk-5crtgt1y.js → chunk-ep0baa9g.js} +2 -2
  85. package/dist/{chunk-5crtgt1y.js.map → chunk-ep0baa9g.js.map} +1 -1
  86. package/dist/{chunk-kk77x2v4.js → chunk-er8acmch.js} +7 -7
  87. package/dist/{chunk-kk77x2v4.js.map → chunk-er8acmch.js.map} +3 -3
  88. package/dist/{chunk-thz75w6e.js → chunk-fcqx2t0p.js} +2 -2
  89. package/dist/{chunk-thz75w6e.js.map → chunk-fcqx2t0p.js.map} +1 -1
  90. package/dist/{chunk-1p87gdd2.js → chunk-fenc5tpv.js} +2 -2
  91. package/dist/{chunk-1p87gdd2.js.map → chunk-fenc5tpv.js.map} +1 -1
  92. package/dist/{chunk-fmea4sak.js → chunk-gc2dz11k.js} +2 -2
  93. package/dist/{chunk-fmea4sak.js.map → chunk-gc2dz11k.js.map} +1 -1
  94. package/dist/{chunk-qxxbp3nn.js → chunk-gemzbw7f.js} +2 -2
  95. package/dist/{chunk-qxxbp3nn.js.map → chunk-gemzbw7f.js.map} +1 -1
  96. package/dist/{chunk-qpy25jj9.js → chunk-gy81nd9a.js} +2 -2
  97. package/dist/{chunk-qpy25jj9.js.map → chunk-gy81nd9a.js.map} +1 -1
  98. package/dist/{chunk-c8vttyem.js → chunk-h43jp8ws.js} +2 -2
  99. package/dist/{chunk-c8vttyem.js.map → chunk-h43jp8ws.js.map} +1 -1
  100. package/dist/chunk-htgmy3x7.js +5 -0
  101. package/dist/{chunk-15v719sq.js.map → chunk-htgmy3x7.js.map} +1 -1
  102. package/dist/{chunk-xqd3zde5.js → chunk-jaa6xkeh.js} +2 -2
  103. package/dist/{chunk-xqd3zde5.js.map → chunk-jaa6xkeh.js.map} +1 -1
  104. package/dist/{chunk-2bja99cq.js → chunk-kk18xqgc.js} +2 -2
  105. package/dist/{chunk-2bja99cq.js.map → chunk-kk18xqgc.js.map} +1 -1
  106. package/dist/{chunk-mcjbck8e.js → chunk-krk7mcgm.js} +3 -3
  107. package/dist/{chunk-mcjbck8e.js.map → chunk-krk7mcgm.js.map} +1 -1
  108. package/dist/{chunk-hd5ztshp.js → chunk-krtybgz1.js} +2 -2
  109. package/dist/{chunk-hd5ztshp.js.map → chunk-krtybgz1.js.map} +1 -1
  110. package/dist/{chunk-fjhnn3de.js → chunk-m53fgf20.js} +3 -3
  111. package/dist/{chunk-fjhnn3de.js.map → chunk-m53fgf20.js.map} +1 -1
  112. package/dist/{chunk-4c1npv8k.js → chunk-m83zm86m.js} +2 -2
  113. package/dist/{chunk-4c1npv8k.js.map → chunk-m83zm86m.js.map} +1 -1
  114. package/dist/{chunk-q6a30w8w.js → chunk-meg8rtr6.js} +2 -2
  115. package/dist/{chunk-q6a30w8w.js.map → chunk-meg8rtr6.js.map} +1 -1
  116. package/dist/{chunk-vy0tnx2s.js → chunk-mr94nfp1.js} +3 -3
  117. package/dist/{chunk-vy0tnx2s.js.map → chunk-mr94nfp1.js.map} +1 -1
  118. package/dist/{chunk-zb8zzf5x.js → chunk-nz8z8jr1.js} +3 -3
  119. package/dist/{chunk-zb8zzf5x.js.map → chunk-nz8z8jr1.js.map} +1 -1
  120. package/dist/{chunk-d38x71xy.js → chunk-pemhmjzp.js} +3 -3
  121. package/dist/{chunk-d38x71xy.js.map → chunk-pemhmjzp.js.map} +1 -1
  122. package/dist/{chunk-d2v78b77.js → chunk-pn2x59ge.js} +3 -3
  123. package/dist/{chunk-d2v78b77.js.map → chunk-pn2x59ge.js.map} +1 -1
  124. package/dist/{chunk-qm6j85fq.js → chunk-qphjhpad.js} +2 -2
  125. package/dist/{chunk-qm6j85fq.js.map → chunk-qphjhpad.js.map} +1 -1
  126. package/dist/{chunk-p5xy9cn8.js → chunk-qsz9241c.js} +2 -2
  127. package/dist/{chunk-p5xy9cn8.js.map → chunk-qsz9241c.js.map} +1 -1
  128. package/dist/{chunk-d6nhcqvt.js → chunk-qy8c0gzr.js} +2 -2
  129. package/dist/{chunk-d6nhcqvt.js.map → chunk-qy8c0gzr.js.map} +1 -1
  130. package/dist/{chunk-7ns5506p.js → chunk-r01aqf0q.js} +2 -2
  131. package/dist/{chunk-7ns5506p.js.map → chunk-r01aqf0q.js.map} +1 -1
  132. package/dist/{chunk-0p6mdba6.js → chunk-rhvc1axc.js} +2 -2
  133. package/dist/{chunk-0p6mdba6.js.map → chunk-rhvc1axc.js.map} +1 -1
  134. package/dist/{chunk-pjz79c2c.js → chunk-s07v65x6.js} +3 -3
  135. package/dist/{chunk-pjz79c2c.js.map → chunk-s07v65x6.js.map} +1 -1
  136. package/dist/{chunk-q00f25na.js → chunk-s5k3yq6t.js} +2 -2
  137. package/dist/{chunk-q00f25na.js.map → chunk-s5k3yq6t.js.map} +1 -1
  138. package/dist/{chunk-ty8gxbgj.js → chunk-s6vvqsd0.js} +3 -3
  139. package/dist/{chunk-ty8gxbgj.js.map → chunk-s6vvqsd0.js.map} +3 -3
  140. package/dist/{chunk-2854taf5.js → chunk-sx340k85.js} +2 -2
  141. package/dist/{chunk-2854taf5.js.map → chunk-sx340k85.js.map} +1 -1
  142. package/dist/{chunk-j5q5ysng.js → chunk-tewhms9w.js} +2 -2
  143. package/dist/{chunk-j5q5ysng.js.map → chunk-tewhms9w.js.map} +1 -1
  144. package/dist/{chunk-7pxdvvrz.js → chunk-tk135gmj.js} +3 -3
  145. package/dist/{chunk-7pxdvvrz.js.map → chunk-tk135gmj.js.map} +1 -1
  146. package/dist/{chunk-yvd4pgd9.js → chunk-vx7hvyvq.js} +2 -2
  147. package/dist/{chunk-yvd4pgd9.js.map → chunk-vx7hvyvq.js.map} +1 -1
  148. package/dist/{chunk-xecnc8zv.js → chunk-wjkh2gem.js} +1 -1
  149. package/dist/{chunk-511zqetr.js → chunk-wqe47c0j.js} +2 -2
  150. package/dist/{chunk-511zqetr.js.map → chunk-wqe47c0j.js.map} +1 -1
  151. package/dist/{chunk-2y0r4b7g.js → chunk-y6wt5b6t.js} +1 -1
  152. package/dist/{chunk-kkx8a35r.js → chunk-yds7zwc3.js} +2 -2
  153. package/dist/{chunk-kkx8a35r.js.map → chunk-yds7zwc3.js.map} +1 -1
  154. package/dist/{chunk-w7am9q0q.js → chunk-zefs2b6h.js} +2 -2
  155. package/dist/{chunk-w7am9q0q.js.map → chunk-zefs2b6h.js.map} +1 -1
  156. package/dist/{chunk-de4t48j9.js → chunk-zg6hmc48.js} +1 -1
  157. package/dist/{chunk-svn6zvzd.js → chunk-zrcd9hxr.js} +2 -2
  158. package/dist/{chunk-svn6zvzd.js.map → chunk-zrcd9hxr.js.map} +1 -1
  159. package/dist/client/index.d.ts +1 -0
  160. package/dist/client/index.d.ts.map +1 -1
  161. package/dist/client/index.js +26 -1
  162. package/dist/client/index.js.map +1 -1
  163. package/dist/client/staticNavigation.d.ts +26 -0
  164. package/dist/client/staticNavigation.d.ts.map +1 -0
  165. package/dist/config/index.js +1 -1
  166. package/dist/console/run.js +2 -2
  167. package/dist/console/run.js.map +1 -1
  168. package/dist/container/index.js +2 -2
  169. package/dist/container/index.js.map +1 -1
  170. package/dist/database/index.js +2 -2
  171. package/dist/database/index.js.map +1 -1
  172. package/dist/email/index.js +2 -2
  173. package/dist/email/index.js.map +1 -1
  174. package/dist/facades/index.js +2 -2
  175. package/dist/facades/index.js.map +1 -1
  176. package/dist/foundation/index.js +2 -2
  177. package/dist/foundation/index.js.map +1 -1
  178. package/dist/http/ViewRouter.d.ts +36 -2
  179. package/dist/http/ViewRouter.d.ts.map +1 -1
  180. package/dist/http/index.d.ts +1 -1
  181. package/dist/http/index.d.ts.map +1 -1
  182. package/dist/http/index.js +2 -2
  183. package/dist/http/index.js.map +1 -1
  184. package/dist/i18n/dictionaryRuntime.js +2 -2
  185. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  186. package/dist/i18n/index.js +2 -2
  187. package/dist/i18n/index.js.map +2 -2
  188. package/dist/internal/islandRuntime.d.ts +16 -0
  189. package/dist/internal/islandRuntime.d.ts.map +1 -1
  190. package/dist/internal/staticNavigationRuntime.d.ts +8 -0
  191. package/dist/internal/staticNavigationRuntime.d.ts.map +1 -0
  192. package/dist/kernel/index.js +2 -2
  193. package/dist/kernel/index.js.map +2 -2
  194. package/dist/orm/index.js +2 -2
  195. package/dist/orm/index.js.map +1 -1
  196. package/dist/server/devFetch.d.ts.map +1 -1
  197. package/dist/server/httpProd.d.ts.map +1 -1
  198. package/dist/server/index.js +2 -2
  199. package/dist/server/index.js.map +1 -1
  200. package/dist/services/index.d.ts +1 -1
  201. package/dist/services/index.d.ts.map +1 -1
  202. package/dist/services/index.js +3 -3
  203. package/dist/services/index.js.map +2 -2
  204. package/dist/services/queue/work.js +2 -2
  205. package/dist/services/queue/work.js.map +1 -1
  206. package/dist/services/router/ViewRouteDispatcher.d.ts +5 -0
  207. package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
  208. package/dist/services/router/staticDocument.d.ts +30 -21
  209. package/dist/services/router/staticDocument.d.ts.map +1 -1
  210. package/dist/stats/bundleStats.d.ts +6 -2
  211. package/dist/stats/bundleStats.d.ts.map +1 -1
  212. package/dist/stats/route-table.js +2 -2
  213. package/dist/stats/route-table.js.map +3 -3
  214. package/dist/stats/routeTable.d.ts +5 -1
  215. package/dist/stats/routeTable.d.ts.map +1 -1
  216. package/dist/support/index.js +2 -2
  217. package/dist/support/index.js.map +1 -1
  218. package/dist/testing/index.d.ts +2 -0
  219. package/dist/testing/index.d.ts.map +1 -1
  220. package/dist/testing/index.js +185 -2
  221. package/dist/testing/index.js.map +1 -1
  222. package/dist/testing/staticDocument.d.ts +80 -0
  223. package/dist/testing/staticDocument.d.ts.map +1 -0
  224. package/dist/vitest/index.js +1 -1
  225. package/package.json +1 -1
  226. package/dist/chunk-15v719sq.js +0 -5
  227. package/dist/chunk-bz5gda3b.js +0 -57
  228. package/dist/chunk-w8d37mcq.js +0 -24
  229. /package/dist/{chunk-7rffbkmg.js.map → chunk-0k02tza1.js.map} +0 -0
  230. /package/dist/{chunk-pzk2a5sr.js.map → chunk-cvr5624r.js.map} +0 -0
  231. /package/dist/{chunk-h02kyxgg.js.map → chunk-dhbgrv58.js.map} +0 -0
  232. /package/dist/{chunk-xecnc8zv.js.map → chunk-wjkh2gem.js.map} +0 -0
  233. /package/dist/{chunk-2y0r4b7g.js.map → chunk-y6wt5b6t.js.map} +0 -0
  234. /package/dist/{chunk-de4t48j9.js.map → chunk-zg6hmc48.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  // @bun
2
2
  import{watch as K,existsSync as L,readFileSync as M}from"fs";import{join as O}from"path";function P(G){let A={};for(let C of G.split(`
3
3
  `)){let z=C.trim();if(!z||z.startsWith("#"))continue;let B=z.startsWith("export ")?z.slice(7).trim():z,I=B.indexOf("=");if(I===-1)continue;let J=B.slice(0,I).trim();if(!J)continue;let H=B.slice(I+1).trim();if(H.length>=2&&(H.startsWith('"')&&H.endsWith('"')||H.startsWith("'")&&H.endsWith("'")))H=H.slice(1,-1);A[J]=H}return A}function Q(G){let A=Bun.env.NODE_ENV,C=[".env"];if(A)C.push(`.env.${A}`);if(A!=="test"){if(C.push(".env.local"),A)C.push(`.env.${A}.local`)}return C.map((z)=>O(G,z))}function R(G){let A={};for(let z of Q(G))if(L(z))Object.assign(A,P(M(z,"utf8")));let C=[];for(let[z,B]of Object.entries(A))if(process.env[z]!==B)process.env[z]=B,C.push(z);return C}function V(G=process.cwd()){if(globalThis.__gemiEnvWatcher)return;let A;globalThis.__gemiEnvWatcher=K(G,(C,z)=>{if(!z||!String(z).startsWith(".env"))return;clearTimeout(A),A=setTimeout(()=>{try{let B=R(G);if(B.length)console.log(`[gemi] .env reloaded: ${B.join(", ")}`)}catch(B){console.error("[gemi] failed to reload .env:",B)}},50)})}
4
- export{Q as Ga,V as Ha};
4
+ export{Q as Ba,V as Ca};
5
5
 
6
- //# debugId=B160D754446BE26F64756E2164756E21
6
+ //# debugId=7271CECAE6E30E5664756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import { watch, existsSync, readFileSync, type FSWatcher } from \"node:fs\";\nimport { join } from \"node:path\";\n\ndeclare global {\n // A single directory watcher, kept on globalThis so `bun --hot` reloads (which\n // re-run `Server.start`) don't stack duplicate watchers.\n var __gemiEnvWatcher: FSWatcher | undefined;\n}\n\n// Minimal `.env` parser: `KEY=VALUE` lines, `#` comments, an optional leading\n// `export`, and surrounding single/double quotes stripped. Multi-line values and\n// `${VAR}` interpolation are intentionally not handled (uncommon subset).\nfunction parseEnv(content: string): Record<string, string> {\n const out: Record<string, string> = {};\n for (const raw of content.split(\"\\n\")) {\n const line = raw.trim();\n if (!line || line.startsWith(\"#\")) continue;\n const body = line.startsWith(\"export \") ? line.slice(7).trim() : line;\n const eq = body.indexOf(\"=\");\n if (eq === -1) continue;\n const key = body.slice(0, eq).trim();\n if (!key) continue;\n let value = body.slice(eq + 1).trim();\n if (\n value.length >= 2 &&\n ((value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\")))\n ) {\n value = value.slice(1, -1);\n }\n out[key] = value;\n }\n return out;\n}\n\n// The `.env` files Bun loads, in increasing precedence (later overrides earlier).\n// `.env.local` is skipped for `NODE_ENV=test`, matching Bun/dotenv conventions.\nexport function envFiles(rootDir: string): string[] {\n const nodeEnv = process.env.NODE_ENV;\n const names = [\".env\"];\n if (nodeEnv) names.push(`.env.${nodeEnv}`);\n if (nodeEnv !== \"test\") {\n names.push(\".env.local\");\n if (nodeEnv) names.push(`.env.${nodeEnv}.local`);\n }\n return names.map((name) => join(rootDir, name));\n}\n\n// Re-read the env files and apply them to `process.env`. Only adds/updates keys\n// (a value edit is the common case); a key removed from the file keeps its last\n// value until the next full restart, so we never clobber the real OS environment.\nfunction applyEnv(rootDir: string): string[] {\n const merged: Record<string, string> = {};\n for (const file of envFiles(rootDir)) {\n if (existsSync(file)) {\n Object.assign(merged, parseEnv(readFileSync(file, \"utf8\")));\n }\n }\n const changed: string[] = [];\n for (const [key, value] of Object.entries(merged)) {\n if (process.env[key] !== value) {\n process.env[key] = value;\n changed.push(key);\n }\n }\n return changed;\n}\n\n// Watch the project's `.env` files and re-apply them to `process.env` on change,\n// so edits take effect without restarting the dev server. Bun loads `.env` only\n// at startup and does not reload it (even under `--hot`), so this fills that gap.\n// Dev only — called from `Server.start()`'s dev branch, not in production.\n// Idempotent: keeps a single watcher across `bun --hot` reloads.\n//\n// Note: this updates `process.env`, so config read at request time picks up the\n// new value immediately; values a service reads once at boot (e.g. a client\n// constructed from an env var) are cached and won't change until that code\n// re-runs (a hot reload in dev, a restart in prod).\nexport function watchEnv(rootDir: string = process.cwd()) {\n if (globalThis.__gemiEnvWatcher) return;\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n globalThis.__gemiEnvWatcher = watch(rootDir, (_event, filename) => {\n // Non-recursive: only direct children of `rootDir`. Filter to `.env*`.\n if (!filename || !String(filename).startsWith(\".env\")) return;\n clearTimeout(timer);\n timer = setTimeout(() => {\n try {\n const changed = applyEnv(rootDir);\n if (changed.length) {\n console.log(`[gemi] .env reloaded: ${changed.join(\", \")}`);\n }\n } catch (error) {\n console.error(\"[gemi] failed to reload .env:\", error);\n }\n }, 50);\n });\n}\n"
6
6
  ],
7
7
  "mappings": ";AAAA,gBAAS,gBAAO,kBAAY,WAC5B,eAAS,aAWT,SAAS,CAAQ,CAAC,EAAyC,CACzD,IAAM,EAA8B,CAAC,EACrC,QAAW,KAAO,EAAQ,MAAM;AAAA,CAAI,EAAG,CACrC,IAAM,EAAO,EAAI,KAAK,EACtB,GAAI,CAAC,GAAQ,EAAK,WAAW,GAAG,EAAG,SACnC,IAAM,EAAO,EAAK,WAAW,SAAS,EAAI,EAAK,MAAM,CAAC,EAAE,KAAK,EAAI,EAC3D,EAAK,EAAK,QAAQ,GAAG,EAC3B,GAAI,IAAO,GAAI,SACf,IAAM,EAAM,EAAK,MAAM,EAAG,CAAE,EAAE,KAAK,EACnC,GAAI,CAAC,EAAK,SACV,IAAI,EAAQ,EAAK,MAAM,EAAK,CAAC,EAAE,KAAK,EACpC,GACE,EAAM,QAAU,IACd,EAAM,WAAW,GAAG,GAAK,EAAM,SAAS,GAAG,GAC1C,EAAM,WAAW,GAAG,GAAK,EAAM,SAAS,GAAG,GAE9C,EAAQ,EAAM,MAAM,EAAG,EAAE,EAE3B,EAAI,GAAO,EAEb,OAAO,EAKF,SAAS,CAAQ,CAAC,EAA2B,CAClD,IAAM,EAAU,iBACV,EAAQ,CAAC,MAAM,EACrB,GAAI,EAAS,EAAM,KAAK,QAAQ,GAAS,EACzC,GAAI,IAAY,QAEd,GADA,EAAM,KAAK,YAAY,EACnB,EAAS,EAAM,KAAK,QAAQ,SAAe,EAEjD,OAAO,EAAM,IAAI,CAAC,IAAS,EAAK,EAAS,CAAI,CAAC,EAMhD,SAAS,CAAQ,CAAC,EAA2B,CAC3C,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAQ,EAAS,CAAO,EACjC,GAAI,EAAW,CAAI,EACjB,OAAO,OAAO,EAAQ,EAAS,EAAa,EAAM,MAAM,CAAC,CAAC,EAG9D,IAAM,EAAoB,CAAC,EAC3B,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAM,EAC9C,GAAI,QAAQ,IAAI,KAAS,EACvB,QAAQ,IAAI,GAAO,EACnB,EAAQ,KAAK,CAAG,EAGpB,OAAO,EAaF,SAAS,CAAQ,CAAC,EAAkB,QAAQ,IAAI,EAAG,CACxD,GAAI,WAAW,iBAAkB,OAEjC,IAAI,EACJ,WAAW,iBAAmB,EAAM,EAAS,CAAC,EAAQ,IAAa,CAEjE,GAAI,CAAC,GAAY,CAAC,OAAO,CAAQ,EAAE,WAAW,MAAM,EAAG,OACvD,aAAa,CAAK,EAClB,EAAQ,WAAW,IAAM,CACvB,GAAI,CACF,IAAM,EAAU,EAAS,CAAO,EAChC,GAAI,EAAQ,OACV,QAAQ,IAAI,yBAAyB,EAAQ,KAAK,IAAI,GAAG,EAE3D,MAAO,EAAO,CACd,QAAQ,MAAM,gCAAiC,CAAK,IAErD,EAAE,EACN",
8
- "debugId": "B160D754446BE26F64756E2164756E21",
8
+ "debugId": "7271CECAE6E30E5664756E2164756E21",
9
9
  "names": []
10
10
  }