@geekmidas/constructs 10.0.0-alpha.5 → 10.0.0-alpha.51

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 (392) hide show
  1. package/README.md +223 -158
  2. package/dist/{Construct-BD5neF7w.mjs → Construct-BO1X-kt9.mjs} +32 -33
  3. package/dist/Construct-BO1X-kt9.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-DmvXceVY.cjs} +52 -47
  7. package/dist/Construct-DmvXceVY.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-B2OFsfDM.d.cts → Cron-DI3nKoic.d.cts} +22 -8
  11. package/dist/Cron-DI3nKoic.d.cts.map +1 -0
  12. package/dist/{Cron-CqEbBbwH.d.mts → Cron-uYAHPnp7.d.mts} +22 -8
  13. package/dist/Cron-uYAHPnp7.d.mts.map +1 -0
  14. package/dist/CronBuilder-BoHzlWU_.cjs +121 -0
  15. package/dist/CronBuilder-BoHzlWU_.cjs.map +1 -0
  16. package/dist/CronBuilder-CCgt0wCE.mjs +109 -0
  17. package/dist/CronBuilder-CCgt0wCE.mjs.map +1 -0
  18. package/dist/CronBuilder-DaSUm2Na.d.mts +47 -0
  19. package/dist/CronBuilder-DaSUm2Na.d.mts.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-Dem2XyCu.d.mts → Endpoint-Bm9HjTPc.d.cts} +70 -93
  23. package/dist/Endpoint-Bm9HjTPc.d.cts.map +1 -0
  24. package/dist/{Endpoint-Dij_wOcc.mjs → Endpoint-CQ9RJ7p2.mjs} +130 -109
  25. package/dist/Endpoint-CQ9RJ7p2.mjs.map +1 -0
  26. package/dist/{Endpoint-DrD8a1yH.d.cts → Endpoint-CwM8Rzfs.d.mts} +71 -94
  27. package/dist/Endpoint-CwM8Rzfs.d.mts.map +1 -0
  28. package/dist/{Endpoint-DODn1RhN.cjs → Endpoint-DOi8c_Gy.cjs} +158 -131
  29. package/dist/Endpoint-DOi8c_Gy.cjs.map +1 -0
  30. package/dist/{index-B8g8POkr.d.cts → EndpointFactory-0plFjvb7.d.mts} +64 -134
  31. package/dist/EndpointFactory-0plFjvb7.d.mts.map +1 -0
  32. package/dist/{index-DbKmfl-q.d.mts → EndpointFactory-B6eZ3RDd.d.cts} +64 -134
  33. package/dist/EndpointFactory-B6eZ3RDd.d.cts.map +1 -0
  34. package/dist/{EndpointFactory-BHFMmFkV.cjs → EndpointFactory-Bo9lkMqB.cjs} +75 -110
  35. package/dist/EndpointFactory-Bo9lkMqB.cjs.map +1 -0
  36. package/dist/{EndpointFactory-b4ituq-s.mjs → EndpointFactory-DR1rebok.mjs} +39 -74
  37. package/dist/EndpointFactory-DR1rebok.mjs.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-BM2jbWht.mjs → HonoEndpointAdaptor-BIS0O3M9.mjs} +41 -47
  43. package/dist/HonoEndpointAdaptor-BIS0O3M9.mjs.map +1 -0
  44. package/dist/{HonoEndpointAdaptor-De6IlBZe.cjs → HonoEndpointAdaptor-CMi0MJsF.cjs} +50 -53
  45. package/dist/HonoEndpointAdaptor-CMi0MJsF.cjs.map +1 -0
  46. package/dist/Queue-D5jcw0mu.cjs +109 -0
  47. package/dist/Queue-D5jcw0mu.cjs.map +1 -0
  48. package/dist/{Queue-D7ZuwBhy.d.cts → Queue-DlsHRzUp.d.mts} +48 -48
  49. package/dist/Queue-DlsHRzUp.d.mts.map +1 -0
  50. package/dist/{Queue-gVGfi2Yk.d.mts → Queue-HPyi0e1i.d.cts} +49 -49
  51. package/dist/Queue-HPyi0e1i.d.cts.map +1 -0
  52. package/dist/Queue-hwPN-t31.mjs +104 -0
  53. package/dist/Queue-hwPN-t31.mjs.map +1 -0
  54. package/dist/QueueBuilder-BFQn3OzZ.cjs +135 -0
  55. package/dist/QueueBuilder-BFQn3OzZ.cjs.map +1 -0
  56. package/dist/QueueBuilder-DCuYdjMw.mjs +118 -0
  57. package/dist/QueueBuilder-DCuYdjMw.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-4OPehf2R.cjs → SubscriberBuilder-C2PwqwIl.cjs} +61 -36
  67. package/dist/SubscriberBuilder-C2PwqwIl.cjs.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-BjkbeT9l.mjs → SubscriberBuilder-DMFk_Ap1.mjs} +50 -24
  71. package/dist/SubscriberBuilder-DMFk_Ap1.mjs.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-CkxOTrMv.cjs +104 -0
  75. package/dist/Topic-CkxOTrMv.cjs.map +1 -0
  76. package/dist/Topic-hPffOsot.mjs +99 -0
  77. package/dist/Topic-hPffOsot.mjs.map +1 -0
  78. package/dist/adaptors/aws.cjs +189 -110
  79. package/dist/adaptors/aws.cjs.map +1 -1
  80. package/dist/adaptors/aws.d.cts +81 -45
  81. package/dist/adaptors/aws.d.cts.map +1 -1
  82. package/dist/adaptors/aws.d.mts +82 -46
  83. package/dist/adaptors/aws.d.mts.map +1 -1
  84. package/dist/adaptors/aws.mjs +161 -85
  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 +704 -90
  93. package/dist/adaptors/testing.cjs.map +1 -1
  94. package/dist/adaptors/testing.d.cts +325 -54
  95. package/dist/adaptors/testing.d.cts.map +1 -1
  96. package/dist/adaptors/testing.d.mts +325 -54
  97. package/dist/adaptors/testing.d.mts.map +1 -1
  98. package/dist/adaptors/testing.mjs +669 -71
  99. package/dist/adaptors/testing.mjs.map +1 -1
  100. package/dist/auth-CIFXNuDk.d.cts +194 -0
  101. package/dist/auth-CIFXNuDk.d.cts.map +1 -0
  102. package/dist/auth-CJ9Ff6Lu.d.mts +194 -0
  103. package/dist/auth-CJ9Ff6Lu.d.mts.map +1 -0
  104. package/dist/auth.cjs +172 -31
  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 +161 -24
  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 +63 -16
  139. package/dist/credential.cjs.map +1 -1
  140. package/dist/credential.d.cts +16 -9
  141. package/dist/credential.d.cts.map +1 -1
  142. package/dist/credential.d.mts +16 -9
  143. package/dist/credential.d.mts.map +1 -1
  144. package/dist/credential.mjs +58 -12
  145. package/dist/credential.mjs.map +1 -1
  146. package/dist/crons/index.cjs +68 -10
  147. package/dist/crons/index.cjs.map +1 -1
  148. package/dist/crons/index.d.cts +32 -14
  149. package/dist/crons/index.d.cts.map +1 -1
  150. package/dist/crons/index.d.mts +32 -14
  151. package/dist/crons/index.d.mts.map +1 -1
  152. package/dist/crons/index.mjs +66 -10
  153. package/dist/crons/index.mjs.map +1 -1
  154. package/dist/database/kysely.cjs +40 -15
  155. package/dist/database/kysely.cjs.map +1 -1
  156. package/dist/database/kysely.d.cts +2 -152
  157. package/dist/database/kysely.d.mts +2 -152
  158. package/dist/database/kysely.mjs +28 -5
  159. package/dist/database/kysely.mjs.map +1 -1
  160. package/dist/email.cjs +25 -12
  161. package/dist/email.cjs.map +1 -1
  162. package/dist/email.d.cts +3 -7
  163. package/dist/email.d.cts.map +1 -1
  164. package/dist/email.d.mts +3 -7
  165. package/dist/email.d.mts.map +1 -1
  166. package/dist/email.mjs +16 -3
  167. package/dist/email.mjs.map +1 -1
  168. package/dist/encryption.cjs +96 -0
  169. package/dist/encryption.cjs.map +1 -0
  170. package/dist/encryption.d.cts +117 -0
  171. package/dist/encryption.d.cts.map +1 -0
  172. package/dist/encryption.d.mts +117 -0
  173. package/dist/encryption.d.mts.map +1 -0
  174. package/dist/encryption.mjs +83 -0
  175. package/dist/encryption.mjs.map +1 -0
  176. package/dist/endpoints/index.cjs +8 -10
  177. package/dist/endpoints/index.d.cts +51 -7
  178. package/dist/endpoints/index.d.cts.map +1 -0
  179. package/dist/endpoints/index.d.mts +51 -7
  180. package/dist/endpoints/index.d.mts.map +1 -0
  181. package/dist/endpoints/index.mjs +6 -10
  182. package/dist/external-api-CWY9orcO.d.mts +86 -0
  183. package/dist/external-api-CWY9orcO.d.mts.map +1 -0
  184. package/dist/external-api-D-5WB-sr.d.cts +86 -0
  185. package/dist/external-api-D-5WB-sr.d.cts.map +1 -0
  186. package/dist/external-api.cjs +124 -0
  187. package/dist/external-api.cjs.map +1 -0
  188. package/dist/external-api.d.cts +2 -0
  189. package/dist/external-api.d.mts +2 -0
  190. package/dist/external-api.mjs +121 -0
  191. package/dist/external-api.mjs.map +1 -0
  192. package/dist/file-server.cjs +42 -10
  193. package/dist/file-server.cjs.map +1 -1
  194. package/dist/file-server.d.cts +6 -10
  195. package/dist/file-server.d.cts.map +1 -1
  196. package/dist/file-server.d.mts +6 -10
  197. package/dist/file-server.d.mts.map +1 -1
  198. package/dist/file-server.mjs +34 -2
  199. package/dist/file-server.mjs.map +1 -1
  200. package/dist/functions/index.cjs +2 -6
  201. package/dist/functions/index.d.cts +3 -4
  202. package/dist/functions/index.d.mts +3 -4
  203. package/dist/functions/index.mjs +2 -6
  204. package/dist/{functions-DJJA7VGc.cjs → functions-CbP5ZKma.cjs} +421 -273
  205. package/dist/functions-CbP5ZKma.cjs.map +1 -0
  206. package/dist/{functions-Ck21Uyq0.mjs → functions-Di6n5ltG.mjs} +383 -241
  207. package/dist/functions-Di6n5ltG.mjs.map +1 -0
  208. package/dist/index-BuzRvKOQ.d.cts +115 -0
  209. package/dist/index-BuzRvKOQ.d.cts.map +1 -0
  210. package/dist/index-CTkKOer4.d.mts +115 -0
  211. package/dist/index-CTkKOer4.d.mts.map +1 -0
  212. package/dist/index-CeEtxDmK.d.cts +79 -0
  213. package/dist/index-CeEtxDmK.d.cts.map +1 -0
  214. package/dist/index-CeEtxDmK.d.mts +79 -0
  215. package/dist/index-CeEtxDmK.d.mts.map +1 -0
  216. package/dist/index.cjs +3 -3
  217. package/dist/index.d.cts +4 -4
  218. package/dist/index.d.mts +4 -4
  219. package/dist/index.mjs +2 -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-Bqov3fwv.d.mts +159 -0
  225. package/dist/kysely-Bqov3fwv.d.mts.map +1 -0
  226. package/dist/kysely-DTnkZsub.d.cts +159 -0
  227. package/dist/kysely-DTnkZsub.d.cts.map +1 -0
  228. package/dist/{lazyAccessors-BoJN3SMd.mjs → lazyAccessors-CFanua0O.mjs} +20 -60
  229. package/dist/lazyAccessors-CFanua0O.mjs.map +1 -0
  230. package/dist/{lazyAccessors-e3j2oE2m.cjs → lazyAccessors-hJKGv8Ay.cjs} +60 -113
  231. package/dist/lazyAccessors-hJKGv8Ay.cjs.map +1 -0
  232. package/dist/mobile-app.cjs +73 -0
  233. package/dist/mobile-app.cjs.map +1 -0
  234. package/dist/mobile-app.d.cts +61 -0
  235. package/dist/mobile-app.d.cts.map +1 -0
  236. package/dist/mobile-app.d.mts +61 -0
  237. package/dist/mobile-app.d.mts.map +1 -0
  238. package/dist/mobile-app.mjs +72 -0
  239. package/dist/mobile-app.mjs.map +1 -0
  240. package/dist/object-storage.cjs +18 -10
  241. package/dist/object-storage.cjs.map +1 -1
  242. package/dist/object-storage.d.cts +3 -7
  243. package/dist/object-storage.d.cts.map +1 -1
  244. package/dist/object-storage.d.mts +3 -7
  245. package/dist/object-storage.d.mts.map +1 -1
  246. package/dist/object-storage.mjs +11 -3
  247. package/dist/object-storage.mjs.map +1 -1
  248. package/dist/{processAudits-Dmts9H_b.mjs → processAudits-BpRlPQMW.mjs} +16 -19
  249. package/dist/processAudits-BpRlPQMW.mjs.map +1 -0
  250. package/dist/{processAudits-CGqttuXm.cjs → processAudits-D_2W5x8k.cjs} +26 -30
  251. package/dist/processAudits-D_2W5x8k.cjs.map +1 -0
  252. package/dist/queue/index.cjs +6 -189
  253. package/dist/queue/index.d.cts +3 -60
  254. package/dist/queue/index.d.mts +3 -60
  255. package/dist/queue/index.mjs +3 -186
  256. package/dist/rest-api.cjs +88 -63
  257. package/dist/rest-api.cjs.map +1 -1
  258. package/dist/rest-api.d.cts +68 -61
  259. package/dist/rest-api.d.cts.map +1 -1
  260. package/dist/rest-api.d.mts +68 -61
  261. package/dist/rest-api.d.mts.map +1 -1
  262. package/dist/rest-api.mjs +80 -55
  263. package/dist/rest-api.mjs.map +1 -1
  264. package/dist/{chunk-DWy1uDak.cjs → rolldown-runtime-y5ARvAq5.cjs} +14 -18
  265. package/dist/site.cjs +34 -9
  266. package/dist/site.cjs.map +1 -1
  267. package/dist/site.d.cts +17 -22
  268. package/dist/site.d.cts.map +1 -1
  269. package/dist/site.d.mts +17 -22
  270. package/dist/site.d.mts.map +1 -1
  271. package/dist/site.mjs +30 -5
  272. package/dist/site.mjs.map +1 -1
  273. package/dist/subscribers/index.cjs +2 -11
  274. package/dist/subscribers/index.d.cts +3 -14
  275. package/dist/subscribers/index.d.mts +3 -14
  276. package/dist/subscribers/index.mjs +2 -11
  277. package/dist/surfaceEnv-CNimK76p.cjs +56 -0
  278. package/dist/surfaceEnv-CNimK76p.cjs.map +1 -0
  279. package/dist/surfaceEnv-wMT5QzgZ.mjs +45 -0
  280. package/dist/surfaceEnv-wMT5QzgZ.mjs.map +1 -0
  281. package/dist/{telemetry-C3L0iS28.d.cts → telemetry-DGcFlVpB.d.cts} +2 -5
  282. package/dist/telemetry-DGcFlVpB.d.cts.map +1 -0
  283. package/dist/{telemetry-D7bVFLGi.d.mts → telemetry-DGcFlVpB.d.mts} +2 -5
  284. package/dist/telemetry-DGcFlVpB.d.mts.map +1 -0
  285. package/dist/topic/index.cjs +3 -137
  286. package/dist/topic/index.d.cts +2 -32
  287. package/dist/topic/index.d.mts +2 -32
  288. package/dist/topic/index.mjs +2 -134
  289. package/dist/{types-BlAkSuGI.d.cts → types-DMuSQeLL.d.cts} +3 -5
  290. package/dist/types-DMuSQeLL.d.cts.map +1 -0
  291. package/dist/{types-aKksMEWL.d.mts → types-DMuSQeLL.d.mts} +3 -5
  292. package/dist/types-DMuSQeLL.d.mts.map +1 -0
  293. package/dist/types.d.cts +1 -1
  294. package/dist/types.d.mts +1 -1
  295. package/dist/types.mjs +1 -0
  296. package/dist/worker.cjs +137 -38
  297. package/dist/worker.cjs.map +1 -1
  298. package/dist/worker.d.cts +113 -44
  299. package/dist/worker.d.cts.map +1 -1
  300. package/dist/worker.d.mts +113 -43
  301. package/dist/worker.d.mts.map +1 -1
  302. package/dist/worker.mjs +132 -33
  303. package/dist/worker.mjs.map +1 -1
  304. package/package.json +81 -41
  305. package/dist/Construct-BD5neF7w.mjs.map +0 -1
  306. package/dist/Construct-C0ijr2qp.d.cts +0 -117
  307. package/dist/Construct-C0ijr2qp.d.cts.map +0 -1
  308. package/dist/Construct-Ct8nalEi.d.mts +0 -117
  309. package/dist/Construct-Ct8nalEi.d.mts.map +0 -1
  310. package/dist/Construct-CyS3RpTL.cjs.map +0 -1
  311. package/dist/Cron-B2OFsfDM.d.cts.map +0 -1
  312. package/dist/Cron-CqEbBbwH.d.mts.map +0 -1
  313. package/dist/CronBuilder-Bg-9h2cc.d.mts +0 -44
  314. package/dist/CronBuilder-Bg-9h2cc.d.mts.map +0 -1
  315. package/dist/CronBuilder-CdibiHNB.mjs +0 -84
  316. package/dist/CronBuilder-CdibiHNB.mjs.map +0 -1
  317. package/dist/CronBuilder-DyUr6nYz.cjs +0 -96
  318. package/dist/CronBuilder-DyUr6nYz.cjs.map +0 -1
  319. package/dist/CronBuilder-LSJMfqnq.d.cts +0 -44
  320. package/dist/CronBuilder-LSJMfqnq.d.cts.map +0 -1
  321. package/dist/Endpoint-DODn1RhN.cjs.map +0 -1
  322. package/dist/Endpoint-Dem2XyCu.d.mts.map +0 -1
  323. package/dist/Endpoint-Dij_wOcc.mjs.map +0 -1
  324. package/dist/Endpoint-DrD8a1yH.d.cts.map +0 -1
  325. package/dist/EndpointFactory-BHFMmFkV.cjs.map +0 -1
  326. package/dist/EndpointFactory-b4ituq-s.mjs.map +0 -1
  327. package/dist/HonoEndpointAdaptor-BM2jbWht.mjs.map +0 -1
  328. package/dist/HonoEndpointAdaptor-De6IlBZe.cjs.map +0 -1
  329. package/dist/Queue-D7ZuwBhy.d.cts.map +0 -1
  330. package/dist/Queue-gVGfi2Yk.d.mts.map +0 -1
  331. package/dist/Subscriber-2mEi0ImH.d.cts.map +0 -1
  332. package/dist/Subscriber-xTJ9ayPN.d.mts.map +0 -1
  333. package/dist/SubscriberBuilder-4OPehf2R.cjs.map +0 -1
  334. package/dist/SubscriberBuilder-BjkbeT9l.mjs.map +0 -1
  335. package/dist/SubscriberBuilder-Dptmo-1A.d.mts +0 -62
  336. package/dist/SubscriberBuilder-Dptmo-1A.d.mts.map +0 -1
  337. package/dist/SubscriberBuilder-waNhzjSM.d.cts +0 -62
  338. package/dist/SubscriberBuilder-waNhzjSM.d.cts.map +0 -1
  339. package/dist/Topic-19QeHBIR.d.cts +0 -91
  340. package/dist/Topic-19QeHBIR.d.cts.map +0 -1
  341. package/dist/Topic-DuFeqkBh.d.mts +0 -91
  342. package/dist/Topic-DuFeqkBh.d.mts.map +0 -1
  343. package/dist/auth.d.cts.map +0 -1
  344. package/dist/auth.d.mts.map +0 -1
  345. package/dist/cache-0ANvRQnD.mjs +0 -51
  346. package/dist/cache-0ANvRQnD.mjs.map +0 -1
  347. package/dist/cache-3WSvAulx.cjs +0 -57
  348. package/dist/cache-3WSvAulx.cjs.map +0 -1
  349. package/dist/cache-BrRz3fEB.d.mts.map +0 -1
  350. package/dist/cache-BtZY_tHe.d.cts.map +0 -1
  351. package/dist/clone-DblgEZZa.mjs.map +0 -1
  352. package/dist/clone-Dy0cR2SZ.cjs.map +0 -1
  353. package/dist/construct-interface-BfjcOD_E.cjs +0 -117
  354. package/dist/construct-interface-BfjcOD_E.cjs.map +0 -1
  355. package/dist/construct-interface-D9d4Gm4p.d.cts.map +0 -1
  356. package/dist/construct-interface-Z4CpS8tK.mjs +0 -81
  357. package/dist/construct-interface-Z4CpS8tK.mjs.map +0 -1
  358. package/dist/construct-interface-g5GM5pwR.d.mts.map +0 -1
  359. package/dist/database/kysely.d.cts.map +0 -1
  360. package/dist/database/kysely.d.mts.map +0 -1
  361. package/dist/functions-Ck21Uyq0.mjs.map +0 -1
  362. package/dist/functions-DJJA7VGc.cjs.map +0 -1
  363. package/dist/index-AIfVzkhi.d.cts +0 -170
  364. package/dist/index-AIfVzkhi.d.cts.map +0 -1
  365. package/dist/index-B8g8POkr.d.cts.map +0 -1
  366. package/dist/index-D3zjrwjr.d.mts +0 -169
  367. package/dist/index-D3zjrwjr.d.mts.map +0 -1
  368. package/dist/index-DbKmfl-q.d.mts.map +0 -1
  369. package/dist/lazyAccessors-BoJN3SMd.mjs.map +0 -1
  370. package/dist/lazyAccessors-e3j2oE2m.cjs.map +0 -1
  371. package/dist/processAudits-CGqttuXm.cjs.map +0 -1
  372. package/dist/processAudits-Dmts9H_b.mjs.map +0 -1
  373. package/dist/queue/index.cjs.map +0 -1
  374. package/dist/queue/index.d.cts.map +0 -1
  375. package/dist/queue/index.d.mts.map +0 -1
  376. package/dist/queue/index.mjs.map +0 -1
  377. package/dist/subscribers/index.cjs.map +0 -1
  378. package/dist/subscribers/index.d.cts.map +0 -1
  379. package/dist/subscribers/index.d.mts.map +0 -1
  380. package/dist/subscribers/index.mjs.map +0 -1
  381. package/dist/surfaceEnv-BFXEms2f.cjs +0 -39
  382. package/dist/surfaceEnv-BFXEms2f.cjs.map +0 -1
  383. package/dist/surfaceEnv-C3Ktahea.mjs +0 -27
  384. package/dist/surfaceEnv-C3Ktahea.mjs.map +0 -1
  385. package/dist/telemetry-C3L0iS28.d.cts.map +0 -1
  386. package/dist/telemetry-D7bVFLGi.d.mts.map +0 -1
  387. package/dist/topic/index.cjs.map +0 -1
  388. package/dist/topic/index.d.cts.map +0 -1
  389. package/dist/topic/index.d.mts.map +0 -1
  390. package/dist/topic/index.mjs.map +0 -1
  391. package/dist/types-BlAkSuGI.d.cts.map +0 -1
  392. package/dist/types-aKksMEWL.d.mts.map +0 -1
@@ -1,21 +1,21 @@
1
- import { __toESM } from "../Construct-BD5neF7w.mjs";
2
- import "../construct-interface-Z4CpS8tK.mjs";
3
- import { FunctionBuilder } from "../functions-Ck21Uyq0.mjs";
4
- import "../clone-DblgEZZa.mjs";
5
- import { Endpoint, ResponseBuilder, require_lodash } from "../Endpoint-Dij_wOcc.mjs";
6
- import { envParserFor } from "../surfaceEnv-C3Ktahea.mjs";
7
- import { createApiGatewayCookies, publishConstructEvents, publishEvents } from "../lazyAccessors-BoJN3SMd.mjs";
8
- import { createAuditContext, executeWithAuditTransaction } from "../processAudits-Dmts9H_b.mjs";
1
+ import { o as __toESM } from "../Construct-BO1X-kt9.mjs";
2
+ import { a as publishEvents, i as publishConstructEvents, t as FunctionBuilder } from "../functions-Di6n5ltG.mjs";
3
+ import { i as require_lodash_set, n as ResponseBuilder, t as Endpoint } from "../Endpoint-CQ9RJ7p2.mjs";
4
+ import { n as envParserFor } from "../surfaceEnv-wMT5QzgZ.mjs";
5
+ import { t as createApiGatewayCookies } from "../lazyAccessors-CFanua0O.mjs";
6
+ import { n as executeWithAuditTransaction, t as createAuditContext } from "../processAudits-BpRlPQMW.mjs";
9
7
  import { ForbiddenError, UnprocessableEntityError, wrapError } from "@geekmidas/errors";
8
+ import { withRlsContext } from "@geekmidas/db/rls";
10
9
  import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
11
- import middy from "@middy/core";
10
+ import qs from "qs";
12
11
  import { DefaultAuditor } from "@geekmidas/audit";
12
+ import middy from "@middy/core";
13
13
  import { withAuditableTransaction } from "@geekmidas/audit/kysely";
14
- import { withRlsContext } from "@geekmidas/db/rls";
15
- import qs from "qs";
16
-
14
+ import { confirmSnsSubscription, toSnsEvent, verifySnsMessage } from "@geekmidas/events/sns";
17
15
  //#region src/functions/FunctionExecutionWrapper.ts
18
16
  var FunctionExecutionWrapper = class {
17
+ envParser;
18
+ fn;
19
19
  constructor(envParser, fn) {
20
20
  this.envParser = envParser;
21
21
  this.fn = fn;
@@ -25,25 +25,22 @@ var FunctionExecutionWrapper = class {
25
25
  return this._logger || this.fn.logger;
26
26
  }
27
27
  get serviceDiscovery() {
28
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
29
- return serviceDiscovery;
28
+ return ServiceDiscovery.getInstance(this.envParser);
30
29
  }
31
30
  getServices() {
32
31
  return this.serviceDiscovery.register(this.fn.services);
33
32
  }
34
33
  async getDatabase() {
35
- if (!this.fn.databaseService) return void 0;
36
- const services = await this.serviceDiscovery.register([this.fn.databaseService]);
37
- return services[this.fn.databaseService.serviceName];
34
+ if (!this.fn.databaseService) return;
35
+ return (await this.serviceDiscovery.register([this.fn.databaseService]))[this.fn.databaseService.serviceName];
38
36
  }
39
37
  /**
40
38
  * Get the audit storage service if configured.
41
39
  * Returns undefined if no auditor storage is configured.
42
40
  */
43
41
  async getAuditStorage() {
44
- if (!this.fn.auditorStorageService) return void 0;
45
- const services = await this.serviceDiscovery.register([this.fn.auditorStorageService]);
46
- return services[this.fn.auditorStorageService.serviceName];
42
+ if (!this.fn.auditorStorageService) return;
43
+ return (await this.serviceDiscovery.register([this.fn.auditorStorageService]))[this.fn.auditorStorageService.serviceName];
47
44
  }
48
45
  /**
49
46
  * Create an auditor instance for the function.
@@ -51,7 +48,7 @@ var FunctionExecutionWrapper = class {
51
48
  */
52
49
  async createAuditor() {
53
50
  const storage = await this.getAuditStorage();
54
- if (!storage) return void 0;
51
+ if (!storage) return;
55
52
  return new DefaultAuditor({
56
53
  actor: {
57
54
  id: "system",
@@ -72,51 +69,44 @@ var FunctionExecutionWrapper = class {
72
69
  async executeWithAudit(handler) {
73
70
  const auditor = await this.createAuditor();
74
71
  const storage = await this.getAuditStorage();
75
- if (!auditor || !storage) {
76
- const db$1 = await this.getDatabase();
77
- return handler({ db: db$1 });
78
- }
72
+ if (!auditor || !storage) return handler({ db: await this.getDatabase() });
79
73
  const storageDb = storage.getDatabase?.();
80
74
  const databaseServiceName = this.fn.databaseService?.serviceName;
81
75
  const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
82
76
  if (storageDb && databaseServiceName && auditDbServiceName) return withAuditableTransaction(storageDb, auditor, async (trx) => {
83
- const response$1 = await handler({
77
+ return await handler({
84
78
  auditor,
85
79
  db: trx
86
80
  });
87
- return response$1;
88
81
  });
89
- const db = await this.getDatabase();
90
82
  const response = await handler({
91
83
  auditor,
92
- db
84
+ db: await this.getDatabase()
93
85
  });
94
86
  await auditor.flush();
95
87
  return response;
96
88
  }
97
89
  async getFunctionInput(event) {
98
- const parsedInput = await FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
99
- return parsedInput;
90
+ return await FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
100
91
  }
101
92
  async publishEvents(response) {
102
- await publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response, this.fn.publisherService);
93
+ await publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response);
103
94
  }
104
95
  async parseComposableStandardSchema(data, schema) {
105
96
  return FunctionBuilder.parseComposableStandardSchema(data, schema);
106
97
  }
107
98
  };
108
-
109
99
  //#endregion
110
100
  //#region src/functions/AWSLambdaFunction.ts
111
101
  var AWSLambdaFunction = class extends FunctionExecutionWrapper {
102
+ fn;
112
103
  constructor(envParser, fn) {
113
104
  super(envParser, fn);
114
105
  this.fn = fn;
115
106
  }
116
107
  error() {
117
108
  return { onError: (req) => {
118
- const logger = req.event?.logger || this.fn.logger;
119
- logger.error(req.error || {}, "Error processing function");
109
+ (req.event?.logger || this.fn.logger).error(req.error || {}, "Error processing function");
120
110
  throw wrapError(req.error);
121
111
  } };
122
112
  }
@@ -192,8 +182,7 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
192
182
  db: event.db,
193
183
  auditor: event.auditor
194
184
  });
195
- const output = await this.fn.parseOutput(result);
196
- return output;
185
+ return await this.fn.parseOutput(result);
197
186
  }
198
187
  get handler() {
199
188
  const handler = this._handler.bind(this);
@@ -211,7 +200,6 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
211
200
  return wrappedHandler;
212
201
  }
213
202
  };
214
-
215
203
  //#endregion
216
204
  //#region src/crons/AWSScheduledFunction.ts
217
205
  /**
@@ -245,11 +233,11 @@ var AWSScheduledFunction = class extends AWSLambdaFunction {
245
233
  super(envParser, cron);
246
234
  }
247
235
  };
248
-
249
236
  //#endregion
250
237
  //#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
251
- var import_lodash = __toESM(require_lodash(), 1);
238
+ var import_lodash_set = /* @__PURE__ */ __toESM(require_lodash_set(), 1);
252
239
  var AmazonApiGatewayEndpoint = class {
240
+ endpoint;
253
241
  options;
254
242
  /**
255
243
  * The parser this adaptor discovers services with.
@@ -287,8 +275,7 @@ var AmazonApiGatewayEndpoint = class {
287
275
  static decodeBody(body, isBase64Encoded, contentType) {
288
276
  if (!body) return void 0;
289
277
  const raw = isBase64Encoded ? Buffer.from(body, "base64").toString("utf-8") : body;
290
- const isJson = !contentType || contentType.toLowerCase().includes("application/json");
291
- if (isJson) return JSON.parse(raw);
278
+ if (!contentType || contentType.toLowerCase().includes("application/json")) return JSON.parse(raw);
292
279
  return raw;
293
280
  }
294
281
  getCookies(e) {
@@ -302,11 +289,11 @@ var AmazonApiGatewayEndpoint = class {
302
289
  const headers = req.event.headers;
303
290
  const header = Endpoint.createHeaders(headers);
304
291
  const cookie = this.getCookies(req.event);
305
- (0, import_lodash.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
306
- (0, import_lodash.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
307
- (0, import_lodash.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
308
- (0, import_lodash.default)(req.event, "header", header);
309
- (0, import_lodash.default)(req.event, "cookie", cookie);
292
+ (0, import_lodash_set.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
293
+ (0, import_lodash_set.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
294
+ (0, import_lodash_set.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
295
+ (0, import_lodash_set.default)(req.event, "header", header);
296
+ (0, import_lodash_set.default)(req.event, "cookie", cookie);
310
297
  } catch (error) {
311
298
  if (error && typeof error === "object" && Array.isArray(error)) throw new UnprocessableEntityError("Validation failed", error);
312
299
  throw error;
@@ -325,9 +312,8 @@ var AmazonApiGatewayEndpoint = class {
325
312
  }
326
313
  services() {
327
314
  return { before: async (req) => {
328
- const _logger = req.event.logger;
329
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
330
- const services = await serviceDiscovery.register(this.endpoint.services);
315
+ req.event.logger;
316
+ const services = await ServiceDiscovery.getInstance(this.envParser).register(this.endpoint.services);
331
317
  req.event.services = services;
332
318
  } };
333
319
  }
@@ -338,7 +324,7 @@ var AmazonApiGatewayEndpoint = class {
338
324
  const header = req.event.header;
339
325
  const cookie = req.event.cookie;
340
326
  const session = req.event.session;
341
- const isAuthorized = await this.endpoint.authorize({
327
+ if (!await this.endpoint.authorize({
342
328
  header,
343
329
  cookie,
344
330
  services,
@@ -348,8 +334,7 @@ var AmazonApiGatewayEndpoint = class {
348
334
  body: req.event.body,
349
335
  query: req.event.query,
350
336
  params: req.event.params
351
- });
352
- if (!isAuthorized) {
337
+ })) {
353
338
  logger.warn("Forbidden access attempt");
354
339
  throw new ForbiddenError("Forbidden access to the endpoint", "You do not have permission to access this resource.");
355
340
  }
@@ -358,9 +343,8 @@ var AmazonApiGatewayEndpoint = class {
358
343
  database() {
359
344
  return { before: async (req) => {
360
345
  if (!this.endpoint.databaseService) return;
361
- const _logger = req.event.logger;
362
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
363
- const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
346
+ req.event.logger;
347
+ const db = await ServiceDiscovery.getInstance(this.envParser).register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
364
348
  req.event.db = db;
365
349
  } };
366
350
  }
@@ -411,9 +395,8 @@ var AmazonApiGatewayEndpoint = class {
411
395
  cookie: event.cookie,
412
396
  logger
413
397
  }) : void 0;
414
- const result = await executeWithAuditTransaction(auditContext, async (auditor) => {
415
- const sameDatabase = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName;
416
- const baseDb = sameDatabase ? auditor?.getTransaction?.() ?? rawDb : rawDb;
398
+ const { output, metadata } = await executeWithAuditTransaction(auditContext, async (auditor) => {
399
+ const baseDb = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName ? auditor?.getTransaction?.() ?? rawDb : rawDb;
417
400
  const executeHandler = async (db) => {
418
401
  const responseBuilder = new ResponseBuilder();
419
402
  const response = await this.endpoint.handler({
@@ -427,33 +410,31 @@ var AmazonApiGatewayEndpoint = class {
427
410
  ...input
428
411
  }, responseBuilder);
429
412
  let data = response;
430
- let metadata$1 = responseBuilder.getMetadata();
413
+ let metadata = responseBuilder.getMetadata();
431
414
  if (Endpoint.hasMetadata(response)) {
432
415
  data = response.data;
433
- metadata$1 = response.metadata;
416
+ metadata = response.metadata;
434
417
  }
435
- const output$1 = this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0;
436
418
  return {
437
- output: output$1,
438
- metadata: metadata$1,
419
+ output: this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0,
420
+ metadata,
439
421
  responseBuilder
440
422
  };
441
423
  };
442
424
  if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
443
425
  return executeHandler(baseDb);
444
- }, async (result$1, auditor) => {
426
+ }, async (result, auditor) => {
445
427
  if (!audits?.length) return;
446
428
  for (const audit of audits) {
447
- if (audit.when && !audit.when(result$1.output)) continue;
448
- const payload = audit.payload(result$1.output);
449
- const entityId = audit.entityId?.(result$1.output);
429
+ if (audit.when && !audit.when(result.output)) continue;
430
+ const payload = audit.payload(result.output);
431
+ const entityId = audit.entityId?.(result.output);
450
432
  auditor.audit(audit.type, payload, {
451
433
  table: audit.table,
452
434
  entityId
453
435
  });
454
436
  }
455
437
  }, { db: rawDb });
456
- const { output, metadata } = result;
457
438
  const isJsonResponse = this.endpoint.responseType === "application/json";
458
439
  const body = output === void 0 ? void 0 : isJsonResponse ? JSON.stringify(output) : typeof output === "string" ? output : String(output);
459
440
  event.__response = output;
@@ -521,7 +502,6 @@ var AmazonApiGatewayEndpoint = class {
521
502
  return wrappedHandler;
522
503
  }
523
504
  };
524
-
525
505
  //#endregion
526
506
  //#region src/endpoints/parseQueryParams.ts
527
507
  /**
@@ -542,10 +522,10 @@ function parseQueryParams(queryParams) {
542
522
  }
543
523
  return qs.parse(parts.join("&"));
544
524
  }
545
-
546
525
  //#endregion
547
526
  //#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
548
527
  var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
528
+ endpoint;
549
529
  getInput(e) {
550
530
  const multiValueParams = e.multiValueQueryStringParameters || {};
551
531
  const singleValueParams = e.queryStringParameters || {};
@@ -578,17 +558,16 @@ var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
578
558
  this.endpoint = endpoint;
579
559
  }
580
560
  };
581
-
582
561
  //#endregion
583
562
  //#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
584
563
  var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
564
+ endpoint;
585
565
  getCookies(e) {
586
566
  return createApiGatewayCookies(e.cookies, e.headers?.cookie);
587
567
  }
588
568
  getInput(e) {
589
- const raw = AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]);
590
569
  return {
591
- body: raw,
570
+ body: AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]),
592
571
  query: qs.parse(e.rawQueryString),
593
572
  params: e.pathParameters || {}
594
573
  };
@@ -613,7 +592,6 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
613
592
  this.endpoint = endpoint;
614
593
  }
615
594
  };
616
-
617
595
  //#endregion
618
596
  //#region src/queue/AWSLambdaQueueAdaptor.ts
619
597
  /**
@@ -628,6 +606,8 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
628
606
  * retries only those records.
629
607
  */
630
608
  var AWSLambdaQueue = class {
609
+ envParser;
610
+ queue;
631
611
  _services;
632
612
  constructor(envParser, queue) {
633
613
  this.envParser = envParser;
@@ -642,6 +622,12 @@ var AWSLambdaQueue = class {
642
622
  this._services = this.queue.services.length > 0 ? await serviceDiscovery.register(this.queue.services) : {};
643
623
  return this._services;
644
624
  }
625
+ /** The queue's database, registered as functions register theirs. */
626
+ async getDatabase() {
627
+ const service = this.queue.databaseService;
628
+ if (!service) return void 0;
629
+ return (await ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
630
+ }
645
631
  safeJsonParse(value) {
646
632
  try {
647
633
  return JSON.parse(value);
@@ -667,6 +653,7 @@ var AWSLambdaQueue = class {
667
653
  req: { id: context.awsRequestId }
668
654
  });
669
655
  const services = await this.getServices();
656
+ const db = await this.getDatabase();
670
657
  const schema = this.queue.messageSchema;
671
658
  const batchItemFailures = [];
672
659
  const messages = [];
@@ -694,7 +681,8 @@ var AWSLambdaQueue = class {
694
681
  await this.queue.handler({
695
682
  messages,
696
683
  services,
697
- logger
684
+ logger,
685
+ db
698
686
  });
699
687
  } catch (error) {
700
688
  logger.error(wrapError(error), "Queue handler failed; retrying batch");
@@ -704,7 +692,7 @@ var AWSLambdaQueue = class {
704
692
  }
705
693
  get handler() {
706
694
  const handler = this._handler.bind(this);
707
- return async (event, context) => {
695
+ return (async (event, context) => {
708
696
  const startTime = Date.now();
709
697
  const requestId = context.awsRequestId;
710
698
  const logger = this.queue.logger.child({ requestId });
@@ -713,13 +701,14 @@ var AWSLambdaQueue = class {
713
701
  requestId,
714
702
  startTime
715
703
  }, () => handler(event, context));
716
- };
704
+ });
717
705
  }
718
706
  };
719
-
720
707
  //#endregion
721
708
  //#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
722
709
  var AWSLambdaSubscriber = class {
710
+ envParser;
711
+ subscriber;
723
712
  _logger;
724
713
  _services;
725
714
  constructor(envParser, subscriber) {
@@ -739,10 +728,15 @@ var AWSLambdaSubscriber = class {
739
728
  } else this._services = {};
740
729
  return this._services;
741
730
  }
731
+ /** The subscriber's database, registered as functions register theirs. */
732
+ async getDatabase() {
733
+ const service = this.subscriber.databaseService;
734
+ if (!service) return void 0;
735
+ return (await ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
736
+ }
742
737
  error() {
743
738
  return { onError: (req) => {
744
- const logger = req.event?.logger || this.subscriber.logger;
745
- logger.error(req.error || {}, "Error processing subscriber");
739
+ (req.event?.logger || this.subscriber.logger).error(req.error || {}, "Error processing subscriber");
746
740
  throw wrapError(req.error);
747
741
  } };
748
742
  }
@@ -762,11 +756,12 @@ var AWSLambdaSubscriber = class {
762
756
  services() {
763
757
  return { before: async (req) => {
764
758
  req.event.services = await this.getServices();
759
+ req.event.db = await this.getDatabase();
765
760
  } };
766
761
  }
767
762
  parseEvents() {
768
763
  return { before: async (req) => {
769
- const { logger,...e } = req.event;
764
+ const { logger, ...e } = req.event;
770
765
  const rawEvent = e;
771
766
  logger.info({ rawEvent });
772
767
  const events = [];
@@ -854,7 +849,8 @@ var AWSLambdaSubscriber = class {
854
849
  const result = await this.subscriber.handler({
855
850
  events: event.events,
856
851
  services: event.services,
857
- logger: event.logger
852
+ logger: event.logger,
853
+ db: event.db
858
854
  });
859
855
  if (this.subscriber.outputSchema && result) {
860
856
  const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
@@ -882,7 +878,87 @@ var AWSLambdaSubscriber = class {
882
878
  return wrappedHandler;
883
879
  }
884
880
  };
885
-
886
881
  //#endregion
887
- export { AWSLambdaFunction, AWSLambdaQueue, AWSLambdaSubscriber, AWSScheduledFunction, AmazonApiGatewayV1Endpoint, AmazonApiGatewayV2Endpoint };
882
+ //#region src/subscribers/SnsPushSubscriberAdaptor.ts
883
+ /**
884
+ * A topic subscriber run by SNS pushing to an HTTP endpoint, rather than by a
885
+ * poller.
886
+ *
887
+ * The notification is handed to {@link AWSLambdaSubscriber} as the Lambda
888
+ * event SNS would have invoked a function with, so the parsing, the services
889
+ * and the error handling are the ones that run deployed on Lambda — the
890
+ * endpoint is only a different way for the event to arrive.
891
+ */
892
+ var SnsPushSubscriberAdaptor = class {
893
+ subscriber;
894
+ options;
895
+ lambda;
896
+ constructor(envParser, subscriber, options) {
897
+ this.subscriber = subscriber;
898
+ this.options = options;
899
+ this.lambda = new AWSLambdaSubscriber(envParser, subscriber);
900
+ }
901
+ async handle(body) {
902
+ const message = body;
903
+ if (typeof message?.Type !== "string" || !message.TopicArn) return refuse(400, "not an SNS message");
904
+ if (message.TopicArn !== this.options.topicArn) return refuse(403, `not subscribed to ${message.TopicArn}`);
905
+ if (this.options.verify) try {
906
+ await verifySnsMessage(message);
907
+ } catch (error) {
908
+ this.subscriber.logger.warn({
909
+ error,
910
+ topicArn: message.TopicArn
911
+ }, "Refused an SNS message that did not verify");
912
+ return refuse(403, error.name);
913
+ }
914
+ switch (message.Type) {
915
+ case "SubscriptionConfirmation":
916
+ await confirmSnsSubscription(this.options.emulatorEndpoint && message.SubscribeURL ? {
917
+ ...message,
918
+ SubscribeURL: throughEndpoint(message.SubscribeURL, this.options.emulatorEndpoint)
919
+ } : message);
920
+ this.subscriber.logger.info({ topicArn: message.TopicArn }, "Confirmed SNS subscription");
921
+ return {
922
+ status: 200,
923
+ body: { status: "confirmed" }
924
+ };
925
+ case "Notification": try {
926
+ await this.lambda.handler(toSnsEvent(message), {
927
+ awsRequestId: message.MessageId,
928
+ functionName: this.subscriber.topicName ?? "subscriber"
929
+ }, () => {});
930
+ return {
931
+ status: 200,
932
+ body: { status: "ok" }
933
+ };
934
+ } catch (error) {
935
+ return refuse(500, error.name);
936
+ }
937
+ default: return {
938
+ status: 200,
939
+ body: { status: "ignored" }
940
+ };
941
+ }
942
+ }
943
+ };
944
+ /** `url`, sent to `endpoint`'s origin instead of its own. */
945
+ function throughEndpoint(url, endpoint) {
946
+ const target = new URL(url);
947
+ const origin = new URL(endpoint);
948
+ target.protocol = origin.protocol;
949
+ target.host = origin.host;
950
+ return target.toString();
951
+ }
952
+ function refuse(status, error) {
953
+ return {
954
+ status,
955
+ body: {
956
+ status: "refused",
957
+ error
958
+ }
959
+ };
960
+ }
961
+ //#endregion
962
+ export { AWSLambdaFunction, AWSLambdaQueue, AWSLambdaSubscriber, AWSScheduledFunction, AmazonApiGatewayV1Endpoint, AmazonApiGatewayV2Endpoint, SnsPushSubscriberAdaptor };
963
+
888
964
  //# sourceMappingURL=aws.mjs.map