gemi 0.167.0 → 0.169.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 (215) hide show
  1. package/dist/ai/Agent.d.ts +3 -5
  2. package/dist/ai/Agent.d.ts.map +1 -1
  3. package/dist/ai/AgentController.d.ts +16 -2
  4. package/dist/ai/AgentController.d.ts.map +1 -1
  5. package/dist/ai/Prompt.d.ts +15 -1
  6. package/dist/ai/Prompt.d.ts.map +1 -1
  7. package/dist/ai/index.d.ts +1 -1
  8. package/dist/ai/index.d.ts.map +1 -1
  9. package/dist/ai/index.js +32 -32
  10. package/dist/ai/index.js.map +4 -4
  11. package/dist/app/App.d.ts +3 -3
  12. package/dist/app/index.js +1 -1
  13. package/dist/bin/gemi.js +405 -376
  14. package/dist/bin/gemi.js.map +6 -5
  15. package/dist/bun/plugin.js +1 -1
  16. package/dist/bun/preload.js +1 -1
  17. package/dist/{chunk-eyv6hss6.js → chunk-0q65jzhv.js} +2 -2
  18. package/dist/{chunk-eyv6hss6.js.map → chunk-0q65jzhv.js.map} +1 -1
  19. package/dist/{chunk-p3qbym3v.js → chunk-0wet87jm.js} +2 -2
  20. package/dist/{chunk-p3qbym3v.js.map → chunk-0wet87jm.js.map} +1 -1
  21. package/dist/{chunk-4fzevafk.js → chunk-0wk992a5.js} +2 -2
  22. package/dist/{chunk-4fzevafk.js.map → chunk-0wk992a5.js.map} +1 -1
  23. package/dist/{chunk-q4vtjdea.js → chunk-17272ccy.js} +3 -3
  24. package/dist/{chunk-q4vtjdea.js.map → chunk-17272ccy.js.map} +1 -1
  25. package/dist/{chunk-w4at2d5d.js → chunk-1h6g1hkg.js} +2 -2
  26. package/dist/{chunk-w4at2d5d.js.map → chunk-1h6g1hkg.js.map} +1 -1
  27. package/dist/{chunk-hdt8cwsv.js → chunk-21hppqtb.js} +2 -2
  28. package/dist/{chunk-hdt8cwsv.js.map → chunk-21hppqtb.js.map} +1 -1
  29. package/dist/{chunk-qec3g4w3.js → chunk-2v7wq01w.js} +2 -2
  30. package/dist/{chunk-qec3g4w3.js.map → chunk-2v7wq01w.js.map} +1 -1
  31. package/dist/{chunk-z316fasf.js → chunk-2xtkh8bh.js} +19 -19
  32. package/dist/{chunk-z316fasf.js.map → chunk-2xtkh8bh.js.map} +3 -3
  33. package/dist/{chunk-0hfvwzd1.js → chunk-31np60bx.js} +2 -2
  34. package/dist/{chunk-0hfvwzd1.js.map → chunk-31np60bx.js.map} +1 -1
  35. package/dist/{chunk-mbkje42z.js → chunk-3682hkq0.js} +2 -2
  36. package/dist/{chunk-mbkje42z.js.map → chunk-3682hkq0.js.map} +1 -1
  37. package/dist/{chunk-fnj2hc5v.js → chunk-3rp908gn.js} +1 -1
  38. package/dist/{chunk-3xj1e3ns.js → chunk-44y62yav.js} +3 -3
  39. package/dist/{chunk-3xj1e3ns.js.map → chunk-44y62yav.js.map} +1 -1
  40. package/dist/{chunk-c3cdj9y7.js → chunk-4mtqbcc5.js} +2 -2
  41. package/dist/{chunk-c3cdj9y7.js.map → chunk-4mtqbcc5.js.map} +1 -1
  42. package/dist/{chunk-80703vks.js → chunk-4qpyz627.js} +2 -2
  43. package/dist/{chunk-80703vks.js.map → chunk-4qpyz627.js.map} +1 -1
  44. package/dist/{chunk-4rnpvajg.js → chunk-4tt14jnx.js} +2 -2
  45. package/dist/{chunk-4rnpvajg.js.map → chunk-4tt14jnx.js.map} +1 -1
  46. package/dist/{chunk-mcavkjh4.js → chunk-5aexecst.js} +2 -2
  47. package/dist/{chunk-mcavkjh4.js.map → chunk-5aexecst.js.map} +1 -1
  48. package/dist/{chunk-efjk5aq7.js → chunk-5n21z4n8.js} +2 -2
  49. package/dist/{chunk-efjk5aq7.js.map → chunk-5n21z4n8.js.map} +1 -1
  50. package/dist/{chunk-pk4drzc9.js → chunk-5nz46dyw.js} +2 -2
  51. package/dist/{chunk-pk4drzc9.js.map → chunk-5nz46dyw.js.map} +1 -1
  52. package/dist/{chunk-6tbs7yc1.js → chunk-6t1t7h05.js} +2 -2
  53. package/dist/{chunk-6tbs7yc1.js.map → chunk-6t1t7h05.js.map} +1 -1
  54. package/dist/{chunk-tms2g9at.js → chunk-777v6242.js} +1 -1
  55. package/dist/{chunk-kcgnjzqr.js → chunk-8b9ks729.js} +3 -3
  56. package/dist/{chunk-kcgnjzqr.js.map → chunk-8b9ks729.js.map} +1 -1
  57. package/dist/{chunk-8f4jkpv7.js → chunk-8hfyscnn.js} +1 -1
  58. package/dist/{chunk-4587ab6m.js → chunk-978pc27j.js} +2 -2
  59. package/dist/{chunk-4587ab6m.js.map → chunk-978pc27j.js.map} +1 -1
  60. package/dist/{chunk-y1ks8ahw.js → chunk-9aj6eavs.js} +2 -2
  61. package/dist/{chunk-y1ks8ahw.js.map → chunk-9aj6eavs.js.map} +1 -1
  62. package/dist/{chunk-xw5d66ec.js → chunk-9akefv1y.js} +2 -2
  63. package/dist/{chunk-xw5d66ec.js.map → chunk-9akefv1y.js.map} +1 -1
  64. package/dist/{chunk-y6x52vkb.js → chunk-9ft0ayhf.js} +2 -2
  65. package/dist/{chunk-y6x52vkb.js.map → chunk-9ft0ayhf.js.map} +1 -1
  66. package/dist/{chunk-m5hd632w.js → chunk-9wcv7e1a.js} +2 -2
  67. package/dist/{chunk-h5whhrds.js.map → chunk-9wcv7e1a.js.map} +1 -1
  68. package/dist/{chunk-c0dvdfm0.js → chunk-a9frf7ym.js} +2 -2
  69. package/dist/{chunk-c0dvdfm0.js.map → chunk-a9frf7ym.js.map} +1 -1
  70. package/dist/{chunk-ndj94vde.js → chunk-acmf790v.js} +2 -2
  71. package/dist/{chunk-ndj94vde.js.map → chunk-acmf790v.js.map} +1 -1
  72. package/dist/{chunk-2jk0f4sj.js → chunk-aj1jrwwh.js} +2 -2
  73. package/dist/{chunk-2jk0f4sj.js.map → chunk-aj1jrwwh.js.map} +1 -1
  74. package/dist/{chunk-36yp8364.js → chunk-c46vhvk4.js} +2 -2
  75. package/dist/{chunk-36yp8364.js.map → chunk-c46vhvk4.js.map} +1 -1
  76. package/dist/{chunk-tqgpahmn.js → chunk-d849rktz.js} +25 -25
  77. package/dist/{chunk-tqgpahmn.js.map → chunk-d849rktz.js.map} +6 -6
  78. package/dist/{chunk-5x9b1ema.js → chunk-df2zeevj.js} +2 -2
  79. package/dist/{chunk-5x9b1ema.js.map → chunk-df2zeevj.js.map} +1 -1
  80. package/dist/{chunk-ndyafsv6.js → chunk-drwjwtmj.js} +2 -2
  81. package/dist/{chunk-ndyafsv6.js.map → chunk-drwjwtmj.js.map} +1 -1
  82. package/dist/{chunk-wypncj52.js → chunk-ecdjbd2w.js} +3 -3
  83. package/dist/{chunk-wypncj52.js.map → chunk-ecdjbd2w.js.map} +1 -1
  84. package/dist/{chunk-6cw6tn57.js → chunk-embwksec.js} +2 -2
  85. package/dist/{chunk-6cw6tn57.js.map → chunk-embwksec.js.map} +1 -1
  86. package/dist/chunk-f4nanvkm.js +5 -0
  87. package/dist/{chunk-8v6y52et.js.map → chunk-f4nanvkm.js.map} +1 -1
  88. package/dist/{chunk-b8qfypzq.js → chunk-fb77hwk0.js} +3 -3
  89. package/dist/{chunk-b8qfypzq.js.map → chunk-fb77hwk0.js.map} +1 -1
  90. package/dist/{chunk-fva651jp.js → chunk-fcbgshf5.js} +2 -2
  91. package/dist/{chunk-fva651jp.js.map → chunk-fcbgshf5.js.map} +1 -1
  92. package/dist/{chunk-f6mwnw81.js → chunk-g1jfc50d.js} +3 -3
  93. package/dist/{chunk-f6mwnw81.js.map → chunk-g1jfc50d.js.map} +1 -1
  94. package/dist/{chunk-0psf0chk.js → chunk-g548q257.js} +2 -2
  95. package/dist/{chunk-0psf0chk.js.map → chunk-g548q257.js.map} +2 -2
  96. package/dist/{chunk-wjff0d08.js → chunk-gjwf07hy.js} +3 -3
  97. package/dist/{chunk-wjff0d08.js.map → chunk-gjwf07hy.js.map} +1 -1
  98. package/dist/{chunk-matvbghh.js → chunk-gv5r1rd7.js} +2 -2
  99. package/dist/{chunk-matvbghh.js.map → chunk-gv5r1rd7.js.map} +1 -1
  100. package/dist/{chunk-2ewe42dq.js → chunk-gwphn604.js} +3 -3
  101. package/dist/{chunk-2ewe42dq.js.map → chunk-gwphn604.js.map} +1 -1
  102. package/dist/{chunk-xed7yf6h.js → chunk-hgpvfhtp.js} +1 -1
  103. package/dist/{chunk-h5whhrds.js → chunk-hwpp9b7f.js} +2 -2
  104. package/dist/{chunk-m5hd632w.js.map → chunk-hwpp9b7f.js.map} +1 -1
  105. package/dist/{chunk-vqf4s99d.js → chunk-jd079awh.js} +2 -2
  106. package/dist/{chunk-vqf4s99d.js.map → chunk-jd079awh.js.map} +1 -1
  107. package/dist/{chunk-1ap3vcrr.js → chunk-jxx9mctk.js} +2 -2
  108. package/dist/{chunk-1ap3vcrr.js.map → chunk-jxx9mctk.js.map} +1 -1
  109. package/dist/{chunk-mj429x94.js → chunk-k87tqe29.js} +2 -2
  110. package/dist/{chunk-mj429x94.js.map → chunk-k87tqe29.js.map} +1 -1
  111. package/dist/{chunk-1k4rvfza.js → chunk-kbw6y0ag.js} +2 -2
  112. package/dist/{chunk-1k4rvfza.js.map → chunk-kbw6y0ag.js.map} +1 -1
  113. package/dist/{chunk-pr2enaz5.js → chunk-krdq5s4y.js} +2 -2
  114. package/dist/{chunk-pr2enaz5.js.map → chunk-krdq5s4y.js.map} +1 -1
  115. package/dist/{chunk-7ysw97gp.js → chunk-m6sj1q1q.js} +2 -2
  116. package/dist/{chunk-7ysw97gp.js.map → chunk-m6sj1q1q.js.map} +1 -1
  117. package/dist/{chunk-hgvt5084.js → chunk-m950vw4c.js} +2 -2
  118. package/dist/{chunk-hgvt5084.js.map → chunk-m950vw4c.js.map} +1 -1
  119. package/dist/{chunk-873k84dt.js → chunk-mm45shzv.js} +2 -2
  120. package/dist/{chunk-873k84dt.js.map → chunk-mm45shzv.js.map} +1 -1
  121. package/dist/{chunk-6q15sx3h.js → chunk-p56zntmt.js} +3 -3
  122. package/dist/{chunk-6q15sx3h.js.map → chunk-p56zntmt.js.map} +1 -1
  123. package/dist/{chunk-p97w2388.js → chunk-q3511sb5.js} +2 -2
  124. package/dist/{chunk-p97w2388.js.map → chunk-q3511sb5.js.map} +1 -1
  125. package/dist/{chunk-kfdy4vv1.js → chunk-q788x8pm.js} +2 -2
  126. package/dist/{chunk-kfdy4vv1.js.map → chunk-q788x8pm.js.map} +1 -1
  127. package/dist/{chunk-23670kw5.js → chunk-rpdekb8t.js} +2 -2
  128. package/dist/{chunk-23670kw5.js.map → chunk-rpdekb8t.js.map} +1 -1
  129. package/dist/{chunk-j7k0nzqz.js → chunk-s4fb4njt.js} +2 -2
  130. package/dist/{chunk-j7k0nzqz.js.map → chunk-s4fb4njt.js.map} +1 -1
  131. package/dist/{chunk-7yh908jj.js → chunk-s71e6k9m.js} +3 -3
  132. package/dist/{chunk-7yh908jj.js.map → chunk-s71e6k9m.js.map} +1 -1
  133. package/dist/{chunk-6eb6jgdv.js → chunk-sdn3dmpp.js} +4 -4
  134. package/dist/{chunk-6eb6jgdv.js.map → chunk-sdn3dmpp.js.map} +1 -1
  135. package/dist/{chunk-qnv9w5g5.js → chunk-skv12k0x.js} +2 -2
  136. package/dist/{chunk-qnv9w5g5.js.map → chunk-skv12k0x.js.map} +1 -1
  137. package/dist/{chunk-fxd7pqk3.js → chunk-sp77zwpn.js} +2 -2
  138. package/dist/{chunk-fxd7pqk3.js.map → chunk-sp77zwpn.js.map} +1 -1
  139. package/dist/{chunk-82jhqxx7.js → chunk-sv86v56c.js} +3 -3
  140. package/dist/{chunk-82jhqxx7.js.map → chunk-sv86v56c.js.map} +1 -1
  141. package/dist/{chunk-bym06a64.js → chunk-sxf94q13.js} +2 -2
  142. package/dist/{chunk-bym06a64.js.map → chunk-sxf94q13.js.map} +1 -1
  143. package/dist/{chunk-pd3qbf8r.js → chunk-ta2wsjz6.js} +2 -2
  144. package/dist/{chunk-pd3qbf8r.js.map → chunk-ta2wsjz6.js.map} +1 -1
  145. package/dist/{chunk-58k1zstz.js → chunk-thbs63gy.js} +1 -1
  146. package/dist/{chunk-71prz4rp.js → chunk-vfvjfw5k.js} +2 -2
  147. package/dist/{chunk-71prz4rp.js.map → chunk-vfvjfw5k.js.map} +1 -1
  148. package/dist/{chunk-sca3tpce.js → chunk-vnk4vaer.js} +3 -3
  149. package/dist/{chunk-sca3tpce.js.map → chunk-vnk4vaer.js.map} +1 -1
  150. package/dist/{chunk-rzqxkm9r.js → chunk-wp9hw3we.js} +2 -2
  151. package/dist/{chunk-rzqxkm9r.js.map → chunk-wp9hw3we.js.map} +1 -1
  152. package/dist/{chunk-4w9gbe11.js → chunk-wt1yzzbw.js} +1 -1
  153. package/dist/{chunk-d29dcs3e.js → chunk-xkas0yp8.js} +3 -3
  154. package/dist/{chunk-d29dcs3e.js.map → chunk-xkas0yp8.js.map} +1 -1
  155. package/dist/{chunk-j1yhtwsk.js → chunk-y3s05q6b.js} +2 -2
  156. package/dist/{chunk-j1yhtwsk.js.map → chunk-y3s05q6b.js.map} +1 -1
  157. package/dist/{chunk-ndawdgtt.js → chunk-ys8nk9ga.js} +3 -3
  158. package/dist/{chunk-ndawdgtt.js.map → chunk-ys8nk9ga.js.map} +3 -3
  159. package/dist/{chunk-0gzqhjyg.js → chunk-z4dhd5pk.js} +2 -2
  160. package/dist/{chunk-0gzqhjyg.js.map → chunk-z4dhd5pk.js.map} +1 -1
  161. package/dist/{chunk-xxbkp90v.js → chunk-z5g56ds0.js} +3 -3
  162. package/dist/{chunk-xxbkp90v.js.map → chunk-z5g56ds0.js.map} +1 -1
  163. package/dist/{chunk-bzrhc7q3.js → chunk-zqptpk90.js} +2 -2
  164. package/dist/{chunk-bzrhc7q3.js.map → chunk-zqptpk90.js.map} +1 -1
  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/index.js +2 -2
  179. package/dist/http/index.js.map +1 -1
  180. package/dist/http/requestDomain.d.ts.map +1 -1
  181. package/dist/i18n/dictionaryRuntime.js +2 -2
  182. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  183. package/dist/i18n/index.js +2 -2
  184. package/dist/i18n/index.js.map +1 -1
  185. package/dist/kernel/index.js +2 -2
  186. package/dist/kernel/index.js.map +1 -1
  187. package/dist/orm/index.js +2 -2
  188. package/dist/orm/index.js.map +1 -1
  189. package/dist/probe/index.js +2 -2
  190. package/dist/probe/index.js.map +1 -1
  191. package/dist/server/forwardedFor.d.ts +3 -3
  192. package/dist/server/index.js +2 -2
  193. package/dist/server/index.js.map +1 -1
  194. package/dist/services/index.js +2 -2
  195. package/dist/services/index.js.map +1 -1
  196. package/dist/services/queue/work.js +2 -2
  197. package/dist/services/queue/work.js.map +1 -1
  198. package/dist/services/router/DomainResolver.d.ts +20 -9
  199. package/dist/services/router/DomainResolver.d.ts.map +1 -1
  200. package/dist/services/router/DomainRouter.d.ts +2 -1
  201. package/dist/services/router/DomainRouter.d.ts.map +1 -1
  202. package/dist/services/router/config.d.ts +30 -1
  203. package/dist/services/router/config.d.ts.map +1 -1
  204. package/dist/stats/route-table.js +1 -1
  205. package/dist/support/index.js +2 -2
  206. package/dist/support/index.js.map +1 -1
  207. package/dist/vitest/index.js +1 -1
  208. package/package.json +1 -1
  209. package/dist/chunk-8v6y52et.js +0 -5
  210. /package/dist/{chunk-fnj2hc5v.js.map → chunk-3rp908gn.js.map} +0 -0
  211. /package/dist/{chunk-tms2g9at.js.map → chunk-777v6242.js.map} +0 -0
  212. /package/dist/{chunk-8f4jkpv7.js.map → chunk-8hfyscnn.js.map} +0 -0
  213. /package/dist/{chunk-xed7yf6h.js.map → chunk-hgpvfhtp.js.map} +0 -0
  214. /package/dist/{chunk-58k1zstz.js.map → chunk-thbs63gy.js.map} +0 -0
  215. /package/dist/{chunk-4w9gbe11.js.map → chunk-wt1yzzbw.js.map} +0 -0
@@ -43,7 +43,8 @@ export declare class DomainRouter {
43
43
  /**
44
44
  * Makes the address a proven proxy names the one the rest of gemi reads: the
45
45
  * only entry of `X-Forwarded-For`, with `X-Real-IP` dropped. The proxy is
46
- * `route.domains.trustProxy` (`clientIpHeader` + `secret`) or, failing that,
46
+ * the first `route.domains.trustProxy` entry whose secret matches (and that
47
+ * names the client in its `clientIpHeader`) or, failing that,
47
48
  * `GEMI_CLIENT_IP_HEADER` + `GEMI_PROXY_SECRET_HEADER`/`GEMI_PROXY_SECRET`.
48
49
  * A request without the secret keeps the address `GEMI_TRUST_PROXY` settled
49
50
  * on. Idempotent. Lives here so the secret is withheld from `proxy()` routes
@@ -1 +1 @@
1
- {"version":3,"file":"DomainRouter.d.ts","sourceRoot":"","sources":["../../../services/router/DomainRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,cAAc,EAId,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAsB,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEnG,OAAO,EAAE,KAAK,mBAAmB,EAAyB,MAAM,2BAA2B,CAAC;AAE5F;;;;GAIG;AACH,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,kBAAkB,CAAC;IACxB,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,MAAM,CAAC,KAAK,SAAoB;IAEhC,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,wFAAwF;IACxF,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAG7D,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE;QACN,GAAG,EAAE,cAAc,CAAC;QACpB,IAAI,EAAE,eAAe,CAAC;QACtB,uFAAuF;QACvF,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;KAC5C;IAwBH;;;;;;;;OAQG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAejC;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiB5D;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBjD,kEAAkE;IAClE,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,iBAAiB;IAI7D,mGAAmG;IACnG,eAAe,IAAI,mBAAmB,EAAE;IAIxC;;;;;OAKG;IACH,UAAU,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC;CAUlE"}
1
+ {"version":3,"file":"DomainRouter.d.ts","sourceRoot":"","sources":["../../../services/router/DomainRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,cAAc,EAId,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAsB,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEnG,OAAO,EAAE,KAAK,mBAAmB,EAAyB,MAAM,2BAA2B,CAAC;AAE5F;;;;GAIG;AACH,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,kBAAkB,CAAC;IACxB,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,MAAM,CAAC,KAAK,SAAoB;IAEhC,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,wFAAwF;IACxF,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAG7D,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE;QACN,GAAG,EAAE,cAAc,CAAC;QACpB,IAAI,EAAE,eAAe,CAAC;QACtB,uFAAuF;QACvF,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;KAC5C;IAwBH;;;;;;;;;OASG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAejC;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAmB5D;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBjD,kEAAkE;IAClE,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,iBAAiB;IAI7D,mGAAmG;IACnG,eAAe,IAAI,mBAAmB,EAAE;IAIxC;;;;;OAKG;IACH,UAAU,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC;CAUlE"}
@@ -224,6 +224,30 @@ export interface TrustProxyConfig {
224
224
  value: string;
225
225
  };
226
226
  }
227
+ /**
228
+ * One entry of `route.domains.trustProxy` in its list form: a proxy that
229
+ * proves itself with a secret of its own. Unlike the single-object form,
230
+ * `secret` is required, and `hostHeader` has no default — an entry without
231
+ * one only names the client's address and never moves the host.
232
+ */
233
+ export interface TrustedProxyConfig {
234
+ /**
235
+ * The header this proxy writes the client's host into. Left out, a request
236
+ * this entry claims is routed by its own `Host`.
237
+ */
238
+ hostHeader?: string;
239
+ /** The header this proxy writes the client's IP address into. See {@link TrustProxyConfig.clientIpHeader}. */
240
+ clientIpHeader?: string;
241
+ /**
242
+ * What proves this proxy sent the request: a header and the value it must
243
+ * carry, at least 16 characters, compared in constant time and withheld
244
+ * from `proxy()` upstreams. Each entry needs a secret value of its own.
245
+ */
246
+ secret: {
247
+ header: string;
248
+ value: string;
249
+ };
250
+ }
227
251
  export interface DomainsConfig {
228
252
  /**
229
253
  * The apex the subdomains hang off, e.g. `"example.com"` — `"localhost"` in
@@ -240,9 +264,14 @@ export interface DomainsConfig {
240
264
  * trusting it depend on a shared secret the proxy sends, and can name a
241
265
  * header that carries the client's IP address — see {@link TrustProxyConfig}.
242
266
  *
267
+ * A list trusts several proxies, each proven by its own secret: on each
268
+ * request the first entry whose secret header is present and matches
269
+ * decides both the host and the client's address, and the others are not
270
+ * consulted. See {@link TrustedProxyConfig}.
271
+ *
243
272
  * The scheme is read from `X-Forwarded-Proto` whether or not this is set.
244
273
  */
245
- trustProxy?: boolean | TrustProxyConfig;
274
+ trustProxy?: boolean | TrustProxyConfig | TrustedProxyConfig[];
246
275
  groups?: DomainGroupConfig[];
247
276
  custom?: CustomDomainConfig;
248
277
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../services/router/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../services/router/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import"../chunk-m5hd632w.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-9wcv7e1a.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{ge as Y}from"../chunk-bzrhc7q3.js";import{$j as M}from"../chunk-c0dvdfm0.js";import{bl as P,dl as R}from"../chunk-kcgnjzqr.js";import"../chunk-eyv6hss6.js";import{tl as Q,ul as U,vl as V,wl as W}from"../chunk-23670kw5.js";import"../chunk-m5hd632w.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{he as Y}from"../chunk-zqptpk90.js";import{ak as M}from"../chunk-a9frf7ym.js";import{cl as P,el as R}from"../chunk-8b9ks729.js";import"../chunk-0q65jzhv.js";import{ul as Q,vl as U,wl as V,xl as W}from"../chunk-rpdekb8t.js";import"../chunk-9wcv7e1a.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=E6F2883FDE59B9B664756E2164756E21
4
+ //# debugId=9719323EC3945ADE64756E2164756E21
@@ -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": "E6F2883FDE59B9B664756E2164756E21",
9
+ "debugId": "9719323EC3945ADE64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{ga as B,ha as D}from"../chunk-6q15sx3h.js";import"../chunk-pk4drzc9.js";import"../chunk-rzqxkm9r.js";import{Ba as J}from"../chunk-y6x52vkb.js";import"../chunk-fxd7pqk3.js";import"../chunk-m5hd632w.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-p56zntmt.js";import"../chunk-5nz46dyw.js";import"../chunk-wp9hw3we.js";import{Ba as J}from"../chunk-9ft0ayhf.js";import"../chunk-sp77zwpn.js";import"../chunk-9wcv7e1a.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
4
  //# debugId=CE19A4044ADA908764756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemi",
3
- "version": "0.167.0",
3
+ "version": "0.169.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "Enes Tufekci <enes@gemijs.dev>",
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{fe as o}from"./chunk-f6mwnw81.js";import{ge as i}from"./chunk-bzrhc7q3.js";import{$j as t}from"./chunk-c0dvdfm0.js";import{$k as r}from"./chunk-71prz4rp.js";class n extends i{register(){this.app.singleton(r,()=>new r(t(o(),this.app.config.get("translation",{}))))}}
3
- export{n as bb};
4
-
5
- //# debugId=D93400955383164464756E2164756E21