@geekmidas/constructs 10.0.0-alpha.9 → 10.0.0-alpha.91

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 (425) hide show
  1. package/README.md +222 -158
  2. package/dist/{Construct-BD5neF7w.mjs → Construct-B1vGBPme.mjs} +33 -34
  3. package/dist/Construct-B1vGBPme.mjs.map +1 -0
  4. package/dist/Construct-BQALFCh2.d.cts +230 -0
  5. package/dist/Construct-BQALFCh2.d.cts.map +1 -0
  6. package/dist/{Construct-CyS3RpTL.cjs → Construct-DUSXuTHP.cjs} +53 -48
  7. package/dist/Construct-DUSXuTHP.cjs.map +1 -0
  8. package/dist/Construct-QXnl3VqT.d.mts +230 -0
  9. package/dist/Construct-QXnl3VqT.d.mts.map +1 -0
  10. package/dist/{Cron-DmQ8vQ4b.d.cts → Cron-DI3nKoic.d.cts} +15 -9
  11. package/dist/Cron-DI3nKoic.d.cts.map +1 -0
  12. package/dist/{Cron-dh4rUgib.d.mts → Cron-uYAHPnp7.d.mts} +15 -9
  13. package/dist/Cron-uYAHPnp7.d.mts.map +1 -0
  14. package/dist/{CronBuilder-Da0C0edR.cjs → CronBuilder-C0Ek1-RA.cjs} +47 -31
  15. package/dist/CronBuilder-C0Ek1-RA.cjs.map +1 -0
  16. package/dist/CronBuilder-DaSUm2Na.d.mts +47 -0
  17. package/dist/CronBuilder-DaSUm2Na.d.mts.map +1 -0
  18. package/dist/{CronBuilder-CYKT5RiO.mjs → CronBuilder-Dmix_Pen.mjs} +37 -21
  19. package/dist/CronBuilder-Dmix_Pen.mjs.map +1 -0
  20. package/dist/CronBuilder-g1lZLWyG.d.cts +47 -0
  21. package/dist/CronBuilder-g1lZLWyG.d.cts.map +1 -0
  22. package/dist/{Endpoint-DCQPMdUX.mjs → Endpoint-BG4UJ9oA.mjs} +146 -109
  23. package/dist/Endpoint-BG4UJ9oA.mjs.map +1 -0
  24. package/dist/{Endpoint-DcWXE-SZ.cjs → Endpoint-BoUg8ocM.cjs} +174 -131
  25. package/dist/Endpoint-BoUg8ocM.cjs.map +1 -0
  26. package/dist/{Endpoint-BjWKinFA.d.mts → Endpoint-Du-NwPX2.d.mts} +83 -91
  27. package/dist/Endpoint-Du-NwPX2.d.mts.map +1 -0
  28. package/dist/{Endpoint-dav89W6-.d.cts → Endpoint-aCvBMPoH.d.cts} +82 -90
  29. package/dist/Endpoint-aCvBMPoH.d.cts.map +1 -0
  30. package/dist/{EndpointFactory-CjV8F_lJ.mjs → EndpointFactory-BDtsrEvJ.mjs} +57 -76
  31. package/dist/EndpointFactory-BDtsrEvJ.mjs.map +1 -0
  32. package/dist/{EndpointFactory-CdWB7wPw.cjs → EndpointFactory-DJ7gXLpR.cjs} +93 -112
  33. package/dist/EndpointFactory-DJ7gXLpR.cjs.map +1 -0
  34. package/dist/{index-Bd5FqCoe.d.cts → EndpointFactory-DMYdJCOj.d.mts} +78 -134
  35. package/dist/EndpointFactory-DMYdJCOj.d.mts.map +1 -0
  36. package/dist/{index-lAO9egTb.d.mts → EndpointFactory-I7s1co3Y.d.cts} +79 -135
  37. package/dist/EndpointFactory-I7s1co3Y.d.cts.map +1 -0
  38. package/dist/Function-DuqGcbOI.d.mts +76 -0
  39. package/dist/Function-DuqGcbOI.d.mts.map +1 -0
  40. package/dist/Function-Pu-1kKZz.d.cts +76 -0
  41. package/dist/Function-Pu-1kKZz.d.cts.map +1 -0
  42. package/dist/{HonoEndpointAdaptor-P1ahhZHu.mjs → HonoEndpointAdaptor-PtPlbeKY.mjs} +75 -56
  43. package/dist/HonoEndpointAdaptor-PtPlbeKY.mjs.map +1 -0
  44. package/dist/{HonoEndpointAdaptor-DtL9j19R.cjs → HonoEndpointAdaptor-zVzVLJEO.cjs} +83 -61
  45. package/dist/HonoEndpointAdaptor-zVzVLJEO.cjs.map +1 -0
  46. package/dist/Queue-A3wfD0it.cjs +109 -0
  47. package/dist/Queue-A3wfD0it.cjs.map +1 -0
  48. package/dist/Queue-D6USGS4q.mjs +104 -0
  49. package/dist/Queue-D6USGS4q.mjs.map +1 -0
  50. package/dist/{Queue-D7ZuwBhy.d.cts → Queue-DlsHRzUp.d.mts} +48 -48
  51. package/dist/Queue-DlsHRzUp.d.mts.map +1 -0
  52. package/dist/{Queue-gVGfi2Yk.d.mts → Queue-HPyi0e1i.d.cts} +49 -49
  53. package/dist/Queue-HPyi0e1i.d.cts.map +1 -0
  54. package/dist/QueueBuilder-BjuF0UBl.cjs +135 -0
  55. package/dist/QueueBuilder-BjuF0UBl.cjs.map +1 -0
  56. package/dist/QueueBuilder-Cue73M4t.mjs +118 -0
  57. package/dist/QueueBuilder-Cue73M4t.mjs.map +1 -0
  58. package/dist/QueueBuilder-OSi6LkV9.d.cts +75 -0
  59. package/dist/QueueBuilder-OSi6LkV9.d.cts.map +1 -0
  60. package/dist/QueueBuilder-QHsnVt1P.d.mts +75 -0
  61. package/dist/QueueBuilder-QHsnVt1P.d.mts.map +1 -0
  62. package/dist/{Subscriber-2mEi0ImH.d.cts → Subscriber-Bpp02cGr.d.cts} +29 -20
  63. package/dist/Subscriber-Bpp02cGr.d.cts.map +1 -0
  64. package/dist/{Subscriber-xTJ9ayPN.d.mts → Subscriber-CtN9R48-.d.mts} +29 -20
  65. package/dist/Subscriber-CtN9R48-.d.mts.map +1 -0
  66. package/dist/{SubscriberBuilder-BjkbeT9l.mjs → SubscriberBuilder-CDy4nHCz.mjs} +50 -24
  67. package/dist/SubscriberBuilder-CDy4nHCz.mjs.map +1 -0
  68. package/dist/SubscriberBuilder-CuCMFpYW.d.mts +67 -0
  69. package/dist/SubscriberBuilder-CuCMFpYW.d.mts.map +1 -0
  70. package/dist/{SubscriberBuilder-4OPehf2R.cjs → SubscriberBuilder-D_owVoHo.cjs} +61 -36
  71. package/dist/SubscriberBuilder-D_owVoHo.cjs.map +1 -0
  72. package/dist/SubscriberBuilder-g3fAVWgs.d.cts +67 -0
  73. package/dist/SubscriberBuilder-g3fAVWgs.d.cts.map +1 -0
  74. package/dist/Topic-D74b5cgs.mjs +99 -0
  75. package/dist/Topic-D74b5cgs.mjs.map +1 -0
  76. package/dist/Topic-GHxcU8AG.cjs +104 -0
  77. package/dist/Topic-GHxcU8AG.cjs.map +1 -0
  78. package/dist/adaptors/aws.cjs +131 -220
  79. package/dist/adaptors/aws.cjs.map +1 -1
  80. package/dist/adaptors/aws.d.cts +34 -53
  81. package/dist/adaptors/aws.d.cts.map +1 -1
  82. package/dist/adaptors/aws.d.mts +34 -53
  83. package/dist/adaptors/aws.d.mts.map +1 -1
  84. package/dist/adaptors/aws.mjs +102 -193
  85. package/dist/adaptors/aws.mjs.map +1 -1
  86. package/dist/adaptors/hono.cjs +3 -10
  87. package/dist/adaptors/hono.d.cts +7 -16
  88. package/dist/adaptors/hono.d.cts.map +1 -1
  89. package/dist/adaptors/hono.d.mts +8 -17
  90. package/dist/adaptors/hono.d.mts.map +1 -1
  91. package/dist/adaptors/hono.mjs +2 -10
  92. package/dist/adaptors/testing.cjs +743 -89
  93. package/dist/adaptors/testing.cjs.map +1 -1
  94. package/dist/adaptors/testing.d.cts +351 -54
  95. package/dist/adaptors/testing.d.cts.map +1 -1
  96. package/dist/adaptors/testing.d.mts +351 -54
  97. package/dist/adaptors/testing.d.mts.map +1 -1
  98. package/dist/adaptors/testing.mjs +706 -70
  99. package/dist/adaptors/testing.mjs.map +1 -1
  100. package/dist/auth-BMCJN30Y.d.cts +268 -0
  101. package/dist/auth-BMCJN30Y.d.cts.map +1 -0
  102. package/dist/auth-CcuceLYo.d.mts +268 -0
  103. package/dist/auth-CcuceLYo.d.mts.map +1 -0
  104. package/dist/auth.cjs +301 -33
  105. package/dist/auth.cjs.map +1 -1
  106. package/dist/auth.d.cts +2 -108
  107. package/dist/auth.d.mts +2 -108
  108. package/dist/auth.mjs +289 -27
  109. package/dist/auth.mjs.map +1 -1
  110. package/dist/{cache-BrRz3fEB.d.mts → cache-CXh6GIgb.d.mts} +3 -6
  111. package/dist/cache-CXh6GIgb.d.mts.map +1 -0
  112. package/dist/{cache-BtZY_tHe.d.cts → cache-DnGDGly3.d.cts} +3 -6
  113. package/dist/cache-DnGDGly3.d.cts.map +1 -0
  114. package/dist/cache.cjs +68 -2
  115. package/dist/cache.cjs.map +1 -0
  116. package/dist/cache.d.cts +1 -2
  117. package/dist/cache.d.mts +1 -2
  118. package/dist/cache.mjs +67 -2
  119. package/dist/cache.mjs.map +1 -0
  120. package/dist/cipher-C1lEFX63.mjs +225 -0
  121. package/dist/cipher-C1lEFX63.mjs.map +1 -0
  122. package/dist/cipher-CVxfwLjk.cjs +332 -0
  123. package/dist/cipher-CVxfwLjk.cjs.map +1 -0
  124. package/dist/{clone-DblgEZZa.mjs → clone-EKNovYHu.mjs} +3 -3
  125. package/dist/clone-EKNovYHu.mjs.map +1 -0
  126. package/dist/{clone-Dy0cR2SZ.cjs → clone-UGJpvQnL.cjs} +7 -8
  127. package/dist/clone-UGJpvQnL.cjs.map +1 -0
  128. package/dist/{construct-interface-D9d4Gm4p.d.cts → construct-interface-B1AfqRl4.d.cts} +42 -11
  129. package/dist/construct-interface-B1AfqRl4.d.cts.map +1 -0
  130. package/dist/{construct-interface-g5GM5pwR.d.mts → construct-interface-DluK3_da.d.mts} +42 -11
  131. package/dist/construct-interface-DluK3_da.d.mts.map +1 -0
  132. package/dist/construct-interface.cjs +113 -7
  133. package/dist/construct-interface.cjs.map +1 -0
  134. package/dist/construct-interface.d.cts +2 -2
  135. package/dist/construct-interface.d.mts +2 -2
  136. package/dist/construct-interface.mjs +106 -2
  137. package/dist/construct-interface.mjs.map +1 -0
  138. package/dist/credential.cjs +77 -17
  139. package/dist/credential.cjs.map +1 -1
  140. package/dist/credential.d.cts +34 -9
  141. package/dist/credential.d.cts.map +1 -1
  142. package/dist/credential.d.mts +34 -9
  143. package/dist/credential.d.mts.map +1 -1
  144. package/dist/credential.mjs +71 -13
  145. package/dist/credential.mjs.map +1 -1
  146. package/dist/crons/index.cjs +129 -7
  147. package/dist/crons/index.cjs.map +1 -1
  148. package/dist/crons/index.d.cts +45 -11
  149. package/dist/crons/index.d.cts.map +1 -1
  150. package/dist/crons/index.d.mts +45 -11
  151. package/dist/crons/index.d.mts.map +1 -1
  152. package/dist/crons/index.mjs +127 -8
  153. package/dist/crons/index.mjs.map +1 -1
  154. package/dist/database/kysely.cjs +4 -181
  155. package/dist/database/kysely.d.cts +2 -152
  156. package/dist/database/kysely.d.mts +2 -152
  157. package/dist/database/kysely.mjs +2 -180
  158. package/dist/email.cjs +25 -12
  159. package/dist/email.cjs.map +1 -1
  160. package/dist/email.d.cts +3 -7
  161. package/dist/email.d.cts.map +1 -1
  162. package/dist/email.d.mts +3 -7
  163. package/dist/email.d.mts.map +1 -1
  164. package/dist/email.mjs +16 -3
  165. package/dist/email.mjs.map +1 -1
  166. package/dist/encryption.cjs +96 -0
  167. package/dist/encryption.cjs.map +1 -0
  168. package/dist/encryption.d.cts +117 -0
  169. package/dist/encryption.d.cts.map +1 -0
  170. package/dist/encryption.d.mts +117 -0
  171. package/dist/encryption.d.mts.map +1 -0
  172. package/dist/encryption.mjs +83 -0
  173. package/dist/encryption.mjs.map +1 -0
  174. package/dist/endpoints/index.cjs +8 -10
  175. package/dist/endpoints/index.d.cts +51 -7
  176. package/dist/endpoints/index.d.cts.map +1 -0
  177. package/dist/endpoints/index.d.mts +51 -7
  178. package/dist/endpoints/index.d.mts.map +1 -0
  179. package/dist/endpoints/index.mjs +6 -10
  180. package/dist/external-api-MJ8id87V.d.mts +105 -0
  181. package/dist/external-api-MJ8id87V.d.mts.map +1 -0
  182. package/dist/external-api-O107yzZJ.d.cts +105 -0
  183. package/dist/external-api-O107yzZJ.d.cts.map +1 -0
  184. package/dist/external-api.cjs +142 -0
  185. package/dist/external-api.cjs.map +1 -0
  186. package/dist/external-api.d.cts +2 -0
  187. package/dist/external-api.d.mts +2 -0
  188. package/dist/external-api.mjs +139 -0
  189. package/dist/external-api.mjs.map +1 -0
  190. package/dist/file-server.cjs +42 -10
  191. package/dist/file-server.cjs.map +1 -1
  192. package/dist/file-server.d.cts +6 -10
  193. package/dist/file-server.d.cts.map +1 -1
  194. package/dist/file-server.d.mts +6 -10
  195. package/dist/file-server.d.mts.map +1 -1
  196. package/dist/file-server.mjs +34 -2
  197. package/dist/file-server.mjs.map +1 -1
  198. package/dist/functions/index.cjs +3 -6
  199. package/dist/functions/index.d.cts +3 -4
  200. package/dist/functions/index.d.mts +3 -4
  201. package/dist/functions/index.mjs +2 -6
  202. package/dist/{functions-14lpEFL4.mjs → functions-BFizikJU.mjs} +376 -238
  203. package/dist/{functions-14lpEFL4.mjs.map → functions-BFizikJU.mjs.map} +1 -1
  204. package/dist/{functions-i_la-N5r.cjs → functions-CfzJG9hK.cjs} +414 -264
  205. package/dist/functions-CfzJG9hK.cjs.map +1 -0
  206. package/dist/index-BuzRvKOQ.d.cts +115 -0
  207. package/dist/index-BuzRvKOQ.d.cts.map +1 -0
  208. package/dist/index-CTkKOer4.d.mts +115 -0
  209. package/dist/index-CTkKOer4.d.mts.map +1 -0
  210. package/dist/index-CeEtxDmK.d.cts +79 -0
  211. package/dist/index-CeEtxDmK.d.cts.map +1 -0
  212. package/dist/index-CeEtxDmK.d.mts +79 -0
  213. package/dist/index-CeEtxDmK.d.mts.map +1 -0
  214. package/dist/index.cjs +6 -3
  215. package/dist/index.d.cts +27 -4
  216. package/dist/index.d.cts.map +1 -0
  217. package/dist/index.d.mts +27 -4
  218. package/dist/index.d.mts.map +1 -0
  219. package/dist/index.mjs +3 -3
  220. package/dist/kms-B-Hm3d5r.cjs +85 -0
  221. package/dist/kms-B-Hm3d5r.cjs.map +1 -0
  222. package/dist/kms-BdUlMJEZ.mjs +85 -0
  223. package/dist/kms-BdUlMJEZ.mjs.map +1 -0
  224. package/dist/kysely-Bii4l6eP.mjs +370 -0
  225. package/dist/kysely-Bii4l6eP.mjs.map +1 -0
  226. package/dist/kysely-CO_Dk43W.cjs +383 -0
  227. package/dist/kysely-CO_Dk43W.cjs.map +1 -0
  228. package/dist/kysely-D0bpzgPs.d.cts +175 -0
  229. package/dist/kysely-D0bpzgPs.d.cts.map +1 -0
  230. package/dist/kysely-DUqC3Ie0.d.mts +175 -0
  231. package/dist/kysely-DUqC3Ie0.d.mts.map +1 -0
  232. package/dist/{telemetry-C3L0iS28.d.cts → lambdaTelemetry-8vnmVZQ5.d.cts} +3 -6
  233. package/dist/lambdaTelemetry-8vnmVZQ5.d.cts.map +1 -0
  234. package/dist/{telemetry-D7bVFLGi.d.mts → lambdaTelemetry-8vnmVZQ5.d.mts} +3 -6
  235. package/dist/lambdaTelemetry-8vnmVZQ5.d.mts.map +1 -0
  236. package/dist/{lazyAccessors-BoJN3SMd.mjs → lazyAccessors-CFanua0O.mjs} +20 -60
  237. package/dist/lazyAccessors-CFanua0O.mjs.map +1 -0
  238. package/dist/{lazyAccessors-e3j2oE2m.cjs → lazyAccessors-hJKGv8Ay.cjs} +60 -113
  239. package/dist/lazyAccessors-hJKGv8Ay.cjs.map +1 -0
  240. package/dist/mobile-app.cjs +73 -0
  241. package/dist/mobile-app.cjs.map +1 -0
  242. package/dist/mobile-app.d.cts +61 -0
  243. package/dist/mobile-app.d.cts.map +1 -0
  244. package/dist/mobile-app.d.mts +61 -0
  245. package/dist/mobile-app.d.mts.map +1 -0
  246. package/dist/mobile-app.mjs +72 -0
  247. package/dist/mobile-app.mjs.map +1 -0
  248. package/dist/object-storage.cjs +18 -10
  249. package/dist/object-storage.cjs.map +1 -1
  250. package/dist/object-storage.d.cts +3 -7
  251. package/dist/object-storage.d.cts.map +1 -1
  252. package/dist/object-storage.d.mts +3 -7
  253. package/dist/object-storage.d.mts.map +1 -1
  254. package/dist/object-storage.mjs +11 -3
  255. package/dist/object-storage.mjs.map +1 -1
  256. package/dist/processAudits-BRRVVHUB.mjs +131 -0
  257. package/dist/processAudits-BRRVVHUB.mjs.map +1 -0
  258. package/dist/processAudits-DasOZjPl.cjs +154 -0
  259. package/dist/processAudits-DasOZjPl.cjs.map +1 -0
  260. package/dist/queue/index.cjs +6 -189
  261. package/dist/queue/index.d.cts +3 -60
  262. package/dist/queue/index.d.mts +3 -60
  263. package/dist/queue/index.mjs +3 -186
  264. package/dist/rest-api.cjs +90 -59
  265. package/dist/rest-api.cjs.map +1 -1
  266. package/dist/rest-api.d.cts +70 -42
  267. package/dist/rest-api.d.cts.map +1 -1
  268. package/dist/rest-api.d.mts +70 -42
  269. package/dist/rest-api.d.mts.map +1 -1
  270. package/dist/rest-api.mjs +82 -51
  271. package/dist/rest-api.mjs.map +1 -1
  272. package/dist/{chunk-DWy1uDak.cjs → rolldown-runtime-y5ARvAq5.cjs} +14 -18
  273. package/dist/runSubscriber-BHvJ8POr.mjs +109 -0
  274. package/dist/runSubscriber-BHvJ8POr.mjs.map +1 -0
  275. package/dist/runSubscriber-D8nLXIv1.cjs +126 -0
  276. package/dist/runSubscriber-D8nLXIv1.cjs.map +1 -0
  277. package/dist/shutdown-BMJmAhSt.cjs +38 -0
  278. package/dist/shutdown-BMJmAhSt.cjs.map +1 -0
  279. package/dist/shutdown-C7xa8x9S.mjs +27 -0
  280. package/dist/shutdown-C7xa8x9S.mjs.map +1 -0
  281. package/dist/site.cjs +33 -7
  282. package/dist/site.cjs.map +1 -1
  283. package/dist/site.d.cts +17 -7
  284. package/dist/site.d.cts.map +1 -1
  285. package/dist/site.d.mts +17 -7
  286. package/dist/site.d.mts.map +1 -1
  287. package/dist/site.mjs +29 -3
  288. package/dist/site.mjs.map +1 -1
  289. package/dist/stages-BSCF19o2.d.cts +56 -0
  290. package/dist/stages-BSCF19o2.d.cts.map +1 -0
  291. package/dist/stages-BSCF19o2.d.mts +56 -0
  292. package/dist/stages-BSCF19o2.d.mts.map +1 -0
  293. package/dist/subscribers/index.cjs +118 -6
  294. package/dist/subscribers/index.cjs.map +1 -0
  295. package/dist/subscribers/index.d.cts +51 -6
  296. package/dist/subscribers/index.d.cts.map +1 -0
  297. package/dist/subscribers/index.d.mts +51 -6
  298. package/dist/subscribers/index.d.mts.map +1 -0
  299. package/dist/subscribers/index.mjs +115 -5
  300. package/dist/subscribers/index.mjs.map +1 -0
  301. package/dist/surfaceEnv-CNimK76p.cjs +56 -0
  302. package/dist/surfaceEnv-CNimK76p.cjs.map +1 -0
  303. package/dist/surfaceEnv-wMT5QzgZ.mjs +45 -0
  304. package/dist/surfaceEnv-wMT5QzgZ.mjs.map +1 -0
  305. package/dist/telemetry-B48RLjyk.d.cts +40 -0
  306. package/dist/telemetry-B48RLjyk.d.cts.map +1 -0
  307. package/dist/telemetry-DRtT1_0A.d.mts +40 -0
  308. package/dist/telemetry-DRtT1_0A.d.mts.map +1 -0
  309. package/dist/telemetry.cjs +56 -0
  310. package/dist/telemetry.cjs.map +1 -0
  311. package/dist/telemetry.d.cts +2 -0
  312. package/dist/telemetry.d.mts +2 -0
  313. package/dist/telemetry.mjs +55 -0
  314. package/dist/telemetry.mjs.map +1 -0
  315. package/dist/topic/index.cjs +3 -137
  316. package/dist/topic/index.d.cts +2 -4
  317. package/dist/topic/index.d.mts +2 -4
  318. package/dist/topic/index.mjs +2 -134
  319. package/dist/tracing-CxaZ98IB.mjs +110 -0
  320. package/dist/tracing-CxaZ98IB.mjs.map +1 -0
  321. package/dist/tracing-DPMidF_r.cjs +127 -0
  322. package/dist/tracing-DPMidF_r.cjs.map +1 -0
  323. package/dist/{types-BlAkSuGI.d.cts → types-DMuSQeLL.d.cts} +3 -5
  324. package/dist/types-DMuSQeLL.d.cts.map +1 -0
  325. package/dist/{types-aKksMEWL.d.mts → types-DMuSQeLL.d.mts} +3 -5
  326. package/dist/types-DMuSQeLL.d.mts.map +1 -0
  327. package/dist/types.d.cts +1 -1
  328. package/dist/types.d.mts +1 -1
  329. package/dist/types.mjs +1 -0
  330. package/dist/worker.cjs +59 -34
  331. package/dist/worker.cjs.map +1 -1
  332. package/dist/worker.d.cts +70 -45
  333. package/dist/worker.d.cts.map +1 -1
  334. package/dist/worker.d.mts +70 -44
  335. package/dist/worker.d.mts.map +1 -1
  336. package/dist/worker.mjs +54 -29
  337. package/dist/worker.mjs.map +1 -1
  338. package/package.json +96 -42
  339. package/dist/Construct-BD5neF7w.mjs.map +0 -1
  340. package/dist/Construct-C0ijr2qp.d.cts +0 -117
  341. package/dist/Construct-C0ijr2qp.d.cts.map +0 -1
  342. package/dist/Construct-Ct8nalEi.d.mts +0 -117
  343. package/dist/Construct-Ct8nalEi.d.mts.map +0 -1
  344. package/dist/Construct-CyS3RpTL.cjs.map +0 -1
  345. package/dist/Cron-DmQ8vQ4b.d.cts.map +0 -1
  346. package/dist/Cron-dh4rUgib.d.mts.map +0 -1
  347. package/dist/CronBuilder-BquXDbDI.d.cts +0 -44
  348. package/dist/CronBuilder-BquXDbDI.d.cts.map +0 -1
  349. package/dist/CronBuilder-CGgY2080.d.mts +0 -44
  350. package/dist/CronBuilder-CGgY2080.d.mts.map +0 -1
  351. package/dist/CronBuilder-CYKT5RiO.mjs.map +0 -1
  352. package/dist/CronBuilder-Da0C0edR.cjs.map +0 -1
  353. package/dist/Endpoint-BjWKinFA.d.mts.map +0 -1
  354. package/dist/Endpoint-DCQPMdUX.mjs.map +0 -1
  355. package/dist/Endpoint-DcWXE-SZ.cjs.map +0 -1
  356. package/dist/Endpoint-dav89W6-.d.cts.map +0 -1
  357. package/dist/EndpointFactory-CdWB7wPw.cjs.map +0 -1
  358. package/dist/EndpointFactory-CjV8F_lJ.mjs.map +0 -1
  359. package/dist/HonoEndpointAdaptor-DtL9j19R.cjs.map +0 -1
  360. package/dist/HonoEndpointAdaptor-P1ahhZHu.mjs.map +0 -1
  361. package/dist/Queue-D7ZuwBhy.d.cts.map +0 -1
  362. package/dist/Queue-gVGfi2Yk.d.mts.map +0 -1
  363. package/dist/Subscriber-2mEi0ImH.d.cts.map +0 -1
  364. package/dist/Subscriber-xTJ9ayPN.d.mts.map +0 -1
  365. package/dist/SubscriberBuilder-4OPehf2R.cjs.map +0 -1
  366. package/dist/SubscriberBuilder-BjkbeT9l.mjs.map +0 -1
  367. package/dist/SubscriberBuilder-Dptmo-1A.d.mts +0 -62
  368. package/dist/SubscriberBuilder-Dptmo-1A.d.mts.map +0 -1
  369. package/dist/SubscriberBuilder-waNhzjSM.d.cts +0 -62
  370. package/dist/SubscriberBuilder-waNhzjSM.d.cts.map +0 -1
  371. package/dist/Topic-19QeHBIR.d.cts +0 -91
  372. package/dist/Topic-19QeHBIR.d.cts.map +0 -1
  373. package/dist/Topic-DuFeqkBh.d.mts +0 -91
  374. package/dist/Topic-DuFeqkBh.d.mts.map +0 -1
  375. package/dist/auth.d.cts.map +0 -1
  376. package/dist/auth.d.mts.map +0 -1
  377. package/dist/cache-0ANvRQnD.mjs +0 -51
  378. package/dist/cache-0ANvRQnD.mjs.map +0 -1
  379. package/dist/cache-3WSvAulx.cjs +0 -57
  380. package/dist/cache-3WSvAulx.cjs.map +0 -1
  381. package/dist/cache-BrRz3fEB.d.mts.map +0 -1
  382. package/dist/cache-BtZY_tHe.d.cts.map +0 -1
  383. package/dist/clone-DblgEZZa.mjs.map +0 -1
  384. package/dist/clone-Dy0cR2SZ.cjs.map +0 -1
  385. package/dist/construct-interface-BfjcOD_E.cjs +0 -117
  386. package/dist/construct-interface-BfjcOD_E.cjs.map +0 -1
  387. package/dist/construct-interface-D9d4Gm4p.d.cts.map +0 -1
  388. package/dist/construct-interface-Z4CpS8tK.mjs +0 -81
  389. package/dist/construct-interface-Z4CpS8tK.mjs.map +0 -1
  390. package/dist/construct-interface-g5GM5pwR.d.mts.map +0 -1
  391. package/dist/database/kysely.cjs.map +0 -1
  392. package/dist/database/kysely.d.cts.map +0 -1
  393. package/dist/database/kysely.d.mts.map +0 -1
  394. package/dist/database/kysely.mjs.map +0 -1
  395. package/dist/functions-i_la-N5r.cjs.map +0 -1
  396. package/dist/index-Bd5FqCoe.d.cts.map +0 -1
  397. package/dist/index-BknhM6Ux.d.mts +0 -31
  398. package/dist/index-BknhM6Ux.d.mts.map +0 -1
  399. package/dist/index-CBSfrowv.d.cts +0 -31
  400. package/dist/index-CBSfrowv.d.cts.map +0 -1
  401. package/dist/index-D24Xm79M.d.cts +0 -171
  402. package/dist/index-D24Xm79M.d.cts.map +0 -1
  403. package/dist/index-_ajboYxK.d.mts +0 -171
  404. package/dist/index-_ajboYxK.d.mts.map +0 -1
  405. package/dist/index-lAO9egTb.d.mts.map +0 -1
  406. package/dist/lazyAccessors-BoJN3SMd.mjs.map +0 -1
  407. package/dist/lazyAccessors-e3j2oE2m.cjs.map +0 -1
  408. package/dist/processAudits-CGqttuXm.cjs +0 -92
  409. package/dist/processAudits-CGqttuXm.cjs.map +0 -1
  410. package/dist/processAudits-Dmts9H_b.mjs +0 -80
  411. package/dist/processAudits-Dmts9H_b.mjs.map +0 -1
  412. package/dist/queue/index.cjs.map +0 -1
  413. package/dist/queue/index.d.cts.map +0 -1
  414. package/dist/queue/index.d.mts.map +0 -1
  415. package/dist/queue/index.mjs.map +0 -1
  416. package/dist/surfaceEnv-BFXEms2f.cjs +0 -39
  417. package/dist/surfaceEnv-BFXEms2f.cjs.map +0 -1
  418. package/dist/surfaceEnv-C3Ktahea.mjs +0 -27
  419. package/dist/surfaceEnv-C3Ktahea.mjs.map +0 -1
  420. package/dist/telemetry-C3L0iS28.d.cts.map +0 -1
  421. package/dist/telemetry-D7bVFLGi.d.mts.map +0 -1
  422. package/dist/topic/index.cjs.map +0 -1
  423. package/dist/topic/index.mjs.map +0 -1
  424. package/dist/types-BlAkSuGI.d.cts.map +0 -1
  425. package/dist/types-aKksMEWL.d.mts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Subscriber-2mEi0ImH.d.cts","names":[],"sources":["../src/subscribers/Subscriber.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Subscriber-xTJ9ayPN.d.mts","names":[],"sources":["../src/subscribers/Subscriber.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubscriberBuilder-4OPehf2R.cjs","names":["Construct","obj: any","ConstructType","handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","DEFAULT_LOGGER","publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>","topicName?: string","constructs: string[]","DEFAULT_LOGGER","topic: Topic<TName, TEvents>","timeout: number","schema: T","constructs: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>"],"sources":["../src/subscribers/Subscriber.ts","../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":["import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Construct, ConstructType } from '../Construct';\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n\tTPublisher extends EventPublisher<any> | undefined,\n\tTEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n\t? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n\t: never;\n\nexport class Subscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends\n\t\tExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n\tTLogger,\n\tTEventPublisherServiceName,\n\tTEventPublisher,\n\tOutSchema,\n\tTServices\n> {\n\t__IS_SUBSCRIBER__ = true;\n\n\tstatic isSubscriber(\n\t\tobj: any,\n\t): obj is Subscriber<any, any, any, any, any, any> {\n\t\treturn Boolean(\n\t\t\tobj &&\n\t\t\t\tobj.__IS_SUBSCRIBER__ === true &&\n\t\t\t\tobj.type === ConstructType.Subscriber,\n\t\t);\n\t}\n\n\tconstructor(\n\t\tpublic readonly handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t\tpublic override readonly timeout: number = 30000,\n\t\tprotected _subscribedEvents?: TSubscribedEvents,\n\t\tpublic override readonly outputSchema?: OutSchema,\n\t\tpublic override readonly services: TServices = [] as unknown as TServices,\n\t\tpublic override readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n\t\tpublic override readonly publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>,\n\t\t/**\n\t\t * The name of the {@link Topic} this subscriber binds to (via\n\t\t * `s.topic(topic)`), recorded for the manifest so infra wires the SNS\n\t\t * subscription. Undefined when the subscriber's events are typed from a\n\t\t * (hand-written) publisher instead.\n\t\t */\n\t\tpublic readonly topicName?: string,\n\t\t/**\n\t\t * The construct ids `.dependsOn()` named — last, so no existing positional\n\t\t * argument moves.\n\t\t */\n\t\tconstructs: string[] = [],\n\t) {\n\t\tsuper(\n\t\t\tConstructType.Subscriber,\n\t\t\tlogger,\n\t\t\tservices,\n\t\t\t[],\n\t\t\tpublisherService,\n\t\t\toutputSchema,\n\t\t\ttimeout,\n\t\t\tundefined, // memorySize\n\t\t\tundefined, // auditorStorageService\n\t\t\tconstructs,\n\t\t);\n\t}\n\n\tget subscribedEvents(): TSubscribedEvents | undefined {\n\t\treturn this._subscribedEvents;\n\t}\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n\tctx: SubscriberContext<\n\t\tTEventPublisher,\n\t\tTSubscribedEvents,\n\t\tTServices,\n\t\tTLogger\n\t>,\n) => OutSchema extends StandardSchemaV1\n\t? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n\t: any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n> = {\n\tevents: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n","import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { cloneWith } from '../clone';\nimport {\n\ttype Consumable,\n\tidsOf,\n\ttype ServicesOf,\n\tservicesOf,\n} from '../construct-interface';\nimport type { Topic, TopicEvents, TopicMessage } from '../topic/Topic';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _subscribedEvents: TSubscribedEvents = [] as any;\n\tprivate _timeout?: number;\n\tprivate outputSchema?: OutSchema;\n\tprivate _services: TServices = [] as Service[] as TServices;\n\t/** The construct ids `.dependsOn()` named — what the manifest records. */\n\tpublic _constructs: string[] = [];\n\tprivate _logger: TLogger = DEFAULT_LOGGER;\n\t/**\n\t * The deploy unit that runs this, by construct id. Seeded by the factory a\n\t * `Worker` hands out, so a subscriber is not owned by its directory.\n\t */\n\tpublic _owner?: string;\n\tprivate _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tprivate _topicName?: string;\n\n\tconstructor() {\n\t\tthis._timeout = 30000; // Default timeout\n\t}\n\n\t/**\n\t * Bind this subscriber to a {@link Topic} — the preferred way to type and wire\n\t * a fan-out consumer. It supplies the subscribable event types (and their\n\t * payloads) from the topic's contract and records the binding for the manifest,\n\t * so infra wires the SNS subscription.\n\t *\n\t * Prefer this over typing via a hand-written publisher service: a consumer does\n\t * not publish, so binding a topic does *not* require the topic's publisher\n\t * connection string (least privilege). Use `.publisher(...)` only when the\n\t * subscriber actually publishes follow-up events.\n\t */\n\ttopic<TName extends string, TEvents extends TopicEvents>(\n\t\ttopic: Topic<TName, TEvents>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\t_topicName: topic.name,\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\n\t}\n\n\ttimeout(timeout: number): this {\n\t\treturn cloneWith(this, { _timeout: timeout });\n\t}\n\n\toutput<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\toutputSchema: schema as unknown as OutSchema,\n\t\t}) as any;\n\t}\n\n\t/**\n\t * Depend on constructs — a database, a bucket, a mail sender, a queue, a\n\t * topic.\n\t *\n\t * It records the edge and dissolves each construct's client into the\n\t * handler's service record under the construct's own id, so\n\t * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.\n\t *\n\t * Constructs only. A `Service` does not match the shape, which is what keeps\n\t * env sniffing confined to `.services()` and the explicit lift.\n\t */\n\tdependsOn<const T extends readonly Consumable[]>(\n\t\tconstructs: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...ServicesOf<T>],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\t// Both halves of the edge, from one call and one clone: the services the\n\t\t// handler runs with, and the ids the manifest records. Recording them\n\t\t// separately is what let them drift apart.\n\t\t//\n\t\t// `servicesOf` is the half that validates, so it runs first — recording\n\t\t// ids ahead of it left a caught `NotAConstruct` with `undefined` already\n\t\t// on a `string[]`.\n\t\tconst services = servicesOf(constructs) as unknown as Service[];\n\n\t\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services],\n\t\t\t_constructs: idsOf(constructs, this._constructs),\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\t[...TServices, ...ServicesOf<T>],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\n\t}\n\n\tservices<T extends Service[]>(\n\t\tservices: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services] as any,\n\t\t}) as any;\n\t}\n\n\tlogger<T extends Logger>(\n\t\tlogger: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, { _logger: logger as unknown as TLogger }) as any;\n\t}\n\n\tpublisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tT,\n\t\tTName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, { _publisher: publisher as any }) as any;\n\t}\n\n\tsubscribe<\n\t\tTEvent extends TEventPublisher extends EventPublisher<any>\n\t\t\t?\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type']\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type'][]\n\t\t\t: never,\n\t>(\n\t\tevent: TEvent,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTEvent extends any[]\n\t\t\t? [...TSubscribedEvents, ...TEvent]\n\t\t\t: [...TSubscribedEvents, TEvent]\n\t> {\n\t\tconst eventsToAdd = Array.isArray(event) ? event : [event];\n\t\treturn cloneWith(this, {\n\t\t\t_subscribedEvents: [...this._subscribedEvents, ...eventsToAdd] as any,\n\t\t}) as any;\n\t}\n\n\thandle(\n\t\tfn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t): Subscriber<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tconst subscriber = new Subscriber(\n\t\t\tfn,\n\t\t\tthis._timeout,\n\t\t\tthis._subscribedEvents,\n\t\t\tthis.outputSchema,\n\t\t\tthis._services,\n\t\t\tthis._logger,\n\t\t\tthis._publisher,\n\t\t\tthis._topicName,\n\t\t\tthis._constructs,\n\t\t);\n\n\t\t// Which process runs it. Carried from the factory rather than inferred\n\t\t// from the directory the file happens to sit in.\n\t\tsubscriber.owner = this._owner;\n\n\t\t// No reset: `.handle()` reads this builder and leaves it alone, so a\n\t\t// configured base stays usable for the next subscriber.\n\t\treturn subscriber;\n\t}\n}\n"],"mappings":";;;;;;;AAmBA,IAAa,aAAb,cAQUA,4BAMR;CACD,oBAAoB;CAEpB,OAAO,aACNC,KACkD;AAClD,SAAO,QACN,OACC,IAAI,sBAAsB,QAC1B,IAAI,SAASC,gCAAc,WAC5B;CACD;CAED,YACiBC,SAOSC,UAAkB,KACjCC,mBACeC,cACAC,WAAsB,CAAE,GACxBC,SAAkBC,2CAClBC,kBAUTC,WAKhBC,aAAuB,CAAE,GACxB;AACD,QACCV,gCAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,cACA,yBAGA,WACA;EAxCe;EAOS;EACf;EACe;EACA;EACA;EACA;EAUT;CAmBhB;CAED,IAAI,mBAAkD;AACrD,SAAO,KAAK;CACZ;AACD;;;;AC3ED,IAAa,oBAAb,MAOE;CACD,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;;CAEjC,AAAO,cAAwB,CAAE;CACjC,AAAQ,UAAmBW;;;;;CAK3B,AAAO;CACP,AAAQ;CACR,AAAQ;CAER,cAAc;AACb,OAAK,WAAW;CAChB;;;;;;;;;;;;CAaD,MACCC,OAQC;AACD,SAAO,wBAAU,MAAM,EACtB,YAAY,MAAM,KAClB,EAAC;CAQF;CAED,QAAQC,SAAuB;AAC9B,SAAO,wBAAU,MAAM,EAAE,UAAU,QAAS,EAAC;CAC7C;CAED,OACCC,QAQC;AACD,SAAO,wBAAU,MAAM,EACtB,cAAc,OACd,EAAC;CACF;;;;;;;;;;;;CAaD,UACCC,YAQC;EAQD,MAAM,WAAW,uCAAW,WAAW;AAEvC,SAAO,wBAAU,MAAM;GACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;GAC3C,aAAa,kCAAM,YAAY,KAAK,YAAY;EAChD,EAAC;CAQF;CAED,SACCC,UAQC;AACD,SAAO,wBAAU,MAAM,EACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,EAC3C,EAAC;CACF;CAED,OACCC,QAQC;AACD,SAAO,wBAAU,MAAM,EAAE,SAAS,OAA8B,EAAC;CACjE;CAED,UACCC,WAQC;AACD,SAAO,wBAAU,MAAM,EAAE,YAAY,UAAkB,EAAC;CACxD;CAED,UAOCC,OAUC;EACD,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,SAAO,wBAAU,MAAM,EACtB,mBAAmB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY,EAC9D,EAAC;CACF;CAED,OACCC,IAcC;EACD,MAAM,aAAa,IAAI,WACtB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,YACL,KAAK;AAKN,aAAW,QAAQ,KAAK;AAIxB,SAAO;CACP;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubscriberBuilder-BjkbeT9l.mjs","names":["obj: any","handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>","topicName?: string","constructs: string[]","topic: Topic<TName, TEvents>","timeout: number","schema: T","constructs: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>"],"sources":["../src/subscribers/Subscriber.ts","../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":["import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Construct, ConstructType } from '../Construct';\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n\tTPublisher extends EventPublisher<any> | undefined,\n\tTEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n\t? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n\t: never;\n\nexport class Subscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends\n\t\tExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n\tTLogger,\n\tTEventPublisherServiceName,\n\tTEventPublisher,\n\tOutSchema,\n\tTServices\n> {\n\t__IS_SUBSCRIBER__ = true;\n\n\tstatic isSubscriber(\n\t\tobj: any,\n\t): obj is Subscriber<any, any, any, any, any, any> {\n\t\treturn Boolean(\n\t\t\tobj &&\n\t\t\t\tobj.__IS_SUBSCRIBER__ === true &&\n\t\t\t\tobj.type === ConstructType.Subscriber,\n\t\t);\n\t}\n\n\tconstructor(\n\t\tpublic readonly handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t\tpublic override readonly timeout: number = 30000,\n\t\tprotected _subscribedEvents?: TSubscribedEvents,\n\t\tpublic override readonly outputSchema?: OutSchema,\n\t\tpublic override readonly services: TServices = [] as unknown as TServices,\n\t\tpublic override readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n\t\tpublic override readonly publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>,\n\t\t/**\n\t\t * The name of the {@link Topic} this subscriber binds to (via\n\t\t * `s.topic(topic)`), recorded for the manifest so infra wires the SNS\n\t\t * subscription. Undefined when the subscriber's events are typed from a\n\t\t * (hand-written) publisher instead.\n\t\t */\n\t\tpublic readonly topicName?: string,\n\t\t/**\n\t\t * The construct ids `.dependsOn()` named — last, so no existing positional\n\t\t * argument moves.\n\t\t */\n\t\tconstructs: string[] = [],\n\t) {\n\t\tsuper(\n\t\t\tConstructType.Subscriber,\n\t\t\tlogger,\n\t\t\tservices,\n\t\t\t[],\n\t\t\tpublisherService,\n\t\t\toutputSchema,\n\t\t\ttimeout,\n\t\t\tundefined, // memorySize\n\t\t\tundefined, // auditorStorageService\n\t\t\tconstructs,\n\t\t);\n\t}\n\n\tget subscribedEvents(): TSubscribedEvents | undefined {\n\t\treturn this._subscribedEvents;\n\t}\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n\tctx: SubscriberContext<\n\t\tTEventPublisher,\n\t\tTSubscribedEvents,\n\t\tTServices,\n\t\tTLogger\n\t>,\n) => OutSchema extends StandardSchemaV1\n\t? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n\t: any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n> = {\n\tevents: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n","import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { cloneWith } from '../clone';\nimport {\n\ttype Consumable,\n\tidsOf,\n\ttype ServicesOf,\n\tservicesOf,\n} from '../construct-interface';\nimport type { Topic, TopicEvents, TopicMessage } from '../topic/Topic';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _subscribedEvents: TSubscribedEvents = [] as any;\n\tprivate _timeout?: number;\n\tprivate outputSchema?: OutSchema;\n\tprivate _services: TServices = [] as Service[] as TServices;\n\t/** The construct ids `.dependsOn()` named — what the manifest records. */\n\tpublic _constructs: string[] = [];\n\tprivate _logger: TLogger = DEFAULT_LOGGER;\n\t/**\n\t * The deploy unit that runs this, by construct id. Seeded by the factory a\n\t * `Worker` hands out, so a subscriber is not owned by its directory.\n\t */\n\tpublic _owner?: string;\n\tprivate _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tprivate _topicName?: string;\n\n\tconstructor() {\n\t\tthis._timeout = 30000; // Default timeout\n\t}\n\n\t/**\n\t * Bind this subscriber to a {@link Topic} — the preferred way to type and wire\n\t * a fan-out consumer. It supplies the subscribable event types (and their\n\t * payloads) from the topic's contract and records the binding for the manifest,\n\t * so infra wires the SNS subscription.\n\t *\n\t * Prefer this over typing via a hand-written publisher service: a consumer does\n\t * not publish, so binding a topic does *not* require the topic's publisher\n\t * connection string (least privilege). Use `.publisher(...)` only when the\n\t * subscriber actually publishes follow-up events.\n\t */\n\ttopic<TName extends string, TEvents extends TopicEvents>(\n\t\ttopic: Topic<TName, TEvents>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\t_topicName: topic.name,\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\n\t}\n\n\ttimeout(timeout: number): this {\n\t\treturn cloneWith(this, { _timeout: timeout });\n\t}\n\n\toutput<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\toutputSchema: schema as unknown as OutSchema,\n\t\t}) as any;\n\t}\n\n\t/**\n\t * Depend on constructs — a database, a bucket, a mail sender, a queue, a\n\t * topic.\n\t *\n\t * It records the edge and dissolves each construct's client into the\n\t * handler's service record under the construct's own id, so\n\t * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.\n\t *\n\t * Constructs only. A `Service` does not match the shape, which is what keeps\n\t * env sniffing confined to `.services()` and the explicit lift.\n\t */\n\tdependsOn<const T extends readonly Consumable[]>(\n\t\tconstructs: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...ServicesOf<T>],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\t// Both halves of the edge, from one call and one clone: the services the\n\t\t// handler runs with, and the ids the manifest records. Recording them\n\t\t// separately is what let them drift apart.\n\t\t//\n\t\t// `servicesOf` is the half that validates, so it runs first — recording\n\t\t// ids ahead of it left a caught `NotAConstruct` with `undefined` already\n\t\t// on a `string[]`.\n\t\tconst services = servicesOf(constructs) as unknown as Service[];\n\n\t\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services],\n\t\t\t_constructs: idsOf(constructs, this._constructs),\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\t[...TServices, ...ServicesOf<T>],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\n\t}\n\n\tservices<T extends Service[]>(\n\t\tservices: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services] as any,\n\t\t}) as any;\n\t}\n\n\tlogger<T extends Logger>(\n\t\tlogger: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, { _logger: logger as unknown as TLogger }) as any;\n\t}\n\n\tpublisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tT,\n\t\tTName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, { _publisher: publisher as any }) as any;\n\t}\n\n\tsubscribe<\n\t\tTEvent extends TEventPublisher extends EventPublisher<any>\n\t\t\t?\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type']\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type'][]\n\t\t\t: never,\n\t>(\n\t\tevent: TEvent,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTEvent extends any[]\n\t\t\t? [...TSubscribedEvents, ...TEvent]\n\t\t\t: [...TSubscribedEvents, TEvent]\n\t> {\n\t\tconst eventsToAdd = Array.isArray(event) ? event : [event];\n\t\treturn cloneWith(this, {\n\t\t\t_subscribedEvents: [...this._subscribedEvents, ...eventsToAdd] as any,\n\t\t}) as any;\n\t}\n\n\thandle(\n\t\tfn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t): Subscriber<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tconst subscriber = new Subscriber(\n\t\t\tfn,\n\t\t\tthis._timeout,\n\t\t\tthis._subscribedEvents,\n\t\t\tthis.outputSchema,\n\t\t\tthis._services,\n\t\t\tthis._logger,\n\t\t\tthis._publisher,\n\t\t\tthis._topicName,\n\t\t\tthis._constructs,\n\t\t);\n\n\t\t// Which process runs it. Carried from the factory rather than inferred\n\t\t// from the directory the file happens to sit in.\n\t\tsubscriber.owner = this._owner;\n\n\t\t// No reset: `.handle()` reads this builder and leaves it alone, so a\n\t\t// configured base stays usable for the next subscriber.\n\t\treturn subscriber;\n\t}\n}\n"],"mappings":";;;;;;AAmBA,IAAa,aAAb,cAQU,UAMR;CACD,oBAAoB;CAEpB,OAAO,aACNA,KACkD;AAClD,SAAO,QACN,OACC,IAAI,sBAAsB,QAC1B,IAAI,SAAS,cAAc,WAC5B;CACD;CAED,YACiBC,SAOSC,UAAkB,KACjCC,mBACeC,cACAC,WAAsB,CAAE,GACxBC,SAAkB,gBAClBC,kBAUTC,WAKhBC,aAAuB,CAAE,GACxB;AACD,QACC,cAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,cACA,yBAGA,WACA;EAxCe;EAOS;EACf;EACe;EACA;EACA;EACA;EAUT;CAmBhB;CAED,IAAI,mBAAkD;AACrD,SAAO,KAAK;CACZ;AACD;;;;AC3ED,IAAa,oBAAb,MAOE;CACD,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;;CAEjC,AAAO,cAAwB,CAAE;CACjC,AAAQ,UAAmB;;;;;CAK3B,AAAO;CACP,AAAQ;CACR,AAAQ;CAER,cAAc;AACb,OAAK,WAAW;CAChB;;;;;;;;;;;;CAaD,MACCC,OAQC;AACD,SAAO,UAAU,MAAM,EACtB,YAAY,MAAM,KAClB,EAAC;CAQF;CAED,QAAQC,SAAuB;AAC9B,SAAO,UAAU,MAAM,EAAE,UAAU,QAAS,EAAC;CAC7C;CAED,OACCC,QAQC;AACD,SAAO,UAAU,MAAM,EACtB,cAAc,OACd,EAAC;CACF;;;;;;;;;;;;CAaD,UACCC,YAQC;EAQD,MAAM,WAAW,WAAW,WAAW;AAEvC,SAAO,UAAU,MAAM;GACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;GAC3C,aAAa,MAAM,YAAY,KAAK,YAAY;EAChD,EAAC;CAQF;CAED,SACCC,UAQC;AACD,SAAO,UAAU,MAAM,EACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,EAC3C,EAAC;CACF;CAED,OACCC,QAQC;AACD,SAAO,UAAU,MAAM,EAAE,SAAS,OAA8B,EAAC;CACjE;CAED,UACCC,WAQC;AACD,SAAO,UAAU,MAAM,EAAE,YAAY,UAAkB,EAAC;CACxD;CAED,UAOCC,OAUC;EACD,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,SAAO,UAAU,MAAM,EACtB,mBAAmB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY,EAC9D,EAAC;CACF;CAED,OACCC,IAcC;EACD,MAAM,aAAa,IAAI,WACtB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,YACL,KAAK;AAKN,aAAW,QAAQ,KAAK;AAIxB,SAAO;CACP;AACD"}
@@ -1,62 +0,0 @@
1
- import { Consumable, ServicesOf } from "./construct-interface-g5GM5pwR.mjs";
2
- import { Subscriber, SubscriberHandler } from "./Subscriber-xTJ9ayPN.mjs";
3
- import { Topic, TopicEvents, TopicMessage } from "./Topic-DuFeqkBh.mjs";
4
- import { Service } from "@geekmidas/services";
5
- import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
6
- import { Logger } from "@geekmidas/logger";
7
- import { StandardSchemaV1 } from "@standard-schema/spec";
8
-
9
- //#region src/subscribers/SubscriberBuilder.d.ts
10
- declare class SubscriberBuilder<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends any[] = []> {
11
- private _subscribedEvents;
12
- private _timeout?;
13
- private outputSchema?;
14
- private _services;
15
- /** The construct ids `.dependsOn()` named — what the manifest records. */
16
- _constructs: string[];
17
- private _logger;
18
- /**
19
- * The deploy unit that runs this, by construct id. Seeded by the factory a
20
- * `Worker` hands out, so a subscriber is not owned by its directory.
21
- */
22
- _owner?: string;
23
- private _publisher?;
24
- private _topicName?;
25
- constructor();
26
- /**
27
- * Bind this subscriber to a {@link Topic} — the preferred way to type and wire
28
- * a fan-out consumer. It supplies the subscribable event types (and their
29
- * payloads) from the topic's contract and records the binding for the manifest,
30
- * so infra wires the SNS subscription.
31
- *
32
- * Prefer this over typing via a hand-written publisher service: a consumer does
33
- * not publish, so binding a topic does *not* require the topic's publisher
34
- * connection string (least privilege). Use `.publisher(...)` only when the
35
- * subscriber actually publishes follow-up events.
36
- */
37
- topic<TName extends string, TEvents extends TopicEvents>(topic: Topic<TName, TEvents>): SubscriberBuilder<TServices, TLogger, OutSchema, EventPublisher<TopicMessage<TEvents>>, TEventPublisherServiceName, TSubscribedEvents>;
38
- timeout(timeout: number): this;
39
- output<T extends StandardSchemaV1>(schema: T): SubscriberBuilder<TServices, TLogger, T, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
40
- /**
41
- * Depend on constructs — a database, a bucket, a mail sender, a queue, a
42
- * topic.
43
- *
44
- * It records the edge and dissolves each construct's client into the
45
- * handler's service record under the construct's own id, so
46
- * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
47
- *
48
- * Constructs only. A `Service` does not match the shape, which is what keeps
49
- * env sniffing confined to `.services()` and the explicit lift.
50
- */
51
- dependsOn<const T extends readonly Consumable[]>(constructs: T): SubscriberBuilder<[...TServices, ...ServicesOf<T>], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
52
- services<T extends Service[]>(services: T): SubscriberBuilder<[...TServices, ...T], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
53
- logger<T extends Logger>(logger: T): SubscriberBuilder<TServices, T, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
54
- publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): SubscriberBuilder<TServices, TLogger, OutSchema, T, TName, TSubscribedEvents>;
55
- subscribe<TEvent extends (TEventPublisher extends EventPublisher<any> ? ExtractPublisherMessage<TEventPublisher>['type'] | ExtractPublisherMessage<TEventPublisher>['type'][] : never)>(event: TEvent): SubscriberBuilder<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TEvent extends any[] ? [...TSubscribedEvents, ...TEvent] : [...TSubscribedEvents, TEvent]>;
56
- handle(fn: SubscriberHandler<TEventPublisher, TSubscribedEvents, TServices, TLogger, OutSchema>): Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
57
- }
58
- //# sourceMappingURL=SubscriberBuilder.d.ts.map
59
-
60
- //#endregion
61
- export { SubscriberBuilder };
62
- //# sourceMappingURL=SubscriberBuilder-Dptmo-1A.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubscriberBuilder-Dptmo-1A.d.mts","names":[],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import { Consumable, ServicesOf } from "./construct-interface-D9d4Gm4p.cjs";
2
- import { Subscriber, SubscriberHandler } from "./Subscriber-2mEi0ImH.cjs";
3
- import { Topic, TopicEvents, TopicMessage } from "./Topic-19QeHBIR.cjs";
4
- import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
5
- import { Logger } from "@geekmidas/logger";
6
- import { Service } from "@geekmidas/services";
7
- import { StandardSchemaV1 } from "@standard-schema/spec";
8
-
9
- //#region src/subscribers/SubscriberBuilder.d.ts
10
- declare class SubscriberBuilder<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends any[] = []> {
11
- private _subscribedEvents;
12
- private _timeout?;
13
- private outputSchema?;
14
- private _services;
15
- /** The construct ids `.dependsOn()` named — what the manifest records. */
16
- _constructs: string[];
17
- private _logger;
18
- /**
19
- * The deploy unit that runs this, by construct id. Seeded by the factory a
20
- * `Worker` hands out, so a subscriber is not owned by its directory.
21
- */
22
- _owner?: string;
23
- private _publisher?;
24
- private _topicName?;
25
- constructor();
26
- /**
27
- * Bind this subscriber to a {@link Topic} — the preferred way to type and wire
28
- * a fan-out consumer. It supplies the subscribable event types (and their
29
- * payloads) from the topic's contract and records the binding for the manifest,
30
- * so infra wires the SNS subscription.
31
- *
32
- * Prefer this over typing via a hand-written publisher service: a consumer does
33
- * not publish, so binding a topic does *not* require the topic's publisher
34
- * connection string (least privilege). Use `.publisher(...)` only when the
35
- * subscriber actually publishes follow-up events.
36
- */
37
- topic<TName extends string, TEvents extends TopicEvents>(topic: Topic<TName, TEvents>): SubscriberBuilder<TServices, TLogger, OutSchema, EventPublisher<TopicMessage<TEvents>>, TEventPublisherServiceName, TSubscribedEvents>;
38
- timeout(timeout: number): this;
39
- output<T extends StandardSchemaV1>(schema: T): SubscriberBuilder<TServices, TLogger, T, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
40
- /**
41
- * Depend on constructs — a database, a bucket, a mail sender, a queue, a
42
- * topic.
43
- *
44
- * It records the edge and dissolves each construct's client into the
45
- * handler's service record under the construct's own id, so
46
- * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
47
- *
48
- * Constructs only. A `Service` does not match the shape, which is what keeps
49
- * env sniffing confined to `.services()` and the explicit lift.
50
- */
51
- dependsOn<const T extends readonly Consumable[]>(constructs: T): SubscriberBuilder<[...TServices, ...ServicesOf<T>], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
52
- services<T extends Service[]>(services: T): SubscriberBuilder<[...TServices, ...T], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
53
- logger<T extends Logger>(logger: T): SubscriberBuilder<TServices, T, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
54
- publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): SubscriberBuilder<TServices, TLogger, OutSchema, T, TName, TSubscribedEvents>;
55
- subscribe<TEvent extends (TEventPublisher extends EventPublisher<any> ? ExtractPublisherMessage<TEventPublisher>['type'] | ExtractPublisherMessage<TEventPublisher>['type'][] : never)>(event: TEvent): SubscriberBuilder<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TEvent extends any[] ? [...TSubscribedEvents, ...TEvent] : [...TSubscribedEvents, TEvent]>;
56
- handle(fn: SubscriberHandler<TEventPublisher, TSubscribedEvents, TServices, TLogger, OutSchema>): Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
57
- }
58
- //# sourceMappingURL=SubscriberBuilder.d.ts.map
59
-
60
- //#endregion
61
- export { SubscriberBuilder };
62
- //# sourceMappingURL=SubscriberBuilder-waNhzjSM.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubscriberBuilder-waNhzjSM.d.cts","names":[],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import { Construct } from "./Construct-C0ijr2qp.cjs";
2
- import { EventPublisher, PublishableMessage } from "@geekmidas/events";
3
- import { Logger } from "@geekmidas/logger";
4
- import { InferStandardSchema } from "@geekmidas/schema";
5
- import { Service } from "@geekmidas/services";
6
- import { StandardSchemaV1 } from "@standard-schema/spec";
7
- import { Declaration } from "@geekmidas/manifest";
8
-
9
- //#region src/topic/Topic.d.ts
10
- /** A topic's event contract — a map of event type → payload schema. */
11
- type TopicEvents = Record<string, StandardSchemaV1>;
12
- /**
13
- * The union of wire messages a topic carries, derived from its event map:
14
- * `{ type: 'user.created'; payload: … } | { type: 'user.updated'; payload: … }`.
15
- */
16
- type TopicMessage<TEvents extends TopicEvents> = { [K in keyof TEvents & string]: PublishableMessage<K, InferStandardSchema<TEvents[K]>> }[keyof TEvents & string];
17
- /**
18
- * A topic — pub/sub fan-out. Unlike a `Queue` (point-to-point, one consumer), a
19
- * topic is a *resource* owned by no single handler: it declares the event
20
- * contract, derives a typed producer (`topic.publisher`), and any number of
21
- * subscribers (`s.topic(topic)`) bind to it. `gkm build` discovers it into the
22
- * manifest's `topics` field; infra provisions an SNS topic.
23
- *
24
- * This replaces hand-writing a publisher `Service`: the publisher is *derived*
25
- * from the declared event contract, the same way `Queue` derives its publisher.
26
- */
27
- declare class Topic<TName extends string = string, TEvents extends TopicEvents = TopicEvents> extends Construct {
28
- readonly name: TName;
29
- /**
30
- * The event contract — a map of event type → payload schema. Named
31
- * `eventSchemas` (not `events`) to avoid clashing with `Construct.events`,
32
- * which is the array of `MappedEvent`s a construct *publishes*.
33
- */
34
- readonly eventSchemas: TEvents;
35
- __IS_TOPIC__: boolean;
36
- static isTopic(obj: unknown): obj is Topic<string, TopicEvents>;
37
- /**
38
- * The canonical id this topic is declared under.
39
- *
40
- * Derived from the name, so `users` and `Users` are one topic. The name is
41
- * left alone: subscribers bind to it and it is what the broker routes on.
42
- */
43
- readonly id: string;
44
- /**
45
- * The producer's env key, read by both {@link declare} and
46
- * {@link publisher} so the two cannot drift.
47
- */
48
- private readonly connectionKey;
49
- constructor(name: TName,
50
- /**
51
- * The event contract — a map of event type → payload schema. Named
52
- * `eventSchemas` (not `events`) to avoid clashing with `Construct.events`,
53
- * which is the array of `MappedEvent`s a construct *publishes*.
54
- */
55
- eventSchemas: TEvents, logger?: Logger);
56
- /**
57
- * What this topic is in the manifest.
58
- *
59
- * Only the producer's key: a subscriber is *bound* to a topic rather than
60
- * depending on it, so the binding is an edge the deploy target reads and not
61
- * an env key anyone can hold. Locally both sides meet on the same broker.
62
- */
63
- declare(): Declaration[];
64
- /** The event type names this topic carries. */
65
- get eventTypes(): (keyof TEvents & string)[];
66
- /**
67
- * The producer side — a `Service` exposing an `EventPublisher` typed to the
68
- * union of this topic's events. Inject via `.publisher(topic.publisher)` (for
69
- * declarative `.event(...)`) or `.services([topic.publisher])` (to publish
70
- * imperatively). Reads `<NAME>_PUBLISHER_CONNECTION_STRING` and selects the
71
- * transport from the URL protocol — `pgboss://` locally, `sns://` deployed.
72
- *
73
- * Because it's a `Service`, the connection-string requirement is sniffed into
74
- * the manifest of whatever construct injects it (least-privilege linking).
75
- */
76
- /**
77
- * The topic as a dependency — what `.dependsOn([users])` dissolves into,
78
- * reachable as `services.users`.
79
- *
80
- * It is the producer, because publishing is the only thing depending on a
81
- * topic can mean: a subscriber *binds* with `s.topic(…)` instead, and is
82
- * deliberately never handed this. {@link publisher} is the same service
83
- * under its older `<name>Publisher` key.
84
- */
85
- get service(): Service<Uncapitalize<TName>, EventPublisher<TopicMessage<TEvents>>>;
86
- get publisher(): Service<`${TName}Publisher`, EventPublisher<TopicMessage<TEvents>>>;
87
- }
88
- //# sourceMappingURL=Topic.d.ts.map
89
- //#endregion
90
- export { Topic, TopicEvents, TopicMessage };
91
- //# sourceMappingURL=Topic-19QeHBIR.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Topic-19QeHBIR.d.cts","names":[],"sources":["../src/topic/Topic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAoBY,WAAA,GAAc,eAAe;AAAzC;;;;AAAgC,KAMpB,YANoB,CAAA,gBAMS,WANT,CAAA,GAAA,QAMpB,MACC,OADW,GAAA,MAAA,GACQ,kBADR,CAEtB,CAFsB,EAGtB,mBAHsB,CAGF,OAHE,CAGM,CAHN,CAAA,CAAA,CAAA,EAAA,CAAA,MAKhB,OALgB,GAAA,MAAA,CAAA;;;;;;;;;AAKT;AAYf;AAAkB,cAAL,KAAK,CAAA,cAAA,MAAA,GAAA,MAAA,EAAA,gBAED,WAFC,GAEa,WAFb,CAAA,SAGR,SAAA,CAHQ;EAAA,SAED,IAAA,EA2BO,KA3BP;EAAW;;;;;EAIe,SAuBnB,YAAA,EAMQ,OANR;EAAK,YAMG,EAAA,OAAA;EAAO,OAC7B,OAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IA9B4B,KA8B5B,CAAA,MAAA,EA9B0C,WA8B1C,CAAA;EAAuB;;;;;;EA2DJ,SAA3B,EAAA,EAAA,MAAA;EAAc;;;;EAYa,iBAA3B,aAAA;EAAc,WAFE,CAAA,IAAA,EA5EM,KA4EN;EAAO;AAtGN;;;;gBAgCa,kBACtB;;;;;;;;aAeE;;2BAmBc;;;;;;;;;;;;;;;;;;;;iBAuBV,QACd,aAAa,QACb,eAAe,aAAa;mBAUZ,WACb,kBACH,eAAe,aAAa"}
@@ -1,91 +0,0 @@
1
- import { Construct } from "./Construct-Ct8nalEi.mjs";
2
- import { Declaration } from "@geekmidas/manifest";
3
- import { Service } from "@geekmidas/services";
4
- import { EventPublisher, PublishableMessage } from "@geekmidas/events";
5
- import { Logger } from "@geekmidas/logger";
6
- import { InferStandardSchema } from "@geekmidas/schema";
7
- import { StandardSchemaV1 } from "@standard-schema/spec";
8
-
9
- //#region src/topic/Topic.d.ts
10
- /** A topic's event contract — a map of event type → payload schema. */
11
- type TopicEvents = Record<string, StandardSchemaV1>;
12
- /**
13
- * The union of wire messages a topic carries, derived from its event map:
14
- * `{ type: 'user.created'; payload: … } | { type: 'user.updated'; payload: … }`.
15
- */
16
- type TopicMessage<TEvents extends TopicEvents> = { [K in keyof TEvents & string]: PublishableMessage<K, InferStandardSchema<TEvents[K]>> }[keyof TEvents & string];
17
- /**
18
- * A topic — pub/sub fan-out. Unlike a `Queue` (point-to-point, one consumer), a
19
- * topic is a *resource* owned by no single handler: it declares the event
20
- * contract, derives a typed producer (`topic.publisher`), and any number of
21
- * subscribers (`s.topic(topic)`) bind to it. `gkm build` discovers it into the
22
- * manifest's `topics` field; infra provisions an SNS topic.
23
- *
24
- * This replaces hand-writing a publisher `Service`: the publisher is *derived*
25
- * from the declared event contract, the same way `Queue` derives its publisher.
26
- */
27
- declare class Topic<TName extends string = string, TEvents extends TopicEvents = TopicEvents> extends Construct {
28
- readonly name: TName;
29
- /**
30
- * The event contract — a map of event type → payload schema. Named
31
- * `eventSchemas` (not `events`) to avoid clashing with `Construct.events`,
32
- * which is the array of `MappedEvent`s a construct *publishes*.
33
- */
34
- readonly eventSchemas: TEvents;
35
- __IS_TOPIC__: boolean;
36
- static isTopic(obj: unknown): obj is Topic<string, TopicEvents>;
37
- /**
38
- * The canonical id this topic is declared under.
39
- *
40
- * Derived from the name, so `users` and `Users` are one topic. The name is
41
- * left alone: subscribers bind to it and it is what the broker routes on.
42
- */
43
- readonly id: string;
44
- /**
45
- * The producer's env key, read by both {@link declare} and
46
- * {@link publisher} so the two cannot drift.
47
- */
48
- private readonly connectionKey;
49
- constructor(name: TName,
50
- /**
51
- * The event contract — a map of event type → payload schema. Named
52
- * `eventSchemas` (not `events`) to avoid clashing with `Construct.events`,
53
- * which is the array of `MappedEvent`s a construct *publishes*.
54
- */
55
- eventSchemas: TEvents, logger?: Logger);
56
- /**
57
- * What this topic is in the manifest.
58
- *
59
- * Only the producer's key: a subscriber is *bound* to a topic rather than
60
- * depending on it, so the binding is an edge the deploy target reads and not
61
- * an env key anyone can hold. Locally both sides meet on the same broker.
62
- */
63
- declare(): Declaration[];
64
- /** The event type names this topic carries. */
65
- get eventTypes(): (keyof TEvents & string)[];
66
- /**
67
- * The producer side — a `Service` exposing an `EventPublisher` typed to the
68
- * union of this topic's events. Inject via `.publisher(topic.publisher)` (for
69
- * declarative `.event(...)`) or `.services([topic.publisher])` (to publish
70
- * imperatively). Reads `<NAME>_PUBLISHER_CONNECTION_STRING` and selects the
71
- * transport from the URL protocol — `pgboss://` locally, `sns://` deployed.
72
- *
73
- * Because it's a `Service`, the connection-string requirement is sniffed into
74
- * the manifest of whatever construct injects it (least-privilege linking).
75
- */
76
- /**
77
- * The topic as a dependency — what `.dependsOn([users])` dissolves into,
78
- * reachable as `services.users`.
79
- *
80
- * It is the producer, because publishing is the only thing depending on a
81
- * topic can mean: a subscriber *binds* with `s.topic(…)` instead, and is
82
- * deliberately never handed this. {@link publisher} is the same service
83
- * under its older `<name>Publisher` key.
84
- */
85
- get service(): Service<Uncapitalize<TName>, EventPublisher<TopicMessage<TEvents>>>;
86
- get publisher(): Service<`${TName}Publisher`, EventPublisher<TopicMessage<TEvents>>>;
87
- }
88
- //# sourceMappingURL=Topic.d.ts.map
89
- //#endregion
90
- export { Topic, TopicEvents, TopicMessage };
91
- //# sourceMappingURL=Topic-DuFeqkBh.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Topic-DuFeqkBh.d.mts","names":[],"sources":["../src/topic/Topic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAoBY,WAAA,GAAc,eAAe;AAAzC;;;;AAAgC,KAMpB,YANoB,CAAA,gBAMS,WANT,CAAA,GAAA,QAMpB,MACC,OADW,GAAA,MAAA,GACQ,kBADR,CAEtB,CAFsB,EAGtB,mBAHsB,CAGF,OAHE,CAGM,CAHN,CAAA,CAAA,CAAA,EAAA,CAAA,MAKhB,OALgB,GAAA,MAAA,CAAA;;;;;;;;;AAKT;AAYf;AAAkB,cAAL,KAAK,CAAA,cAAA,MAAA,GAAA,MAAA,EAAA,gBAED,WAFC,GAEa,WAFb,CAAA,SAGR,SAAA,CAHQ;EAAA,SAED,IAAA,EA2BO,KA3BP;EAAW;;;;;EAIe,SAuBnB,YAAA,EAMQ,OANR;EAAK,YAMG,EAAA,OAAA;EAAO,OAC7B,OAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IA9B4B,KA8B5B,CAAA,MAAA,EA9B0C,WA8B1C,CAAA;EAAuB;;;;;;EA2DJ,SAA3B,EAAA,EAAA,MAAA;EAAc;;;;EAYa,iBAA3B,aAAA;EAAc,WAFE,CAAA,IAAA,EA5EM,KA4EN;EAAO;AAtGN;;;;gBAgCa,kBACtB;;;;;;;;aAeE;;2BAmBc;;;;;;;;;;;;;;;;;;;;iBAuBV,QACd,aAAa,QACb,eAAe,aAAa;mBAUZ,WACb,kBACH,eAAe,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.cts","names":[],"sources":["../src/auth.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA+FuB,KArDX,UAAA,GAAa,UAqDF,CAAA,OArDoB,UAqDpB,CAAA;;AAET,KApDF,iBAAA,GAAoB,IAoDlB,CAnDb,UAmDa,CAAA,OAnDK,UAmDL,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,GAAA,QAAA,GAAA,UAAA,GAAA,SAAA,CAAA;AAC0B,UAhDvB,gBAgDuB,CAAA,kBAhDY,UAgDZ,CAAA,CAAA;EAAK;;;;;;;EAiBF,QAuC/B,EAhGD,SAgGC;EAAW;;;;;;;EA3DD,IAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;YAXlB,+BAES,2BACJ,oBAAoB,QAAQ;;cAKxB,4DAEM,aAAa,uBACnB,UAAU,OAAO;;eAEhB;oBACK,QAAQ,aAAa,QAAQ;;;;;;;kBAgB1C,cAAc,gBACO,iBAAiB;;;;;;;;;;;;;;;aAuChC;;;;;;;sBAyCD,yBACP,cAAc;;;;;;;;;;;;;;;;;;;;kBAkCK,yBAAyB;SAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.mts","names":[],"sources":["../src/auth.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA+FuB,KArDX,UAAA,GAAa,UAqDF,CAAA,OArDoB,UAqDpB,CAAA;;AAET,KApDF,iBAAA,GAAoB,IAoDlB,CAnDb,UAmDa,CAAA,OAnDK,UAmDL,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,GAAA,QAAA,GAAA,UAAA,GAAA,SAAA,CAAA;AAC0B,UAhDvB,gBAgDuB,CAAA,kBAhDY,UAgDZ,CAAA,CAAA;EAAK;;;;;;;EAiBF,QAuC/B,EAhGD,SAgGC;EAAW;;;;;;;EA3DD,IAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;YAXlB,+BAES,2BACJ,oBAAoB,QAAQ;;cAKxB,4DAEM,aAAa,uBACnB,UAAU,OAAO;;eAEhB;oBACK,QAAQ,aAAa,QAAQ;;;;;;;kBAgB1C,cAAc,gBACO,iBAAiB;;;;;;;;;;;;;;;aAuChC;;;;;;;sBAyCD,yBACP,cAAc;;;;;;;;;;;;;;;;;;;;kBAkCK,yBAAyB;SAAe"}
@@ -1,51 +0,0 @@
1
- import { canonicalId, provideKey, serviceKey } from "@geekmidas/manifest";
2
- import { createCacheClient } from "@geekmidas/cache";
3
-
4
- //#region src/cache.ts
5
- var Cache$1 = class {
6
- id;
7
- service;
8
- /**
9
- * Declared once and read by both `declare()` and `connect()`, so the key the
10
- * target publishes and the key the client reads cannot drift.
11
- */
12
- key;
13
- constructor(id, options = {}) {
14
- this.options = options;
15
- const canonical = canonicalId(id);
16
- this.id = canonical;
17
- this.key = provideKey(canonical, "url");
18
- this.service = {
19
- serviceName: serviceKey(canonical),
20
- register: (options$1) => this.connect(options$1)
21
- };
22
- }
23
- declare() {
24
- return [{
25
- kind: "cache",
26
- id: this.id,
27
- ...this.options.of ? { of: this.options.of } : {},
28
- ...this.options.table ? { table: this.options.table } : {},
29
- provides: [this.key]
30
- }];
31
- }
32
- /**
33
- * Builds the client from the single URL the target supplied.
34
- *
35
- * Any credential travels in that URL's userinfo rather than in a second key,
36
- * for the same reason a Postgres password does: an address and the thing that
37
- * opens it are one fact, and splitting them is one more thing to keep in step.
38
- *
39
- * The scheme selects the driver, so this construct imports no provider and
40
- * an app that caches in Postgres never resolves a Redis client. Whoever
41
- * assembles the application registers the drivers its target needs.
42
- */
43
- async connect({ envParser }) {
44
- const { url } = envParser.create((get) => ({ url: get(this.key).string() })).parse();
45
- return createCacheClient(url);
46
- }
47
- };
48
-
49
- //#endregion
50
- export { Cache$1 as Cache };
51
- //# sourceMappingURL=cache-0ANvRQnD.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-0ANvRQnD.mjs","names":["Cache","id: ConstructName<TName>","options: CacheOptions","options"],"sources":["../src/cache.ts"],"sourcesContent":["/**\n * `Cache` — a declared key/value cache.\n *\n * The same three-package meeting point as `ObjectStorage` and `Email`: it\n * implements the construct contract, derives its env key through\n * `@geekmidas/manifest`, and hands back a `@geekmidas/cache` client.\n *\n * It names no provider — and unlike `Email`, it cannot name one protocol\n * either. Every mail backend speaks SMTP, so an `smtp://` URL is true of all of\n * them; cache backends genuinely differ, because Upstash speaks HTTP, a Redis\n * speaks its wire protocol, and a table in Postgres speaks SQL. So the scheme in\n * the URL picks the driver, exactly as it does for object storage, and which\n * drivers exist is the generated entry point's decision.\n *\n * The backend is chosen at deploy, not here. An app caching in Postgres and an\n * app caching in Upstash are the same application code.\n */\n\nimport { type Cache as CacheClient, createCacheClient } from '@geekmidas/cache';\nimport {\n\ttype ConstructName,\n\tcanonicalId,\n\ttype Declaration,\n\tprovideKey,\n\tserviceKey,\n} from '@geekmidas/manifest';\nimport type { Service, ServiceRegisterOptions } from '@geekmidas/services';\nimport type { Construct } from './construct-interface';\n\nexport interface CacheOptions {\n\t/**\n\t * The database this cache lives in.\n\t *\n\t * Set by `database.cache()` rather than written by hand — the point of the\n\t * method is that the parent's id comes from the parent rather than from a\n\t * string somebody has to keep in step.\n\t */\n\tof?: string;\n\t/** The table entries are kept in. Defaults to `cache`. */\n\ttable?: string;\n}\n\nexport class Cache<TName extends string = string>\n\timplements Construct<TName, CacheClient>\n{\n\treadonly id: TName;\n\treadonly service: Service<Uncapitalize<TName>, CacheClient>;\n\n\t/**\n\t * Declared once and read by both `declare()` and `connect()`, so the key the\n\t * target publishes and the key the client reads cannot drift.\n\t */\n\tprivate readonly key: string;\n\n\tconstructor(\n\t\tid: ConstructName<TName>,\n\t\tprivate readonly options: CacheOptions = {},\n\t) {\n\t\tconst canonical = canonicalId(id as string);\n\n\t\tthis.id = canonical as TName;\n\t\tthis.key = provideKey(canonical, 'url');\n\n\t\t// A field, not a getter: consumers cache services by object identity.\n\t\tthis.service = {\n\t\t\tserviceName: serviceKey(canonical) as Uncapitalize<TName>,\n\t\t\tregister: (options) => this.connect(options),\n\t\t};\n\t}\n\n\tdeclare(): Declaration[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\tkind: 'cache',\n\t\t\t\tid: this.id,\n\t\t\t\t...(this.options.of ? { of: this.options.of } : {}),\n\t\t\t\t...(this.options.table ? { table: this.options.table } : {}),\n\t\t\t\tprovides: [this.key],\n\t\t\t},\n\t\t];\n\t}\n\n\t/**\n\t * Builds the client from the single URL the target supplied.\n\t *\n\t * Any credential travels in that URL's userinfo rather than in a second key,\n\t * for the same reason a Postgres password does: an address and the thing that\n\t * opens it are one fact, and splitting them is one more thing to keep in step.\n\t *\n\t * The scheme selects the driver, so this construct imports no provider and\n\t * an app that caches in Postgres never resolves a Redis client. Whoever\n\t * assembles the application registers the drivers its target needs.\n\t */\n\tprivate async connect({\n\t\tenvParser,\n\t}: ServiceRegisterOptions): Promise<CacheClient> {\n\t\tconst { url } = envParser\n\t\t\t.create((get) => ({ url: get(this.key).string() }))\n\t\t\t.parse();\n\n\t\treturn createCacheClient(url);\n\t}\n}\n"],"mappings":";;;;AA0CA,IAAaA,UAAb,MAEA;CACC,AAAS;CACT,AAAS;;;;;CAMT,AAAiB;CAEjB,YACCC,IACiBC,UAAwB,CAAE,GAC1C;EADgB;EAEjB,MAAM,YAAY,YAAY,GAAa;AAE3C,OAAK,KAAK;AACV,OAAK,MAAM,WAAW,WAAW,MAAM;AAGvC,OAAK,UAAU;GACd,aAAa,WAAW,UAAU;GAClC,UAAU,CAACC,cAAY,KAAK,QAAQA,UAAQ;EAC5C;CACD;CAED,UAAyB;AACxB,SAAO,CACN;GACC,MAAM;GACN,IAAI,KAAK;GACT,GAAI,KAAK,QAAQ,KAAK,EAAE,IAAI,KAAK,QAAQ,GAAI,IAAG,CAAE;GAClD,GAAI,KAAK,QAAQ,QAAQ,EAAE,OAAO,KAAK,QAAQ,MAAO,IAAG,CAAE;GAC3D,UAAU,CAAC,KAAK,GAAI;EACpB,CACD;CACD;;;;;;;;;;;;CAaD,MAAc,QAAQ,EACrB,WACwB,EAAwB;EAChD,MAAM,EAAE,KAAK,GAAG,UACd,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAE,GAAE,CAClD,OAAO;AAET,SAAO,kBAAkB,IAAI;CAC7B;AACD"}
@@ -1,57 +0,0 @@
1
- const require_chunk = require('./chunk-DWy1uDak.cjs');
2
- const __geekmidas_manifest = require_chunk.__toESM(require("@geekmidas/manifest"));
3
- const __geekmidas_cache = require_chunk.__toESM(require("@geekmidas/cache"));
4
-
5
- //#region src/cache.ts
6
- var Cache = class {
7
- id;
8
- service;
9
- /**
10
- * Declared once and read by both `declare()` and `connect()`, so the key the
11
- * target publishes and the key the client reads cannot drift.
12
- */
13
- key;
14
- constructor(id, options = {}) {
15
- this.options = options;
16
- const canonical = (0, __geekmidas_manifest.canonicalId)(id);
17
- this.id = canonical;
18
- this.key = (0, __geekmidas_manifest.provideKey)(canonical, "url");
19
- this.service = {
20
- serviceName: (0, __geekmidas_manifest.serviceKey)(canonical),
21
- register: (options$1) => this.connect(options$1)
22
- };
23
- }
24
- declare() {
25
- return [{
26
- kind: "cache",
27
- id: this.id,
28
- ...this.options.of ? { of: this.options.of } : {},
29
- ...this.options.table ? { table: this.options.table } : {},
30
- provides: [this.key]
31
- }];
32
- }
33
- /**
34
- * Builds the client from the single URL the target supplied.
35
- *
36
- * Any credential travels in that URL's userinfo rather than in a second key,
37
- * for the same reason a Postgres password does: an address and the thing that
38
- * opens it are one fact, and splitting them is one more thing to keep in step.
39
- *
40
- * The scheme selects the driver, so this construct imports no provider and
41
- * an app that caches in Postgres never resolves a Redis client. Whoever
42
- * assembles the application registers the drivers its target needs.
43
- */
44
- async connect({ envParser }) {
45
- const { url } = envParser.create((get) => ({ url: get(this.key).string() })).parse();
46
- return (0, __geekmidas_cache.createCacheClient)(url);
47
- }
48
- };
49
-
50
- //#endregion
51
- Object.defineProperty(exports, 'Cache', {
52
- enumerable: true,
53
- get: function () {
54
- return Cache;
55
- }
56
- });
57
- //# sourceMappingURL=cache-3WSvAulx.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-3WSvAulx.cjs","names":["id: ConstructName<TName>","options: CacheOptions","options"],"sources":["../src/cache.ts"],"sourcesContent":["/**\n * `Cache` — a declared key/value cache.\n *\n * The same three-package meeting point as `ObjectStorage` and `Email`: it\n * implements the construct contract, derives its env key through\n * `@geekmidas/manifest`, and hands back a `@geekmidas/cache` client.\n *\n * It names no provider — and unlike `Email`, it cannot name one protocol\n * either. Every mail backend speaks SMTP, so an `smtp://` URL is true of all of\n * them; cache backends genuinely differ, because Upstash speaks HTTP, a Redis\n * speaks its wire protocol, and a table in Postgres speaks SQL. So the scheme in\n * the URL picks the driver, exactly as it does for object storage, and which\n * drivers exist is the generated entry point's decision.\n *\n * The backend is chosen at deploy, not here. An app caching in Postgres and an\n * app caching in Upstash are the same application code.\n */\n\nimport { type Cache as CacheClient, createCacheClient } from '@geekmidas/cache';\nimport {\n\ttype ConstructName,\n\tcanonicalId,\n\ttype Declaration,\n\tprovideKey,\n\tserviceKey,\n} from '@geekmidas/manifest';\nimport type { Service, ServiceRegisterOptions } from '@geekmidas/services';\nimport type { Construct } from './construct-interface';\n\nexport interface CacheOptions {\n\t/**\n\t * The database this cache lives in.\n\t *\n\t * Set by `database.cache()` rather than written by hand — the point of the\n\t * method is that the parent's id comes from the parent rather than from a\n\t * string somebody has to keep in step.\n\t */\n\tof?: string;\n\t/** The table entries are kept in. Defaults to `cache`. */\n\ttable?: string;\n}\n\nexport class Cache<TName extends string = string>\n\timplements Construct<TName, CacheClient>\n{\n\treadonly id: TName;\n\treadonly service: Service<Uncapitalize<TName>, CacheClient>;\n\n\t/**\n\t * Declared once and read by both `declare()` and `connect()`, so the key the\n\t * target publishes and the key the client reads cannot drift.\n\t */\n\tprivate readonly key: string;\n\n\tconstructor(\n\t\tid: ConstructName<TName>,\n\t\tprivate readonly options: CacheOptions = {},\n\t) {\n\t\tconst canonical = canonicalId(id as string);\n\n\t\tthis.id = canonical as TName;\n\t\tthis.key = provideKey(canonical, 'url');\n\n\t\t// A field, not a getter: consumers cache services by object identity.\n\t\tthis.service = {\n\t\t\tserviceName: serviceKey(canonical) as Uncapitalize<TName>,\n\t\t\tregister: (options) => this.connect(options),\n\t\t};\n\t}\n\n\tdeclare(): Declaration[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\tkind: 'cache',\n\t\t\t\tid: this.id,\n\t\t\t\t...(this.options.of ? { of: this.options.of } : {}),\n\t\t\t\t...(this.options.table ? { table: this.options.table } : {}),\n\t\t\t\tprovides: [this.key],\n\t\t\t},\n\t\t];\n\t}\n\n\t/**\n\t * Builds the client from the single URL the target supplied.\n\t *\n\t * Any credential travels in that URL's userinfo rather than in a second key,\n\t * for the same reason a Postgres password does: an address and the thing that\n\t * opens it are one fact, and splitting them is one more thing to keep in step.\n\t *\n\t * The scheme selects the driver, so this construct imports no provider and\n\t * an app that caches in Postgres never resolves a Redis client. Whoever\n\t * assembles the application registers the drivers its target needs.\n\t */\n\tprivate async connect({\n\t\tenvParser,\n\t}: ServiceRegisterOptions): Promise<CacheClient> {\n\t\tconst { url } = envParser\n\t\t\t.create((get) => ({ url: get(this.key).string() }))\n\t\t\t.parse();\n\n\t\treturn createCacheClient(url);\n\t}\n}\n"],"mappings":";;;;;AA0CA,IAAa,QAAb,MAEA;CACC,AAAS;CACT,AAAS;;;;;CAMT,AAAiB;CAEjB,YACCA,IACiBC,UAAwB,CAAE,GAC1C;EADgB;EAEjB,MAAM,YAAY,sCAAY,GAAa;AAE3C,OAAK,KAAK;AACV,OAAK,MAAM,qCAAW,WAAW,MAAM;AAGvC,OAAK,UAAU;GACd,aAAa,qCAAW,UAAU;GAClC,UAAU,CAACC,cAAY,KAAK,QAAQA,UAAQ;EAC5C;CACD;CAED,UAAyB;AACxB,SAAO,CACN;GACC,MAAM;GACN,IAAI,KAAK;GACT,GAAI,KAAK,QAAQ,KAAK,EAAE,IAAI,KAAK,QAAQ,GAAI,IAAG,CAAE;GAClD,GAAI,KAAK,QAAQ,QAAQ,EAAE,OAAO,KAAK,QAAQ,MAAO,IAAG,CAAE;GAC3D,UAAU,CAAC,KAAK,GAAI;EACpB,CACD;CACD;;;;;;;;;;;;CAaD,MAAc,QAAQ,EACrB,WACwB,EAAwB;EAChD,MAAM,EAAE,KAAK,GAAG,UACd,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAE,GAAE,CAClD,OAAO;AAET,SAAO,yCAAkB,IAAI;CAC7B;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-BrRz3fEB.d.mts","names":[],"sources":["../src/cache.ts"],"sourcesContent":[],"mappings":";;;;;;;AA2CqB,UAdJ,YAAA,CAcI;;;;;;;;;;;;cADR,kDACD,UAAU,OAAO;;eAEf;oBACK,QAAQ,aAAa,QAAQ;;;;;;kBAS1C,cAAc,kBACQ;aAchB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-BtZY_tHe.d.cts","names":[],"sources":["../src/cache.ts"],"sourcesContent":[],"mappings":";;;;;;;AA2CqB,UAdJ,YAAA,CAcI;;;;;;;;;;;;cADR,kDACD,UAAU,OAAO;;eAEf;oBACK,QAAQ,aAAa,QAAQ;;;;;;kBAS1C,cAAc,kBACQ;aAchB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clone-DblgEZZa.mjs","names":["instance: T","delta: Record<string, unknown>"],"sources":["../src/clone.ts"],"sourcesContent":["/**\n * Cloning a builder, without enumerating its fields.\n *\n * The builders were mutable singletons that reset themselves by listing every\n * field at the end of `.handle()`. Two things followed from that, and both were\n * real:\n *\n * A configured base could not be reused. `const fn = f.logger(log)` handed back\n * `f` itself, and the first `.handle()` reset `_logger` to the default — so the\n * second handler built from that base silently logged somewhere else. Every\n * field in the reset block behaved the same way, which made\n * `f.logger(l).timeout(60_000)` a base that worked exactly once.\n *\n * And a field left out of the reset list leaked into the next handler instead.\n * `_constructs` was left out, so a function was granted a bucket a *previous*\n * function had declared — an over-grant in the field a deploy reads to size an\n * IAM policy.\n *\n * Both are the same defect: a hand-maintained list of fields that has to be\n * edited every time a field is added, and is silent when it isn't. So this\n * copies whatever the instance actually has, and the list stops existing. The\n * prototype is carried over, so `instanceof` and every method still resolve,\n * and the constructor is deliberately not re-run — this copies state rather\n * than initialising it.\n *\n * Fields must be replaced rather than mutated in place: a clone and its parent\n * share whatever array a field points at, so `_events.push(…)` would be seen by\n * both. Every builder assigns a fresh array instead, which is what makes\n * sharing the reference safe.\n */\nexport function cloneWith<T extends object>(\n\tinstance: T,\n\tdelta: Record<string, unknown>,\n): T {\n\tconst next = Object.create(Object.getPrototypeOf(instance)) as T;\n\n\treturn Object.assign(next, instance, delta);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,UACfA,UACAC,OACI;CACJ,MAAM,OAAO,OAAO,OAAO,OAAO,eAAe,SAAS,CAAC;AAE3D,QAAO,OAAO,OAAO,MAAM,UAAU,MAAM;AAC3C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clone-Dy0cR2SZ.cjs","names":["instance: T","delta: Record<string, unknown>"],"sources":["../src/clone.ts"],"sourcesContent":["/**\n * Cloning a builder, without enumerating its fields.\n *\n * The builders were mutable singletons that reset themselves by listing every\n * field at the end of `.handle()`. Two things followed from that, and both were\n * real:\n *\n * A configured base could not be reused. `const fn = f.logger(log)` handed back\n * `f` itself, and the first `.handle()` reset `_logger` to the default — so the\n * second handler built from that base silently logged somewhere else. Every\n * field in the reset block behaved the same way, which made\n * `f.logger(l).timeout(60_000)` a base that worked exactly once.\n *\n * And a field left out of the reset list leaked into the next handler instead.\n * `_constructs` was left out, so a function was granted a bucket a *previous*\n * function had declared — an over-grant in the field a deploy reads to size an\n * IAM policy.\n *\n * Both are the same defect: a hand-maintained list of fields that has to be\n * edited every time a field is added, and is silent when it isn't. So this\n * copies whatever the instance actually has, and the list stops existing. The\n * prototype is carried over, so `instanceof` and every method still resolve,\n * and the constructor is deliberately not re-run — this copies state rather\n * than initialising it.\n *\n * Fields must be replaced rather than mutated in place: a clone and its parent\n * share whatever array a field points at, so `_events.push(…)` would be seen by\n * both. Every builder assigns a fresh array instead, which is what makes\n * sharing the reference safe.\n */\nexport function cloneWith<T extends object>(\n\tinstance: T,\n\tdelta: Record<string, unknown>,\n): T {\n\tconst next = Object.create(Object.getPrototypeOf(instance)) as T;\n\n\treturn Object.assign(next, instance, delta);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,UACfA,UACAC,OACI;CACJ,MAAM,OAAO,OAAO,OAAO,OAAO,eAAe,SAAS,CAAC;AAE3D,QAAO,OAAO,OAAO,MAAM,UAAU,MAAM;AAC3C"}