@geekmidas/constructs 10.0.0-alpha.1 → 10.0.0-alpha.100

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 (422) hide show
  1. package/README.md +223 -158
  2. package/dist/{Construct-CdhThxDI.mjs → Construct-B1vGBPme.mjs} +45 -33
  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-roId57cU.cjs → Construct-DUSXuTHP.cjs} +65 -47
  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-DI3nKoic.d.cts +45 -0
  11. package/dist/Cron-DI3nKoic.d.cts.map +1 -0
  12. package/dist/Cron-uYAHPnp7.d.mts +45 -0
  13. package/dist/Cron-uYAHPnp7.d.mts.map +1 -0
  14. package/dist/CronBuilder-C0Ek1-RA.cjs +121 -0
  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-Dmix_Pen.mjs +109 -0
  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-BTj58Gob.mjs → Endpoint-BG4UJ9oA.mjs} +146 -109
  23. package/dist/Endpoint-BG4UJ9oA.mjs.map +1 -0
  24. package/dist/{Endpoint-BBkV6l0k.cjs → Endpoint-BoUg8ocM.cjs} +174 -131
  25. package/dist/Endpoint-BoUg8ocM.cjs.map +1 -0
  26. package/dist/{Endpoint-BKR5QH6O.d.mts → Endpoint-Du-NwPX2.d.mts} +83 -91
  27. package/dist/Endpoint-Du-NwPX2.d.mts.map +1 -0
  28. package/dist/{Endpoint-BQ9O0P1w.d.cts → Endpoint-aCvBMPoH.d.cts} +82 -90
  29. package/dist/Endpoint-aCvBMPoH.d.cts.map +1 -0
  30. package/dist/{EndpointFactory-BejSTzbB.mjs → EndpointFactory-BDtsrEvJ.mjs} +60 -77
  31. package/dist/EndpointFactory-BDtsrEvJ.mjs.map +1 -0
  32. package/dist/{EndpointFactory-DYoGLaIT.cjs → EndpointFactory-DJ7gXLpR.cjs} +96 -113
  33. package/dist/EndpointFactory-DJ7gXLpR.cjs.map +1 -0
  34. package/dist/{index-D5zqAJ2e.d.cts → EndpointFactory-DMYdJCOj.d.mts} +78 -134
  35. package/dist/EndpointFactory-DMYdJCOj.d.mts.map +1 -0
  36. package/dist/{index-Cvz551AO.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-7aYNdqJq.mjs → HonoEndpointAdaptor-PtPlbeKY.mjs} +75 -57
  43. package/dist/HonoEndpointAdaptor-PtPlbeKY.mjs.map +1 -0
  44. package/dist/{HonoEndpointAdaptor-wMsCyMgt.cjs → HonoEndpointAdaptor-zVzVLJEO.cjs} +83 -62
  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-D6WeziRD.d.cts → Queue-DlsHRzUp.d.mts} +48 -48
  51. package/dist/Queue-DlsHRzUp.d.mts.map +1 -0
  52. package/dist/{Queue-DpUeqdC8.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-4rBJgDKI.d.mts → Subscriber-Bpp02cGr.d.cts} +30 -21
  63. package/dist/Subscriber-Bpp02cGr.d.cts.map +1 -0
  64. package/dist/{Subscriber-DVQowdyj.d.cts → Subscriber-CtN9R48-.d.mts} +29 -20
  65. package/dist/Subscriber-CtN9R48-.d.mts.map +1 -0
  66. package/dist/SubscriberBuilder-CDy4nHCz.mjs +134 -0
  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-D_owVoHo.cjs +145 -0
  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 +332 -188
  79. package/dist/adaptors/aws.cjs.map +1 -1
  80. package/dist/adaptors/aws.d.cts +114 -44
  81. package/dist/adaptors/aws.d.cts.map +1 -1
  82. package/dist/adaptors/aws.d.mts +114 -44
  83. package/dist/adaptors/aws.d.mts.map +1 -1
  84. package/dist/adaptors/aws.mjs +308 -166
  85. package/dist/adaptors/aws.mjs.map +1 -1
  86. package/dist/adaptors/hono.cjs +3 -11
  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 -11
  92. package/dist/adaptors/testing.cjs +743 -90
  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 -71
  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 +302 -34
  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 +290 -28
  109. package/dist/auth.mjs.map +1 -1
  110. package/dist/{cache-CdQ7OLpR.d.cts → cache-CXh6GIgb.d.mts} +4 -7
  111. package/dist/cache-CXh6GIgb.d.mts.map +1 -0
  112. package/dist/{cache-DYoJFcfd.d.mts → cache-DnGDGly3.d.cts} +4 -7
  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-BqwRNYA2.d.mts → construct-interface-B1AfqRl4.d.cts} +43 -12
  129. package/dist/construct-interface-B1AfqRl4.d.cts.map +1 -0
  130. package/dist/{construct-interface-D2nNkHUN.d.cts → construct-interface-DluK3_da.d.mts} +43 -12
  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 +189 -85
  147. package/dist/crons/index.cjs.map +1 -1
  148. package/dist/crons/index.d.cts +70 -48
  149. package/dist/crons/index.d.cts.map +1 -1
  150. package/dist/crons/index.d.mts +70 -48
  151. package/dist/crons/index.d.mts.map +1 -1
  152. package/dist/crons/index.mjs +183 -81
  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 -11
  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 -11
  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 +2 -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-Cpff1uZH.mjs → functions-BFizikJU.mjs} +394 -243
  203. package/dist/functions-BFizikJU.mjs.map +1 -0
  204. package/dist/{functions-DukjG8ov.cjs → functions-CfzJG9hK.cjs} +432 -275
  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-DM6HcXQk.mjs → lazyAccessors-CFanua0O.mjs} +20 -21
  237. package/dist/lazyAccessors-CFanua0O.mjs.map +1 -0
  238. package/dist/{lazyAccessors-DrJj8NpA.cjs → lazyAccessors-hJKGv8Ay.cjs} +60 -62
  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 +92 -63
  265. package/dist/rest-api.cjs.map +1 -1
  266. package/dist/rest-api.d.cts +81 -61
  267. package/dist/rest-api.d.cts.map +1 -1
  268. package/dist/rest-api.d.mts +81 -61
  269. package/dist/rest-api.d.mts.map +1 -1
  270. package/dist/rest-api.mjs +84 -55
  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 +35 -9
  282. package/dist/site.cjs.map +1 -1
  283. package/dist/site.d.cts +25 -22
  284. package/dist/site.d.cts.map +1 -1
  285. package/dist/site.d.mts +25 -22
  286. package/dist/site.d.mts.map +1 -1
  287. package/dist/site.mjs +31 -5
  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 +111 -101
  294. package/dist/subscribers/index.cjs.map +1 -1
  295. package/dist/subscribers/index.d.cts +44 -56
  296. package/dist/subscribers/index.d.cts.map +1 -1
  297. package/dist/subscribers/index.d.mts +44 -56
  298. package/dist/subscribers/index.d.mts.map +1 -1
  299. package/dist/subscribers/index.mjs +108 -98
  300. package/dist/subscribers/index.mjs.map +1 -1
  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 -32
  317. package/dist/topic/index.d.mts +2 -32
  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 +191 -0
  331. package/dist/worker.cjs.map +1 -0
  332. package/dist/worker.d.cts +171 -0
  333. package/dist/worker.d.cts.map +1 -0
  334. package/dist/worker.d.mts +171 -0
  335. package/dist/worker.d.mts.map +1 -0
  336. package/dist/worker.mjs +190 -0
  337. package/dist/worker.mjs.map +1 -0
  338. package/package.json +116 -70
  339. package/dist/AWSScheduledFunction-9bJS4WdJ.d.cts +0 -122
  340. package/dist/AWSScheduledFunction-9bJS4WdJ.d.cts.map +0 -1
  341. package/dist/AWSScheduledFunction-BJjj8B5V.mjs +0 -243
  342. package/dist/AWSScheduledFunction-BJjj8B5V.mjs.map +0 -1
  343. package/dist/AWSScheduledFunction-BO5iEMSh.d.mts +0 -122
  344. package/dist/AWSScheduledFunction-BO5iEMSh.d.mts.map +0 -1
  345. package/dist/AWSScheduledFunction-qu4ieRZR.cjs +0 -255
  346. package/dist/AWSScheduledFunction-qu4ieRZR.cjs.map +0 -1
  347. package/dist/Construct-B-xc0SE9.d.mts +0 -104
  348. package/dist/Construct-B-xc0SE9.d.mts.map +0 -1
  349. package/dist/Construct-CdhThxDI.mjs.map +0 -1
  350. package/dist/Construct-WhCXIOPV.d.cts +0 -104
  351. package/dist/Construct-WhCXIOPV.d.cts.map +0 -1
  352. package/dist/Construct-roId57cU.cjs.map +0 -1
  353. package/dist/Endpoint-BBkV6l0k.cjs.map +0 -1
  354. package/dist/Endpoint-BKR5QH6O.d.mts.map +0 -1
  355. package/dist/Endpoint-BQ9O0P1w.d.cts.map +0 -1
  356. package/dist/Endpoint-BTj58Gob.mjs.map +0 -1
  357. package/dist/EndpointFactory-BejSTzbB.mjs.map +0 -1
  358. package/dist/EndpointFactory-DYoGLaIT.cjs.map +0 -1
  359. package/dist/HonoEndpointAdaptor-7aYNdqJq.mjs.map +0 -1
  360. package/dist/HonoEndpointAdaptor-wMsCyMgt.cjs.map +0 -1
  361. package/dist/Queue-D6WeziRD.d.cts.map +0 -1
  362. package/dist/Queue-DpUeqdC8.d.mts.map +0 -1
  363. package/dist/Subscriber-4rBJgDKI.d.mts.map +0 -1
  364. package/dist/Subscriber-DVQowdyj.d.cts.map +0 -1
  365. package/dist/Topic-Ohx9dvWr.d.cts +0 -91
  366. package/dist/Topic-Ohx9dvWr.d.cts.map +0 -1
  367. package/dist/Topic-cmy2jOUy.d.mts +0 -91
  368. package/dist/Topic-cmy2jOUy.d.mts.map +0 -1
  369. package/dist/auth.d.cts.map +0 -1
  370. package/dist/auth.d.mts.map +0 -1
  371. package/dist/cache-0ANvRQnD.mjs +0 -51
  372. package/dist/cache-0ANvRQnD.mjs.map +0 -1
  373. package/dist/cache-3WSvAulx.cjs +0 -57
  374. package/dist/cache-3WSvAulx.cjs.map +0 -1
  375. package/dist/cache-CdQ7OLpR.d.cts.map +0 -1
  376. package/dist/cache-DYoJFcfd.d.mts.map +0 -1
  377. package/dist/clone-DblgEZZa.mjs.map +0 -1
  378. package/dist/clone-Dy0cR2SZ.cjs.map +0 -1
  379. package/dist/construct-interface-BfjcOD_E.cjs +0 -117
  380. package/dist/construct-interface-BfjcOD_E.cjs.map +0 -1
  381. package/dist/construct-interface-BqwRNYA2.d.mts.map +0 -1
  382. package/dist/construct-interface-D2nNkHUN.d.cts.map +0 -1
  383. package/dist/construct-interface-Z4CpS8tK.mjs +0 -81
  384. package/dist/construct-interface-Z4CpS8tK.mjs.map +0 -1
  385. package/dist/database/kysely.cjs.map +0 -1
  386. package/dist/database/kysely.d.cts.map +0 -1
  387. package/dist/database/kysely.d.mts.map +0 -1
  388. package/dist/database/kysely.mjs.map +0 -1
  389. package/dist/functions-Cpff1uZH.mjs.map +0 -1
  390. package/dist/functions-DukjG8ov.cjs.map +0 -1
  391. package/dist/index-BTvozlUD.d.cts +0 -163
  392. package/dist/index-BTvozlUD.d.cts.map +0 -1
  393. package/dist/index-Cvz551AO.d.mts.map +0 -1
  394. package/dist/index-D5zqAJ2e.d.cts.map +0 -1
  395. package/dist/index-L7pz0R0T.d.mts +0 -162
  396. package/dist/index-L7pz0R0T.d.mts.map +0 -1
  397. package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
  398. package/dist/lazyAccessors-DrJj8NpA.cjs.map +0 -1
  399. package/dist/processAudits-Bc8rz6Ev.cjs +0 -92
  400. package/dist/processAudits-Bc8rz6Ev.cjs.map +0 -1
  401. package/dist/processAudits-D89tICM4.mjs +0 -80
  402. package/dist/processAudits-D89tICM4.mjs.map +0 -1
  403. package/dist/publisher-CGEo8UKD.mjs +0 -41
  404. package/dist/publisher-CGEo8UKD.mjs.map +0 -1
  405. package/dist/publisher-CqGsXB2X.cjs +0 -53
  406. package/dist/publisher-CqGsXB2X.cjs.map +0 -1
  407. package/dist/queue/index.cjs.map +0 -1
  408. package/dist/queue/index.d.cts.map +0 -1
  409. package/dist/queue/index.d.mts.map +0 -1
  410. package/dist/queue/index.mjs.map +0 -1
  411. package/dist/surfaceEnv-BFXEms2f.cjs +0 -39
  412. package/dist/surfaceEnv-BFXEms2f.cjs.map +0 -1
  413. package/dist/surfaceEnv-C3Ktahea.mjs +0 -27
  414. package/dist/surfaceEnv-C3Ktahea.mjs.map +0 -1
  415. package/dist/telemetry-C3L0iS28.d.cts.map +0 -1
  416. package/dist/telemetry-D7bVFLGi.d.mts.map +0 -1
  417. package/dist/topic/index.cjs.map +0 -1
  418. package/dist/topic/index.d.cts.map +0 -1
  419. package/dist/topic/index.d.mts.map +0 -1
  420. package/dist/topic/index.mjs.map +0 -1
  421. package/dist/types-BlAkSuGI.d.cts.map +0 -1
  422. package/dist/types-aKksMEWL.d.mts.map +0 -1
@@ -1,22 +1,246 @@
1
- import { __toESM } from "../Construct-CdhThxDI.mjs";
2
- import "../construct-interface-Z4CpS8tK.mjs";
3
- import "../functions-Cpff1uZH.mjs";
4
- import "../clone-DblgEZZa.mjs";
5
- import { Endpoint, ResponseBuilder, require_lodash } from "../Endpoint-BTj58Gob.mjs";
6
- import { envParserFor } from "../surfaceEnv-C3Ktahea.mjs";
7
- import { publishConstructEvents } from "../publisher-CGEo8UKD.mjs";
8
- import { AWSLambdaFunction, AWSScheduledFunction } from "../AWSScheduledFunction-BJjj8B5V.mjs";
9
- import { createAuditContext, executeWithAuditTransaction } from "../processAudits-D89tICM4.mjs";
10
- import { createApiGatewayCookies } from "../lazyAccessors-DM6HcXQk.mjs";
1
+ import { o as __toESM } from "../Construct-B1vGBPme.mjs";
2
+ import { n as recordCarrier } from "../tracing-CxaZ98IB.mjs";
3
+ import { a as publishEvents, i as publishConstructEvents, t as FunctionBuilder } from "../functions-BFizikJU.mjs";
4
+ import { i as require_lodash_set, n as ResponseBuilder, t as Endpoint } from "../Endpoint-BG4UJ9oA.mjs";
5
+ import { n as envParserFor } from "../surfaceEnv-wMT5QzgZ.mjs";
6
+ import { t as createApiGatewayCookies } from "../lazyAccessors-CFanua0O.mjs";
7
+ import { n as subscribedEvents, r as subscriberContext, t as runSubscriber } from "../runSubscriber-BHvJ8POr.mjs";
8
+ import { n as executeWithAuditTransaction, t as createAuditContext } from "../processAudits-BRRVVHUB.mjs";
9
+ import { consumeBatchTraced } from "@geekmidas/events";
11
10
  import { ForbiddenError, UnprocessableEntityError, wrapError } from "@geekmidas/errors";
12
11
  import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
12
+ import qs from "qs";
13
13
  import middy from "@middy/core";
14
+ import { DefaultAuditor } from "@geekmidas/audit";
15
+ import { withAuditableTransaction } from "@geekmidas/audit/kysely";
14
16
  import { withRlsContext } from "@geekmidas/db/rls";
15
- import qs from "qs";
16
-
17
+ //#region src/functions/FunctionExecutionWrapper.ts
18
+ var FunctionExecutionWrapper = class {
19
+ envParser;
20
+ fn;
21
+ constructor(envParser, fn) {
22
+ this.envParser = envParser;
23
+ this.fn = fn;
24
+ }
25
+ _logger;
26
+ get logger() {
27
+ return this._logger || this.fn.logger;
28
+ }
29
+ get serviceDiscovery() {
30
+ return ServiceDiscovery.getInstance(this.envParser);
31
+ }
32
+ getServices() {
33
+ return this.serviceDiscovery.register(this.fn.services);
34
+ }
35
+ async getDatabase() {
36
+ if (!this.fn.databaseService) return;
37
+ return (await this.serviceDiscovery.register([this.fn.databaseService]))[this.fn.databaseService.serviceName];
38
+ }
39
+ /**
40
+ * Get the audit storage service if configured.
41
+ * Returns undefined if no auditor storage is configured.
42
+ */
43
+ async getAuditStorage() {
44
+ if (!this.fn.auditorStorageService) return;
45
+ return (await this.serviceDiscovery.register([this.fn.auditorStorageService]))[this.fn.auditorStorageService.serviceName];
46
+ }
47
+ /**
48
+ * Create an auditor instance for the function.
49
+ * Returns undefined if no auditor storage is configured.
50
+ */
51
+ async createAuditor() {
52
+ const storage = await this.getAuditStorage();
53
+ if (!storage) return;
54
+ return new DefaultAuditor({
55
+ actor: {
56
+ id: "system",
57
+ type: "system"
58
+ },
59
+ storage,
60
+ metadata: { function: this.fn.type }
61
+ });
62
+ }
63
+ /**
64
+ * Execute handler with audit transaction support.
65
+ * If the audit storage has a database (via getDatabase()), wraps execution
66
+ * in a transaction so audits are atomic with handler's database operations.
67
+ *
68
+ * @param handler - The handler function to execute (receives auditor and db)
69
+ * @returns The handler result
70
+ */
71
+ async executeWithAudit(handler) {
72
+ const auditor = await this.createAuditor();
73
+ const storage = await this.getAuditStorage();
74
+ if (!auditor || !storage) return handler({ db: await this.getDatabase() });
75
+ const storageDb = storage.getDatabase?.();
76
+ const databaseServiceName = this.fn.databaseService?.serviceName;
77
+ const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
78
+ if (storageDb && databaseServiceName && auditDbServiceName) return withAuditableTransaction(storageDb, auditor, async (trx) => {
79
+ return await handler({
80
+ auditor,
81
+ db: trx
82
+ });
83
+ });
84
+ const response = await handler({
85
+ auditor,
86
+ db: await this.getDatabase()
87
+ });
88
+ await auditor.flush();
89
+ return response;
90
+ }
91
+ async getFunctionInput(event) {
92
+ return await FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
93
+ }
94
+ async publishEvents(response) {
95
+ await publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response);
96
+ }
97
+ async parseComposableStandardSchema(data, schema) {
98
+ return FunctionBuilder.parseComposableStandardSchema(data, schema);
99
+ }
100
+ };
101
+ //#endregion
102
+ //#region src/functions/AWSLambdaFunction.ts
103
+ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
104
+ fn;
105
+ constructor(envParser, fn) {
106
+ super(envParser, fn);
107
+ this.fn = fn;
108
+ }
109
+ error() {
110
+ return { onError: (req) => {
111
+ (req.event?.logger || this.fn.logger).error(req.error || {}, "Error processing function");
112
+ throw wrapError(req.error);
113
+ } };
114
+ }
115
+ baseInput() {
116
+ return { before: (_req) => {} };
117
+ }
118
+ input() {
119
+ return { before: async (req) => {
120
+ try {
121
+ if (this.fn.input) {
122
+ const parsedInput = await FunctionBuilder.parseComposableStandardSchema(req.event, this.fn.input);
123
+ req.event.parsedInput = parsedInput;
124
+ } else req.event.parsedInput = req.event;
125
+ } catch (error) {
126
+ this.logger.error({
127
+ err: error,
128
+ event: req.event
129
+ }, "Failed to parse input");
130
+ throw error;
131
+ }
132
+ } };
133
+ }
134
+ loggerMiddleware() {
135
+ return { before: (req) => {
136
+ this._logger = this.fn.logger.child({
137
+ fn: {
138
+ name: req.context.functionName,
139
+ version: req.context.functionVersion,
140
+ memory: req.context.memoryLimitInMB
141
+ },
142
+ req: { id: req.context.awsRequestId }
143
+ });
144
+ req.event.logger = this._logger;
145
+ } };
146
+ }
147
+ services() {
148
+ return { before: async (req) => {
149
+ req.event.services = await this.getServices();
150
+ } };
151
+ }
152
+ database() {
153
+ return { before: async (req) => {
154
+ req.event.db = await this.getDatabase();
155
+ } };
156
+ }
157
+ auditor() {
158
+ return {
159
+ before: async (req) => {
160
+ req.event.auditor = await this.createAuditor();
161
+ },
162
+ after: async (req) => {
163
+ if (req.event.auditor) {
164
+ const records = req.event.auditor.getRecords();
165
+ if (records.length > 0) {
166
+ this.logger.debug({ auditCount: records.length }, "Flushing function audits");
167
+ await req.event.auditor.flush();
168
+ }
169
+ }
170
+ }
171
+ };
172
+ }
173
+ events() {
174
+ return { after: async (req) => {
175
+ const response = req.response || void 0;
176
+ await this.publishEvents(response);
177
+ } };
178
+ }
179
+ async _handler(event) {
180
+ const result = await this.fn.fn({
181
+ input: event.parsedInput,
182
+ services: event.services,
183
+ logger: event.logger,
184
+ db: event.db,
185
+ auditor: event.auditor
186
+ });
187
+ return await this.fn.parseOutput(result);
188
+ }
189
+ get handler() {
190
+ const handler = this._handler.bind(this);
191
+ const chain = middy(handler).use(this.loggerMiddleware()).use(this.baseInput()).use(this.error()).use(this.services()).use(this.database()).use(this.auditor()).use(this.input()).use(this.events());
192
+ const wrappedHandler = async (event, context) => {
193
+ const startTime = Date.now();
194
+ const requestId = context.awsRequestId;
195
+ const logger = this.fn.logger.child({ requestId });
196
+ return runWithRequestContext({
197
+ logger,
198
+ requestId,
199
+ startTime,
200
+ operation: context.functionName
201
+ }, () => chain(event, context));
202
+ };
203
+ return wrappedHandler;
204
+ }
205
+ };
206
+ //#endregion
207
+ //#region src/crons/AWSScheduledFunction.ts
208
+ /**
209
+ * AWS Lambda adaptor for {@link Cron} constructs.
210
+ *
211
+ * A `Cron` is a {@link import('../functions').Function} that is invoked on a
212
+ * schedule (an EventBridge rule) rather than by an API request. Because of
213
+ * that, the runtime execution pipeline is identical to a regular Lambda
214
+ * function: input parsing, service/database/auditor wiring, event publishing,
215
+ * error handling, and the `runWithRequestContext` wrapper that powers
216
+ * request-scoped logging via `serviceContext.getLogger()`.
217
+ *
218
+ * This adaptor therefore reuses {@link AWSLambdaFunction} wholesale and only
219
+ * narrows the constructor to accept a `Cron`. The schedule expression itself
220
+ * (`cron.schedule`) is **deploy-time** infrastructure consumed by the CLI to
221
+ * provision the EventBridge rule — it is not needed at runtime.
222
+ *
223
+ * @example
224
+ * ```typescript
225
+ * import { AWSScheduledFunction } from '@geekmidas/constructs/crons';
226
+ * import { cancelPastBookings } from '../../../src/crons/cancelPastBookings.js';
227
+ * import { envParser } from '../../../src/env';
228
+ *
229
+ * const adapter = new AWSScheduledFunction(envParser, cancelPastBookings);
230
+ *
231
+ * export const handler = adapter.handler;
232
+ * ```
233
+ */
234
+ var AWSScheduledFunction = class extends AWSLambdaFunction {
235
+ constructor(envParser, cron) {
236
+ super(envParser, cron);
237
+ }
238
+ };
239
+ //#endregion
17
240
  //#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
18
- var import_lodash = __toESM(require_lodash(), 1);
241
+ var import_lodash_set = /* @__PURE__ */ __toESM(require_lodash_set(), 1);
19
242
  var AmazonApiGatewayEndpoint = class {
243
+ endpoint;
20
244
  options;
21
245
  /**
22
246
  * The parser this adaptor discovers services with.
@@ -54,8 +278,7 @@ var AmazonApiGatewayEndpoint = class {
54
278
  static decodeBody(body, isBase64Encoded, contentType) {
55
279
  if (!body) return void 0;
56
280
  const raw = isBase64Encoded ? Buffer.from(body, "base64").toString("utf-8") : body;
57
- const isJson = !contentType || contentType.toLowerCase().includes("application/json");
58
- if (isJson) return JSON.parse(raw);
281
+ if (!contentType || contentType.toLowerCase().includes("application/json")) return JSON.parse(raw);
59
282
  return raw;
60
283
  }
61
284
  getCookies(e) {
@@ -69,11 +292,11 @@ var AmazonApiGatewayEndpoint = class {
69
292
  const headers = req.event.headers;
70
293
  const header = Endpoint.createHeaders(headers);
71
294
  const cookie = this.getCookies(req.event);
72
- (0, import_lodash.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
73
- (0, import_lodash.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
74
- (0, import_lodash.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
75
- (0, import_lodash.default)(req.event, "header", header);
76
- (0, import_lodash.default)(req.event, "cookie", cookie);
295
+ (0, import_lodash_set.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
296
+ (0, import_lodash_set.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
297
+ (0, import_lodash_set.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
298
+ (0, import_lodash_set.default)(req.event, "header", header);
299
+ (0, import_lodash_set.default)(req.event, "cookie", cookie);
77
300
  } catch (error) {
78
301
  if (error && typeof error === "object" && Array.isArray(error)) throw new UnprocessableEntityError("Validation failed", error);
79
302
  throw error;
@@ -92,9 +315,8 @@ var AmazonApiGatewayEndpoint = class {
92
315
  }
93
316
  services() {
94
317
  return { before: async (req) => {
95
- const _logger = req.event.logger;
96
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
97
- const services = await serviceDiscovery.register(this.endpoint.services);
318
+ req.event.logger;
319
+ const services = await ServiceDiscovery.getInstance(this.envParser).register(this.endpoint.services);
98
320
  req.event.services = services;
99
321
  } };
100
322
  }
@@ -105,7 +327,7 @@ var AmazonApiGatewayEndpoint = class {
105
327
  const header = req.event.header;
106
328
  const cookie = req.event.cookie;
107
329
  const session = req.event.session;
108
- const isAuthorized = await this.endpoint.authorize({
330
+ if (!await this.endpoint.authorize({
109
331
  header,
110
332
  cookie,
111
333
  services,
@@ -115,8 +337,7 @@ var AmazonApiGatewayEndpoint = class {
115
337
  body: req.event.body,
116
338
  query: req.event.query,
117
339
  params: req.event.params
118
- });
119
- if (!isAuthorized) {
340
+ })) {
120
341
  logger.warn("Forbidden access attempt");
121
342
  throw new ForbiddenError("Forbidden access to the endpoint", "You do not have permission to access this resource.");
122
343
  }
@@ -125,9 +346,8 @@ var AmazonApiGatewayEndpoint = class {
125
346
  database() {
126
347
  return { before: async (req) => {
127
348
  if (!this.endpoint.databaseService) return;
128
- const _logger = req.event.logger;
129
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
130
- const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
349
+ req.event.logger;
350
+ const db = await ServiceDiscovery.getInstance(this.envParser).register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
131
351
  req.event.db = db;
132
352
  } };
133
353
  }
@@ -178,9 +398,8 @@ var AmazonApiGatewayEndpoint = class {
178
398
  cookie: event.cookie,
179
399
  logger
180
400
  }) : void 0;
181
- const result = await executeWithAuditTransaction(auditContext, async (auditor) => {
182
- const sameDatabase = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName;
183
- const baseDb = sameDatabase ? auditor?.getTransaction?.() ?? rawDb : rawDb;
401
+ const { output, metadata } = await executeWithAuditTransaction(auditContext, async (auditor) => {
402
+ const baseDb = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName ? auditor?.getTransaction?.() ?? rawDb : rawDb;
184
403
  const executeHandler = async (db) => {
185
404
  const responseBuilder = new ResponseBuilder();
186
405
  const response = await this.endpoint.handler({
@@ -194,33 +413,31 @@ var AmazonApiGatewayEndpoint = class {
194
413
  ...input
195
414
  }, responseBuilder);
196
415
  let data = response;
197
- let metadata$1 = responseBuilder.getMetadata();
416
+ let metadata = responseBuilder.getMetadata();
198
417
  if (Endpoint.hasMetadata(response)) {
199
418
  data = response.data;
200
- metadata$1 = response.metadata;
419
+ metadata = response.metadata;
201
420
  }
202
- const output$1 = this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0;
203
421
  return {
204
- output: output$1,
205
- metadata: metadata$1,
422
+ output: this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0,
423
+ metadata,
206
424
  responseBuilder
207
425
  };
208
426
  };
209
427
  if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
210
428
  return executeHandler(baseDb);
211
- }, async (result$1, auditor) => {
429
+ }, async (result, auditor) => {
212
430
  if (!audits?.length) return;
213
431
  for (const audit of audits) {
214
- if (audit.when && !audit.when(result$1.output)) continue;
215
- const payload = audit.payload(result$1.output);
216
- const entityId = audit.entityId?.(result$1.output);
432
+ if (audit.when && !audit.when(result.output)) continue;
433
+ const payload = audit.payload(result.output);
434
+ const entityId = audit.entityId?.(result.output);
217
435
  auditor.audit(audit.type, payload, {
218
436
  table: audit.table,
219
437
  entityId
220
438
  });
221
439
  }
222
440
  }, { db: rawDb });
223
- const { output, metadata } = result;
224
441
  const isJsonResponse = this.endpoint.responseType === "application/json";
225
442
  const body = output === void 0 ? void 0 : isJsonResponse ? JSON.stringify(output) : typeof output === "string" ? output : String(output);
226
443
  event.__response = output;
@@ -279,16 +496,17 @@ var AmazonApiGatewayEndpoint = class {
279
496
  const startTime = Date.now();
280
497
  const requestId = context.awsRequestId;
281
498
  const logger = this.endpoint.logger.child({ requestId });
499
+ const operation = `${this.endpoint.method} ${this.endpoint.route}`;
282
500
  return runWithRequestContext({
283
501
  logger,
284
502
  requestId,
285
- startTime
503
+ startTime,
504
+ operation
286
505
  }, () => chain(event, context));
287
506
  };
288
507
  return wrappedHandler;
289
508
  }
290
509
  };
291
-
292
510
  //#endregion
293
511
  //#region src/endpoints/parseQueryParams.ts
294
512
  /**
@@ -309,10 +527,10 @@ function parseQueryParams(queryParams) {
309
527
  }
310
528
  return qs.parse(parts.join("&"));
311
529
  }
312
-
313
530
  //#endregion
314
531
  //#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
315
532
  var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
533
+ endpoint;
316
534
  getInput(e) {
317
535
  const multiValueParams = e.multiValueQueryStringParameters || {};
318
536
  const singleValueParams = e.queryStringParameters || {};
@@ -345,17 +563,16 @@ var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
345
563
  this.endpoint = endpoint;
346
564
  }
347
565
  };
348
-
349
566
  //#endregion
350
567
  //#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
351
568
  var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
569
+ endpoint;
352
570
  getCookies(e) {
353
571
  return createApiGatewayCookies(e.cookies, e.headers?.cookie);
354
572
  }
355
573
  getInput(e) {
356
- const raw = AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]);
357
574
  return {
358
- body: raw,
575
+ body: AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]),
359
576
  query: qs.parse(e.rawQueryString),
360
577
  params: e.pathParameters || {}
361
578
  };
@@ -380,7 +597,6 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
380
597
  this.endpoint = endpoint;
381
598
  }
382
599
  };
383
-
384
600
  //#endregion
385
601
  //#region src/queue/AWSLambdaQueueAdaptor.ts
386
602
  /**
@@ -395,6 +611,8 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
395
611
  * retries only those records.
396
612
  */
397
613
  var AWSLambdaQueue = class {
614
+ envParser;
615
+ queue;
398
616
  _services;
399
617
  constructor(envParser, queue) {
400
618
  this.envParser = envParser;
@@ -409,6 +627,12 @@ var AWSLambdaQueue = class {
409
627
  this._services = this.queue.services.length > 0 ? await serviceDiscovery.register(this.queue.services) : {};
410
628
  return this._services;
411
629
  }
630
+ /** The queue's database, registered as functions register theirs. */
631
+ async getDatabase() {
632
+ const service = this.queue.databaseService;
633
+ if (!service) return void 0;
634
+ return (await ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
635
+ }
412
636
  safeJsonParse(value) {
413
637
  try {
414
638
  return JSON.parse(value);
@@ -434,6 +658,7 @@ var AWSLambdaQueue = class {
434
658
  req: { id: context.awsRequestId }
435
659
  });
436
660
  const services = await this.getServices();
661
+ const db = await this.getDatabase();
437
662
  const schema = this.queue.messageSchema;
438
663
  const batchItemFailures = [];
439
664
  const messages = [];
@@ -451,7 +676,7 @@ var AWSLambdaQueue = class {
451
676
  messages.push(validation.value);
452
677
  } catch (error) {
453
678
  logger.error({
454
- error,
679
+ err: error,
455
680
  messageId: record.messageId
456
681
  }, "Failed to parse SQS record");
457
682
  batchItemFailures.push({ itemIdentifier: record.messageId });
@@ -461,7 +686,8 @@ var AWSLambdaQueue = class {
461
686
  await this.queue.handler({
462
687
  messages,
463
688
  services,
464
- logger
689
+ logger,
690
+ db
465
691
  });
466
692
  } catch (error) {
467
693
  logger.error(wrapError(error), "Queue handler failed; retrying batch");
@@ -471,24 +697,28 @@ var AWSLambdaQueue = class {
471
697
  }
472
698
  get handler() {
473
699
  const handler = this._handler.bind(this);
474
- return async (event, context) => {
700
+ return (async (event, context) => {
475
701
  const startTime = Date.now();
476
702
  const requestId = context.awsRequestId;
477
703
  const logger = this.queue.logger.child({ requestId });
478
704
  return runWithRequestContext({
479
705
  logger,
480
706
  requestId,
481
- startTime
482
- }, () => handler(event, context));
483
- };
707
+ startTime,
708
+ operation: `queue ${this.queue.name}`
709
+ }, () => consumeBatchTraced({
710
+ system: "aws_sqs",
711
+ destination: this.queue.name
712
+ }, event.Records.map(recordCarrier), () => handler(event, context)));
713
+ });
484
714
  }
485
715
  };
486
-
487
716
  //#endregion
488
717
  //#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
489
718
  var AWSLambdaSubscriber = class {
719
+ envParser;
720
+ subscriber;
490
721
  _logger;
491
- _services;
492
722
  constructor(envParser, subscriber) {
493
723
  this.envParser = envParser;
494
724
  this.subscriber = subscriber;
@@ -497,19 +727,9 @@ var AWSLambdaSubscriber = class {
497
727
  get logger() {
498
728
  return this._logger;
499
729
  }
500
- async getServices() {
501
- if (this._services) return this._services;
502
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
503
- if (this.subscriber.services.length > 0) {
504
- const registered = await serviceDiscovery.register(this.subscriber.services);
505
- this._services = registered;
506
- } else this._services = {};
507
- return this._services;
508
- }
509
730
  error() {
510
731
  return { onError: (req) => {
511
- const logger = req.event?.logger || this.subscriber.logger;
512
- logger.error(req.error || {}, "Error processing subscriber");
732
+ (req.event?.logger || this.subscriber.logger).error(req.error || {}, "Error processing subscriber");
513
733
  throw wrapError(req.error);
514
734
  } };
515
735
  }
@@ -528,110 +748,26 @@ var AWSLambdaSubscriber = class {
528
748
  }
529
749
  services() {
530
750
  return { before: async (req) => {
531
- req.event.services = await this.getServices();
751
+ const { services, db } = await subscriberContext(this.subscriber, this.envParser);
752
+ req.event.services = services;
753
+ req.event.db = db;
532
754
  } };
533
755
  }
534
756
  parseEvents() {
535
757
  return { before: async (req) => {
536
- const { logger,...e } = req.event;
537
- const rawEvent = e;
758
+ const { logger, ...rawEvent } = req.event;
538
759
  logger.info({ rawEvent });
539
- const events = [];
540
- if ("Records" in rawEvent) {
541
- if (this.isSQSEvent(rawEvent)) for (const record of rawEvent.Records) try {
542
- const event = this.parseSQSRecord(record);
543
- if (this.shouldIncludeEvent(event)) events.push(event);
544
- } catch (error) {
545
- this.logger.error({
546
- error,
547
- record
548
- }, "Failed to parse SQS record");
549
- }
550
- else if (this.isSNSEvent(rawEvent)) for (const record of rawEvent.Records) try {
551
- const event = this.parseSNSRecord(record);
552
- if (this.shouldIncludeEvent(event)) events.push(event);
553
- } catch (error) {
554
- this.logger.error({
555
- error,
556
- record
557
- }, "Failed to parse SNS record");
558
- }
559
- }
560
- req.event.events = events;
760
+ req.event.events = subscribedEvents(this.subscriber, rawEvent, this.logger);
561
761
  } };
562
762
  }
563
- isSQSEvent(event) {
564
- const firstRecord = event.Records[0];
565
- return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
566
- }
567
- isSNSEvent(event) {
568
- const firstRecord = event.Records[0];
569
- return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
570
- }
571
- parseSNSRecord(record) {
572
- const message = this.safeJsonParse(record.Sns.Message);
573
- const messageType = record.Sns.MessageAttributes?.type?.Value;
574
- if (message === null) return messageType ? {
575
- type: messageType,
576
- payload: record.Sns.Message
577
- } : record.Sns.Message;
578
- const resolvedType = messageType ?? message.type;
579
- if (message.type) return message;
580
- return resolvedType ? {
581
- type: resolvedType,
582
- payload: message
583
- } : message;
584
- }
585
- parseSQSRecord(record) {
586
- const body = this.safeJsonParse(record.body);
587
- if (body === null) return record.body;
588
- if (body.Type === "Notification" && body.Message) {
589
- const snsMessage = this.safeJsonParse(body.Message);
590
- const messageType = body.MessageAttributes?.type?.Value;
591
- if (snsMessage === null) return messageType ? {
592
- type: messageType,
593
- payload: body.Message
594
- } : body.Message;
595
- if (snsMessage.type) return snsMessage;
596
- const resolvedType = messageType ?? snsMessage.type;
597
- return resolvedType ? {
598
- type: resolvedType,
599
- payload: snsMessage
600
- } : snsMessage;
601
- }
602
- return body;
603
- }
604
- safeJsonParse(value) {
605
- try {
606
- return JSON.parse(value);
607
- } catch {
608
- return null;
609
- }
610
- }
611
- shouldIncludeEvent(event) {
612
- if (typeof event !== "object" || !event?.type) return true;
613
- if (!this.subscriber.subscribedEvents) return true;
614
- return this.subscriber.subscribedEvents.includes(event.type);
615
- }
616
763
  async _handler(event) {
617
- if (event.events.length === 0) {
618
- this.logger.info("No subscribed events to process");
619
- return { batchItemFailures: [] };
620
- }
621
- const result = await this.subscriber.handler({
622
- events: event.events,
623
- services: event.services,
624
- logger: event.logger
764
+ const { events, services, logger, db } = event;
765
+ return runSubscriber(this.subscriber, {
766
+ events,
767
+ services,
768
+ logger,
769
+ db
625
770
  });
626
- if (this.subscriber.outputSchema && result) {
627
- const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
628
- if (validationResult.issues) {
629
- this.logger.error({ issues: validationResult.issues }, "Subscriber output validation failed");
630
- throw new Error("Subscriber output validation failed");
631
- }
632
- return validationResult.value;
633
- }
634
- return result;
635
771
  }
636
772
  get handler() {
637
773
  const handler = this._handler.bind(this);
@@ -640,16 +776,22 @@ var AWSLambdaSubscriber = class {
640
776
  const startTime = Date.now();
641
777
  const requestId = context.awsRequestId;
642
778
  const logger = this.subscriber.logger.child({ requestId });
779
+ const operation = `subscriber ${this.subscriber.topicName ?? context.functionName}`;
780
+ const records = event?.Records ?? [];
643
781
  return runWithRequestContext({
644
782
  logger,
645
783
  requestId,
646
- startTime
647
- }, () => chain(event, context));
784
+ startTime,
785
+ operation
786
+ }, () => consumeBatchTraced({
787
+ system: records[0]?.Sns ? "aws_sns" : "aws_sqs",
788
+ destination: this.subscriber.topicName ?? context.functionName
789
+ }, records.map(recordCarrier), () => chain(event, context)));
648
790
  };
649
791
  return wrappedHandler;
650
792
  }
651
793
  };
652
-
653
794
  //#endregion
654
795
  export { AWSLambdaFunction, AWSLambdaQueue, AWSLambdaSubscriber, AWSScheduledFunction, AmazonApiGatewayV1Endpoint, AmazonApiGatewayV2Endpoint };
796
+
655
797
  //# sourceMappingURL=aws.mjs.map