gemi 0.196.2 → 0.198.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 (254) 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 +1 -1
  4. package/dist/bun/plugin.js +1 -1
  5. package/dist/bun/preload.js +1 -1
  6. package/dist/{chunk-zzdvdr5a.js → chunk-0kfrwbhg.js} +4 -4
  7. package/dist/{chunk-zzdvdr5a.js.map → chunk-0kfrwbhg.js.map} +1 -1
  8. package/dist/{chunk-5bfrr8x5.js → chunk-1yq2b55s.js} +2 -2
  9. package/dist/{chunk-5bfrr8x5.js.map → chunk-1yq2b55s.js.map} +1 -1
  10. package/dist/{chunk-pmt2jt9b.js → chunk-206n0q1f.js} +2 -2
  11. package/dist/{chunk-pmt2jt9b.js.map → chunk-206n0q1f.js.map} +1 -1
  12. package/dist/{chunk-rp6ss7v3.js → chunk-2cyd3h4h.js} +2 -2
  13. package/dist/{chunk-rp6ss7v3.js.map → chunk-2cyd3h4h.js.map} +1 -1
  14. package/dist/{chunk-9dxp7t3n.js → chunk-2kkv8515.js} +2 -2
  15. package/dist/{chunk-9dxp7t3n.js.map → chunk-2kkv8515.js.map} +1 -1
  16. package/dist/{chunk-a02bmp0q.js → chunk-42b6zzg2.js} +2 -2
  17. package/dist/{chunk-a02bmp0q.js.map → chunk-42b6zzg2.js.map} +1 -1
  18. package/dist/{chunk-9hjxpdjt.js → chunk-4reyxar1.js} +1 -1
  19. package/dist/{chunk-3fcd8a47.js → chunk-503ce1t9.js} +2 -2
  20. package/dist/{chunk-3fcd8a47.js.map → chunk-503ce1t9.js.map} +1 -1
  21. package/dist/{chunk-8fdk8bfd.js → chunk-50nex9wg.js} +3 -3
  22. package/dist/{chunk-8fdk8bfd.js.map → chunk-50nex9wg.js.map} +1 -1
  23. package/dist/{chunk-08m9egzx.js → chunk-5zjw41cv.js} +2 -2
  24. package/dist/{chunk-08m9egzx.js.map → chunk-5zjw41cv.js.map} +1 -1
  25. package/dist/{chunk-ejktrxp2.js → chunk-61mcmhjp.js} +1 -1
  26. package/dist/{chunk-wvq3c25z.js → chunk-64hxqsqx.js} +3 -3
  27. package/dist/{chunk-wvq3c25z.js.map → chunk-64hxqsqx.js.map} +1 -1
  28. package/dist/{chunk-trqt1kkd.js → chunk-6brwvyrz.js} +2 -2
  29. package/dist/{chunk-trqt1kkd.js.map → chunk-6brwvyrz.js.map} +1 -1
  30. package/dist/{chunk-28fz99pn.js → chunk-6ftdsrkq.js} +2 -2
  31. package/dist/{chunk-28fz99pn.js.map → chunk-6ftdsrkq.js.map} +1 -1
  32. package/dist/{chunk-paawtkza.js → chunk-6nr97atn.js} +2 -2
  33. package/dist/{chunk-paawtkza.js.map → chunk-6nr97atn.js.map} +1 -1
  34. package/dist/{chunk-43599z6g.js → chunk-6qhhgm73.js} +2 -2
  35. package/dist/{chunk-43599z6g.js.map → chunk-6qhhgm73.js.map} +1 -1
  36. package/dist/{chunk-p2vasd1z.js → chunk-6xa5yqrw.js} +2 -2
  37. package/dist/{chunk-p2vasd1z.js.map → chunk-6xa5yqrw.js.map} +1 -1
  38. package/dist/{chunk-6efjnt6r.js → chunk-81m95se9.js} +2 -2
  39. package/dist/{chunk-6efjnt6r.js.map → chunk-81m95se9.js.map} +1 -1
  40. package/dist/{chunk-9gpjn44n.js → chunk-8267ggmy.js} +2 -2
  41. package/dist/{chunk-9gpjn44n.js.map → chunk-8267ggmy.js.map} +1 -1
  42. package/dist/{chunk-pg5hm00s.js → chunk-84stff4t.js} +2 -2
  43. package/dist/{chunk-pg5hm00s.js.map → chunk-84stff4t.js.map} +1 -1
  44. package/dist/{chunk-6m9qrs6d.js → chunk-8fzcs8dv.js} +2 -2
  45. package/dist/{chunk-6m9qrs6d.js.map → chunk-8fzcs8dv.js.map} +1 -1
  46. package/dist/{chunk-03q4j7wa.js → chunk-93j09zw7.js} +1 -1
  47. package/dist/{chunk-m0dfgmbj.js → chunk-97g2qc7j.js} +1 -1
  48. package/dist/{chunk-m08p5mre.js → chunk-agc5bqdt.js} +2 -2
  49. package/dist/{chunk-m08p5mre.js.map → chunk-agc5bqdt.js.map} +1 -1
  50. package/dist/{chunk-aycfrzh1.js → chunk-ahss6dcp.js} +2 -2
  51. package/dist/{chunk-aycfrzh1.js.map → chunk-ahss6dcp.js.map} +1 -1
  52. package/dist/{chunk-dfmxvp8p.js → chunk-b2n74m40.js} +2 -2
  53. package/dist/{chunk-dfmxvp8p.js.map → chunk-b2n74m40.js.map} +1 -1
  54. package/dist/{chunk-beckfwe9.js → chunk-bcfcwbp4.js} +2 -2
  55. package/dist/{chunk-beckfwe9.js.map → chunk-bcfcwbp4.js.map} +1 -1
  56. package/dist/{chunk-07zfrfbg.js → chunk-bdbg2dt6.js} +2 -2
  57. package/dist/{chunk-07zfrfbg.js.map → chunk-bdbg2dt6.js.map} +1 -1
  58. package/dist/{chunk-p4eger3g.js → chunk-bxxd1awv.js} +3 -3
  59. package/dist/{chunk-p4eger3g.js.map → chunk-bxxd1awv.js.map} +1 -1
  60. package/dist/{chunk-j49vh5bs.js → chunk-by0afyps.js} +2 -2
  61. package/dist/{chunk-j49vh5bs.js.map → chunk-by0afyps.js.map} +1 -1
  62. package/dist/chunk-ccpp45dm.js +5 -0
  63. package/dist/{chunk-ggbf1web.js.map → chunk-ccpp45dm.js.map} +1 -1
  64. package/dist/{chunk-fhfkcmkc.js → chunk-ct1vh28z.js} +2 -2
  65. package/dist/{chunk-fhfkcmkc.js.map → chunk-ct1vh28z.js.map} +1 -1
  66. package/dist/chunk-dqgn4wgf.js +15 -0
  67. package/dist/{chunk-nphb176s.js.map → chunk-dqgn4wgf.js.map} +7 -5
  68. package/dist/{chunk-dn20caf2.js → chunk-drb6gpgv.js} +2 -2
  69. package/dist/{chunk-dn20caf2.js.map → chunk-drb6gpgv.js.map} +1 -1
  70. package/dist/{chunk-hmn6pa78.js → chunk-drqv10sv.js} +2 -2
  71. package/dist/{chunk-hmn6pa78.js.map → chunk-drqv10sv.js.map} +1 -1
  72. package/dist/{chunk-qjwv9xfq.js → chunk-e603nm1c.js} +2 -2
  73. package/dist/{chunk-qjwv9xfq.js.map → chunk-e603nm1c.js.map} +1 -1
  74. package/dist/{chunk-mgdrf89p.js → chunk-e7bb26fb.js} +2 -2
  75. package/dist/{chunk-mgdrf89p.js.map → chunk-e7bb26fb.js.map} +1 -1
  76. package/dist/{chunk-j56zk5a0.js → chunk-ewknbs3b.js} +3 -3
  77. package/dist/{chunk-j56zk5a0.js.map → chunk-ewknbs3b.js.map} +1 -1
  78. package/dist/chunk-ff22412e.js +117 -0
  79. package/dist/{chunk-5w3kcn4a.js.map → chunk-ff22412e.js.map} +15 -15
  80. package/dist/{chunk-zcqz5xn9.js → chunk-grwze86x.js} +2 -2
  81. package/dist/{chunk-zcqz5xn9.js.map → chunk-grwze86x.js.map} +1 -1
  82. package/dist/{chunk-wgqppqcn.js → chunk-gx2fhmnx.js} +3 -3
  83. package/dist/{chunk-wgqppqcn.js.map → chunk-gx2fhmnx.js.map} +1 -1
  84. package/dist/{chunk-1x23scpn.js → chunk-ha4er085.js} +2 -2
  85. package/dist/{chunk-1x23scpn.js.map → chunk-ha4er085.js.map} +1 -1
  86. package/dist/{chunk-ermvtpy9.js → chunk-jkf5kjaz.js} +3 -3
  87. package/dist/{chunk-ermvtpy9.js.map → chunk-jkf5kjaz.js.map} +1 -1
  88. package/dist/{chunk-g02gqhq0.js → chunk-kz15j07h.js} +3 -3
  89. package/dist/{chunk-g02gqhq0.js.map → chunk-kz15j07h.js.map} +1 -1
  90. package/dist/{chunk-gmcttf0f.js → chunk-mddazdpt.js} +2 -2
  91. package/dist/{chunk-gmcttf0f.js.map → chunk-mddazdpt.js.map} +1 -1
  92. package/dist/{chunk-652a9mr0.js → chunk-mzqhn72h.js} +2 -2
  93. package/dist/{chunk-652a9mr0.js.map → chunk-mzqhn72h.js.map} +1 -1
  94. package/dist/{chunk-2485bwzs.js → chunk-n3p16jpb.js} +3 -3
  95. package/dist/{chunk-2485bwzs.js.map → chunk-n3p16jpb.js.map} +1 -1
  96. package/dist/{chunk-tj7z65ba.js → chunk-n9k29mrs.js} +2 -2
  97. package/dist/{chunk-tj7z65ba.js.map → chunk-n9k29mrs.js.map} +1 -1
  98. package/dist/{chunk-f6css3z6.js → chunk-nnaz5djg.js} +2 -2
  99. package/dist/{chunk-f6css3z6.js.map → chunk-nnaz5djg.js.map} +1 -1
  100. package/dist/{chunk-7zf8rnsb.js → chunk-pab6ye4d.js} +2 -2
  101. package/dist/{chunk-7zf8rnsb.js.map → chunk-pab6ye4d.js.map} +1 -1
  102. package/dist/{chunk-0xssrbar.js → chunk-q1zj3a0e.js} +2 -2
  103. package/dist/{chunk-0xssrbar.js.map → chunk-q1zj3a0e.js.map} +1 -1
  104. package/dist/{chunk-g7h28xcr.js → chunk-rcnpjwp4.js} +2 -2
  105. package/dist/{chunk-g7h28xcr.js.map → chunk-rcnpjwp4.js.map} +1 -1
  106. package/dist/{chunk-b6zqjyn1.js → chunk-rh84xq17.js} +2 -2
  107. package/dist/{chunk-b6zqjyn1.js.map → chunk-rh84xq17.js.map} +1 -1
  108. package/dist/{chunk-qg9pyxg7.js → chunk-s9z0xxth.js} +2 -2
  109. package/dist/{chunk-qg9pyxg7.js.map → chunk-s9z0xxth.js.map} +1 -1
  110. package/dist/{chunk-1705yamg.js → chunk-sg78cmd1.js} +2 -2
  111. package/dist/{chunk-1705yamg.js.map → chunk-sg78cmd1.js.map} +1 -1
  112. package/dist/{chunk-ftvc1a0k.js → chunk-t0qs2q9j.js} +2 -2
  113. package/dist/{chunk-ftvc1a0k.js.map → chunk-t0qs2q9j.js.map} +1 -1
  114. package/dist/{chunk-8e17k7ht.js → chunk-t4z6rkvw.js} +3 -3
  115. package/dist/{chunk-8e17k7ht.js.map → chunk-t4z6rkvw.js.map} +3 -3
  116. package/dist/{chunk-28macaes.js → chunk-tjsv6e3a.js} +2 -2
  117. package/dist/{chunk-28macaes.js.map → chunk-tjsv6e3a.js.map} +1 -1
  118. package/dist/{chunk-hswnqn33.js → chunk-txbram9h.js} +2 -2
  119. package/dist/{chunk-hswnqn33.js.map → chunk-txbram9h.js.map} +1 -1
  120. package/dist/{chunk-2yzv5v3m.js → chunk-tyvc46ns.js} +2 -2
  121. package/dist/{chunk-2yzv5v3m.js.map → chunk-tyvc46ns.js.map} +1 -1
  122. package/dist/{chunk-pqr01waj.js → chunk-v2pt8h42.js} +2 -2
  123. package/dist/{chunk-pqr01waj.js.map → chunk-v2pt8h42.js.map} +1 -1
  124. package/dist/{chunk-xhkga697.js → chunk-vn84xe2p.js} +2 -2
  125. package/dist/{chunk-xhkga697.js.map → chunk-vn84xe2p.js.map} +1 -1
  126. package/dist/{chunk-228w21t6.js → chunk-vpqzzrkn.js} +2 -2
  127. package/dist/{chunk-228w21t6.js.map → chunk-vpqzzrkn.js.map} +1 -1
  128. package/dist/{chunk-bc7hr358.js → chunk-w09wtxr6.js} +3 -3
  129. package/dist/{chunk-bc7hr358.js.map → chunk-w09wtxr6.js.map} +1 -1
  130. package/dist/{chunk-qrn6ch3t.js → chunk-w84ke0bp.js} +2 -2
  131. package/dist/{chunk-qrn6ch3t.js.map → chunk-w84ke0bp.js.map} +1 -1
  132. package/dist/{chunk-nk7nmtng.js → chunk-wxb2pqqz.js} +2 -2
  133. package/dist/{chunk-nk7nmtng.js.map → chunk-wxb2pqqz.js.map} +1 -1
  134. package/dist/{chunk-q1aaqhnw.js → chunk-xb0k1br9.js} +2 -2
  135. package/dist/{chunk-q1aaqhnw.js.map → chunk-xb0k1br9.js.map} +1 -1
  136. package/dist/{chunk-n914rs58.js → chunk-xhc16pv1.js} +3 -3
  137. package/dist/{chunk-n914rs58.js.map → chunk-xhc16pv1.js.map} +1 -1
  138. package/dist/{chunk-reaty2mv.js → chunk-xwcv0b4b.js} +3 -3
  139. package/dist/{chunk-reaty2mv.js.map → chunk-xwcv0b4b.js.map} +1 -1
  140. package/dist/{chunk-sqqby94y.js → chunk-xxep62yg.js} +1 -1
  141. package/dist/{chunk-7t60d5qy.js → chunk-xzt117g6.js} +1 -1
  142. package/dist/{chunk-2g2fsr71.js → chunk-y167pt0p.js} +2 -2
  143. package/dist/{chunk-2g2fsr71.js.map → chunk-y167pt0p.js.map} +1 -1
  144. package/dist/{chunk-1ghbn9jg.js → chunk-yxge0cem.js} +2 -2
  145. package/dist/{chunk-1ghbn9jg.js.map → chunk-yxge0cem.js.map} +1 -1
  146. package/dist/{chunk-vgxkt9vd.js → chunk-zpqcawmq.js} +2 -2
  147. package/dist/{chunk-vgxkt9vd.js.map → chunk-zpqcawmq.js.map} +1 -1
  148. package/dist/{chunk-39w89wss.js → chunk-zwbpcch0.js} +2 -2
  149. package/dist/{chunk-39w89wss.js.map → chunk-zwbpcch0.js.map} +1 -1
  150. package/dist/chunks/{RealtimeClient-BVQeh_yg.js → RealtimeClient-B7zh4okq.js} +2 -2
  151. package/dist/chunks/{RealtimeClient-BVQeh_yg.js.map → RealtimeClient-B7zh4okq.js.map} +1 -1
  152. package/dist/chunks/{ThemeProvider-G2g5Z1ZS.js → ThemeProvider-D33bPpf8.js} +51 -4
  153. package/dist/chunks/ThemeProvider-D33bPpf8.js.map +1 -0
  154. package/dist/chunks/{fetchFileRequest-Bzva9J59.js → fetchFileRequest-Cp0QjioM.js} +2 -2
  155. package/dist/chunks/{fetchFileRequest-Bzva9J59.js.map → fetchFileRequest-Cp0QjioM.js.map} +1 -1
  156. package/dist/chunks/{live-C2Sck5PO.js → live-D08wnrrZ.js} +3 -3
  157. package/dist/chunks/{live-C2Sck5PO.js.map → live-D08wnrrZ.js.map} +1 -1
  158. package/dist/chunks/{mutationExtras-HC7AC6zn.js → mutationExtras-BbDboF8F.js} +2 -2
  159. package/dist/chunks/{mutationExtras-HC7AC6zn.js.map → mutationExtras-BbDboF8F.js.map} +1 -1
  160. package/dist/chunks/{subscriptionStream-CaTWWJwt.js → subscriptionStream-CRj9aV4K.js} +2 -2
  161. package/dist/chunks/{subscriptionStream-CaTWWJwt.js.map → subscriptionStream-CRj9aV4K.js.map} +1 -1
  162. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  163. package/dist/client/Head.d.ts.map +1 -1
  164. package/dist/client/createRoot.d.ts.map +1 -1
  165. package/dist/client/cspNonce.d.ts +33 -0
  166. package/dist/client/cspNonce.d.ts.map +1 -0
  167. package/dist/client/index.d.ts +1 -0
  168. package/dist/client/index.d.ts.map +1 -1
  169. package/dist/client/index.js +17 -10
  170. package/dist/client/index.js.map +1 -1
  171. package/dist/config/index.js +1 -1
  172. package/dist/console/run.js +2 -2
  173. package/dist/console/run.js.map +1 -1
  174. package/dist/container/index.js +2 -2
  175. package/dist/container/index.js.map +1 -1
  176. package/dist/database/index.js +2 -2
  177. package/dist/database/index.js.map +1 -1
  178. package/dist/email/index.js +2 -2
  179. package/dist/email/index.js.map +1 -1
  180. package/dist/facades/index.js +2 -2
  181. package/dist/facades/index.js.map +1 -1
  182. package/dist/foundation/index.js +2 -2
  183. package/dist/foundation/index.js.map +1 -1
  184. package/dist/http/ApiRouter.d.ts +7 -0
  185. package/dist/http/ApiRouter.d.ts.map +1 -1
  186. package/dist/http/BodyLimitMiddleware.d.ts +3 -0
  187. package/dist/http/BodyLimitMiddleware.d.ts.map +1 -1
  188. package/dist/http/HttpRequest.d.ts +7 -0
  189. package/dist/http/HttpRequest.d.ts.map +1 -1
  190. package/dist/http/bodyLimit.d.ts +21 -1
  191. package/dist/http/bodyLimit.d.ts.map +1 -1
  192. package/dist/http/cspNonce.d.ts +37 -0
  193. package/dist/http/cspNonce.d.ts.map +1 -0
  194. package/dist/http/index.d.ts +1 -0
  195. package/dist/http/index.d.ts.map +1 -1
  196. package/dist/http/index.js +2 -2
  197. package/dist/http/index.js.map +1 -1
  198. package/dist/http/middleware-config.d.ts +12 -3
  199. package/dist/http/middleware-config.d.ts.map +1 -1
  200. package/dist/http/validate.d.ts +8 -0
  201. package/dist/http/validate.d.ts.map +1 -1
  202. package/dist/i18n/Translator.d.ts +5 -0
  203. package/dist/i18n/Translator.d.ts.map +1 -1
  204. package/dist/i18n/dictionaryRuntime.js +2 -2
  205. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  206. package/dist/i18n/index.js +2 -2
  207. package/dist/i18n/index.js.map +1 -1
  208. package/dist/kernel/index.js +2 -2
  209. package/dist/kernel/index.js.map +1 -1
  210. package/dist/orm/index.js +2 -2
  211. package/dist/orm/index.js.map +1 -1
  212. package/dist/probe/index.js +2 -2
  213. package/dist/probe/index.js.map +1 -1
  214. package/dist/server/index.js +2 -2
  215. package/dist/server/index.js.map +1 -1
  216. package/dist/services/index.d.ts +1 -0
  217. package/dist/services/index.d.ts.map +1 -1
  218. package/dist/services/index.js +3 -3
  219. package/dist/services/index.js.map +2 -2
  220. package/dist/services/middleware/MiddlewareRegistry.d.ts +16 -5
  221. package/dist/services/middleware/MiddlewareRegistry.d.ts.map +1 -1
  222. package/dist/services/queue/work.js +2 -2
  223. package/dist/services/queue/work.js.map +1 -1
  224. package/dist/services/router/ApiRouteDispatcher.d.ts.map +1 -1
  225. package/dist/services/router/ViewRouteDispatcher.d.ts +2 -0
  226. package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
  227. package/dist/services/router/config.d.ts +17 -1
  228. package/dist/services/router/config.d.ts.map +1 -1
  229. package/dist/services/router/contentSecurityPolicy.d.ts +32 -0
  230. package/dist/services/router/contentSecurityPolicy.d.ts.map +1 -0
  231. package/dist/services/router/createFlatApiRoutes.d.ts +3 -0
  232. package/dist/services/router/createFlatApiRoutes.d.ts.map +1 -1
  233. package/dist/services/router/staticCache.d.ts +1 -0
  234. package/dist/services/router/staticCache.d.ts.map +1 -1
  235. package/dist/services/router/staticDocument.d.ts +5 -1
  236. package/dist/services/router/staticDocument.d.ts.map +1 -1
  237. package/dist/services/router/streamQueryInjection.d.ts +5 -3
  238. package/dist/services/router/streamQueryInjection.d.ts.map +1 -1
  239. package/dist/stats/route-table.js +1 -1
  240. package/dist/support/index.js +2 -2
  241. package/dist/support/index.js.map +1 -1
  242. package/dist/testing/index.js +2 -2
  243. package/dist/vitest/index.js +1 -1
  244. package/package.json +1 -1
  245. package/dist/chunk-5w3kcn4a.js +0 -117
  246. package/dist/chunk-ggbf1web.js +0 -5
  247. package/dist/chunk-nphb176s.js +0 -15
  248. package/dist/chunks/ThemeProvider-G2g5Z1ZS.js.map +0 -1
  249. /package/dist/{chunk-9hjxpdjt.js.map → chunk-4reyxar1.js.map} +0 -0
  250. /package/dist/{chunk-ejktrxp2.js.map → chunk-61mcmhjp.js.map} +0 -0
  251. /package/dist/{chunk-03q4j7wa.js.map → chunk-93j09zw7.js.map} +0 -0
  252. /package/dist/{chunk-m0dfgmbj.js.map → chunk-97g2qc7j.js.map} +0 -0
  253. /package/dist/{chunk-sqqby94y.js.map → chunk-xxep62yg.js.map} +0 -0
  254. /package/dist/{chunk-7t60d5qy.js.map → chunk-xzt117g6.js.map} +0 -0
@@ -9,6 +9,6 @@
9
9
  "import type { SQL } from \"bun\";\nimport type { ConnectionConfig, DatabaseConfig } from \"./config\";\nimport {\n Connection,\n DEFAULT_CONNECTION,\n ReservedConnectionNameError,\n UnknownConnectionError,\n type DatabaseConnection,\n} from \"./Connection\";\nimport type { Dialect } from \"./dialect\";\n\n// Wraps Bun's `SQL` client. Bun ships one client that speaks SQLite, Postgres,\n// MySQL and MariaDB, so gemi does not need a driver per database — it needs to\n// know *which* one is in use, which is what `dialect` carries.\n//\n// Safe to build eagerly: Bun's client connects on the first query, not at\n// construction. (`RedisManager` used to be cited here as the parallel case. As\n// of #403 it builds its client in a memoizing getter instead — not because\n// eager construction was unsafe, but because naming Bun's `RedisClient` at\n// module scope is what made `gemi/services` unloadable off Bun. `Connection`\n// still imports `SQL` as a value for the same reason, which is the remaining\n// half of #396.) It is still bound as a lazy singleton,\n// so an app that never touches the database never resolves it and never has to\n// have DATABASE_URL set.\n//\n// Since #327 it holds *connections*, plural: the top-level `url` and `options`\n// build the one called `\"default\"`, and each key under `connections` builds\n// another. What it does not do is decide which one a query uses — that is the\n// ORM's ambient scope and the `DB` facade, because the choice is per query\n// rather than per application. See `connection` below.\nexport class DatabaseManager implements DatabaseConnection {\n static token = \"database\";\n\n /**\n * This object *is* the default connection, so it answers to the name.\n *\n * Not a formality: `connection(\"default\")` returns `this` rather than the\n * `Connection` in the map, which is what keeps every existing reader —\n * `DB.sql`, `db.dialect`, and the test harnesses that wrap the manager in a\n * Proxy to count statements — looking at the same object the ORM executes\n * through. A second object for the default pool would have quietly bypassed\n * all of them while every test still passed.\n */\n public readonly name = DEFAULT_CONNECTION;\n\n /**\n * Every pool this manager owns, keyed by name and including the default one.\n *\n * Private because the map is the manager's bookkeeping — `connection()` is\n * the way in, and it is the only path that knows the default is `this`.\n */\n private readonly pools = new Map<string, Connection>();\n\n /**\n * Resolves once **every** connection has been configured, or rejects if one\n * could not be. Only SQLite has anything to do; elsewhere it is already\n * resolved.\n *\n * All of them rather than the default alone, because the thing a caller waits\n * on this for — SQLite's `pragma foreign_keys` — is per client, so a second\n * SQLite connection has its own and a caller awaiting one manager-level\n * promise means all of them.\n */\n public readonly ready: Promise<void>;\n\n constructor(public config: DatabaseConfig = {}) {\n const { connections = {}, ...primary } = config;\n\n // The default first, so a `MissingDatabaseUrlError` from a missing\n // `DATABASE_URL` still comes out of construction the way it always has,\n // rather than after a named connection has already opened a client.\n this.pools.set(\n DEFAULT_CONNECTION,\n new Connection(DEFAULT_CONNECTION, primary),\n );\n\n // A connection that is built before the one whose config is wrong is still\n // a live client with an open handle, and on the throwing path nothing else\n // will ever hold it: the manager never becomes a value, so nobody can call\n // `close`. Left alone, the pragma this constructor issues for a SQLite\n // connection settles against a client being torn down and surfaces as an\n // unhandled rejection with no configuration error anywhere near it.\n try {\n this.build(connections, primary.slowTransactionThreshold);\n } catch (error) {\n for (const pool of this.pools.values()) {\n // The in-flight configuration first: it is what rejects when the client\n // under it goes away, and this is the only place that can say the\n // rejection was expected.\n pool.ready.catch(() => {});\n pool.close().catch(() => {});\n }\n throw error;\n }\n\n // Built once here rather than derived per read, so that a connection whose\n // configuration rejects produces one unhandled rejection at most instead of\n // a fresh one per access.\n this.ready = Promise.all(\n [...this.pools.values()].map((pool) => pool.ready),\n ).then(() => undefined);\n }\n\n private build(\n connections: Record<string, ConnectionConfig>,\n slowTransactionThreshold: number | false | undefined,\n ): void {\n for (const [name, connection] of Object.entries(connections)) {\n if (name === DEFAULT_CONNECTION)\n throw new ReservedConnectionNameError(name);\n\n this.pools.set(\n name,\n new Connection(name, {\n // The threshold is the one setting a named connection is likely to\n // want *unchanged*: it is a development diagnostic about holding a\n // pooled connection, and that concern does not stop applying because\n // the pool has a name. `url`, `options` and `dialect` are deliberately\n // not inherited — a connection that borrowed the default's URL by\n // omission would be a second pool onto the same database created by a\n // typo in a key.\n slowTransactionThreshold,\n ...connection,\n }),\n );\n }\n }\n\n /**\n * The connection called `name`, or the default one when called with nothing.\n *\n * Throws rather than falling back to the default for an unknown name, and\n * that is the important half. A fallback would make `Model.on(\"analitycs\")`\n * run on the hot path — the exact pool the caller was trying to stay off —\n * and the only symptom would be the incident it was meant to prevent,\n * arriving weeks later with nothing pointing back at the typo.\n */\n connection(name: string = DEFAULT_CONNECTION): DatabaseConnection {\n // `this`, not `pools.get(DEFAULT_CONNECTION)` — see `name` above.\n if (name === DEFAULT_CONNECTION) return this;\n\n const found = this.pools.get(name);\n if (!found) throw new UnknownConnectionError(name, this.connectionNames);\n return found;\n }\n\n /** Every configured name, default first. For error messages and diagnostics. */\n get connectionNames(): string[] {\n return [...this.pools.keys()];\n }\n\n /**\n * The default connection's client. Unchanged in meaning: an application that\n * never names a connection sees exactly what it saw before #327.\n */\n get sql(): SQL {\n return this.default.sql;\n }\n\n get dialect(): Dialect {\n return this.default.dialect;\n }\n\n get url(): string {\n return this.default.url;\n }\n\n // Escape hatch matching Bun's own API, so `db.query` reads like `sql` does in\n // Bun's docs: db.query`select * from users where id = ${id}`\n get query(): SQL {\n return this.sql;\n }\n\n /** Closes every connection, not only the default one. */\n async close(): Promise<void> {\n // The aggregate promise needs the same treatment each connection's own\n // `ready` gets in `Connection.close` — it is derived from them, so a\n // rejection there arrives here as a second, separately unhandled one.\n this.ready.catch(() => {});\n await Promise.all([...this.pools.values()].map((pool) => pool.close()));\n }\n\n private get default(): Connection {\n return this.pools.get(DEFAULT_CONNECTION)!;\n }\n}\n"
10
10
  ],
11
11
  "mappings": "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",
12
- "debugId": "0203B361991A783C64756E2164756E21",
12
+ "debugId": "B82708D096E3366B64756E2164756E21",
13
13
  "names": []
14
14
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- var _=/^[a-z]{2,3}(?:[-_][a-z0-9]{2,8})*$/i;function I(j){return _.test(j)}function U(j){return j.split(/[-_]/)[0].toLowerCase()}function H(j,B,N){let R=j?.split(";")[0].trim();if(!R||!I(R))return null;let W=R.replaceAll("_","-").toLowerCase(),J=B.find((X)=>X.toLowerCase()===W);if(J)return J;let K=U(R),S=B.filter((X)=>U(X)===K);if(S.length===0)return null;if(N&&S.includes(N))return N;return S[0]}var C=/^(?:0(?:\.\d{0,3})?|1(?:\.0{0,3})?)$/;function V(j){let B=[];for(let N of j.split(",")){let[R,...W]=N.split(";"),J=R.trim();if(!J||J!=="*"&&!I(J))continue;let K=1,S=!0;for(let X of W){let[z,O=""]=X.split("=");if(z.trim().toLowerCase()!=="q")continue;let Q=O.trim();if(!C.test(Q)){S=!1;break}K=Number(Q)}if(S)B.push({tag:J,q:K,index:B.length})}return B.sort((N,R)=>R.q-N.q||N.index-R.index)}function E(j,B){let N=j.replaceAll("_","-").toLowerCase(),R=B.replaceAll("_","-").toLowerCase();return R===N||R.startsWith(`${N}-`)}function M(j,B,N){if(!j||B.length===0)return null;let R=V(j),W=R.filter((S)=>S.q===0&&S.tag!=="*").map((S)=>S.tag),J=B.filter((S)=>!W.some((X)=>E(X,S)));if(J.length===0)return null;let K=!1;for(let{tag:S,q:X}of R){if(X===0)continue;if(S==="*"){K=!0;continue}let z=H(S,J,N);if(z)return z}if(!K)return null;return(N&&J.includes(N)?N:J[0])??null}var y="UTC";function G(j){if(typeof j!=="string"||j.length===0)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:j}),!0}catch{return!1}}var Y=new Map,F=500;function $(j,B){let N=Y.get(j);if(N===void 0){if(Y.size>=F)Y.delete(Y.keys().next().value);N=B(),Y.set(j,N)}return N}function P(j){return j instanceof Date?j:new Date(j)}function D(j){return j.dateStyle!==void 0||j.timeStyle!==void 0||j.weekday!==void 0||j.era!==void 0||j.year!==void 0||j.month!==void 0||j.day!==void 0||j.dayPeriod!==void 0||j.hour!==void 0||j.minute!==void 0||j.second!==void 0||j.fractionalSecondDigits!==void 0||j.timeZoneName!==void 0}function x(j){let{locale:B,timeZone:N}=j,R=(J={})=>{let K={...J,timeZone:J.timeZone??N};return $(`dt|${B}|${JSON.stringify(K)}`,()=>{return new Intl.DateTimeFormat(B,K)})},W=(J,K)=>{if(J&&D(J))return J;return{...K,...J}};return{locale:B,timeZone:N,date(J,K){return R(W(K,{dateStyle:"medium"})).format(P(J))},time(J,K){return R(W(K,{timeStyle:"short"})).format(P(J))},dateTime(J,K){return R(W(K,{dateStyle:"medium",timeStyle:"short"})).format(P(J))},number(J,K={}){return $(`n|${B}|${JSON.stringify(K)}`,()=>new Intl.NumberFormat(B,K)).format(J)},relative(J,K,S={}){return $(`r|${B}|${JSON.stringify(S)}`,()=>new Intl.RelativeTimeFormat(B,S)).format(J,K)},list(J,K={}){return $(`l|${B}|${JSON.stringify(K)}`,()=>new Intl.ListFormat(B,K)).format(J)},plural(J,K={}){return $(`p|${B}|${JSON.stringify(K)}`,()=>new Intl.PluralRules(B,K)).select(J)},dateTimeFormat:R}}class b{config;static token="translator";translations={};isEnabled=!1;constructor(j){this.config=j;if(!G(this.config.timeZone))throw Error(`translation.timeZone: "${String(this.config.timeZone)}" is not a time zone this runtime knows. Use an IANA name such as "UTC" or "Europe/Istanbul".`);let B={};for(let[N,R]of Object.entries(this.config.prefetch))for(let W of this.config.supportedLocales){if(!B[W])B[W]={};B[W][N]={};for(let J of R){B[W][N][J.name]={};for(let[K,S]of Object.entries(J.dictionary))this.isEnabled=!0,B[W][N][J.name][K]=S[W]}}this.translations=B}get isLocaleAware(){return this.isEnabled||this.config.supportedLocales.length>0}get supportedLocales(){return this.config.supportedLocales}get defaultLocale(){return this.config.defaultLocale}get components(){return this.config.components}get timeZone(){return this.config.timeZone}detectTimeZone(j){if(j){let B=this.config.detectTimeZone(j);if(G(B))return B}return this.config.timeZone}formatter(j,B){return x({locale:j||this.defaultLocale,timeZone:G(B)?B:this.timeZone})}onLocaleChange(j){return this.config.onLocaleChange(j)}detectLocale(j){let B=this.config.defaultLocale??this.config.supportedLocales[0]??"en-US",N=(K)=>H(K,this.config.supportedLocales,this.config.defaultLocale),R=N(this.config.detectLocale(j));if(R)return R;let W=N(j.cookies.get("i18n-locale"));if(W)return W;let J=M(j.headers.get("accept-language"),this.config.supportedLocales,this.config.defaultLocale);if(J)return J;return B}getPageTranslations(j,B){if(this.translations[j][B])return this.translations[j][B];return{}}}
3
- export{H as kl,M as ll,y as ml,G as nl,x as ol,b as pl};
2
+ var _=/^[a-z]{2,3}(?:[-_][a-z0-9]{2,8})*$/i;function I(j){return _.test(j)}function U(j){return j.split(/[-_]/)[0].toLowerCase()}function H(j,B,N){let R=j?.split(";")[0].trim();if(!R||!I(R))return null;let W=R.replaceAll("_","-").toLowerCase(),J=B.find((X)=>X.toLowerCase()===W);if(J)return J;let K=U(R),S=B.filter((X)=>U(X)===K);if(S.length===0)return null;if(N&&S.includes(N))return N;return S[0]}var C=/^(?:0(?:\.\d{0,3})?|1(?:\.0{0,3})?)$/;function V(j){let B=[];for(let N of j.split(",")){let[R,...W]=N.split(";"),J=R.trim();if(!J||J!=="*"&&!I(J))continue;let K=1,S=!0;for(let X of W){let[z,O=""]=X.split("=");if(z.trim().toLowerCase()!=="q")continue;let Q=O.trim();if(!C.test(Q)){S=!1;break}K=Number(Q)}if(S)B.push({tag:J,q:K,index:B.length})}return B.sort((N,R)=>R.q-N.q||N.index-R.index)}function E(j,B){let N=j.replaceAll("_","-").toLowerCase(),R=B.replaceAll("_","-").toLowerCase();return R===N||R.startsWith(`${N}-`)}function M(j,B,N){if(!j||B.length===0)return null;let R=V(j),W=R.filter((S)=>S.q===0&&S.tag!=="*").map((S)=>S.tag),J=B.filter((S)=>!W.some((X)=>E(X,S)));if(J.length===0)return null;let K=!1;for(let{tag:S,q:X}of R){if(X===0)continue;if(S==="*"){K=!0;continue}let z=H(S,J,N);if(z)return z}if(!K)return null;return(N&&J.includes(N)?N:J[0])??null}var y="UTC";function G(j){if(typeof j!=="string"||j.length===0)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:j}),!0}catch{return!1}}var Y=new Map,F=500;function $(j,B){let N=Y.get(j);if(N===void 0){if(Y.size>=F)Y.delete(Y.keys().next().value);N=B(),Y.set(j,N)}return N}function P(j){return j instanceof Date?j:new Date(j)}function D(j){return j.dateStyle!==void 0||j.timeStyle!==void 0||j.weekday!==void 0||j.era!==void 0||j.year!==void 0||j.month!==void 0||j.day!==void 0||j.dayPeriod!==void 0||j.hour!==void 0||j.minute!==void 0||j.second!==void 0||j.fractionalSecondDigits!==void 0||j.timeZoneName!==void 0}function x(j){let{locale:B,timeZone:N}=j,R=(J={})=>{let K={...J,timeZone:J.timeZone??N};return $(`dt|${B}|${JSON.stringify(K)}`,()=>{return new Intl.DateTimeFormat(B,K)})},W=(J,K)=>{if(J&&D(J))return J;return{...K,...J}};return{locale:B,timeZone:N,date(J,K){return R(W(K,{dateStyle:"medium"})).format(P(J))},time(J,K){return R(W(K,{timeStyle:"short"})).format(P(J))},dateTime(J,K){return R(W(K,{dateStyle:"medium",timeStyle:"short"})).format(P(J))},number(J,K={}){return $(`n|${B}|${JSON.stringify(K)}`,()=>new Intl.NumberFormat(B,K)).format(J)},relative(J,K,S={}){return $(`r|${B}|${JSON.stringify(S)}`,()=>new Intl.RelativeTimeFormat(B,S)).format(J,K)},list(J,K={}){return $(`l|${B}|${JSON.stringify(K)}`,()=>new Intl.ListFormat(B,K)).format(J)},plural(J,K={}){return $(`p|${B}|${JSON.stringify(K)}`,()=>new Intl.PluralRules(B,K)).select(J)},dateTimeFormat:R}}class b{config;static token="translator";translations={};isEnabled=!1;constructor(j){this.config=j;if(!G(this.config.timeZone))throw Error(`translation.timeZone: "${String(this.config.timeZone)}" is not a time zone this runtime knows. Use an IANA name such as "UTC" or "Europe/Istanbul".`);let B={};for(let[N,R]of Object.entries(this.config.prefetch))for(let W of this.config.supportedLocales){if(!B[W])B[W]={};B[W][N]={};for(let J of R){B[W][N][J.name]={};for(let[K,S]of Object.entries(J.dictionary))this.isEnabled=!0,B[W][N][J.name][K]=S[W]}}this.translations=B}get isLocaleAware(){return this.isEnabled||this.config.supportedLocales.length>0}get supportedLocales(){return this.config.supportedLocales}get defaultLocale(){return this.config.defaultLocale}get components(){return this.config.components}get timeZone(){return this.config.timeZone}detectTimeZone(j){if(j){let B=this.config.detectTimeZone(j);if(G(B))return B}return this.config.timeZone}formatter(j,B){return x({locale:j||this.defaultLocale,timeZone:G(B)?B:this.timeZone})}onLocaleChange(j){return this.config.onLocaleChange(j)}detectLocale(j){let B=this.config.defaultLocale??this.config.supportedLocales[0]??"en-US",N=(K)=>H(K,this.config.supportedLocales,this.config.defaultLocale),R=N(this.config.detectLocale(j));if(R)return R;let W=N(j.cookies.get("i18n-locale"));if(W)return W;let J=M(j.headers.get("accept-language"),this.config.supportedLocales,this.config.defaultLocale);if(J)return J;return B}getPageTranslations(j,B){return this.translations[j]?.[B]??{}}}
3
+ export{H as sl,M as tl,y as ul,G as vl,x as wl,b as xl};
4
4
 
5
- //# debugId=242556F19B6A68E864756E2164756E21
5
+ //# debugId=33583E8E3345EE8E64756E2164756E21
@@ -4,9 +4,9 @@
4
4
  "sourcesContent": [
5
5
  "// A BCP 47-ish tag: a 2–3 letter language, then any number of subtags. Loose on\n// purpose — it only has to tell `en`, `de-AT` and `zh-Hant-TW` apart from path\n// segments like `blog` or `settings`.\nconst LOCALE_TAG = /^[a-z]{2,3}(?:[-_][a-z0-9]{2,8})*$/i;\n\nexport function looksLikeLocale(segment: string): boolean {\n return LOCALE_TAG.test(segment);\n}\n\nfunction languageOf(tag: string): string {\n return tag.split(/[-_]/)[0].toLowerCase();\n}\n\n/**\n * Maps a requested locale onto one the app supports, or `null` when none fits.\n *\n * An exact match wins, ignoring case (`en-us` → `en-US`). Otherwise the tag\n * falls back to a supported locale of the same language, so a short tag\n * resolves to its long form (`en` → `en-US`) and an unsupported region to a\n * supported one (`de-AT` → `de-DE`). When several share the language, the\n * default locale is preferred, then the first in `supportedLocales`.\n */\nexport function resolveLocale(\n requested: string | null | undefined,\n supportedLocales: string[],\n defaultLocale?: string,\n): string | null {\n // An `Accept-Language` entry may carry a weight: `de-AT;q=0.9`.\n const tag = requested?.split(\";\")[0].trim();\n if (!tag || !looksLikeLocale(tag)) {\n return null;\n }\n\n const normalized = tag.replaceAll(\"_\", \"-\").toLowerCase();\n const exact = supportedLocales.find((l) => l.toLowerCase() === normalized);\n if (exact) {\n return exact;\n }\n\n const language = languageOf(tag);\n const sameLanguage = supportedLocales.filter((l) => languageOf(l) === language);\n if (sameLanguage.length === 0) {\n return null;\n }\n if (defaultLocale && sameLanguage.includes(defaultLocale)) {\n return defaultLocale;\n }\n return sameLanguage[0];\n}\n\n// RFC 9110 §12.4.2: a weight is 0–1 with at most three decimals.\nconst Q_VALUE = /^(?:0(?:\\.\\d{0,3})?|1(?:\\.0{0,3})?)$/;\n\ntype LanguageRange = { tag: string; q: number };\n\n/**\n * Parses an `Accept-Language` header into its ranges, most preferred first:\n * by weight, then by position. An entry with a malformed weight or tag is\n * skipped; `q=0` entries are kept (they mark a language as unacceptable).\n */\nfunction parseAcceptLanguage(header: string): LanguageRange[] {\n const ranges: (LanguageRange & { index: number })[] = [];\n for (const entry of header.split(\",\")) {\n const [rawTag, ...params] = entry.split(\";\");\n const tag = rawTag.trim();\n if (!tag || (tag !== \"*\" && !looksLikeLocale(tag))) {\n continue;\n }\n let q = 1;\n let valid = true;\n for (const param of params) {\n const [name, value = \"\"] = param.split(\"=\");\n if (name.trim().toLowerCase() !== \"q\") {\n continue;\n }\n const weight = value.trim();\n if (!Q_VALUE.test(weight)) {\n valid = false;\n break;\n }\n q = Number(weight);\n }\n if (valid) {\n ranges.push({ tag, q, index: ranges.length });\n }\n }\n return ranges.sort((a, b) => b.q - a.q || a.index - b.index);\n}\n\n/** Does the language range `range` (`de`, `de-AT`) cover `locale`? (RFC 4647 basic filtering) */\nfunction rangeCovers(range: string, locale: string): boolean {\n const r = range.replaceAll(\"_\", \"-\").toLowerCase();\n const l = locale.replaceAll(\"_\", \"-\").toLowerCase();\n return l === r || l.startsWith(`${r}-`);\n}\n\n/**\n * Picks the best of `supportedLocales` for a whole `Accept-Language` header,\n * or `null` when none fits.\n *\n * Entries are tried by `q` weight, highest first (ties keep header order), and\n * each is matched with {@link resolveLocale}, so `de-AT` falls back to `de`.\n * An entry with `q=0` rules out every supported locale it covers (`de;q=0`\n * rules out `de` and `de-DE`). A `*` entry, when nothing more specific fits,\n * resolves to `defaultLocale` (or the first supported locale) unless that is\n * ruled out. Malformed entries are skipped.\n *\n * ```ts\n * negotiateLocale(\"de-AT,de;q=0.9,en;q=0.5\", [\"en\", \"de\"], \"en\"); // \"de\"\n * negotiateLocale(\"fr\", [\"en\", \"de\"], \"en\"); // null\n * negotiateLocale(\"fr,*;q=0.1\", [\"en\", \"de\"], \"en\"); // \"en\"\n * ```\n */\nexport function negotiateLocale(\n acceptLanguage: string | null | undefined,\n supportedLocales: string[],\n defaultLocale?: string,\n): string | null {\n if (!acceptLanguage || supportedLocales.length === 0) {\n return null;\n }\n\n const ranges = parseAcceptLanguage(acceptLanguage);\n const excluded = ranges.filter((r) => r.q === 0 && r.tag !== \"*\").map((r) => r.tag);\n const candidates = supportedLocales.filter(\n (locale) => !excluded.some((range) => rangeCovers(range, locale)),\n );\n if (candidates.length === 0) {\n return null;\n }\n\n let wildcard = false;\n for (const { tag, q } of ranges) {\n if (q === 0) {\n continue;\n }\n if (tag === \"*\") {\n wildcard = true;\n continue;\n }\n const locale = resolveLocale(tag, candidates, defaultLocale);\n if (locale) {\n return locale;\n }\n }\n\n if (!wildcard) {\n return null;\n }\n return (defaultLocale && candidates.includes(defaultLocale) ? defaultLocale : candidates[0]) ?? null;\n}\n",
6
6
  "/**\n * Locale- and time-zone-aware formatting, shared by `useFormatter`, the\n * `format` property of a `useDictionary` result and `Lang.formatter()`.\n *\n * Dependency-free on purpose: components import it, so it must not pull in the\n * server facades.\n *\n * Why the time zone is pinned: a `Date` formatted with no `timeZone` uses the\n * runtime's zone, which is the server's during SSR and the viewer's in the\n * browser. The two disagree for anyone not sitting in the server's zone, so the\n * same instant can print a different hour, or a different day, on each side —\n * a hydration mismatch at best, a wrong date at worst. Every formatter here\n * carries one zone, resolved on the server and shipped with the page, so both\n * sides print the same text.\n */\n\nexport type DateInput = Date | number | string;\n\nexport interface FormatterInit {\n /** BCP 47 locale tag. */\n locale: string;\n /** IANA time zone, such as `UTC` or `Europe/Istanbul`. */\n timeZone: string;\n}\n\nexport interface Formatter {\n readonly locale: string;\n readonly timeZone: string;\n /** A date, `{ dateStyle: \"medium\" }` unless options are given. */\n date(value: DateInput, options?: Intl.DateTimeFormatOptions): string;\n /** A time of day, `{ timeStyle: \"short\" }` unless options are given. */\n time(value: DateInput, options?: Intl.DateTimeFormatOptions): string;\n /** Date and time, `{ dateStyle: \"medium\", timeStyle: \"short\" }` unless options are given. */\n dateTime(value: DateInput, options?: Intl.DateTimeFormatOptions): string;\n number(value: number | bigint, options?: Intl.NumberFormatOptions): string;\n relative(\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions,\n ): string;\n list(values: Iterable<string>, options?: Intl.ListFormatOptions): string;\n /** The CLDR plural category for `count`: `one`, `few`, `other`, … */\n plural(count: number, options?: Intl.PluralRulesOptions): Intl.LDMLPluralRule;\n /**\n * The cached `Intl.DateTimeFormat` behind `date`/`time`/`dateTime`, with the\n * formatter's zone applied. For `formatToParts` or `formatRange`.\n */\n dateTimeFormat(options?: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;\n}\n\n/** The zone used when the app configures none. */\nexport const DEFAULT_TIME_ZONE = \"UTC\";\n\n/**\n * Whether `timeZone` is an IANA zone (or offset) this runtime's `Intl` accepts.\n * An unknown zone makes `Intl.DateTimeFormat` throw a `RangeError`, so a zone\n * that comes from a cookie or a user record is checked before it is trusted.\n */\nexport function isValidTimeZone(timeZone: unknown): timeZone is string {\n if (typeof timeZone !== \"string\" || timeZone.length === 0) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone });\n return true;\n } catch {\n return false;\n }\n}\n\n// Constructing an `Intl` formatter is the expensive part — it resolves locale\n// data — so each one is built once per (kind, locale, options). Options are\n// keyed by their JSON; callers pass small literal objects, and a key order\n// difference only costs a duplicate entry, never a wrong result.\nconst cache = new Map<string, unknown>();\nconst CACHE_LIMIT = 500;\n\nfunction cached<T>(key: string, create: () => T): T {\n let value = cache.get(key) as T | undefined;\n if (value === undefined) {\n if (cache.size >= CACHE_LIMIT) {\n // Insertion order: drop the oldest. Unbounded user-driven option objects\n // (a currency per row) must not grow a long-lived server process forever.\n cache.delete(cache.keys().next().value!);\n }\n value = create();\n cache.set(key, value);\n }\n return value;\n}\n\nfunction toDate(value: DateInput): Date {\n return value instanceof Date ? value : new Date(value);\n}\n\nfunction hasDateTimeFields(options: Intl.DateTimeFormatOptions): boolean {\n return (\n options.dateStyle !== undefined ||\n options.timeStyle !== undefined ||\n options.weekday !== undefined ||\n options.era !== undefined ||\n options.year !== undefined ||\n options.month !== undefined ||\n options.day !== undefined ||\n options.dayPeriod !== undefined ||\n options.hour !== undefined ||\n options.minute !== undefined ||\n options.second !== undefined ||\n options.fractionalSecondDigits !== undefined ||\n options.timeZoneName !== undefined\n );\n}\n\nexport function createFormatter(init: FormatterInit): Formatter {\n const { locale, timeZone } = init;\n\n const dateTimeFormat = (options: Intl.DateTimeFormatOptions = {}) => {\n // `??`, not a spread: `{ timeZone: undefined }` would otherwise drop the\n // pinned zone and fall back to the runtime's, which is the bug this exists\n // to prevent.\n const resolved = { ...options, timeZone: options.timeZone ?? timeZone };\n return cached(`dt|${locale}|${JSON.stringify(resolved)}`, () => {\n return new Intl.DateTimeFormat(locale, resolved);\n });\n };\n\n const withDefaults = (\n options: Intl.DateTimeFormatOptions | undefined,\n defaults: Intl.DateTimeFormatOptions,\n ) => {\n if (options && hasDateTimeFields(options)) {\n return options;\n }\n // Options that only tweak (a `timeZone`, `hour12`) still get the default\n // fields; otherwise `{ timeZone }` alone would print a bare numeric date.\n return { ...defaults, ...options };\n };\n\n return {\n locale,\n timeZone,\n date(value, options) {\n return dateTimeFormat(withDefaults(options, { dateStyle: \"medium\" })).format(\n toDate(value),\n );\n },\n time(value, options) {\n return dateTimeFormat(withDefaults(options, { timeStyle: \"short\" })).format(\n toDate(value),\n );\n },\n dateTime(value, options) {\n return dateTimeFormat(\n withDefaults(options, { dateStyle: \"medium\", timeStyle: \"short\" }),\n ).format(toDate(value));\n },\n number(value, options = {}) {\n return cached(\n `n|${locale}|${JSON.stringify(options)}`,\n () => new Intl.NumberFormat(locale, options),\n ).format(value);\n },\n relative(value, unit, options = {}) {\n return cached(\n `r|${locale}|${JSON.stringify(options)}`,\n () => new Intl.RelativeTimeFormat(locale, options),\n ).format(value, unit);\n },\n list(values, options = {}) {\n return cached(\n `l|${locale}|${JSON.stringify(options)}`,\n () => new Intl.ListFormat(locale, options),\n ).format(values);\n },\n plural(count, options = {}) {\n return cached(\n `p|${locale}|${JSON.stringify(options)}`,\n () => new Intl.PluralRules(locale, options),\n ).select(count);\n },\n dateTimeFormat,\n };\n}\n",
7
- "import type { HttpRequest } from \"../http/HttpRequest\";\nimport type { Dictionary } from \"./Dictionary\";\nimport type { TranslationConfig } from \"./config\";\nimport { negotiateLocale, resolveLocale } from \"./resolveLocale\";\nimport {\n createFormatter,\n isValidTimeZone,\n type Formatter,\n} from \"./formatter\";\n\nexport class Translator {\n static token = \"translator\";\n\n translations = {};\n isEnabled = false;\n\n constructor(public config: Required<TranslationConfig>) {\n // Fail at boot rather than on the first page that prints a date: `Intl`\n // throws a `RangeError` for a zone it does not know.\n if (!isValidTimeZone(this.config.timeZone)) {\n throw new Error(\n `translation.timeZone: \"${String(this.config.timeZone)}\" is not a time zone this runtime knows. Use an IANA name such as \"UTC\" or \"Europe/Istanbul\".`,\n );\n }\n\n const translations = {};\n\n for (const [route, dicArray] of Object.entries(this.config.prefetch)) {\n for (const locale of this.config.supportedLocales) {\n if (!translations[locale]) {\n translations[locale] = {};\n }\n translations[locale][route] = {};\n for (const dic of dicArray) {\n translations[locale][route][dic.name] = {};\n for (const [key, value] of Object.entries(dic.dictionary)) {\n this.isEnabled = true;\n translations[locale][route][dic.name][key] = value[locale];\n }\n }\n }\n }\n this.translations = translations;\n }\n\n /**\n * Whether the app does locale-aware routing and rendering at all.\n *\n * `isEnabled` only means the legacy `prefetch` config has dictionaries to\n * serve. An app on `defineDictionary` has an empty `prefetch` and declares\n * its locales through `supportedLocales` alone, so gating on `isEnabled`\n * leaves it without locale detection or a locale URL prefix. Both the render\n * path and the redirect read this, because when they disagreed a migrated app\n * rendered a non-default locale at `/` with no redirect and no `Vary` — one\n * cache fill away from serving that document to everyone.\n */\n get isLocaleAware(): boolean {\n return this.isEnabled || this.config.supportedLocales.length > 0;\n }\n\n get supportedLocales(): string[] {\n return this.config.supportedLocales;\n }\n\n get defaultLocale(): string {\n return this.config.defaultLocale;\n }\n\n get components(): Record<string, Dictionary<any>> {\n return this.config.components;\n }\n\n /** The configured zone; `UTC` unless `translation.timeZone` says otherwise. */\n get timeZone(): string {\n return this.config.timeZone;\n }\n\n /**\n * The zone dates are formatted in for this request: `detectTimeZone`'s\n * answer when it gives a zone `Intl` knows, the configured zone otherwise.\n * A bad value from a cookie must not take the page down, so it is ignored\n * rather than thrown.\n */\n detectTimeZone(req: HttpRequest<any, any> | null | undefined): string {\n if (req) {\n const detected = this.config.detectTimeZone(req);\n if (isValidTimeZone(detected)) {\n return detected;\n }\n }\n return this.config.timeZone;\n }\n\n /**\n * A formatter for `locale` (the default locale when omitted) in `timeZone`\n * (the configured zone when omitted). For server code outside a request —\n * jobs, emails. Inside a request, `Lang.formatter()` picks up the request's\n * locale and zone.\n */\n formatter(locale?: string, timeZone?: string): Formatter {\n return createFormatter({\n locale: locale || this.defaultLocale,\n timeZone: isValidTimeZone(timeZone) ? timeZone : this.timeZone,\n });\n }\n\n onLocaleChange(locale: string): Promise<void> | void {\n return this.config.onLocaleChange(locale);\n }\n\n detectLocale(req: HttpRequest<any, any>) {\n const fallbackLocale =\n this.config.defaultLocale ?? this.config.supportedLocales[0] ?? \"en-US\";\n const resolve = (tag: string | null | undefined) =>\n resolveLocale(tag, this.config.supportedLocales, this.config.defaultLocale);\n\n const detectedLocale = resolve(this.config.detectLocale(req));\n if (detectedLocale) {\n return detectedLocale;\n }\n\n const previousLocale = resolve(req.cookies.get(\"i18n-locale\"));\n if (previousLocale) {\n return previousLocale;\n }\n\n // The best entry by `q` weight the app can serve, even by language alone\n // (`de-AT` → `de-DE`), wins.\n const acceptedLocale = negotiateLocale(\n req.headers.get(\"accept-language\"),\n this.config.supportedLocales,\n this.config.defaultLocale,\n );\n if (acceptedLocale) {\n return acceptedLocale;\n }\n\n return fallbackLocale;\n }\n\n getPageTranslations(locale: string, scope: string) {\n if (this.translations[locale][scope]) {\n return this.translations[locale][scope];\n }\n return {};\n }\n}\n"
7
+ "import type { HttpRequest } from \"../http/HttpRequest\";\nimport type { Dictionary } from \"./Dictionary\";\nimport type { TranslationConfig } from \"./config\";\nimport { negotiateLocale, resolveLocale } from \"./resolveLocale\";\nimport {\n createFormatter,\n isValidTimeZone,\n type Formatter,\n} from \"./formatter\";\n\nexport class Translator {\n static token = \"translator\";\n\n translations = {};\n isEnabled = false;\n\n constructor(public config: Required<TranslationConfig>) {\n // Fail at boot rather than on the first page that prints a date: `Intl`\n // throws a `RangeError` for a zone it does not know.\n if (!isValidTimeZone(this.config.timeZone)) {\n throw new Error(\n `translation.timeZone: \"${String(this.config.timeZone)}\" is not a time zone this runtime knows. Use an IANA name such as \"UTC\" or \"Europe/Istanbul\".`,\n );\n }\n\n const translations = {};\n\n for (const [route, dicArray] of Object.entries(this.config.prefetch)) {\n for (const locale of this.config.supportedLocales) {\n if (!translations[locale]) {\n translations[locale] = {};\n }\n translations[locale][route] = {};\n for (const dic of dicArray) {\n translations[locale][route][dic.name] = {};\n for (const [key, value] of Object.entries(dic.dictionary)) {\n this.isEnabled = true;\n translations[locale][route][dic.name][key] = value[locale];\n }\n }\n }\n }\n this.translations = translations;\n }\n\n /**\n * Whether the app does locale-aware routing and rendering at all.\n *\n * `isEnabled` only means the legacy `prefetch` config has dictionaries to\n * serve. An app on `defineDictionary` has an empty `prefetch` and declares\n * its locales through `supportedLocales` alone, so gating on `isEnabled`\n * leaves it without locale detection or a locale URL prefix. Both the render\n * path and the redirect read this, because when they disagreed a migrated app\n * rendered a non-default locale at `/` with no redirect and no `Vary` — one\n * cache fill away from serving that document to everyone.\n */\n get isLocaleAware(): boolean {\n return this.isEnabled || this.config.supportedLocales.length > 0;\n }\n\n get supportedLocales(): string[] {\n return this.config.supportedLocales;\n }\n\n get defaultLocale(): string {\n return this.config.defaultLocale;\n }\n\n get components(): Record<string, Dictionary<any>> {\n return this.config.components;\n }\n\n /** The configured zone; `UTC` unless `translation.timeZone` says otherwise. */\n get timeZone(): string {\n return this.config.timeZone;\n }\n\n /**\n * The zone dates are formatted in for this request: `detectTimeZone`'s\n * answer when it gives a zone `Intl` knows, the configured zone otherwise.\n * A bad value from a cookie must not take the page down, so it is ignored\n * rather than thrown.\n */\n detectTimeZone(req: HttpRequest<any, any> | null | undefined): string {\n if (req) {\n const detected = this.config.detectTimeZone(req);\n if (isValidTimeZone(detected)) {\n return detected;\n }\n }\n return this.config.timeZone;\n }\n\n /**\n * A formatter for `locale` (the default locale when omitted) in `timeZone`\n * (the configured zone when omitted). For server code outside a request —\n * jobs, emails. Inside a request, `Lang.formatter()` picks up the request's\n * locale and zone.\n */\n formatter(locale?: string, timeZone?: string): Formatter {\n return createFormatter({\n locale: locale || this.defaultLocale,\n timeZone: isValidTimeZone(timeZone) ? timeZone : this.timeZone,\n });\n }\n\n onLocaleChange(locale: string): Promise<void> | void {\n return this.config.onLocaleChange(locale);\n }\n\n detectLocale(req: HttpRequest<any, any>) {\n const fallbackLocale =\n this.config.defaultLocale ?? this.config.supportedLocales[0] ?? \"en-US\";\n const resolve = (tag: string | null | undefined) =>\n resolveLocale(tag, this.config.supportedLocales, this.config.defaultLocale);\n\n const detectedLocale = resolve(this.config.detectLocale(req));\n if (detectedLocale) {\n return detectedLocale;\n }\n\n const previousLocale = resolve(req.cookies.get(\"i18n-locale\"));\n if (previousLocale) {\n return previousLocale;\n }\n\n // The best entry by `q` weight the app can serve, even by language alone\n // (`de-AT` → `de-DE`), wins.\n const acceptedLocale = negotiateLocale(\n req.headers.get(\"accept-language\"),\n this.config.supportedLocales,\n this.config.defaultLocale,\n );\n if (acceptedLocale) {\n return acceptedLocale;\n }\n\n return fallbackLocale;\n }\n\n /**\n * The legacy `prefetch` dictionaries for `locale` on `scope`, or `{}` when\n * there are none: an app without translations, a locale it has none for, or\n * a page no dictionary is prefetched for (#1199).\n */\n getPageTranslations(locale: string, scope: string) {\n return this.translations[locale]?.[scope] ?? {};\n }\n}\n"
8
8
  ],
9
- "mappings": "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",
10
- "debugId": "242556F19B6A68E864756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "33583E8E3345EE8E64756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{U as C}from"./chunk-pqr01waj.js";import{V as A}from"./chunk-a02bmp0q.js";import{Ql as _}from"./chunk-vgxkt9vd.js";var S=_(C(),1),p=_(A(),1),N="AWS_ACCESS_KEY_ID",a="AWS_SECRET_ACCESS_KEY",i="AWS_SESSION_TOKEN",I="AWS_CREDENTIAL_EXPIRATION",d="AWS_CREDENTIAL_SCOPE",v="AWS_ACCOUNT_ID",T=(e)=>async()=>{e?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv");let o=process.env[N],r=process.env[a],n=process.env[i],s=process.env[I],t=process.env[d],E=process.env[v];if(o&&r){let c={accessKeyId:o,secretAccessKey:r,...n&&{sessionToken:n},...s&&{expiration:new Date(s)},...t&&{credentialScope:t},...E&&{accountId:E}};return S.setCredentialFeature(c,"CREDENTIALS_ENV_VARS","g"),c}throw new p.CredentialsProviderError("Unable to find environment variable credentials.",{logger:e?.logger})};export{N as a,a as b,i as c,I as d,d as e,v as f,T as g};
2
+ import{U as C}from"./chunk-v2pt8h42.js";import{V as A}from"./chunk-42b6zzg2.js";import{Yl as _}from"./chunk-zpqcawmq.js";var S=_(C(),1),p=_(A(),1),N="AWS_ACCESS_KEY_ID",a="AWS_SECRET_ACCESS_KEY",i="AWS_SESSION_TOKEN",I="AWS_CREDENTIAL_EXPIRATION",d="AWS_CREDENTIAL_SCOPE",v="AWS_ACCOUNT_ID",T=(e)=>async()=>{e?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv");let o=process.env[N],r=process.env[a],n=process.env[i],s=process.env[I],t=process.env[d],E=process.env[v];if(o&&r){let c={accessKeyId:o,secretAccessKey:r,...n&&{sessionToken:n},...s&&{expiration:new Date(s)},...t&&{credentialScope:t},...E&&{accountId:E}};return S.setCredentialFeature(c,"CREDENTIALS_ENV_VARS","g"),c}throw new p.CredentialsProviderError("Unable to find environment variable credentials.",{logger:e?.logger})};export{N as a,a as b,i as c,I as d,d as e,v as f,T as g};
3
3
 
4
- //# debugId=77CF8A84EEBEC11964756E2164756E21
4
+ //# debugId=F0D30A65FFF69B5964756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { CredentialsProviderError } from \"@smithy/property-provider\";\nexport const ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nexport const ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nexport const ENV_SESSION = \"AWS_SESSION_TOKEN\";\nexport const ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nexport const ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nexport const ENV_ACCOUNT_ID = \"AWS_ACCOUNT_ID\";\nexport const fromEnv = (init) => async () => {\n init?.logger?.debug(\"@aws-sdk/credential-provider-env - fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n const accountId = process.env[ENV_ACCOUNT_ID];\n if (accessKeyId && secretAccessKey) {\n const credentials = {\n accessKeyId,\n secretAccessKey,\n ...(sessionToken && { sessionToken }),\n ...(expiry && { expiration: new Date(expiry) }),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n setCredentialFeature(credentials, \"CREDENTIALS_ENV_VARS\", \"g\");\n return credentials;\n }\n throw new CredentialsProviderError(\"Unable to find environment variable credentials.\", { logger: init?.logger });\n};\n"
6
6
  ],
7
7
  "mappings": ";qIAAA,SACA,KACa,EAAU,oBACV,EAAa,wBACb,EAAc,oBACd,EAAiB,4BACjB,EAAuB,uBACvB,EAAiB,iBACjB,EAAU,CAAC,IAAS,SAAY,CACzC,GAAM,QAAQ,MAAM,4CAA4C,EAChE,IAAM,EAAc,QAAQ,IAAI,GAC1B,EAAkB,QAAQ,IAAI,GAC9B,EAAe,QAAQ,IAAI,GAC3B,EAAS,QAAQ,IAAI,GACrB,EAAkB,QAAQ,IAAI,GAC9B,EAAY,QAAQ,IAAI,GAC9B,GAAI,GAAe,EAAiB,CAChC,IAAM,EAAc,CAChB,cACA,qBACI,GAAgB,CAAE,cAAa,KAC/B,GAAU,CAAE,WAAY,IAAI,KAAK,CAAM,CAAE,KACzC,GAAmB,CAAE,iBAAgB,KACrC,GAAa,CAAE,WAAU,CACjC,EAEA,OADA,uBAAqB,EAAa,uBAAwB,GAAG,EACtD,EAEX,MAAM,IAAI,2BAAyB,mDAAoD,CAAE,OAAQ,GAAM,MAAO,CAAC",
8
- "debugId": "77CF8A84EEBEC11964756E2164756E21",
8
+ "debugId": "F0D30A65FFF69B5964756E2164756E21",
9
9
  "names": []
10
10
  }