gemi 0.122.0 → 0.123.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 (297) hide show
  1. package/dist/ai/index.js +2 -2
  2. package/dist/ai/index.js.map +1 -1
  3. package/dist/app/App.d.ts +9 -0
  4. package/dist/app/App.d.ts.map +1 -1
  5. package/dist/app/index.js +1 -1
  6. package/dist/auth/AuthController.d.ts.map +1 -1
  7. package/dist/bin/gemi.js +4 -1
  8. package/dist/bin/gemi.js.map +3 -3
  9. package/dist/bun/plugin.js +1 -1
  10. package/dist/bun/preload.js +1 -1
  11. package/dist/{chunk-dwedx1jb.js → chunk-08fcqny0.js} +3 -3
  12. package/dist/{chunk-dwedx1jb.js.map → chunk-08fcqny0.js.map} +1 -1
  13. package/dist/{chunk-vx7hvyvq.js → chunk-0qmc7snf.js} +2 -2
  14. package/dist/{chunk-vx7hvyvq.js.map → chunk-0qmc7snf.js.map} +1 -1
  15. package/dist/{chunk-qy8c0gzr.js → chunk-0tc0j3pf.js} +2 -2
  16. package/dist/{chunk-qy8c0gzr.js.map → chunk-0tc0j3pf.js.map} +1 -1
  17. package/dist/{chunk-meg8rtr6.js → chunk-1f1sb3w7.js} +2 -2
  18. package/dist/{chunk-meg8rtr6.js.map → chunk-1f1sb3w7.js.map} +1 -1
  19. package/dist/{chunk-d5f1m3d2.js → chunk-1kdga1b2.js} +2 -2
  20. package/dist/{chunk-d5f1m3d2.js.map → chunk-1kdga1b2.js.map} +1 -1
  21. package/dist/{chunk-48gmyaxc.js → chunk-2amj1eyp.js} +2 -2
  22. package/dist/{chunk-48gmyaxc.js.map → chunk-2amj1eyp.js.map} +1 -1
  23. package/dist/chunk-2vc72qez.js +9 -0
  24. package/dist/chunk-2vc72qez.js.map +10 -0
  25. package/dist/{chunk-9xyxbxgk.js → chunk-30xxc6r7.js} +2 -2
  26. package/dist/{chunk-9xyxbxgk.js.map → chunk-30xxc6r7.js.map} +1 -1
  27. package/dist/chunk-39dx7xrz.js +10 -0
  28. package/dist/{chunk-dyp0wg9e.js.map → chunk-39dx7xrz.js.map} +8 -4
  29. package/dist/{chunk-dhbgrv58.js → chunk-4qpypa3h.js} +1 -1
  30. package/dist/{chunk-wqe47c0j.js → chunk-52xkw2bs.js} +2 -2
  31. package/dist/{chunk-wqe47c0j.js.map → chunk-52xkw2bs.js.map} +1 -1
  32. package/dist/{chunk-3gsv1vv1.js → chunk-53hc0ah1.js} +2 -2
  33. package/dist/{chunk-3gsv1vv1.js.map → chunk-53hc0ah1.js.map} +1 -1
  34. package/dist/{chunk-qsz9241c.js → chunk-58ffbwdc.js} +2 -2
  35. package/dist/{chunk-qsz9241c.js.map → chunk-58ffbwdc.js.map} +1 -1
  36. package/dist/{chunk-0ejjgzwc.js → chunk-5a4qbtez.js} +2 -2
  37. package/dist/{chunk-0ejjgzwc.js.map → chunk-5a4qbtez.js.map} +1 -1
  38. package/dist/{chunk-7mmw0jr2.js → chunk-675kzd7z.js} +2 -2
  39. package/dist/{chunk-7mmw0jr2.js.map → chunk-675kzd7z.js.map} +1 -1
  40. package/dist/{chunk-dedqr5wb.js → chunk-6gjvqtcp.js} +2 -2
  41. package/dist/{chunk-dedqr5wb.js.map → chunk-6gjvqtcp.js.map} +1 -1
  42. package/dist/{chunk-6yhpprzs.js → chunk-6pxavyh3.js} +2 -2
  43. package/dist/{chunk-6yhpprzs.js.map → chunk-6pxavyh3.js.map} +1 -1
  44. package/dist/{chunk-h43jp8ws.js → chunk-73v34hw8.js} +2 -2
  45. package/dist/{chunk-h43jp8ws.js.map → chunk-73v34hw8.js.map} +1 -1
  46. package/dist/{chunk-wjkh2gem.js → chunk-8x73yyfs.js} +1 -1
  47. package/dist/{chunk-yds7zwc3.js → chunk-96a1459v.js} +2 -2
  48. package/dist/{chunk-yds7zwc3.js.map → chunk-96a1459v.js.map} +1 -1
  49. package/dist/{chunk-d2c3947c.js → chunk-9a9ef0f1.js} +2 -2
  50. package/dist/{chunk-d2c3947c.js.map → chunk-9a9ef0f1.js.map} +1 -1
  51. package/dist/{chunk-ep0baa9g.js → chunk-9p7eq7bz.js} +2 -2
  52. package/dist/{chunk-ep0baa9g.js.map → chunk-9p7eq7bz.js.map} +1 -1
  53. package/dist/chunk-9t08wbkd.js +58 -0
  54. package/dist/{chunk-3rvn9a76.js.map → chunk-9t08wbkd.js.map} +3 -3
  55. package/dist/{chunk-pn2x59ge.js → chunk-aafanq8n.js} +3 -3
  56. package/dist/{chunk-pn2x59ge.js.map → chunk-aafanq8n.js.map} +1 -1
  57. package/dist/{chunk-tewhms9w.js → chunk-ay8nat73.js} +2 -2
  58. package/dist/{chunk-tewhms9w.js.map → chunk-ay8nat73.js.map} +1 -1
  59. package/dist/{chunk-shfe0b22.js → chunk-bk2aheea.js} +2 -2
  60. package/dist/{chunk-shfe0b22.js.map → chunk-bk2aheea.js.map} +1 -1
  61. package/dist/{chunk-mr94nfp1.js → chunk-d0wr9jk4.js} +3 -3
  62. package/dist/{chunk-mr94nfp1.js.map → chunk-d0wr9jk4.js.map} +1 -1
  63. package/dist/chunk-d3ywmeb7.js +4 -0
  64. package/dist/chunk-d3ywmeb7.js.map +10 -0
  65. package/dist/{chunk-zefs2b6h.js → chunk-de7hxe73.js} +2 -2
  66. package/dist/{chunk-zefs2b6h.js.map → chunk-de7hxe73.js.map} +1 -1
  67. package/dist/{chunk-er8acmch.js → chunk-dmj6ysym.js} +2 -2
  68. package/dist/{chunk-er8acmch.js.map → chunk-dmj6ysym.js.map} +1 -1
  69. package/dist/{chunk-rhek27sj.js → chunk-ebx5hnqn.js} +3 -3
  70. package/dist/{chunk-rhek27sj.js.map → chunk-ebx5hnqn.js.map} +1 -1
  71. package/dist/chunk-eevna943.js +5 -0
  72. package/dist/chunk-eevna943.js.map +10 -0
  73. package/dist/{chunk-9rr5h818.js → chunk-enta97jb.js} +3 -3
  74. package/dist/{chunk-9rr5h818.js.map → chunk-enta97jb.js.map} +1 -1
  75. package/dist/{chunk-s5k3yq6t.js → chunk-f1thqe6j.js} +2 -2
  76. package/dist/{chunk-s5k3yq6t.js.map → chunk-f1thqe6j.js.map} +1 -1
  77. package/dist/{chunk-zrcd9hxr.js → chunk-fsy344zb.js} +2 -2
  78. package/dist/{chunk-zrcd9hxr.js.map → chunk-fsy344zb.js.map} +1 -1
  79. package/dist/{chunk-gemzbw7f.js → chunk-fxxbwyce.js} +2 -2
  80. package/dist/{chunk-gemzbw7f.js.map → chunk-fxxbwyce.js.map} +1 -1
  81. package/dist/{chunk-1wnnkde0.js → chunk-fyk07w01.js} +3 -3
  82. package/dist/{chunk-1wnnkde0.js.map → chunk-fyk07w01.js.map} +1 -1
  83. package/dist/chunk-gvp6brdt.js +57 -0
  84. package/dist/{chunk-3s21p9n2.js.map → chunk-gvp6brdt.js.map} +19 -9
  85. package/dist/{chunk-7g649j8h.js → chunk-gwnmgkq5.js} +2 -2
  86. package/dist/{chunk-7g649j8h.js.map → chunk-gwnmgkq5.js.map} +1 -1
  87. package/dist/{chunk-51w5ktv2.js → chunk-h76mddt3.js} +2 -2
  88. package/dist/{chunk-51w5ktv2.js.map → chunk-h76mddt3.js.map} +1 -1
  89. package/dist/{chunk-nz8z8jr1.js → chunk-hnrzm5pf.js} +3 -3
  90. package/dist/{chunk-nz8z8jr1.js.map → chunk-hnrzm5pf.js.map} +1 -1
  91. package/dist/{chunk-3wnghdsx.js → chunk-hs88b8gt.js} +2 -2
  92. package/dist/{chunk-3wnghdsx.js.map → chunk-hs88b8gt.js.map} +1 -1
  93. package/dist/{chunk-0k02tza1.js → chunk-j0cnsgjq.js} +1 -1
  94. package/dist/{chunk-pemhmjzp.js → chunk-j8vc3bze.js} +3 -3
  95. package/dist/{chunk-pemhmjzp.js.map → chunk-j8vc3bze.js.map} +1 -1
  96. package/dist/{chunk-471htqmz.js → chunk-k17wx7gz.js} +2 -2
  97. package/dist/{chunk-471htqmz.js.map → chunk-k17wx7gz.js.map} +1 -1
  98. package/dist/{chunk-m83zm86m.js → chunk-kc924zjz.js} +2 -2
  99. package/dist/{chunk-m83zm86m.js.map → chunk-kc924zjz.js.map} +1 -1
  100. package/dist/{chunk-5nj94s66.js → chunk-kdjhgtp9.js} +4 -4
  101. package/dist/{chunk-5nj94s66.js.map → chunk-kdjhgtp9.js.map} +1 -1
  102. package/dist/{chunk-32n8t8x6.js → chunk-kvas36p6.js} +2 -2
  103. package/dist/{chunk-32n8t8x6.js.map → chunk-kvas36p6.js.map} +1 -1
  104. package/dist/{chunk-4fx8p02c.js → chunk-kzstewtm.js} +2 -2
  105. package/dist/{chunk-4fx8p02c.js.map → chunk-kzstewtm.js.map} +1 -1
  106. package/dist/{chunk-gc2dz11k.js → chunk-mxbtcaed.js} +2 -2
  107. package/dist/{chunk-gc2dz11k.js.map → chunk-mxbtcaed.js.map} +1 -1
  108. package/dist/{chunk-cca0grq3.js → chunk-n1a2zj5z.js} +2 -2
  109. package/dist/{chunk-cca0grq3.js.map → chunk-n1a2zj5z.js.map} +1 -1
  110. package/dist/{chunk-0yj0s1pn.js → chunk-nf608sb1.js} +2 -2
  111. package/dist/{chunk-0yj0s1pn.js.map → chunk-nf608sb1.js.map} +1 -1
  112. package/dist/{chunk-19dpzp4y.js → chunk-nvngb4ed.js} +3 -3
  113. package/dist/{chunk-19dpzp4y.js.map → chunk-nvngb4ed.js.map} +1 -1
  114. package/dist/{chunk-cskqet01.js → chunk-pfm9ngch.js} +2 -2
  115. package/dist/{chunk-cskqet01.js.map → chunk-pfm9ngch.js.map} +1 -1
  116. package/dist/{chunk-fenc5tpv.js → chunk-q1e3q01h.js} +2 -2
  117. package/dist/{chunk-fenc5tpv.js.map → chunk-q1e3q01h.js.map} +1 -1
  118. package/dist/{chunk-2c0s0561.js → chunk-qen6587t.js} +2 -2
  119. package/dist/{chunk-2c0s0561.js.map → chunk-qen6587t.js.map} +1 -1
  120. package/dist/{chunk-r01aqf0q.js → chunk-r5tadf14.js} +2 -2
  121. package/dist/{chunk-r01aqf0q.js.map → chunk-r5tadf14.js.map} +1 -1
  122. package/dist/{chunk-cvr5624r.js → chunk-rjm1kj8n.js} +1 -1
  123. package/dist/{chunk-jaa6xkeh.js → chunk-rjtmgbay.js} +2 -2
  124. package/dist/{chunk-jaa6xkeh.js.map → chunk-rjtmgbay.js.map} +1 -1
  125. package/dist/{chunk-rhvc1axc.js → chunk-rkgsvsrj.js} +2 -2
  126. package/dist/{chunk-rhvc1axc.js.map → chunk-rkgsvsrj.js.map} +1 -1
  127. package/dist/{chunk-m53fgf20.js → chunk-s5jxc63j.js} +3 -3
  128. package/dist/{chunk-m53fgf20.js.map → chunk-s5jxc63j.js.map} +1 -1
  129. package/dist/{chunk-5tdxbwzg.js → chunk-sxa70wgn.js} +3 -3
  130. package/dist/{chunk-5tdxbwzg.js.map → chunk-sxa70wgn.js.map} +1 -1
  131. package/dist/chunk-tazvfppr.js +5 -0
  132. package/dist/{chunk-htgmy3x7.js.map → chunk-tazvfppr.js.map} +1 -1
  133. package/dist/{chunk-gy81nd9a.js → chunk-vd6zn8c4.js} +2 -2
  134. package/dist/{chunk-gy81nd9a.js.map → chunk-vd6zn8c4.js.map} +1 -1
  135. package/dist/chunk-vpgbn494.js +24 -0
  136. package/dist/{chunk-2yw4yezc.js.map → chunk-vpgbn494.js.map} +3 -3
  137. package/dist/{chunk-7ftj43vp.js → chunk-vwnd4jb5.js} +2 -2
  138. package/dist/{chunk-7ftj43vp.js.map → chunk-vwnd4jb5.js.map} +1 -1
  139. package/dist/{chunk-c0v61fp5.js → chunk-w0jfqnw9.js} +2 -2
  140. package/dist/{chunk-c0v61fp5.js.map → chunk-w0jfqnw9.js.map} +1 -1
  141. package/dist/{chunk-65beps2q.js → chunk-w61sphn5.js} +3 -3
  142. package/dist/{chunk-65beps2q.js.map → chunk-w61sphn5.js.map} +1 -1
  143. package/dist/{chunk-zg6hmc48.js → chunk-wqharhrp.js} +1 -1
  144. package/dist/{chunk-sx340k85.js → chunk-x0jahbqj.js} +2 -2
  145. package/dist/{chunk-sx340k85.js.map → chunk-x0jahbqj.js.map} +1 -1
  146. package/dist/{chunk-y6wt5b6t.js → chunk-xhmtph39.js} +1 -1
  147. package/dist/{chunk-c7qs1xp3.js → chunk-y67evsdy.js} +2 -2
  148. package/dist/{chunk-c7qs1xp3.js.map → chunk-y67evsdy.js.map} +1 -1
  149. package/dist/{chunk-krk7mcgm.js → chunk-ycsrpf47.js} +3 -3
  150. package/dist/{chunk-krk7mcgm.js.map → chunk-ycsrpf47.js.map} +1 -1
  151. package/dist/{chunk-9d2d08qm.js → chunk-ywgvxx35.js} +2 -2
  152. package/dist/{chunk-9d2d08qm.js.map → chunk-ywgvxx35.js.map} +1 -1
  153. package/dist/{chunk-4acpw92g.js → chunk-z23h4s1a.js} +3 -3
  154. package/dist/{chunk-4acpw92g.js.map → chunk-z23h4s1a.js.map} +1 -1
  155. package/dist/{chunk-tk135gmj.js → chunk-zjej5vqh.js} +3 -3
  156. package/dist/{chunk-tk135gmj.js.map → chunk-zjej5vqh.js.map} +1 -1
  157. package/dist/chunks/{ThemeProvider-BLI4zpLu.js → ThemeProvider-CgK2mmVV.js} +576 -2
  158. package/dist/chunks/ThemeProvider-CgK2mmVV.js.map +1 -0
  159. package/dist/client/auth/useEmailCode.d.ts.map +1 -1
  160. package/dist/client/auth/useSignIn.d.ts.map +1 -1
  161. package/dist/client/auth/useSignOut.d.ts.map +1 -1
  162. package/dist/client/index.d.ts +5 -1
  163. package/dist/client/index.d.ts.map +1 -1
  164. package/dist/client/index.js +216 -8
  165. package/dist/client/index.js.map +1 -1
  166. package/dist/client/init.d.ts +8 -0
  167. package/dist/client/init.d.ts.map +1 -1
  168. package/dist/client/realtime/FakeSocket.d.ts +47 -0
  169. package/dist/client/realtime/FakeSocket.d.ts.map +1 -0
  170. package/dist/client/realtime/RealtimeClient.d.ts +162 -0
  171. package/dist/client/realtime/RealtimeClient.d.ts.map +1 -0
  172. package/dist/client/realtime/RealtimeContext.d.ts +8 -0
  173. package/dist/client/realtime/RealtimeContext.d.ts.map +1 -0
  174. package/dist/client/realtime/useChannelSubscription.d.ts +32 -0
  175. package/dist/client/realtime/useChannelSubscription.d.ts.map +1 -0
  176. package/dist/client/rpc.d.ts +11 -0
  177. package/dist/client/rpc.d.ts.map +1 -1
  178. package/dist/client/useChannel.d.ts +87 -0
  179. package/dist/client/useChannel.d.ts.map +1 -0
  180. package/dist/client/useMutation.d.ts.map +1 -1
  181. package/dist/client/useQuery.d.ts +13 -0
  182. package/dist/client/useQuery.d.ts.map +1 -1
  183. package/dist/config/index.js +1 -1
  184. package/dist/console/run.js +2 -2
  185. package/dist/console/run.js.map +1 -1
  186. package/dist/container/index.js +2 -2
  187. package/dist/container/index.js.map +1 -1
  188. package/dist/database/index.js +2 -2
  189. package/dist/database/index.js.map +1 -1
  190. package/dist/email/index.js +2 -2
  191. package/dist/email/index.js.map +1 -1
  192. package/dist/facades/Broadcast.d.ts +68 -0
  193. package/dist/facades/Broadcast.d.ts.map +1 -0
  194. package/dist/facades/index.d.ts +1 -0
  195. package/dist/facades/index.d.ts.map +1 -1
  196. package/dist/facades/index.js +2 -2
  197. package/dist/facades/index.js.map +1 -1
  198. package/dist/foundation/index.js +2 -2
  199. package/dist/foundation/index.js.map +1 -1
  200. package/dist/gemi.d.ts +19 -6
  201. package/dist/http/ChannelRouter.d.ts +171 -0
  202. package/dist/http/ChannelRouter.d.ts.map +1 -0
  203. package/dist/http/index.d.ts +1 -0
  204. package/dist/http/index.d.ts.map +1 -1
  205. package/dist/http/index.js +2 -2
  206. package/dist/http/index.js.map +1 -1
  207. package/dist/i18n/dictionaryRuntime.js +2 -2
  208. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  209. package/dist/i18n/index.js +2 -2
  210. package/dist/i18n/index.js.map +1 -1
  211. package/dist/kernel/Kernel.d.ts +6 -0
  212. package/dist/kernel/Kernel.d.ts.map +1 -1
  213. package/dist/kernel/index.js +3 -3
  214. package/dist/kernel/index.js.map +5 -6
  215. package/dist/kernel/providers.d.ts +2 -2
  216. package/dist/kernel/providers.d.ts.map +1 -1
  217. package/dist/orm/context.d.ts.map +1 -1
  218. package/dist/orm/index.js +2 -2
  219. package/dist/orm/index.js.map +1 -1
  220. package/dist/server/Server.d.ts.map +1 -1
  221. package/dist/server/httpDev.d.ts +1 -2
  222. package/dist/server/httpDev.d.ts.map +1 -1
  223. package/dist/server/httpProd.d.ts +1 -1
  224. package/dist/server/httpProd.d.ts.map +1 -1
  225. package/dist/server/index.js +2 -2
  226. package/dist/server/index.js.map +3 -3
  227. package/dist/server/shutdown.d.ts +9 -0
  228. package/dist/server/shutdown.d.ts.map +1 -1
  229. package/dist/services/broadcast/BroadcastDriver.d.ts +73 -0
  230. package/dist/services/broadcast/BroadcastDriver.d.ts.map +1 -0
  231. package/dist/services/broadcast/BroadcastEvent.d.ts +67 -0
  232. package/dist/services/broadcast/BroadcastEvent.d.ts.map +1 -0
  233. package/dist/services/broadcast/BroadcastManager.d.ts +148 -0
  234. package/dist/services/broadcast/BroadcastManager.d.ts.map +1 -0
  235. package/dist/services/broadcast/BroadcastServiceProvider.d.ts +16 -0
  236. package/dist/services/broadcast/BroadcastServiceProvider.d.ts.map +1 -0
  237. package/dist/services/broadcast/FakeBroadcastManager.d.ts +45 -0
  238. package/dist/services/broadcast/FakeBroadcastManager.d.ts.map +1 -0
  239. package/dist/services/broadcast/MemoryBroadcastDriver.d.ts +23 -0
  240. package/dist/services/broadcast/MemoryBroadcastDriver.d.ts.map +1 -0
  241. package/dist/services/broadcast/SocketHub.d.ts +192 -0
  242. package/dist/services/broadcast/SocketHub.d.ts.map +1 -0
  243. package/dist/services/broadcast/brand.d.ts +16 -0
  244. package/dist/services/broadcast/brand.d.ts.map +1 -0
  245. package/dist/services/broadcast/channels.d.ts +77 -0
  246. package/dist/services/broadcast/channels.d.ts.map +1 -0
  247. package/dist/services/broadcast/config.d.ts +93 -0
  248. package/dist/services/broadcast/config.d.ts.map +1 -0
  249. package/dist/services/broadcast/protocol.d.ts +123 -0
  250. package/dist/services/broadcast/protocol.d.ts.map +1 -0
  251. package/dist/services/broadcast/socketTag.d.ts +17 -0
  252. package/dist/services/broadcast/socketTag.d.ts.map +1 -0
  253. package/dist/services/broadcast/types.d.ts +27 -0
  254. package/dist/services/broadcast/types.d.ts.map +1 -0
  255. package/dist/services/broadcast/wire.d.ts +35 -0
  256. package/dist/services/broadcast/wire.d.ts.map +1 -0
  257. package/dist/services/events/EventManager.d.ts +6 -0
  258. package/dist/services/events/EventManager.d.ts.map +1 -1
  259. package/dist/services/index.d.ts +9 -0
  260. package/dist/services/index.d.ts.map +1 -1
  261. package/dist/services/index.js +9 -9
  262. package/dist/services/index.js.map +4 -3
  263. package/dist/services/queue/work.js +2 -2
  264. package/dist/services/queue/work.js.map +1 -1
  265. package/dist/services/router/config.d.ts +7 -0
  266. package/dist/services/router/config.d.ts.map +1 -1
  267. package/dist/stats/route-table.js +1 -1
  268. package/dist/support/index.js +2 -2
  269. package/dist/support/index.js.map +1 -1
  270. package/dist/testing/Page.d.ts +8 -0
  271. package/dist/testing/Page.d.ts.map +1 -1
  272. package/dist/testing/index.d.ts +2 -0
  273. package/dist/testing/index.d.ts.map +1 -1
  274. package/dist/testing/index.js +174 -8
  275. package/dist/testing/index.js.map +1 -1
  276. package/dist/vitest/index.js +1 -1
  277. package/package.json +1 -1
  278. package/skills/gemi-react-best-practices/SKILL.md +3 -1
  279. package/skills/gemi-react-best-practices/rules/query-live-over-polling.md +56 -0
  280. package/dist/chunk-2n3pgfnb.js +0 -5
  281. package/dist/chunk-2n3pgfnb.js.map +0 -10
  282. package/dist/chunk-2yw4yezc.js +0 -24
  283. package/dist/chunk-3rvn9a76.js +0 -58
  284. package/dist/chunk-3s21p9n2.js +0 -57
  285. package/dist/chunk-dyp0wg9e.js +0 -10
  286. package/dist/chunk-htgmy3x7.js +0 -5
  287. package/dist/chunk-krtybgz1.js +0 -4
  288. package/dist/chunk-krtybgz1.js.map +0 -10
  289. package/dist/chunk-s07v65x6.js +0 -9
  290. package/dist/chunk-s07v65x6.js.map +0 -10
  291. package/dist/chunks/ThemeProvider-BLI4zpLu.js.map +0 -1
  292. /package/dist/{chunk-dhbgrv58.js.map → chunk-4qpypa3h.js.map} +0 -0
  293. /package/dist/{chunk-wjkh2gem.js.map → chunk-8x73yyfs.js.map} +0 -0
  294. /package/dist/{chunk-0k02tza1.js.map → chunk-j0cnsgjq.js.map} +0 -0
  295. /package/dist/{chunk-cvr5624r.js.map → chunk-rjm1kj8n.js.map} +0 -0
  296. /package/dist/{chunk-zg6hmc48.js.map → chunk-wqharhrp.js.map} +0 -0
  297. /package/dist/{chunk-y6wt5b6t.js.map → chunk-xhmtph39.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Ei as qS,Fi as JS}from"../chunk-1wnnkde0.js";import{Li as $S}from"../chunk-fenc5tpv.js";import{Pi as P}from"../chunk-nz8z8jr1.js";import"../chunk-4fx8p02c.js";import"../chunk-tewhms9w.js";import{render as s}from"jsx-email";import B from"process";import{Buffer as n}from"buffer";import r from"path";import{fileURLToPath as PS}from"url";import{promisify as yS}from"util";import o from"child_process";import wS,{constants as fS}from"fs/promises";import h from"process";import l,{constants as zS}from"fs/promises";import g from"process";import NS from"os";import W from"fs";import RS from"fs";import b from"fs";var F;function HS(){try{return b.statSync("/.dockerenv"),!0}catch{return!1}}function XS(){try{return b.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function L(){if(F===void 0)F=HS()||XS();return F}var O,US=()=>{try{return RS.statSync("/run/.containerenv"),!0}catch{return!1}};function R(){if(O===void 0)O=US()||L();return O}var u=()=>{if(g.platform!=="linux")return!1;if(NS.release().toLowerCase().includes("microsoft")){if(R())return!1;return!0}try{if(W.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!R()}catch{}if(W.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||W.existsSync("/run/WSL"))return!R();return!1},H=g.env.__IS_WSL_TEST__?u:u();var ES=(()=>{let S;return async function(){if(S)return S;let q="/etc/wsl.conf",J=!1;try{await l.access(q,zS.F_OK),J=!0}catch{}if(!J)return"/mnt/";let K=await l.readFile(q,{encoding:"utf8"}),Q=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(K);if(!Q)return"/mnt/";return S=Q.groups.mountPoint.trim(),S=S.endsWith("/")?S:`${S}/`,S}})(),MS=async()=>{return`${await ES()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`},v=async()=>{if(H)return MS();return`${h.env.SYSTEMROOT||h.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`};function X($,S,q){let J=(K)=>Object.defineProperty($,S,{value:K,enumerable:!0,writable:!0});return Object.defineProperty($,S,{configurable:!0,enumerable:!0,get(){let K=q();return J(K),K},set(K){J(K)}}),$}import{promisify as jS}from"util";import j from"process";import{execFile as xS}from"child_process";import{promisify as _S}from"util";import kS from"process";import{execFile as DS}from"child_process";var FS=_S(DS);async function T(){if(kS.platform!=="darwin")throw Error("macOS only");let{stdout:$}=await FS("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),q=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec($)?.groups.id??"com.apple.Safari";if(q==="com.apple.safari")return"com.apple.Safari";return q}import LS from"process";import{promisify as OS}from"util";import{execFile as WS,execFileSync as H0}from"child_process";var vS=OS(WS);async function m($,{humanReadableOutput:S=!0,signal:q}={}){if(LS.platform!=="darwin")throw Error("macOS only");let J=S?[]:["-ss"],K={};if(q)K.signal=q;let{stdout:Q}=await vS("osascript",["-e",$,J],K);return Q.trim()}async function C($){return m(`tell application "Finder" to set app_path to application file id "${$}" as string
2
+ import{cj as qS,dj as JS}from"../chunk-fyk07w01.js";import{jj as $S}from"../chunk-q1e3q01h.js";import{nj as P}from"../chunk-hnrzm5pf.js";import"../chunk-kzstewtm.js";import"../chunk-ay8nat73.js";import{render as s}from"jsx-email";import B from"process";import{Buffer as n}from"buffer";import r from"path";import{fileURLToPath as PS}from"url";import{promisify as yS}from"util";import o from"child_process";import wS,{constants as fS}from"fs/promises";import h from"process";import l,{constants as zS}from"fs/promises";import g from"process";import NS from"os";import W from"fs";import RS from"fs";import b from"fs";var F;function HS(){try{return b.statSync("/.dockerenv"),!0}catch{return!1}}function XS(){try{return b.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function L(){if(F===void 0)F=HS()||XS();return F}var O,US=()=>{try{return RS.statSync("/run/.containerenv"),!0}catch{return!1}};function R(){if(O===void 0)O=US()||L();return O}var u=()=>{if(g.platform!=="linux")return!1;if(NS.release().toLowerCase().includes("microsoft")){if(R())return!1;return!0}try{if(W.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!R()}catch{}if(W.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||W.existsSync("/run/WSL"))return!R();return!1},H=g.env.__IS_WSL_TEST__?u:u();var ES=(()=>{let S;return async function(){if(S)return S;let q="/etc/wsl.conf",J=!1;try{await l.access(q,zS.F_OK),J=!0}catch{}if(!J)return"/mnt/";let K=await l.readFile(q,{encoding:"utf8"}),Q=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(K);if(!Q)return"/mnt/";return S=Q.groups.mountPoint.trim(),S=S.endsWith("/")?S:`${S}/`,S}})(),MS=async()=>{return`${await ES()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`},v=async()=>{if(H)return MS();return`${h.env.SYSTEMROOT||h.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`};function X($,S,q){let J=(K)=>Object.defineProperty($,S,{value:K,enumerable:!0,writable:!0});return Object.defineProperty($,S,{configurable:!0,enumerable:!0,get(){let K=q();return J(K),K},set(K){J(K)}}),$}import{promisify as jS}from"util";import j from"process";import{execFile as xS}from"child_process";import{promisify as _S}from"util";import kS from"process";import{execFile as DS}from"child_process";var FS=_S(DS);async function T(){if(kS.platform!=="darwin")throw Error("macOS only");let{stdout:$}=await FS("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),q=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec($)?.groups.id??"com.apple.Safari";if(q==="com.apple.safari")return"com.apple.Safari";return q}import LS from"process";import{promisify as OS}from"util";import{execFile as WS,execFileSync as H0}from"child_process";var vS=OS(WS);async function m($,{humanReadableOutput:S=!0,signal:q}={}){if(LS.platform!=="darwin")throw Error("macOS only");let J=S?[]:["-ss"],K={};if(q)K.signal=q;let{stdout:Q}=await vS("osascript",["-e",$,J],K);return Q.trim()}async function C($){return m(`tell application "Finder" to set app_path to application file id "${$}" as string
3
3
  tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as TS}from"util";import{execFile as CS}from"child_process";var IS=TS(CS),_={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},E0=new Map(Object.entries(_));class c extends Error{}async function I($=IS){let{stdout:S}=await $("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),q=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(S);if(!q)throw new c(`Cannot find Windows browser in stdout: ${JSON.stringify(S)}`);let{id:J}=q.groups,K=J.lastIndexOf("."),Q=J.lastIndexOf("-"),Z=K===-1?void 0:J.slice(0,K),V=Q===-1?void 0:J.slice(0,Q);return _[J]??_[Z]??_[V]??{name:J,id:J}}var BS=jS(xS),AS=($)=>$.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,(S)=>S.toUpperCase());async function x(){if(j.platform==="darwin"){let $=await T();return{name:await C($),id:$}}if(j.platform==="linux"){let{stdout:$}=await BS("xdg-mime",["query","default","x-scheme-handler/http"]),S=$.trim();return{name:AS(S.replace(/.desktop$/,"").replace("-"," ")),id:S}}if(j.platform==="win32")return I();throw Error("Only macOS, Linux, and Windows are supported")}var bS=yS(o.execFile),A=r.dirname(PS(import.meta.url)),d=r.join(A,"xdg-open"),{platform:N,arch:p}=B;async function uS(){let $=await v(),S=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,q=n.from(S,"utf16le").toString("base64"),{stdout:J}=await bS($,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",q],{encoding:"utf8"}),K=J.trim(),Q={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return Q[K]?{id:Q[K]}:{}}var t=async($,S)=>{let q;for(let J of $)try{return await S(J)}catch(K){q=K}throw q},k=async($)=>{if($={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...$},Array.isArray($.app))return t($.app,(V)=>k({...$,app:V}));let{name:S,arguments:q=[]}=$.app??{};if(q=[...q],Array.isArray(S))return t(S,(V)=>k({...$,app:{name:V,arguments:q}}));if(S==="browser"||S==="browserPrivate"){let V={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"},Y={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},G=H?await uS():await x();if(G.id in V){let z=V[G.id];if(S==="browserPrivate")q.push(Y[z]);return k({...$,app:{name:U[z],arguments:q}})}throw Error(`${G.name} is not supported as a default browser`)}let J,K=[],Q={};if(N==="darwin"){if(J="open",$.wait)K.push("--wait-apps");if($.background)K.push("--background");if($.newInstance)K.push("--new");if(S)K.push("-a",S)}else if(N==="win32"||H&&!R()&&!S){if(J=await v(),K.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),!H)Q.windowsVerbatimArguments=!0;let V=["Start"];if($.wait)V.push("-Wait");if(S){if(V.push(`"\`"${S}\`""`),$.target)q.push($.target)}else if($.target)V.push(`"${$.target}"`);if(q.length>0)q=q.map((Y)=>`"\`"${Y}\`""`),V.push("-ArgumentList",q.join(","));$.target=n.from(V.join(" "),"utf16le").toString("base64")}else{if(S)J=S;else{let V=!A||A==="/",Y=!1;try{await wS.access(d,fS.X_OK),Y=!0}catch{}J=B.versions.electron??(N==="android"||V||!Y)?"xdg-open":d}if(q.length>0)K.push(...q);if(!$.wait)Q.stdio="ignore",Q.detached=!0}if(N==="darwin"&&q.length>0)K.push("--args",...q);if($.target)K.push($.target);let Z=o.spawn(J,K,Q);if($.wait)return new Promise((V,Y)=>{Z.once("error",Y),Z.once("close",(G)=>{if(!$.allowNonzeroExitCode&&G>0){Y(Error(`Exited with code ${G}`));return}V(Z)})});return Z.unref(),Z},gS=($,S)=>{if(typeof $!=="string")throw TypeError("Expected a `target`");return k({...S,target:$})};function i($){if(typeof $==="string"||Array.isArray($))return $;let{[p]:S}=$;if(!S)throw Error(`${p} is not supported`);return S}function D({[N]:$},{wsl:S}){if(S&&H)return i(S);if(!$)throw Error(`${N} is not supported`);return i($)}var U={};X(U,"chrome",()=>D({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));X(U,"brave",()=>D({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));X(U,"firefox",()=>D({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));X(U,"edge",()=>D({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));X(U,"browser",()=>"browser");X(U,"browserPrivate",()=>"browserPrivate");var a=gS;function hS($){return Array.from($,(S)=>{let q=S.charCodeAt(0);return S==="/"||S==="\\"||q<32||q===127?"_":S}).join("")}async function e($,S,q={}){let J=`${$}/${new Date().toISOString()}${hS(S.subject)}`,K={to:S.to,cc:S.cc,bcc:S.bcc,from:S.from,subject:S.subject,headers:S.headers??{},attachments:S.attachments.map((Q)=>({filename:Q.filename,bytes:Buffer.byteLength(Q.content)})),scheduledAt:S.scheduledAt??null,idempotencyKey:S.idempotencyKey??null,locale:q.locale??null,text:S.text??null};return await Bun.write(`${J}.json`,`${JSON.stringify(K,null,2)}
4
4
  `),await Bun.write(`${J}.html`,S.html),`${J}.html`}import{jsx as SS}from"react/jsx-runtime";class KS{from="";to=[];subject="No Subject";cc=[];bcc=[];attachments=[];template;headers={};static async send($){let S=new this,q=P($S).defaultLocale,J=P(JS),{to:K=S.to,from:Q=S.from,subject:Z=typeof S.subject==="string"?S.subject:S.subject[$.locale||q],cc:V=S.cc,bcc:Y=S.bcc,attachments:G=S.attachments,data:z,headers:QS={}}=$,VS={...J.headers??{},...S.headers??{},...QS??{}},y=process.env.EMAIL_DEBUG==="true",E=y?"debug":J.driver?.provider??"custom",w=await J.filterRecipients(K);if(!w.length)return{id:null,provider:E,status:"skipped"};let[YS,ZS]=await Promise.all([S.render({...z,locale:$.locale}),S.renderText({...z,locale:$.locale})]),f={bcc:Y,cc:V,from:Q,subject:Z,to:w,attachments:G,html:YS,headers:VS,text:ZS,scheduledAt:$.scheduledAt,idempotencyKey:$.idempotencyKey};if(y){let GS=await e(`${process.env.ROOT_DIR}/.debug/emails`,f,{locale:$.locale});if(process.env.CI!=="true")await a(GS);return{id:`debug_${crypto.randomUUID()}`,provider:E,status:"debug"}}let M=await qS(J,f);return M.ok?{id:M.id,provider:E,status:"sent"}:{id:M.id,provider:E,status:"failed",error:M.error}}static async preview($){return await new this().render({...$.data,locale:$.locale})}async render($){let S=this.template;return await s(SS(S,{...$}))}async renderText($){let S=this.template;return await s(SS(S,{...$}),{plainText:!0})}}export{KS as Email};
5
5
 
6
- //# debugId=07D6FE61BB44BE4464756E2164756E21
6
+ //# debugId=E70D86023EAE88A464756E2164756E21
@@ -17,6 +17,6 @@
17
17
  "import type { SendEmailParams } from \"../services/email/drivers/types\";\n\n/**\n * What `EMAIL_DEBUG=true` records about a send, next to the rendered HTML.\n *\n * The HTML alone can't say who a mail went to: plenty of templates render\n * nothing per recipient, so a test asserting \"this action mailed this user\"\n * could match another send with the same subject. The sidecar holds the\n * envelope the driver would have been handed, with `to` already filtered.\n */\nexport interface DebugEmailRecord {\n to: string[];\n cc: string[];\n bcc: string[];\n from: string;\n subject: string;\n headers: Record<string, string>;\n // Attachment bodies are left out: name and size are enough to assert on.\n attachments: Array<{ filename: string; bytes: number }>;\n scheduledAt: string | null;\n idempotencyKey: string | null;\n locale: string | null;\n text: string | null;\n}\n\n/**\n * A subject as a filename fragment. Path separators would write into a\n * subdirectory (or fail), and control characters aren't valid on every\n * filesystem. Everything else is kept, so a reader matching on the subject\n * substring keeps working.\n */\nexport function debugEmailFileSubject(subject: string) {\n return Array.from(subject, (char) => {\n const code = char.charCodeAt(0);\n return char === \"/\" || char === \"\\\\\" || code < 0x20 || code === 0x7f ? \"_\" : char;\n }).join(\"\");\n}\n\n/**\n * Writes `<dir>/<iso><subject>.json` and then `<dir>/<iso><subject>.html`, and\n * returns the HTML path. The sidecar goes first so a reader that sees the HTML\n * can rely on its envelope being there.\n */\nexport async function writeDebugEmail(\n dir: string,\n params: SendEmailParams,\n options: { locale?: string } = {},\n) {\n const base = `${dir}/${new Date().toISOString()}${debugEmailFileSubject(params.subject)}`;\n\n const record: DebugEmailRecord = {\n to: params.to,\n cc: params.cc,\n bcc: params.bcc,\n from: params.from,\n subject: params.subject,\n headers: params.headers ?? {},\n attachments: params.attachments.map((attachment) => ({\n filename: attachment.filename,\n bytes: Buffer.byteLength(attachment.content),\n })),\n scheduledAt: params.scheduledAt ?? null,\n idempotencyKey: params.idempotencyKey ?? null,\n locale: options.locale ?? null,\n text: params.text ?? null,\n };\n\n await Bun.write(`${base}.json`, `${JSON.stringify(record, null, 2)}\\n`);\n await Bun.write(`${base}.html`, params.html);\n\n return `${base}.html`;\n}\n"
18
18
  ],
19
19
  "mappings": "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",
20
- "debugId": "07D6FE61BB44BE4464756E2164756E21",
20
+ "debugId": "E70D86023EAE88A464756E2164756E21",
21
21
  "names": []
22
22
  }
@@ -0,0 +1,68 @@
1
+ import type { BroadcastEventsFor } from "../services/broadcast/types";
2
+ import { BroadcastManager, type BroadcastScope, type PendingBroadcast, type SocketSource } from "../services/broadcast/BroadcastManager";
3
+ import type { ChannelParamsArgs, ChannelTarget } from "../services/broadcast/channels";
4
+ import { FakeBroadcastManager } from "../services/broadcast/FakeBroadcastManager";
5
+ import { Facade } from "./Facade";
6
+ /**
7
+ * Real-time push to the WebSocket clients subscribed to a channel. Volatile:
8
+ * events are change hints, delivered at most once and never replayed, and a
9
+ * client that may have missed one refetches over HTTP. For a durable,
10
+ * resumable log use `ChangeFeed`.
11
+ *
12
+ * ```ts
13
+ * Broadcast.to("site.:siteId", { siteId: site.publicId }).emit("changed", { pages: ["/about"] });
14
+ * Broadcast.toUser(user).emit("credits", { balance });
15
+ * Broadcast.toOthers(req).to("page.:pageId", { pageId }).emit("changed");
16
+ * ```
17
+ *
18
+ * Inside an ORM transaction an emit waits for the commit and is dropped on
19
+ * rollback. A channel or payload that is refused throws at the call site.
20
+ */
21
+ export declare class Broadcast extends Facade {
22
+ static getFacadeAccessor(): typeof BroadcastManager;
23
+ /**
24
+ * The channel `pattern` names with `params` (`"site.:siteId"`, `{ siteId }`),
25
+ * a concrete topic, or a `ChannelTarget`.
26
+ */
27
+ static to<P extends string>(pattern: P | ChannelTarget, ...params: ChannelParamsArgs<P>): PendingBroadcast<BroadcastEventsFor<P>>;
28
+ /** A user's own channel, `user.<id>`, which the router's `"user"` channel joins. */
29
+ static toUser(user: {
30
+ id: unknown;
31
+ } | string | number): PendingBroadcast<BroadcastEventsFor<"user">>;
32
+ /**
33
+ * Skips the sender's socket: pass the request (its `X-Gemi-Socket` header)
34
+ * or the socket id.
35
+ */
36
+ static toOthers(source: SocketSource): BroadcastScope;
37
+ /**
38
+ * Closes subscriptions that may no longer be allowed: every socket of a
39
+ * user (`{ user }`), or every subscription to a channel (`{ channel,
40
+ * params? }`). Clients reconnect or resubscribe, and authorization runs
41
+ * again. Sign-out calls it for the user.
42
+ *
43
+ * ```ts
44
+ * Broadcast.revoke({ channel: "site.:siteId", params: { siteId } }); // after removing a member
45
+ * ```
46
+ */
47
+ static revoke(target: {
48
+ user: {
49
+ id: unknown;
50
+ } | string | number;
51
+ } | {
52
+ channel: string | ChannelTarget;
53
+ params?: Record<string, unknown>;
54
+ }): void;
55
+ /**
56
+ * Swaps the container's `BroadcastManager` for a recorder and returns it.
57
+ * Call `restore()` when the test is done.
58
+ *
59
+ * ```ts
60
+ * const broadcasts = Broadcast.fake();
61
+ * await post("/pages/abc/save", body);
62
+ * broadcasts.assertSent("page.:pageId", "changed", (d) => d.pages.includes("/about"));
63
+ * broadcasts.restore();
64
+ * ```
65
+ */
66
+ static fake(): FakeBroadcastManager;
67
+ }
68
+ //# sourceMappingURL=Broadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Broadcast.d.ts","sourceRoot":"","sources":["../../facades/Broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAU,SAAQ,MAAM;IACnC,MAAM,CAAC,iBAAiB;IAIxB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,MAAM,EACxB,OAAO,EAAE,CAAC,GAAG,aAAa,EAC1B,GAAG,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC9B,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAI1C,oFAAoF;IACpF,MAAM,CAAC,MAAM,CACX,IAAI,EAAE;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,GAAG,MAAM,GACtC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAI/C;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc;IAIrD;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,CACX,MAAM,EACF;QAAE,IAAI,EAAE;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,GAC3C;QAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GACxE,IAAI;IAIP;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,IAAI,oBAAoB;CAGpC"}
@@ -15,6 +15,7 @@ export { Lock } from "./Lock";
15
15
  export { Crypt } from "./Crypt";
16
16
  export { Connections } from "./Connections";
17
17
  export { ChangeFeed } from "./ChangeFeed";
18
+ export { Broadcast } from "./Broadcast";
18
19
  export { Features } from "./Features";
19
20
  export { DB, ConnectionQueries } from "./DB";
20
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../facades/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../facades/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Dd as c,Ed as d,Fd as f,Gd as g,Hd as i,Id as j,Jd as k,Kd as l,Ld as m,Md as n,Nd as o,Xd as p,bd as a,je as q,ke as r,le as s}from"../chunk-3s21p9n2.js";import"../chunk-65beps2q.js";import"../chunk-m53fgf20.js";import{_f as b,xg as e,zg as h}from"../chunk-4acpw92g.js";import"../chunk-cca0grq3.js";import"../chunk-m83zm86m.js";import"../chunk-rhek27sj.js";import"../chunk-19dpzp4y.js";import"../chunk-yds7zwc3.js";import"../chunk-meg8rtr6.js";import"../chunk-h43jp8ws.js";import"../chunk-s07v65x6.js";import"../chunk-gc2dz11k.js";import"../chunk-cskqet01.js";import"../chunk-fenc5tpv.js";import"../chunk-nz8z8jr1.js";import"../chunk-4fx8p02c.js";import"../chunk-er8acmch.js";import"../chunk-2n3pgfnb.js";import"../chunk-d5f1m3d2.js";import"../chunk-rhvc1axc.js";import"../chunk-tewhms9w.js";export{g as Url,e as Storage,k as Redis,a as Redirect,l as RateLimiter,f as Query,i as Meta,h as Log,m as Lock,d as Lang,q as Features,b as Facade,s as DB,n as Crypt,j as Cookie,o as Connections,r as ConnectionQueries,p as ChangeFeed,c as Auth};
2
+ import{Ae as s,Dd as c,Ed as e,Fd as f,Gd as h,Hd as i,Id as j,Jd as k,Kd as l,Ld as m,Md as n,Wd as o,bf as t,ke as p,yd as a,ye as q,ze as r}from"../chunk-gvp6brdt.js";import"../chunk-w61sphn5.js";import"../chunk-s5jxc63j.js";import{Xg as d,Zg as g,yg as b}from"../chunk-z23h4s1a.js";import"../chunk-n1a2zj5z.js";import"../chunk-kc924zjz.js";import"../chunk-ebx5hnqn.js";import"../chunk-nvngb4ed.js";import"../chunk-96a1459v.js";import"../chunk-1f1sb3w7.js";import"../chunk-73v34hw8.js";import"../chunk-2vc72qez.js";import"../chunk-mxbtcaed.js";import"../chunk-pfm9ngch.js";import"../chunk-q1e3q01h.js";import"../chunk-hnrzm5pf.js";import"../chunk-kzstewtm.js";import"../chunk-dmj6ysym.js";import"../chunk-eevna943.js";import"../chunk-1kdga1b2.js";import"../chunk-rkgsvsrj.js";import"../chunk-ay8nat73.js";export{f as Url,d as Storage,j as Redis,a as Redirect,k as RateLimiter,e as Query,h as Meta,g as Log,l as Lock,c as Lang,q as Features,b as Facade,s as DB,m as Crypt,i as Cookie,n as Connections,r as ConnectionQueries,o as ChangeFeed,p as Broadcast,t as Auth};
3
3
 
4
- //# debugId=5365EC3F2E88CB7564756E2164756E21
4
+ //# debugId=767968D24A0EB90164756E2164756E21
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "5365EC3F2E88CB7564756E2164756E21",
7
+ "debugId": "767968D24A0EB90164756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Oi as o,Pi as r}from"../chunk-nz8z8jr1.js";import"../chunk-4fx8p02c.js";import"../chunk-tewhms9w.js";export{r as app,o as Application};
2
+ import{mj as o,nj as r}from"../chunk-hnrzm5pf.js";import"../chunk-kzstewtm.js";import"../chunk-ay8nat73.js";export{r as app,o as Application};
3
3
 
4
- //# debugId=9145FA3B14B90BCB64756E2164756E21
4
+ //# debugId=1F73AB6054102E8164756E2164756E21
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "9145FA3B14B90BCB64756E2164756E21",
7
+ "debugId": "1F73AB6054102E8164756E2164756E21",
8
8
  "names": []
9
9
  }
package/dist/gemi.d.ts CHANGED
@@ -2,24 +2,33 @@ import type Api from "@/app/http/routes/api";
2
2
  import type View from "@/app/http/routes/view";
3
3
  import type I18nComponents from "@/app/i18n";
4
4
  import type AppFeatures from "@/app/features";
5
+ import type Channels from "@/app/http/routes/channels";
5
6
 
6
- import type { ApiRouter, CreateRPC, CreateViewRPC, ViewRouter } from "gemi/http";
7
+ import type {
8
+ ApiRouter,
9
+ ChannelRouter,
10
+ CreateBroadcastRPC,
11
+ CreateRPC,
12
+ CreateViewRPC,
13
+ ViewRouter,
14
+ } from "gemi/http";
7
15
  import type { CreateI18nDictionary } from "gemi/client";
8
16
  import type { CreateFeatures, FeatureRegistry } from "gemi/services";
9
17
 
10
18
  /**
11
- * The augmentation that gives an application its own route, view, dictionary
12
- * and feature types. Referenced by `client/index.ts` and `facades/index.ts`, so
19
+ * The augmentation that gives an application its own route, view, dictionary,
20
+ * feature and broadcast channel types. Referenced by `client/index.ts` and `facades/index.ts`, so
13
21
  * importing from either is the whole of the wiring — an application maintains
14
22
  * nothing, and a capability added here reaches every application on upgrade.
15
23
  *
16
24
  * The cost of delivering it from inside the package is that it is no longer
17
25
  * opt-in: every program that imports `gemi/client` compiles this file, whether
18
- * or not it is an application. So the four imports above have to be allowed to
26
+ * or not it is an application. So the five imports above have to be allowed to
19
27
  * fail — a shared package in a monorepo, an app on a `src/` layout, an app using
20
28
  * a different alias, or a playground all reach here with no `@/app/*` mapping.
21
- * `app/features` is additionally optional *within* an application: it is the one
22
- * of the four an app can simply not have.
29
+ * `app/features` and `app/http/routes/channels` are additionally optional
30
+ * *within* an application: they are the two of the five an app can simply not
31
+ * have.
23
32
  *
24
33
  * `Resolved` is what makes that safe, and the shape is load-bearing. An
25
34
  * unresolved import is `any`, and `CreateRPC<any>` does not terminate: it
@@ -40,6 +49,9 @@ type AppRPC<T> = IsAny<T> extends true ? {} : T extends ApiRouter ? CreateRPC<T>
40
49
 
41
50
  type AppViewRPC<T> = IsAny<T> extends true ? {} : T extends ViewRouter ? CreateViewRPC<T> : {};
42
51
 
52
+ type AppBroadcastRPC<T> =
53
+ IsAny<T> extends true ? {} : T extends ChannelRouter ? CreateBroadcastRPC<T> : {};
54
+
43
55
  type AppDictionary<T> = IsAny<T> extends true ? {} : CreateI18nDictionary<T>;
44
56
 
45
57
  type AppFeatureMap<T> =
@@ -48,6 +60,7 @@ type AppFeatureMap<T> =
48
60
  declare module "gemi/client" {
49
61
  export interface RPC extends AppRPC<Api> {}
50
62
  export interface ViewRPC extends AppViewRPC<View> {}
63
+ export interface BroadcastRPC extends AppBroadcastRPC<Channels> {}
51
64
  export interface I18nDictionary extends AppDictionary<typeof I18nComponents> {}
52
65
  export interface Features extends AppFeatureMap<typeof AppFeatures> {}
53
66
  }
@@ -0,0 +1,171 @@
1
+ import type { BroadcastEvent } from "../services/broadcast/BroadcastEvent";
2
+ import { USER_CHANNEL, type ChannelParams } from "../services/broadcast/channels";
3
+ import type { AnyBroadcastEvents } from "../services/broadcast/types";
4
+ import { HttpRequest } from "./HttpRequest";
5
+ import { type MiddlewareInput } from "./middlewareList";
6
+ import { type CarriedContext } from "./requestContext";
7
+ /**
8
+ * Decides whether the request may join a channel. `params` are the pattern's
9
+ * params, already checked. Only `true` lets it in.
10
+ */
11
+ export type ChannelAuthorizer = (req: HttpRequest<any, any>, params: Record<string, string>) => boolean | Promise<boolean>;
12
+ /** A class form of `ChannelAuthorizer`, for an authorization worth naming. */
13
+ export interface ChannelPolicy {
14
+ authorize(req: HttpRequest<any, any>, params: Record<string, string>): boolean | Promise<boolean>;
15
+ }
16
+ export type ChannelPolicyClass = new () => ChannelPolicy;
17
+ type BroadcastEventClass = abstract new (...args: any[]) => BroadcastEvent<any, any>;
18
+ /** `.events(A, B)` → `{ [A's name]: A's payload, [B's name]: B's payload }`. */
19
+ export type BroadcastEventMap<C extends readonly BroadcastEventClass[]> = {
20
+ [I in InstanceType<C[number]> as I["__broadcast"]["name"]]: I["__broadcast"]["payload"];
21
+ };
22
+ /** One entry of a `ChannelRouter`'s `channels`. */
23
+ export declare class ChannelDeclaration<Events extends Record<string, unknown> = AnyBroadcastEvents> {
24
+ readonly visibility: "public" | "private";
25
+ readonly authorizer?: ChannelAuthorizer | ChannelPolicyClass;
26
+ /** Type-only: the events this channel carries, for `BroadcastRPC`. */
27
+ readonly __events: Events;
28
+ middlewares: string[];
29
+ constructor(visibility: "public" | "private", authorizer?: ChannelAuthorizer | ChannelPolicyClass);
30
+ /**
31
+ * Middleware to run before the authorization, as on a route: aliases from
32
+ * the middleware config or `alias:params`. A middleware that refuses (an
33
+ * `auth`, a breaker, a policy denial) refuses the subscription.
34
+ */
35
+ middleware(input: MiddlewareInput): this;
36
+ /**
37
+ * The events this channel carries, for the generated `BroadcastRPC` types:
38
+ * `BroadcastEvent` classes, or a map as a type argument.
39
+ *
40
+ * ```ts
41
+ * "site.:siteId": this.private(canEdit).events(SiteChanged),
42
+ * "status": this.public().events<{ deploy: { version: string } }>(),
43
+ * ```
44
+ *
45
+ * Types only: nothing is checked at runtime.
46
+ */
47
+ events<E extends Record<string, unknown>>(): ChannelDeclaration<E>;
48
+ events<C extends BroadcastEventClass[]>(...classes: C): ChannelDeclaration<BroadcastEventMap<C>>;
49
+ }
50
+ /** Why a subscription was refused, as the transport reports it. */
51
+ export type ChannelRefusal = "unknown_channel" | "invalid_params" | "denied" | "error";
52
+ export type ChannelAuthorization = {
53
+ ok: true;
54
+ topic: string;
55
+ pattern: string;
56
+ } | {
57
+ ok: false;
58
+ code: ChannelRefusal;
59
+ };
60
+ export interface ChannelAuthorizeOptions {
61
+ /** What the global middleware resolved for the upgrade request: its user. */
62
+ carried?: CarriedContext | null;
63
+ }
64
+ /**
65
+ * The channels clients may subscribe to, in `app/http/routes/channels.ts`,
66
+ * and who may join each.
67
+ *
68
+ * ```ts
69
+ * import { ChannelRouter } from "gemi/http";
70
+ *
71
+ * export default class extends ChannelRouter {
72
+ * channels = {
73
+ * "site.:siteId": this.private((req, { siteId }) => Website.canEdit(req, siteId)).events(SiteChanged),
74
+ * "page.:pageId": this.private(PageChannelPolicy).middleware("page-owner"),
75
+ * "user": this.private(), // joins user.<id> of the signed-in user
76
+ * "status": this.public(),
77
+ * };
78
+ * }
79
+ * ```
80
+ *
81
+ * A client names a pattern and its params; the server builds the topic, so
82
+ * there is no raw-name or wildcard subscribe, and a pattern that is not here
83
+ * is refused. Authorization runs on every subscribe, resubscribes included,
84
+ * in a request context rebuilt from the upgrade request: `Auth.user()`,
85
+ * `Cookie`, policies and the declared middleware behave as in a route.
86
+ *
87
+ * - `this.public()`: anyone, signed in or not.
88
+ * - `this.private()`: any signed-in user.
89
+ * - `this.private(callback | PolicyClass)`: whoever the callback returns
90
+ * `true` for, guests included (an anonymous owner's cookie, say). A throw
91
+ * is a refusal.
92
+ * - `"user"` is special: it takes no params and joins `user.<id>` of the
93
+ * session's user. Guests are refused. Emit to it with `Broadcast.toUser(user)`.
94
+ *
95
+ * Use public ids in channel names, never internal ones. Register the router
96
+ * as `route.channels` in `app/config/route.ts`. Its patterns are checked at
97
+ * boot: see `assertChannelPatterns`.
98
+ */
99
+ export declare class ChannelRouter {
100
+ static __brand: string;
101
+ channels: Record<string, ChannelDeclaration<any>>;
102
+ /** Anyone may join, signed in or not. */
103
+ protected public(): ChannelDeclaration;
104
+ /**
105
+ * Only who `authorize` returns `true` for. Without it, any signed-in user.
106
+ */
107
+ protected private(authorize?: ChannelAuthorizer | ChannelPolicyClass): ChannelDeclaration;
108
+ /**
109
+ * Whether `request` may join the channel `pattern` names with `params`,
110
+ * and the topic it joins. Never throws: a refusal says why, and an
111
+ * unexpected error is logged and refused. Needs a booted application when
112
+ * the channel has middleware.
113
+ *
114
+ * The transport calls this for every `sub`; tests use `authorizeChannel`.
115
+ */
116
+ authorize(request: Request, pattern: string, params?: Record<string, unknown>, options?: ChannelAuthorizeOptions): Promise<ChannelAuthorization>;
117
+ }
118
+ /** A `ChannelRouter` subclass, as `route.channels` holds it. */
119
+ export type ChannelRouterClass = new () => ChannelRouter;
120
+ /**
121
+ * The `BroadcastRPC` table of a router: each pattern's params and events.
122
+ * `gemi.d.ts` builds it from `app/http/routes/channels.ts`.
123
+ */
124
+ export type CreateBroadcastRPC<R extends ChannelRouter> = {
125
+ [K in keyof R["channels"] & string]: {
126
+ params: K extends typeof USER_CHANNEL ? {} : ChannelParams<K>;
127
+ events: R["channels"][K] extends ChannelDeclaration<infer E> ? E : AnyBroadcastEvents;
128
+ };
129
+ };
130
+ /**
131
+ * For tests: whether a subscriber may join the channel `pattern` names with
132
+ * `params`. `as` is the subscriber: a user (as if signed in), a `Request`
133
+ * (its cookies and headers are used, as on an upgrade), or nothing (a guest).
134
+ *
135
+ * ```ts
136
+ * expect(await authorizeChannel(Channels, "site.:siteId", { siteId: other.publicId }, { as: alice })).toBe(false);
137
+ * ```
138
+ *
139
+ * Needs a booted application when the channel declares middleware.
140
+ */
141
+ export declare function authorizeChannel(router: ChannelRouter | ChannelRouterClass, pattern: string, params?: Record<string, unknown>, options?: {
142
+ as?: Request | {
143
+ rawRequest: Request;
144
+ } | Record<string, any> | null;
145
+ }): Promise<boolean>;
146
+ /**
147
+ * The subscriber's user, or `null` for a guest. A guest is one with no user on
148
+ * the context and no access token, or one whose token names no live session.
149
+ * Anything else that goes wrong (the session store is down) throws, and the
150
+ * subscription is refused as an `error`, which a client may retry, rather than
151
+ * `denied`, which it should not.
152
+ */
153
+ export declare function signedInUser(req: HttpRequest<any, any>): Promise<unknown | null>;
154
+ /**
155
+ * Checks a router's patterns, and throws `InvalidChannelError` on the first
156
+ * problem. Run at boot, so a bad router stops `gemi start`.
157
+ *
158
+ * - Every pattern parses, and starts with a literal segment.
159
+ * - No two patterns can build the same topic. The client names the pattern it
160
+ * subscribes through, so if two could, the weaker one would decide who may
161
+ * join the other's topics: a public `":kind.:id"` would admit anyone to
162
+ * `site.<id>`.
163
+ * - `user.<id>` belongs to the `"user"` channel: no other pattern may build a
164
+ * two-segment topic starting with `user`, or one user could subscribe
165
+ * through it to another's channel.
166
+ * - A private pattern with params has an authorizer. `this.private()` alone
167
+ * admits every signed-in user, which on `"site.:siteId"` is every site.
168
+ */
169
+ export declare function assertChannelPatterns(router: ChannelRouter): void;
170
+ export {};
171
+ //# sourceMappingURL=ChannelRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelRouter.d.ts","sourceRoot":"","sources":["../../http/ChannelRouter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export { Controller, ResourceController } from "./Controller";
2
2
  export { ApiRouter, type ControllerRouteHandler, type CreateRPC } from "./ApiRouter";
3
+ export { ChannelRouter, ChannelDeclaration, authorizeChannel, type BroadcastEventMap, type ChannelAuthorization, type ChannelAuthorizer, type ChannelPolicy, type ChannelRefusal, type ChannelRouterClass, type CreateBroadcastRPC, } from "./ChannelRouter";
3
4
  export { McpRouter, McpRouteDeclaration, type McpFileBinder, type McpMethod, McpModelParam, type McpModelParamOptions, type McpModelParamResolver, type McpParamBinder, type McpParamDeclaration, type McpRouteMeta, type McpRoutes, type McpToolInput, type McpToolOutput, } from "./McpRouter";
4
5
  export type { McpGrant, ProgressUpdate } from "./modelOriginated";
5
6
  export { createFileResponse, ViewRouter, type CreateViewRPC, type FileOutput, type ViewHandler, type StaticViewOptions, type StaticNavigationOptions, } from "./ViewRouter";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../http/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{$c as A,Bd as M,Cd as N,Oe as ba,Pe as ca,Qe as da,Re as ea,Se as fa,Te as ga,Uc as n,Ue as ha,Vc as o,Ve as ia,Wc as p,We as ja,Xc as q,Xe as ka,Yc as r,Ye as la,Zc as y,Ze as ma,_c as z,ad as B,cd as C,dd as D,ed as E,fd as F,gd as G,hd as H,id as I,nd as J,od as K,pd as L,te as aa}from"../chunk-3s21p9n2.js";import"../chunk-65beps2q.js";import"../chunk-m53fgf20.js";import{Ef as e,Ff as f,Gf as g,Hf as h,If as i,Jf as j,Of as k,Pf as l,Tf as m,Uf as s,Vf as t,Wf as u,Xf as v,Yf as w,Zf as x,hg as O,ig as P,jg as Q,kg as R,lg as S,mg as T,ng as U,og as V,pg as W,qg as X,rg as Y,sg as Z,tg as _,ug as $,xf as a,yf as b,zf as d}from"../chunk-4acpw92g.js";import{Hg as c}from"../chunk-cca0grq3.js";import"../chunk-m83zm86m.js";import"../chunk-rhek27sj.js";import"../chunk-19dpzp4y.js";import"../chunk-yds7zwc3.js";import"../chunk-meg8rtr6.js";import"../chunk-h43jp8ws.js";import"../chunk-s07v65x6.js";import"../chunk-gc2dz11k.js";import"../chunk-cskqet01.js";import"../chunk-fenc5tpv.js";import"../chunk-nz8z8jr1.js";import"../chunk-4fx8p02c.js";import"../chunk-er8acmch.js";import"../chunk-2n3pgfnb.js";import"../chunk-d5f1m3d2.js";import"../chunk-rhvc1axc.js";import"../chunk-tewhms9w.js";export{g as toRangeHeaderValue,n as toMiddlewareList,$ as safeFetch,f as resolveRange,e as parseRangeHeader,h as parseContentRange,r as parseByteSize,I as middlewareConfigDefaults,D as httpError,d as getCookies,j as formatUnsatisfiedContentRange,i as formatContentRange,ia as defineResourcePolicy,H as defineMiddlewareConfig,o as createUnsatisfiableResponse,p as createStreamResponse,E as createFileResponse,L as clientIp,Z as classifyAddress,F as ViewRouter,k as ValidationError,W as TooManyRedirectsError,U as TooLargeError,T as TimeoutError,ja as SitemapError,ka as Sitemap,N as SameSiteBounceMiddleware,_ as SafeResponse,O as SafeFetchError,M as SAME_SITE_BOUNCE_PARAM,la as RobotsTxt,ma as Robots,ha as ResourcePolicy,b as ResourceController,c as RequestBreakerError,K as RateLimitMiddleware,J as RateLimitExceededError,u as RangeNotSatisfiableError,fa as PoliciesServiceProvider,ga as Policies,q as PayloadTooLargeError,v as NotFoundError,X as NetworkError,G as Middleware,B as McpRouter,A as McpRouteDeclaration,z as McpModelParam,l as InvalidValidationRuleError,P as InvalidUrlError,t as InsufficientPermissionsError,Y as HttpStatusError,C as HttpResponse,m as HttpRequest,w as FileNotFoundError,S as DnsError,da as CorsMiddleware,a as Controller,V as ContentTypeError,ca as CacheMiddleware,ea as CSRFMiddleware,aa as BodyLimitMiddleware,Q as BlockedHostError,R as BlockedAddressError,s as AuthorizationError,ba as AuthenticationMiddleware,x as AuthenticationError,y as ApiRouter};
2
+ import{$c as p,Ad as G,Bd as H,Cd as I,Ie as X,Zc as n,_c as o,ad as q,bd as r,cd as y,cf as Y,df as Z,ef as _,hf as $,id as z,if as aa,jd as A,jf as ba,kd as B,kf as ca,ld as C,lf as da,mf as ea,nf as fa,of as ga,pf as ha,qf as ia,rf as ja,sf as ka,tf as la,uf as ma,vf as na,wd as D,wf as oa,xd as E,xf as pa,zd as F}from"../chunk-gvp6brdt.js";import"../chunk-w61sphn5.js";import"../chunk-s5jxc63j.js";import{Hg as J,Ig as K,Jg as L,Kg as M,Lg as N,Mg as O,Ng as P,Og as Q,Pg as R,Qg as S,Rg as T,Sg as U,Tg as V,Ug as W,Xf as a,Yf as b,Zf as d,cg as e,dg as f,eg as g,fg as h,gg as i,hg as j,mg as k,ng as l,rg as m,sg as s,tg as t,ug as u,vg as v,wg as w,xg as x}from"../chunk-z23h4s1a.js";import{fh as c}from"../chunk-n1a2zj5z.js";import"../chunk-kc924zjz.js";import"../chunk-ebx5hnqn.js";import"../chunk-nvngb4ed.js";import"../chunk-96a1459v.js";import"../chunk-1f1sb3w7.js";import"../chunk-73v34hw8.js";import"../chunk-2vc72qez.js";import"../chunk-mxbtcaed.js";import"../chunk-pfm9ngch.js";import"../chunk-q1e3q01h.js";import"../chunk-hnrzm5pf.js";import"../chunk-kzstewtm.js";import"../chunk-dmj6ysym.js";import"../chunk-eevna943.js";import"../chunk-1kdga1b2.js";import"../chunk-rkgsvsrj.js";import"../chunk-ay8nat73.js";export{g as toRangeHeaderValue,n as toMiddlewareList,W as safeFetch,f as resolveRange,e as parseRangeHeader,h as parseContentRange,r as parseByteSize,da as middlewareConfigDefaults,G as httpError,d as getCookies,j as formatUnsatisfiedContentRange,i as formatContentRange,la as defineResourcePolicy,ca as defineMiddlewareConfig,o as createUnsatisfiableResponse,p as createStreamResponse,H as createFileResponse,C as clientIp,U as classifyAddress,_ as authorizeChannel,I as ViewRouter,k as ValidationError,R as TooManyRedirectsError,P as TooLargeError,O as TimeoutError,ma as SitemapError,na as Sitemap,E as SameSiteBounceMiddleware,V as SafeResponse,J as SafeFetchError,D as SAME_SITE_BOUNCE_PARAM,oa as RobotsTxt,pa as Robots,ka as ResourcePolicy,b as ResourceController,c as RequestBreakerError,B as RateLimitMiddleware,A as RateLimitExceededError,u as RangeNotSatisfiableError,ia as PoliciesServiceProvider,ja as Policies,q as PayloadTooLargeError,v as NotFoundError,S as NetworkError,z as Middleware,ba as McpRouter,aa as McpRouteDeclaration,$ as McpModelParam,l as InvalidValidationRuleError,K as InvalidUrlError,t as InsufficientPermissionsError,T as HttpStatusError,F as HttpResponse,m as HttpRequest,w as FileNotFoundError,N as DnsError,ga as CorsMiddleware,a as Controller,Q as ContentTypeError,Z as ChannelRouter,Y as ChannelDeclaration,fa as CacheMiddleware,ha as CSRFMiddleware,X as BodyLimitMiddleware,L as BlockedHostError,M as BlockedAddressError,s as AuthorizationError,ea as AuthenticationMiddleware,x as AuthenticationError,y as ApiRouter};
3
3
 
4
- //# debugId=61D42EE3DDB4162764756E2164756E21
4
+ //# debugId=A1B4724E56ED338564756E2164756E21
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "61D42EE3DDB4162764756E2164756E21",
7
+ "debugId": "A1B4724E56ED338564756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{ca as y,da as p}from"../chunk-7ftj43vp.js";import{ua as c,va as d,xa as l}from"../chunk-epvpmakp.js";import{ri as e,si as i,ui as t,vi as r,wi as o,xi as n,yi as a,zi as s}from"../chunk-cskqet01.js";import"../chunk-tewhms9w.js";export{o as setActiveLocale,r as seedDictionaries,t as preloadDictionaries,d as localeStrings,i as loadDictionary,n as getActiveLocale,e as dictionaryRegistrationMark,c as dictionaryLocales,l as dictionaryId,y as defineDictionary,s as createDictionarySink,a as __resetDictionaryRegistry,p as __gemi_dict__};
2
+ import{ca as y,da as p}from"../chunk-vwnd4jb5.js";import{ua as c,va as d,xa as l}from"../chunk-epvpmakp.js";import{Ri as e,Si as i,Ui as t,Vi as r,Wi as o,Xi as n,Yi as a,Zi as s}from"../chunk-pfm9ngch.js";import"../chunk-ay8nat73.js";export{o as setActiveLocale,r as seedDictionaries,t as preloadDictionaries,d as localeStrings,i as loadDictionary,n as getActiveLocale,e as dictionaryRegistrationMark,c as dictionaryLocales,l as dictionaryId,y as defineDictionary,s as createDictionarySink,a as __resetDictionaryRegistry,p as __gemi_dict__};
3
3
 
4
- //# debugId=8AD80A70A87EFC9564756E2164756E21
4
+ //# debugId=D4035B4244D7745464756E2164756E21
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "8AD80A70A87EFC9564756E2164756E21",
7
+ "debugId": "D4035B4244D7745464756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{ca as T}from"../chunk-7ftj43vp.js";import"../chunk-epvpmakp.js";import{ab as D}from"../chunk-htgmy3x7.js";import{Rc as b,Sc as w}from"../chunk-tk135gmj.js";import"../chunk-9xyxbxgk.js";import{Ed as j}from"../chunk-3s21p9n2.js";import"../chunk-65beps2q.js";import"../chunk-m53fgf20.js";import"../chunk-4acpw92g.js";import"../chunk-cca0grq3.js";import"../chunk-m83zm86m.js";import"../chunk-rhek27sj.js";import"../chunk-19dpzp4y.js";import"../chunk-yds7zwc3.js";import"../chunk-meg8rtr6.js";import"../chunk-h43jp8ws.js";import"../chunk-s07v65x6.js";import"../chunk-gc2dz11k.js";import"../chunk-cskqet01.js";import{Gi as V,Hi as X,Ii as E,Ji as L,Ki as R,Li as S}from"../chunk-fenc5tpv.js";import"../chunk-nz8z8jr1.js";import"../chunk-4fx8p02c.js";import"../chunk-er8acmch.js";import"../chunk-2n3pgfnb.js";import"../chunk-d5f1m3d2.js";import"../chunk-rhvc1axc.js";import"../chunk-tewhms9w.js";import{createElement as J,Fragment as M,isValidElement as U}from"react";function $(q,B){let G=Object.values(B).some((z)=>typeof z==="function"&&U(z(""))),Q=/{{([^{}]+?)(?::([^{}\[\]]+?))?(?:\[(.*?)\])?}}/g;if(!G)return q.replace(Q,(W,O,_,Z)=>{let C=O.includes(":")?O.split(":")[0]:O,H=B[C];if(H===void 0)return W;if(typeof H==="function"){let K=H(Z!==void 0?Z:"");if(U(K))throw Error("JSX returned in string context");return String(K)}if(_)switch(_.toLowerCase()){case"number":return Number(H).toString();case"string":return String(H);case"boolean":return Boolean(H).toString();default:return String(H)}return String(H)});else{let z=[],W=0,O=null;while((O=Q.exec(q))!==null){let[_,Z,C,H]=O,F=O.index,K=Z.includes(":")?Z.split(":")[0]:Z;if(F>W)z.push(q.substring(W,F));let Y=B[K];if(Y===void 0)z.push(_);else if(typeof Y==="function"){let A=Y(H!==void 0?H:"");z.push(A)}else if(C)switch(C.toLowerCase()){case"number":z.push(Number(Y).toString());break;case"string":z.push(String(Y));break;case"boolean":z.push(Boolean(Y).toString());break;default:z.push(String(Y))}else z.push(String(Y));W=F+_.length}if(W<q.length)z.push(q.substring(W));return J(M,{},...z)}}class P{name;dictionary;constructor(q,B){this.name=q;this.dictionary=B}reference(q){if(typeof window<"u")throw Error("Cannot use reference in the browser");if(!this.dictionary?.[q])throw Error(`Translation not found for ${String(q)}`);return this.dictionary[q]}render(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B[0]};if(typeof window<"u")throw Error("Cannot use render in the browser");if(!this.dictionary?.[q]?.[G])throw Error(`Translation not found for ${String(q)} in ${String(G)}`);return $(this.dictionary[q][G],Q??{})}static create(q,B){return new P(q,B)}static text(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B?.[0]};if(!q?.[G])throw Error(`Translation not found for ${String(G)}`);return $(q[G],Q??{})}}async function N(q,B,...G){let{locale:Q=j.locale(),params:z}={params:{},...G[0]},O=(await q.load(String(Q)))[B];if(typeof O!=="string")throw Error(`Translation not found for "${B}" in "${String(Q)}" (dictionary ${q.id})`);return $(O,z??{})}export{w as translationConfigDefaults,N as translate,V as resolveLocale,X as negotiateLocale,L as isValidTimeZone,b as defineTranslationConfig,T as defineDictionary,R as createFormatter,S as Translator,D as TranslationServiceProvider,P as Dictionary,E as DEFAULT_TIME_ZONE};
2
+ import{ca as T}from"../chunk-vwnd4jb5.js";import"../chunk-epvpmakp.js";import{ab as D}from"../chunk-tazvfppr.js";import{Wc as b,Xc as w}from"../chunk-zjej5vqh.js";import"../chunk-30xxc6r7.js";import{Dd as j}from"../chunk-gvp6brdt.js";import"../chunk-w61sphn5.js";import"../chunk-s5jxc63j.js";import"../chunk-z23h4s1a.js";import"../chunk-n1a2zj5z.js";import"../chunk-kc924zjz.js";import"../chunk-ebx5hnqn.js";import"../chunk-nvngb4ed.js";import"../chunk-96a1459v.js";import"../chunk-1f1sb3w7.js";import"../chunk-73v34hw8.js";import"../chunk-2vc72qez.js";import"../chunk-mxbtcaed.js";import"../chunk-pfm9ngch.js";import{ej as V,fj as X,gj as E,hj as L,ij as R,jj as S}from"../chunk-q1e3q01h.js";import"../chunk-hnrzm5pf.js";import"../chunk-kzstewtm.js";import"../chunk-dmj6ysym.js";import"../chunk-eevna943.js";import"../chunk-1kdga1b2.js";import"../chunk-rkgsvsrj.js";import"../chunk-ay8nat73.js";import{createElement as J,Fragment as M,isValidElement as U}from"react";function $(q,B){let G=Object.values(B).some((z)=>typeof z==="function"&&U(z(""))),Q=/{{([^{}]+?)(?::([^{}\[\]]+?))?(?:\[(.*?)\])?}}/g;if(!G)return q.replace(Q,(W,O,_,Z)=>{let C=O.includes(":")?O.split(":")[0]:O,H=B[C];if(H===void 0)return W;if(typeof H==="function"){let K=H(Z!==void 0?Z:"");if(U(K))throw Error("JSX returned in string context");return String(K)}if(_)switch(_.toLowerCase()){case"number":return Number(H).toString();case"string":return String(H);case"boolean":return Boolean(H).toString();default:return String(H)}return String(H)});else{let z=[],W=0,O=null;while((O=Q.exec(q))!==null){let[_,Z,C,H]=O,F=O.index,K=Z.includes(":")?Z.split(":")[0]:Z;if(F>W)z.push(q.substring(W,F));let Y=B[K];if(Y===void 0)z.push(_);else if(typeof Y==="function"){let A=Y(H!==void 0?H:"");z.push(A)}else if(C)switch(C.toLowerCase()){case"number":z.push(Number(Y).toString());break;case"string":z.push(String(Y));break;case"boolean":z.push(Boolean(Y).toString());break;default:z.push(String(Y))}else z.push(String(Y));W=F+_.length}if(W<q.length)z.push(q.substring(W));return J(M,{},...z)}}class P{name;dictionary;constructor(q,B){this.name=q;this.dictionary=B}reference(q){if(typeof window<"u")throw Error("Cannot use reference in the browser");if(!this.dictionary?.[q])throw Error(`Translation not found for ${String(q)}`);return this.dictionary[q]}render(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B[0]};if(typeof window<"u")throw Error("Cannot use render in the browser");if(!this.dictionary?.[q]?.[G])throw Error(`Translation not found for ${String(q)} in ${String(G)}`);return $(this.dictionary[q][G],Q??{})}static create(q,B){return new P(q,B)}static text(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B?.[0]};if(!q?.[G])throw Error(`Translation not found for ${String(G)}`);return $(q[G],Q??{})}}async function N(q,B,...G){let{locale:Q=j.locale(),params:z}={params:{},...G[0]},O=(await q.load(String(Q)))[B];if(typeof O!=="string")throw Error(`Translation not found for "${B}" in "${String(Q)}" (dictionary ${q.id})`);return $(O,z??{})}export{w as translationConfigDefaults,N as translate,V as resolveLocale,X as negotiateLocale,L as isValidTimeZone,b as defineTranslationConfig,T as defineDictionary,R as createFormatter,S as Translator,D as TranslationServiceProvider,P as Dictionary,E as DEFAULT_TIME_ZONE};
3
3
 
4
- //# debugId=C4E0D7821CC396B264756E2164756E21
4
+ //# debugId=A3E485E09D659A8E64756E2164756E21
@@ -7,6 +7,6 @@
7
7
  "import { Lang } from \"../facades\";\nimport { parseTranslation } from \"../utils/parseTranslation\";\nimport type { ParseTranslationParamsServer, Prettify } from \"../utils/type\";\nimport type { DictionaryHandle } from \"./defineDictionary\";\nimport type { DictionaryTranslations } from \"./dictionaryShape\";\n\n/**\n * Read one string from a `defineDictionary` dictionary outside React — a\n * controller, a job, an email template.\n *\n * Async because a bundled dictionary loads its locale on demand. Server code\n * does not go through the bundler, so in practice this resolves without ever\n * yielding; the `await` is what makes the same call work either way.\n *\n * Kept out of `defineDictionary.ts` on purpose: that module is imported by\n * components and has to stay free of the server facades this one needs.\n */\nexport async function translate<\n T extends DictionaryTranslations,\n K extends keyof T & string,\n U extends keyof T[K],\n R = Prettify<ParseTranslationParamsServer<T[K][U] & string>>,\n>(\n dictionary: DictionaryHandle<T>,\n key: K,\n ...args: R extends Record<string, never>\n ? [args?: { locale?: U | (string & {}) }]\n : [args: { locale?: U | (string & {}); params: R }]\n): Promise<string> {\n const { locale = Lang.locale(), params } = { params: {}, ...args[0] };\n const strings = await dictionary.load(String(locale));\n const template = strings[key];\n\n if (typeof template !== \"string\") {\n throw new Error(\n `Translation not found for \"${key}\" in \"${String(locale)}\" (dictionary ${dictionary.id})`,\n );\n }\n\n return parseTranslation(template, (params ?? {}) as any) as string;\n}\n"
8
8
  ],
9
9
  "mappings": "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",
10
- "debugId": "C4E0D7821CC396B264756E2164756E21",
10
+ "debugId": "A3E485E09D659A8E64756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -8,6 +8,7 @@ import { QueueManager } from "../services/queue/QueueManager";
8
8
  import { ApiRouteDispatcher } from "../services/router/ApiRouteDispatcher";
9
9
  import { ViewRouteDispatcher } from "../services/router/ViewRouteDispatcher";
10
10
  import { DomainRouter } from "../services/router/DomainRouter";
11
+ import { SocketHub } from "../services/broadcast/SocketHub";
11
12
  /**
12
13
  * The app's entry point into the framework. A Kernel subclass declares what the
13
14
  * app adds — its `config` slices and any extra `providers` — and everything
@@ -117,6 +118,11 @@ export declare class Kernel {
117
118
  queue(): QueueManager;
118
119
  /** The MCP endpoint, or `null` when `route.mcp.remote` is not enabled. */
119
120
  mcpHttp(): McpHttpServer | null;
121
+ /**
122
+ * The broadcast WebSocket endpoint, or `null` when the app declares no
123
+ * `route.channels` (nothing could be subscribed to, so nothing is upgraded).
124
+ */
125
+ sockets(): SocketHub | null;
120
126
  /** The `global` middleware list for one request. Call it inside `run`. */
121
127
  globalMiddleware(req: Request): Promise<import("../services/router/globalMiddleware").GlobalMiddlewareOutcome>;
122
128
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAItE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAK/D;;;;GAIG;AACH,qBAAa,MAAM;IACjB;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,CAAM;IAEnC;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAM;IAEvD;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAM;IAE7D,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAM;IAEtD,QAAQ,CAAC,GAAG,cAAqB;IAEjC;;;;;OAKG;IACH,IAAI;IAaJ;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAsDxB;;;OAGG;IACG,WAAW;IAOjB;;;;OAIG;YACW,YAAY;IAU1B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAInE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;IAIlB;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IAOrC,SAAS,IAAI,kBAAkB;IAI/B,UAAU,IAAI,mBAAmB;IAIjC,OAAO,IAAI,YAAY;IAIvB,KAAK,IAAI,YAAY;IAIrB,0EAA0E;IAC1E,OAAO,IAAI,aAAa,GAAG,IAAI;IAM/B,0EAA0E;IAC1E,gBAAgB,CAAC,GAAG,EAAE,OAAO;IAI7B,OAAO;CAeR"}
1
+ {"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../kernel/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAItE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAI5D;;;;GAIG;AACH,qBAAa,MAAM;IACjB;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,CAAM;IAEnC;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAM;IAEvD;;;;;;;;;;OAUG;IACH,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAM;IAE7D,OAAO,CAAC,gBAAgB,CAAiB;IACzC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAM;IAEtD,QAAQ,CAAC,GAAG,cAAqB;IAEjC;;;;;OAKG;IACH,IAAI;IAaJ;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAsDxB;;;OAGG;IACG,WAAW;IAOjB;;;;OAIG;YACW,YAAY;IAU1B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAInE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;IAIlB;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IAOrC,SAAS,IAAI,kBAAkB;IAI/B,UAAU,IAAI,mBAAmB;IAIjC,OAAO,IAAI,YAAY;IAIvB,KAAK,IAAI,YAAY;IAIrB,0EAA0E;IAC1E,OAAO,IAAI,aAAa,GAAG,IAAI;IAM/B;;;OAGG;IACH,OAAO,IAAI,SAAS,GAAG,IAAI;IAI3B,0EAA0E;IAC1E,gBAAgB,CAAC,GAAG,EAAE,OAAO;IAI7B,OAAO;CAeR"}