@geekmidas/constructs 0.3.0 → 0.3.2

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 (262) hide show
  1. package/dist/{AWSLambdaFunction-D9RZhm0N.d.mts → AWSLambdaFunction-BdebRMUh.d.mts} +5 -3
  2. package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +1 -0
  3. package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +1 -1
  4. package/dist/{AWSLambdaFunction-gpqm7UBb.d.cts → AWSLambdaFunction-D0tEOTXQ.d.cts} +5 -3
  5. package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +1 -0
  6. package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +1 -1
  7. package/dist/{AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs → AWSLambdaSubscriberAdaptor-BLfO612H.mjs} +5 -3
  8. package/dist/{AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs.map → AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map} +1 -1
  9. package/dist/{AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs → AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs} +5 -3
  10. package/dist/{AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs.map → AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map} +1 -1
  11. package/dist/{AWSLambdaSubscriberAdaptor-C0aZBU64.d.mts → AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts} +4 -2
  12. package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +1 -0
  13. package/dist/{AWSLambdaSubscriberAdaptor-DT8icDRf.d.cts → AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts} +4 -2
  14. package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +1 -0
  15. package/dist/{AmazonApiGatewayEndpointAdaptor-CbJqLU6I.d.cts → AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts} +5 -3
  16. package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-DC3N7zY_.d.mts → AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts} +5 -3
  18. package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +1 -0
  19. package/dist/{AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs → AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs} +2 -2
  20. package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +1 -0
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs → AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs} +2 -2
  22. package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +1 -0
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-BVxgQ-7J.d.mts → AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts} +8 -6
  24. package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +1 -0
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CVwJ5k16.d.cts → AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts} +8 -6
  26. package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +1 -0
  27. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs → AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs} +2 -2
  28. package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +1 -0
  29. package/dist/{AmazonApiGatewayV2EndpointAdaptor-1oBZdQH3.d.cts → AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts} +6 -4
  30. package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +1 -0
  31. package/dist/{AmazonApiGatewayV2EndpointAdaptor-C3H8Hpv7.d.mts → AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts} +6 -4
  32. package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +1 -0
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-jRrQrIdm.mjs → AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs} +2 -2
  34. package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +1 -0
  35. package/dist/{Authorizer-CpSUMTIs.d.cts → Authorizer-B-btowNd.d.cts} +2 -1
  36. package/dist/Authorizer-B-btowNd.d.cts.map +1 -0
  37. package/dist/{Authorizer-Cpx59w_q.d.mts → Authorizer-gWxYsGEp.d.mts} +2 -1
  38. package/dist/Authorizer-gWxYsGEp.d.mts.map +1 -0
  39. package/dist/{BaseFunctionBuilder-CoV7J45W.d.mts → BaseFunctionBuilder-BAtutR6q.d.cts} +5 -3
  40. package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +1 -0
  41. package/dist/{BaseFunctionBuilder-DaQA0uKE.d.cts → BaseFunctionBuilder-DRY419e7.d.mts} +5 -3
  42. package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +1 -0
  43. package/dist/{Construct-Dkd8Kvc9.d.cts → Construct-C4rPE67v.d.cts} +8 -7
  44. package/dist/Construct-C4rPE67v.d.cts.map +1 -0
  45. package/dist/{Construct-jBKqb-Zi.d.mts → Construct-XrijZFFh.d.mts} +8 -7
  46. package/dist/Construct-XrijZFFh.d.mts.map +1 -0
  47. package/dist/Construct.d.cts +1 -1
  48. package/dist/Construct.d.mts +1 -1
  49. package/dist/{Cron-7VPR2cNR.d.cts → Cron-bDLcTvV5.d.cts} +4 -4
  50. package/dist/Cron-bDLcTvV5.d.cts.map +1 -0
  51. package/dist/{Cron-JZkp_fHy.d.mts → Cron-cdjlSKNp.d.mts} +4 -4
  52. package/dist/Cron-cdjlSKNp.d.mts.map +1 -0
  53. package/dist/{CronBuilder-290th4zF.d.cts → CronBuilder-BC4m5-p1.d.mts} +7 -5
  54. package/dist/CronBuilder-BC4m5-p1.d.mts.map +1 -0
  55. package/dist/CronBuilder-CcxKRtVP.cjs.map +1 -1
  56. package/dist/{CronBuilder-BmFDO0Dm.d.mts → CronBuilder-DKVXyE0Q.d.cts} +7 -5
  57. package/dist/CronBuilder-DKVXyE0Q.d.cts.map +1 -0
  58. package/dist/CronBuilder-d2jh-IB2.mjs.map +1 -1
  59. package/dist/{Endpoint-C5djXyae.d.mts → Endpoint-BPv9_-m_.d.cts} +9 -7
  60. package/dist/Endpoint-BPv9_-m_.d.cts.map +1 -0
  61. package/dist/{Endpoint-CC2RGjkl.d.cts → Endpoint-BdwG75G_.d.mts} +9 -7
  62. package/dist/Endpoint-BdwG75G_.d.mts.map +1 -0
  63. package/dist/{EndpointBuilder-CD8LkBda.d.mts → EndpointBuilder-B3az942t.d.mts} +7 -5
  64. package/dist/EndpointBuilder-B3az942t.d.mts.map +1 -0
  65. package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +1 -1
  66. package/dist/{EndpointBuilder-vXk6eIJk.d.cts → EndpointBuilder-DIy_m1bu.d.cts} +7 -5
  67. package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +1 -0
  68. package/dist/EndpointBuilder-DnCB1h1j.mjs.map +1 -1
  69. package/dist/{EndpointFactory-jAkQxWRj.d.mts → EndpointFactory-C-0nE6Jg.d.mts} +6 -4
  70. package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +1 -0
  71. package/dist/{EndpointFactory-D8I4NNCo.d.cts → EndpointFactory-CyPbm3AD.d.cts} +6 -4
  72. package/dist/EndpointFactory-CyPbm3AD.d.cts.map +1 -0
  73. package/dist/{Function-DHD1V9QW.d.cts → Function-Cf7f_kCz.d.cts} +5 -5
  74. package/dist/Function-Cf7f_kCz.d.cts.map +1 -0
  75. package/dist/{Function-Vh1t-Qjj.d.mts → Function-DN2G6OT5.d.mts} +5 -5
  76. package/dist/Function-DN2G6OT5.d.mts.map +1 -0
  77. package/dist/{FunctionBuilder-3jsoFffg.d.mts → FunctionBuilder-CJBzzXL3.d.cts} +7 -5
  78. package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +1 -0
  79. package/dist/FunctionBuilder-CrDYgfiI.mjs.map +1 -1
  80. package/dist/{FunctionBuilder-FV6r3I7X.d.cts → FunctionBuilder-Cxx8D2na.d.mts} +7 -5
  81. package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +1 -0
  82. package/dist/FunctionBuilder-DswJ-9sD.cjs.map +1 -1
  83. package/dist/{FunctionExecutionWrapper-CI3CaoCo.d.mts → FunctionExecutionWrapper-DF260Aaj.d.mts} +4 -2
  84. package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +1 -0
  85. package/dist/{FunctionExecutionWrapper-DYt3C8b9.d.cts → FunctionExecutionWrapper-Qy8bmgFR.d.cts} +4 -2
  86. package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +1 -0
  87. package/dist/{HonoEndpointAdaptor-Bx9Y1bCZ.d.cts → HonoEndpointAdaptor-BaPlUhz0.d.mts} +11 -9
  88. package/dist/HonoEndpointAdaptor-BaPlUhz0.d.mts.map +1 -0
  89. package/dist/{HonoEndpointAdaptor-e6l9eVDU.cjs → HonoEndpointAdaptor-CQe2FqMR.cjs} +2 -2
  90. package/dist/{HonoEndpointAdaptor-e6l9eVDU.cjs.map → HonoEndpointAdaptor-CQe2FqMR.cjs.map} +1 -1
  91. package/dist/{HonoEndpointAdaptor-NLlQk5iU.mjs → HonoEndpointAdaptor-Ce-2HBxn.mjs} +2 -2
  92. package/dist/{HonoEndpointAdaptor-NLlQk5iU.mjs.map → HonoEndpointAdaptor-Ce-2HBxn.mjs.map} +1 -1
  93. package/dist/{HonoEndpointAdaptor-kb1ByjUL.d.mts → HonoEndpointAdaptor-YcRHYALH.d.cts} +11 -9
  94. package/dist/HonoEndpointAdaptor-YcRHYALH.d.cts.map +1 -0
  95. package/dist/Subscriber-BiHjVXtM.cjs.map +1 -1
  96. package/dist/Subscriber-BmPf9GFb.mjs.map +1 -1
  97. package/dist/{Subscriber-DMSzvO_J.d.cts → Subscriber-COYMSevD.d.cts} +6 -6
  98. package/dist/Subscriber-COYMSevD.d.cts.map +1 -0
  99. package/dist/{Subscriber-aNr1qkxR.d.mts → Subscriber-ikctpU3I.d.mts} +6 -6
  100. package/dist/Subscriber-ikctpU3I.d.mts.map +1 -0
  101. package/dist/{SubscriberBuilder-BxJM3Hz_.d.cts → SubscriberBuilder-D_9zzllj.d.mts} +5 -3
  102. package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +1 -0
  103. package/dist/{SubscriberBuilder-CWS4tdbp.d.mts → SubscriberBuilder-ivHAGIVi.d.cts} +5 -3
  104. package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +1 -0
  105. package/dist/{TestEndpointAdaptor-5-unBV8O.d.mts → TestEndpointAdaptor-C10xBI--.d.cts} +4 -4
  106. package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +1 -0
  107. package/dist/{TestEndpointAdaptor-Bm0UjDtV.d.cts → TestEndpointAdaptor-DB7bREhS.d.mts} +4 -4
  108. package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +1 -0
  109. package/dist/{TestEndpointAdaptor-oq5mfglM.mjs → TestEndpointAdaptor-DJgik2Wj.mjs} +13 -1
  110. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs.map +1 -0
  111. package/dist/{TestEndpointAdaptor-opEisC30.cjs → TestEndpointAdaptor-ZbtQiuHE.cjs} +13 -1
  112. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs.map +1 -0
  113. package/dist/adaptors/aws.cjs +4 -4
  114. package/dist/adaptors/aws.d.cts +15 -15
  115. package/dist/adaptors/aws.d.mts +15 -15
  116. package/dist/adaptors/aws.mjs +4 -4
  117. package/dist/adaptors/hono.cjs +2 -2
  118. package/dist/adaptors/hono.d.cts +9 -9
  119. package/dist/adaptors/hono.d.mts +9 -9
  120. package/dist/adaptors/hono.mjs +2 -2
  121. package/dist/adaptors/testing.cjs +1 -1
  122. package/dist/adaptors/testing.d.cts +9 -9
  123. package/dist/adaptors/testing.d.mts +9 -9
  124. package/dist/adaptors/testing.mjs +1 -1
  125. package/dist/crons/Cron.d.cts +6 -6
  126. package/dist/crons/Cron.d.mts +6 -6
  127. package/dist/crons/CronBuilder.d.cts +7 -7
  128. package/dist/crons/CronBuilder.d.mts +7 -7
  129. package/dist/crons/index.d.cts +13 -11
  130. package/dist/crons/index.d.cts.map +1 -0
  131. package/dist/crons/index.d.mts +9 -7
  132. package/dist/crons/index.d.mts.map +1 -0
  133. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +9 -9
  134. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -9
  135. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +2 -2
  136. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +10 -10
  137. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -10
  138. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +2 -2
  139. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +2 -2
  140. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +10 -10
  141. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -10
  142. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +2 -2
  143. package/dist/endpoints/Authorizer.d.cts +1 -1
  144. package/dist/endpoints/Authorizer.d.mts +1 -1
  145. package/dist/endpoints/Endpoint.d.cts +8 -8
  146. package/dist/endpoints/Endpoint.d.mts +8 -8
  147. package/dist/endpoints/EndpointBuilder.d.cts +9 -9
  148. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  149. package/dist/endpoints/EndpointFactory.d.cts +10 -10
  150. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  151. package/dist/endpoints/HonoEndpointAdaptor.cjs +2 -2
  152. package/dist/endpoints/HonoEndpointAdaptor.d.cts +9 -9
  153. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  154. package/dist/endpoints/HonoEndpointAdaptor.mjs +2 -2
  155. package/dist/endpoints/TestEndpointAdaptor.cjs +1 -1
  156. package/dist/endpoints/TestEndpointAdaptor.d.cts +9 -9
  157. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  158. package/dist/endpoints/TestEndpointAdaptor.mjs +1 -1
  159. package/dist/endpoints/audit.d.cts +8 -8
  160. package/dist/endpoints/audit.d.mts +8 -8
  161. package/dist/endpoints/helpers.d.cts +9 -8
  162. package/dist/endpoints/helpers.d.cts.map +1 -0
  163. package/dist/endpoints/helpers.d.mts +9 -8
  164. package/dist/endpoints/helpers.d.mts.map +1 -0
  165. package/dist/endpoints/index.d.cts +14 -12
  166. package/dist/endpoints/index.d.cts.map +1 -0
  167. package/dist/endpoints/index.d.mts +14 -12
  168. package/dist/endpoints/index.d.mts.map +1 -0
  169. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  170. package/dist/endpoints/parseHonoQuery.d.cts +2 -0
  171. package/dist/endpoints/parseHonoQuery.d.cts.map +1 -0
  172. package/dist/endpoints/parseHonoQuery.d.mts +2 -0
  173. package/dist/endpoints/parseHonoQuery.d.mts.map +1 -0
  174. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  175. package/dist/endpoints/parseQueryParams.cjs +1 -1
  176. package/dist/endpoints/parseQueryParams.d.cts +1 -0
  177. package/dist/endpoints/parseQueryParams.d.cts.map +1 -0
  178. package/dist/endpoints/parseQueryParams.d.mts +1 -0
  179. package/dist/endpoints/parseQueryParams.d.mts.map +1 -0
  180. package/dist/endpoints/parseQueryParams.mjs +1 -1
  181. package/dist/endpoints/processAudits.d.cts +10 -8
  182. package/dist/endpoints/processAudits.d.cts.map +1 -0
  183. package/dist/endpoints/processAudits.d.mts +10 -8
  184. package/dist/endpoints/processAudits.d.mts.map +1 -0
  185. package/dist/endpoints/rls.d.cts +8 -8
  186. package/dist/endpoints/rls.d.mts +8 -8
  187. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  188. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  189. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  190. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  191. package/dist/functions/Function.d.cts +2 -2
  192. package/dist/functions/Function.d.mts +2 -2
  193. package/dist/functions/FunctionBuilder.d.cts +4 -4
  194. package/dist/functions/FunctionBuilder.d.mts +4 -4
  195. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  196. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  197. package/dist/functions/TestFunctionAdaptor.d.cts +4 -2
  198. package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -0
  199. package/dist/functions/TestFunctionAdaptor.d.mts +4 -2
  200. package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -0
  201. package/dist/functions/index.d.cts +5 -5
  202. package/dist/functions/index.d.mts +5 -5
  203. package/dist/{index-CFyaRrck.d.mts → index-BWzGIj06.d.mts} +4 -2
  204. package/dist/index-BWzGIj06.d.mts.map +1 -0
  205. package/dist/index-DmFozqLd.d.cts +12 -0
  206. package/dist/index-DmFozqLd.d.cts.map +1 -0
  207. package/dist/index.d.cts +2 -2
  208. package/dist/index.d.mts +2 -2
  209. package/dist/{parseHonoQuery-CT8Cvin-.cjs → parseHonoQuery-CZC5_97v.cjs} +3 -1
  210. package/dist/parseHonoQuery-CZC5_97v.cjs.map +1 -0
  211. package/dist/{parseHonoQuery-CwFKw2ua.mjs → parseHonoQuery-DDgIkTO4.mjs} +3 -1
  212. package/dist/parseHonoQuery-DDgIkTO4.mjs.map +1 -0
  213. package/dist/{parseQueryParams-CwvXXwkW.cjs → parseQueryParams-BSNkjmZ9.cjs} +3 -1
  214. package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -0
  215. package/dist/{parseQueryParams-CHINupbZ.mjs → parseQueryParams-UMTRnRrW.mjs} +3 -1
  216. package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -0
  217. package/dist/publisher.d.cts +4 -2
  218. package/dist/publisher.d.cts.map +1 -0
  219. package/dist/publisher.d.mts +4 -2
  220. package/dist/publisher.d.mts.map +1 -0
  221. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  222. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  223. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  224. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  225. package/dist/subscribers/Subscriber.d.cts +2 -2
  226. package/dist/subscribers/Subscriber.d.mts +2 -2
  227. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  228. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  229. package/dist/subscribers/index.d.cts +7 -5
  230. package/dist/subscribers/index.d.cts.map +1 -0
  231. package/dist/subscribers/index.d.mts +5 -3
  232. package/dist/subscribers/index.d.mts.map +1 -0
  233. package/dist/{types-Bp9ysFXd.d.cts → types-B5H3piDg.d.cts} +3 -1
  234. package/dist/types-B5H3piDg.d.cts.map +1 -0
  235. package/dist/{types-CScirkHt.d.mts → types-DdIlpxAd.d.mts} +3 -1
  236. package/dist/types-DdIlpxAd.d.mts.map +1 -0
  237. package/dist/types.d.cts +1 -1
  238. package/dist/types.d.mts +1 -1
  239. package/package.json +8 -8
  240. package/src/crons/CronBuilder.ts +8 -8
  241. package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +4 -4
  242. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +4 -4
  243. package/src/endpoints/EndpointBuilder.ts +4 -4
  244. package/src/endpoints/TestEndpointAdaptor.ts +18 -0
  245. package/src/endpoints/parseHonoQuery.ts +2 -0
  246. package/src/endpoints/parseQueryParams.ts +2 -0
  247. package/src/functions/AWSLambdaFunction.ts +1 -1
  248. package/src/functions/FunctionBuilder.ts +5 -5
  249. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +8 -4
  250. package/src/subscribers/Subscriber.ts +5 -5
  251. package/tsconfig.json +9 -0
  252. package/dist/AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs.map +0 -1
  253. package/dist/AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs.map +0 -1
  254. package/dist/AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs.map +0 -1
  255. package/dist/AmazonApiGatewayV2EndpointAdaptor-jRrQrIdm.mjs.map +0 -1
  256. package/dist/TestEndpointAdaptor-opEisC30.cjs.map +0 -1
  257. package/dist/TestEndpointAdaptor-oq5mfglM.mjs.map +0 -1
  258. package/dist/index-CqH4_Ieb.d.cts +0 -10
  259. package/dist/parseHonoQuery-CT8Cvin-.cjs.map +0 -1
  260. package/dist/parseHonoQuery-CwFKw2ua.mjs.map +0 -1
  261. package/dist/parseQueryParams-CHINupbZ.mjs.map +0 -1
  262. package/dist/parseQueryParams-CwvXXwkW.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
- import { Function, FunctionHandler } from "./Function-Vh1t-Qjj.mjs";
2
- import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-CI3CaoCo.mjs";
1
+ import { Function, FunctionHandler } from "./Function-DN2G6OT5.mjs";
2
+ import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-DF260Aaj.mjs";
3
3
  import { Service } from "@geekmidas/services";
4
4
  import { AuditStorage, AuditableAction } from "@geekmidas/audit";
5
5
  import { EnvironmentParser } from "@geekmidas/envkit";
@@ -25,6 +25,8 @@ declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefi
25
25
  private _handler;
26
26
  get handler(): AWSLambdaHandler;
27
27
  }
28
+ //# sourceMappingURL=AWSLambdaFunction.d.ts.map
29
+
28
30
  //#endregion
29
31
  export { AWSLambdaFunction, AWSLambdaHandler };
30
- //# sourceMappingURL=AWSLambdaFunction-D9RZhm0N.d.mts.map
32
+ //# sourceMappingURL=AWSLambdaFunction-BdebRMUh.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSLambdaFunction-BdebRMUh.d.mts","names":[],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAmBY,gDAAgD,QAC1D,QACA;cAuCW,iCACI,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC,0CAIhD,yBACR,QACA,YACA,WACA,SACA,iBACA,4BACA,eACA,0BACA,WACA,sBACA;EAnEU,SAAA,EAAA,EAuEc,QAvEE,CAwEtB,MAxEsB,EAyEtB,SAzEsB,EA0EtB,OA1EsB,EA2EtB,UA3EsB,EA4EtB,eA5EsB,EA6EtB,0BA7EsB,EA8EtB,aA9EsB,EA+EtB,wBA/EsB,EAgFtB,SAhFsB,EAiFtB,oBAjFsB,EAkFtB,YAlFsB,EAmFtB,eAnFsB,CAoFpB,MApFoB,EAqFpB,SArFoB,EAsFpB,OAtFoB,EAuFpB,UAvFoB,EAwFpB,SAxFoB,EAyFpB,aAzFoB,EA0FpB,YA1FoB,CAAA,CAAA;EAAA,WAAA,CAAA,SAAA,EAsEb,iBAtEa,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAuEF,QAvEE,CAwEtB,MAxEsB,EAyEtB,SAzEsB,EA0EtB,OA1EsB,EA2EtB,UA3EsB,EA4EtB,eA5EsB,EA6EtB,0BA7EsB,EA8EtB,aA9EsB,EA+EtB,wBA/EsB,EAgFtB,SAhFsB,EAiFtB,oBAjFsB,EAkFtB,YAlFsB,EAmFtB,eAnFsB,CAoFpB,MApFoB,EAqFpB,SArFoB,EAsFpB,OAtFoB,EAuFpB,UAvFoB,EAwFpB,SAxFoB,EAyFpB,aAzFoB,EA0FpB,YA1FoB,CAAA,CAAA;EAAA,QAC1B,KAAA;EAAM,QACN,SAAA;EAAO,QAFmD,KAAA;EAAO,QAAA,gBAAA;EAyCtD,QAAA,QAAA;EAAiB,QAAA,QAAA;EAAA,QACb,OAAA;EAAwB,QACpB,MAAA;EAAgB,QACjB,QAAA;EAAO,IACT,OAAA,CAAA,CAAA,EAgQD,gBAhQC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AWSLambdaFunction-C54a1doJ.mjs","names":["envParser: EnvironmentParser<{}>","fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >","event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Context, Handler } from 'aws-lambda';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype FunctionEvent<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = TEvent & {\n parsedInput: InferComposableStandardSchema<TInput>;\n services: ServiceRecord<TServices>;\n logger: TLogger;\n db: TDatabase | undefined;\n auditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = MiddlewareObj<\n FunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n InferComposableStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaFunction<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> extends FunctionExecutionWrapper<\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n> {\n constructor(\n envParser: EnvironmentParser<{}>,\n readonly fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >,\n ) {\n super(envParser, fn);\n }\n\n private error<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.fn.logger;\n logger.error(req.error || {}, 'Error processing function');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private baseInput<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {},\n };\n }\n\n private input<\n TEvent extends { input: InferComposableStandardSchema<TInput> },\n >(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n try {\n // Parse input if schema is provided\n if (this.fn.input) {\n const parsedInput =\n await FunctionBuilder.parseComposableStandardSchema(\n req.event,\n this.fn.input,\n );\n\n req.event.parsedInput =\n parsedInput as InferComposableStandardSchema<TInput>;\n } else {\n // If no schema, pass the event as-is\n req.event.parsedInput = req.event as any;\n }\n } catch (error) {\n this.logger.error(\n { error, event: req.event },\n 'Failed to parse input',\n );\n throw error;\n }\n },\n };\n }\n\n private loggerMiddleware<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {\n this._logger = this.fn.logger.child({\n fn: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private database<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.db = await this.getDatabase();\n },\n };\n }\n\n private auditor<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.auditor = await this.createAuditor();\n },\n after: async (req) => {\n // Flush any pending audits after successful execution\n if (req.event.auditor) {\n const records = req.event.auditor.getRecords();\n if (records.length > 0) {\n this.logger.debug(\n { auditCount: records.length },\n 'Flushing function audits',\n );\n await req.event.auditor.flush();\n }\n }\n },\n };\n }\n\n private events<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n after: async (req) => {\n const response = (req.response ||\n undefined) as InferStandardSchema<TOutSchema>;\n await this.publishEvents(response);\n },\n };\n }\n\n private async _handler<TEvent>(\n event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >,\n ) {\n // Execute the function with the parsed context\n const result = await this.fn['fn']({\n input: event.parsedInput,\n services: event.services,\n logger: event.logger,\n db: event.db,\n auditor: event.auditor,\n } as any);\n\n // Parse output if schema is provided\n const output = await this.fn.parseOutput(result);\n\n return output;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.baseInput())\n .use(this.error())\n .use(this.services())\n .use(this.database())\n .use(this.auditor())\n .use(this.input())\n .use(this.events()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":";;;;;;AA4DA,IAAa,oBAAb,cAeU,yBAYR;CACA,YACEA,WACSC,IAsBT;AACA,QAAM,WAAW,GAAG;EAvBX;CAwBV;CAED,AAAQ,QAQN;AACA,SAAO,EACL,SAAS,CAAC,QAAQ;GAChB,MAAM,SAAS,IAAI,OAAO,UAAU,KAAK,GAAG;AAC5C,UAAO,MAAM,IAAI,SAAS,CAAE,GAAE,4BAA4B;AAG1D,SAAM,UAAU,IAAI,MAAM;EAC3B,EACF;CACF;CAED,AAAQ,YAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ,CAAE,EACpB;CACF;CAED,AAAQ,QAUN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI;AAEF,QAAI,KAAK,GAAG,OAAO;KACjB,MAAM,cACJ,MAAM,gBAAgB,8BACpB,IAAI,OACJ,KAAK,GAAG,MACT;AAEH,SAAI,MAAM,cACR;IACH,MAEC,KAAI,MAAM,cAAc,IAAI;GAE/B,SAAQ,OAAO;AACd,SAAK,OAAO,MACV;KAAE;KAAO,OAAO,IAAI;IAAO,GAC3B,wBACD;AACD,UAAM;GACP;EACF,EACF;CACF;CAED,AAAQ,mBAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ;AACf,QAAK,UAAU,KAAK,GAAG,OAAO,MAAM;IAClC,IAAI;KACF,MAAM,IAAI,QAAQ;KAClB,SAAS,IAAI,QAAQ;KACrB,QAAQ,IAAI,QAAQ;IACrB;IACD,KAAK,EACH,IAAI,IAAI,QAAQ,aACjB;GACF,EAAC;AAEF,OAAI,MAAM,SAAS,KAAK;EACzB,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,WAAW,MAAM,KAAK,aAAa;EAC9C,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,KAAK,MAAM,KAAK,aAAa;EACxC,EACF;CACF;CAED,AAAQ,UAQN;AACA,SAAO;GACL,QAAQ,OAAO,QAAQ;AACrB,QAAI,MAAM,UAAU,MAAM,KAAK,eAAe;GAC/C;GACD,OAAO,OAAO,QAAQ;AAEpB,QAAI,IAAI,MAAM,SAAS;KACrB,MAAM,UAAU,IAAI,MAAM,QAAQ,YAAY;AAC9C,SAAI,QAAQ,SAAS,GAAG;AACtB,WAAK,OAAO,MACV,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACD;AACD,YAAM,IAAI,MAAM,QAAQ,OAAO;KAChC;IACF;GACF;EACF;CACF;CAED,AAAQ,SAQN;AACA,SAAO,EACL,OAAO,OAAO,QAAQ;GACpB,MAAM,WAAY,IAAI;AAEtB,SAAM,KAAK,cAAc,SAAS;EACnC,EACF;CACF;CAED,MAAc,SACZC,OAQA;EAEA,MAAM,SAAS,MAAM,KAAK,GAAG,MAAM;GACjC,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd,IAAI,MAAM;GACV,SAAS,MAAM;EAChB,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO;AAEhD,SAAO;CACR;CAED,IAAI,UAA4B;EAC9B,MAAM,UAAU,KAAK,SAAS,KAAK,KAAK;AAGxC,SAAO,MAAM,QAAQ,CAClB,IAAI,KAAK,kBAAkB,CAAC,CAC5B,IAAI,KAAK,WAAW,CAAC,CACrB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,SAAS,CAAC,CACnB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,QAAQ,CAAC;CACtB;AACF"}
1
+ {"version":3,"file":"AWSLambdaFunction-C54a1doJ.mjs","names":["envParser: EnvironmentParser<{}>","fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >","event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Context, Handler } from 'aws-lambda';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype FunctionEvent<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = TEvent & {\n parsedInput: InferComposableStandardSchema<TInput>;\n services: ServiceRecord<TServices>;\n logger: TLogger;\n db: TDatabase | undefined;\n auditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = MiddlewareObj<\n FunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n InferComposableStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaFunction<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> extends FunctionExecutionWrapper<\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n> {\n constructor(\n envParser: EnvironmentParser<{}>,\n override readonly fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >,\n ) {\n super(envParser, fn);\n }\n\n private error<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.fn.logger;\n logger.error(req.error || {}, 'Error processing function');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private baseInput<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {},\n };\n }\n\n private input<\n TEvent extends { input: InferComposableStandardSchema<TInput> },\n >(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n try {\n // Parse input if schema is provided\n if (this.fn.input) {\n const parsedInput =\n await FunctionBuilder.parseComposableStandardSchema(\n req.event,\n this.fn.input,\n );\n\n req.event.parsedInput =\n parsedInput as InferComposableStandardSchema<TInput>;\n } else {\n // If no schema, pass the event as-is\n req.event.parsedInput = req.event as any;\n }\n } catch (error) {\n this.logger.error(\n { error, event: req.event },\n 'Failed to parse input',\n );\n throw error;\n }\n },\n };\n }\n\n private loggerMiddleware<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {\n this._logger = this.fn.logger.child({\n fn: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private database<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.db = await this.getDatabase();\n },\n };\n }\n\n private auditor<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.auditor = await this.createAuditor();\n },\n after: async (req) => {\n // Flush any pending audits after successful execution\n if (req.event.auditor) {\n const records = req.event.auditor.getRecords();\n if (records.length > 0) {\n this.logger.debug(\n { auditCount: records.length },\n 'Flushing function audits',\n );\n await req.event.auditor.flush();\n }\n }\n },\n };\n }\n\n private events<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n after: async (req) => {\n const response = (req.response ||\n undefined) as InferStandardSchema<TOutSchema>;\n await this.publishEvents(response);\n },\n };\n }\n\n private async _handler<TEvent>(\n event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >,\n ) {\n // Execute the function with the parsed context\n const result = await this.fn['fn']({\n input: event.parsedInput,\n services: event.services,\n logger: event.logger,\n db: event.db,\n auditor: event.auditor,\n } as any);\n\n // Parse output if schema is provided\n const output = await this.fn.parseOutput(result);\n\n return output;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.baseInput())\n .use(this.error())\n .use(this.services())\n .use(this.database())\n .use(this.auditor())\n .use(this.input())\n .use(this.events()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":";;;;;;AA4DA,IAAa,oBAAb,cAeU,yBAYR;CACA,YACEA,WACkBC,IAsBlB;AACA,QAAM,WAAW,GAAG;EAvBF;CAwBnB;CAED,AAAQ,QAQN;AACA,SAAO,EACL,SAAS,CAAC,QAAQ;GAChB,MAAM,SAAS,IAAI,OAAO,UAAU,KAAK,GAAG;AAC5C,UAAO,MAAM,IAAI,SAAS,CAAE,GAAE,4BAA4B;AAG1D,SAAM,UAAU,IAAI,MAAM;EAC3B,EACF;CACF;CAED,AAAQ,YAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ,CAAE,EACpB;CACF;CAED,AAAQ,QAUN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI;AAEF,QAAI,KAAK,GAAG,OAAO;KACjB,MAAM,cACJ,MAAM,gBAAgB,8BACpB,IAAI,OACJ,KAAK,GAAG,MACT;AAEH,SAAI,MAAM,cACR;IACH,MAEC,KAAI,MAAM,cAAc,IAAI;GAE/B,SAAQ,OAAO;AACd,SAAK,OAAO,MACV;KAAE;KAAO,OAAO,IAAI;IAAO,GAC3B,wBACD;AACD,UAAM;GACP;EACF,EACF;CACF;CAED,AAAQ,mBAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ;AACf,QAAK,UAAU,KAAK,GAAG,OAAO,MAAM;IAClC,IAAI;KACF,MAAM,IAAI,QAAQ;KAClB,SAAS,IAAI,QAAQ;KACrB,QAAQ,IAAI,QAAQ;IACrB;IACD,KAAK,EACH,IAAI,IAAI,QAAQ,aACjB;GACF,EAAC;AAEF,OAAI,MAAM,SAAS,KAAK;EACzB,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,WAAW,MAAM,KAAK,aAAa;EAC9C,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,KAAK,MAAM,KAAK,aAAa;EACxC,EACF;CACF;CAED,AAAQ,UAQN;AACA,SAAO;GACL,QAAQ,OAAO,QAAQ;AACrB,QAAI,MAAM,UAAU,MAAM,KAAK,eAAe;GAC/C;GACD,OAAO,OAAO,QAAQ;AAEpB,QAAI,IAAI,MAAM,SAAS;KACrB,MAAM,UAAU,IAAI,MAAM,QAAQ,YAAY;AAC9C,SAAI,QAAQ,SAAS,GAAG;AACtB,WAAK,OAAO,MACV,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACD;AACD,YAAM,IAAI,MAAM,QAAQ,OAAO;KAChC;IACF;GACF;EACF;CACF;CAED,AAAQ,SAQN;AACA,SAAO,EACL,OAAO,OAAO,QAAQ;GACpB,MAAM,WAAY,IAAI;AAEtB,SAAM,KAAK,cAAc,SAAS;EACnC,EACF;CACF;CAED,MAAc,SACZC,OAQA;EAEA,MAAM,SAAS,MAAM,KAAK,GAAG,MAAM;GACjC,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd,IAAI,MAAM;GACV,SAAS,MAAM;EAChB,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO;AAEhD,SAAO;CACR;CAED,IAAI,UAA4B;EAC9B,MAAM,UAAU,KAAK,SAAS,KAAK,KAAK;AAGxC,SAAO,MAAM,QAAQ,CAClB,IAAI,KAAK,kBAAkB,CAAC,CAC5B,IAAI,KAAK,WAAW,CAAC,CACrB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,SAAS,CAAC,CACnB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,QAAQ,CAAC;CACtB;AACF"}
@@ -1,5 +1,5 @@
1
- import { Function, FunctionHandler } from "./Function-DHD1V9QW.cjs";
2
- import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-DYt3C8b9.cjs";
1
+ import { Function, FunctionHandler } from "./Function-Cf7f_kCz.cjs";
2
+ import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-Qy8bmgFR.cjs";
3
3
  import { AuditStorage, AuditableAction } from "@geekmidas/audit";
4
4
  import { EventPublisher } from "@geekmidas/events";
5
5
  import { Logger } from "@geekmidas/logger";
@@ -25,6 +25,8 @@ declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefi
25
25
  private _handler;
26
26
  get handler(): AWSLambdaHandler;
27
27
  }
28
+ //# sourceMappingURL=AWSLambdaFunction.d.ts.map
29
+
28
30
  //#endregion
29
31
  export { AWSLambdaFunction, AWSLambdaHandler };
30
- //# sourceMappingURL=AWSLambdaFunction-gpqm7UBb.d.cts.map
32
+ //# sourceMappingURL=AWSLambdaFunction-D0tEOTXQ.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSLambdaFunction-D0tEOTXQ.d.cts","names":[],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAmBY,gDAAgD,QAC1D,QACA;cAuCW,iCACI,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC,0CAIhD,yBACR,QACA,YACA,WACA,SACA,iBACA,4BACA,eACA,0BACA,WACA,sBACA;EAnEU,SAAA,EAAA,EAuEc,QAvEE,CAwEtB,MAxEsB,EAyEtB,SAzEsB,EA0EtB,OA1EsB,EA2EtB,UA3EsB,EA4EtB,eA5EsB,EA6EtB,0BA7EsB,EA8EtB,aA9EsB,EA+EtB,wBA/EsB,EAgFtB,SAhFsB,EAiFtB,oBAjFsB,EAkFtB,YAlFsB,EAmFtB,eAnFsB,CAoFpB,MApFoB,EAqFpB,SArFoB,EAsFpB,OAtFoB,EAuFpB,UAvFoB,EAwFpB,SAxFoB,EAyFpB,aAzFoB,EA0FpB,YA1FoB,CAAA,CAAA;EAAA,WAAA,CAAA,SAAA,EAsEb,iBAtEa,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAuEF,QAvEE,CAwEtB,MAxEsB,EAyEtB,SAzEsB,EA0EtB,OA1EsB,EA2EtB,UA3EsB,EA4EtB,eA5EsB,EA6EtB,0BA7EsB,EA8EtB,aA9EsB,EA+EtB,wBA/EsB,EAgFtB,SAhFsB,EAiFtB,oBAjFsB,EAkFtB,YAlFsB,EAmFtB,eAnFsB,CAoFpB,MApFoB,EAqFpB,SArFoB,EAsFpB,OAtFoB,EAuFpB,UAvFoB,EAwFpB,SAxFoB,EAyFpB,aAzFoB,EA0FpB,YA1FoB,CAAA,CAAA;EAAA,QAC1B,KAAA;EAAM,QACN,SAAA;EAAO,QAFmD,KAAA;EAAO,QAAA,gBAAA;EAyCtD,QAAA,QAAA;EAAiB,QAAA,QAAA;EAAA,QACb,OAAA;EAAwB,QACpB,MAAA;EAAgB,QACjB,QAAA;EAAO,IACT,OAAA,CAAA,CAAA,EAgQD,gBAhQC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AWSLambdaFunction-EPGY4s7i.cjs","names":["FunctionExecutionWrapper","envParser: EnvironmentParser<{}>","fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >","event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Context, Handler } from 'aws-lambda';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype FunctionEvent<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = TEvent & {\n parsedInput: InferComposableStandardSchema<TInput>;\n services: ServiceRecord<TServices>;\n logger: TLogger;\n db: TDatabase | undefined;\n auditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = MiddlewareObj<\n FunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n InferComposableStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaFunction<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> extends FunctionExecutionWrapper<\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n> {\n constructor(\n envParser: EnvironmentParser<{}>,\n readonly fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >,\n ) {\n super(envParser, fn);\n }\n\n private error<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.fn.logger;\n logger.error(req.error || {}, 'Error processing function');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private baseInput<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {},\n };\n }\n\n private input<\n TEvent extends { input: InferComposableStandardSchema<TInput> },\n >(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n try {\n // Parse input if schema is provided\n if (this.fn.input) {\n const parsedInput =\n await FunctionBuilder.parseComposableStandardSchema(\n req.event,\n this.fn.input,\n );\n\n req.event.parsedInput =\n parsedInput as InferComposableStandardSchema<TInput>;\n } else {\n // If no schema, pass the event as-is\n req.event.parsedInput = req.event as any;\n }\n } catch (error) {\n this.logger.error(\n { error, event: req.event },\n 'Failed to parse input',\n );\n throw error;\n }\n },\n };\n }\n\n private loggerMiddleware<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {\n this._logger = this.fn.logger.child({\n fn: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private database<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.db = await this.getDatabase();\n },\n };\n }\n\n private auditor<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.auditor = await this.createAuditor();\n },\n after: async (req) => {\n // Flush any pending audits after successful execution\n if (req.event.auditor) {\n const records = req.event.auditor.getRecords();\n if (records.length > 0) {\n this.logger.debug(\n { auditCount: records.length },\n 'Flushing function audits',\n );\n await req.event.auditor.flush();\n }\n }\n },\n };\n }\n\n private events<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n after: async (req) => {\n const response = (req.response ||\n undefined) as InferStandardSchema<TOutSchema>;\n await this.publishEvents(response);\n },\n };\n }\n\n private async _handler<TEvent>(\n event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >,\n ) {\n // Execute the function with the parsed context\n const result = await this.fn['fn']({\n input: event.parsedInput,\n services: event.services,\n logger: event.logger,\n db: event.db,\n auditor: event.auditor,\n } as any);\n\n // Parse output if schema is provided\n const output = await this.fn.parseOutput(result);\n\n return output;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.baseInput())\n .use(this.error())\n .use(this.services())\n .use(this.database())\n .use(this.auditor())\n .use(this.input())\n .use(this.events()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":";;;;;;;AA4DA,IAAa,oBAAb,cAeUA,0DAYR;CACA,YACEC,WACSC,IAsBT;AACA,QAAM,WAAW,GAAG;EAvBX;CAwBV;CAED,AAAQ,QAQN;AACA,SAAO,EACL,SAAS,CAAC,QAAQ;GAChB,MAAM,SAAS,IAAI,OAAO,UAAU,KAAK,GAAG;AAC5C,UAAO,MAAM,IAAI,SAAS,CAAE,GAAE,4BAA4B;AAG1D,SAAM,kCAAU,IAAI,MAAM;EAC3B,EACF;CACF;CAED,AAAQ,YAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ,CAAE,EACpB;CACF;CAED,AAAQ,QAUN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI;AAEF,QAAI,KAAK,GAAG,OAAO;KACjB,MAAM,cACJ,MAAM,wCAAgB,8BACpB,IAAI,OACJ,KAAK,GAAG,MACT;AAEH,SAAI,MAAM,cACR;IACH,MAEC,KAAI,MAAM,cAAc,IAAI;GAE/B,SAAQ,OAAO;AACd,SAAK,OAAO,MACV;KAAE;KAAO,OAAO,IAAI;IAAO,GAC3B,wBACD;AACD,UAAM;GACP;EACF,EACF;CACF;CAED,AAAQ,mBAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ;AACf,QAAK,UAAU,KAAK,GAAG,OAAO,MAAM;IAClC,IAAI;KACF,MAAM,IAAI,QAAQ;KAClB,SAAS,IAAI,QAAQ;KACrB,QAAQ,IAAI,QAAQ;IACrB;IACD,KAAK,EACH,IAAI,IAAI,QAAQ,aACjB;GACF,EAAC;AAEF,OAAI,MAAM,SAAS,KAAK;EACzB,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,WAAW,MAAM,KAAK,aAAa;EAC9C,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,KAAK,MAAM,KAAK,aAAa;EACxC,EACF;CACF;CAED,AAAQ,UAQN;AACA,SAAO;GACL,QAAQ,OAAO,QAAQ;AACrB,QAAI,MAAM,UAAU,MAAM,KAAK,eAAe;GAC/C;GACD,OAAO,OAAO,QAAQ;AAEpB,QAAI,IAAI,MAAM,SAAS;KACrB,MAAM,UAAU,IAAI,MAAM,QAAQ,YAAY;AAC9C,SAAI,QAAQ,SAAS,GAAG;AACtB,WAAK,OAAO,MACV,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACD;AACD,YAAM,IAAI,MAAM,QAAQ,OAAO;KAChC;IACF;GACF;EACF;CACF;CAED,AAAQ,SAQN;AACA,SAAO,EACL,OAAO,OAAO,QAAQ;GACpB,MAAM,WAAY,IAAI;AAEtB,SAAM,KAAK,cAAc,SAAS;EACnC,EACF;CACF;CAED,MAAc,SACZC,OAQA;EAEA,MAAM,SAAS,MAAM,KAAK,GAAG,MAAM;GACjC,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd,IAAI,MAAM;GACV,SAAS,MAAM;EAChB,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO;AAEhD,SAAO;CACR;CAED,IAAI,UAA4B;EAC9B,MAAM,UAAU,KAAK,SAAS,KAAK,KAAK;AAGxC,SAAO,0BAAM,QAAQ,CAClB,IAAI,KAAK,kBAAkB,CAAC,CAC5B,IAAI,KAAK,WAAW,CAAC,CACrB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,SAAS,CAAC,CACnB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,QAAQ,CAAC;CACtB;AACF"}
1
+ {"version":3,"file":"AWSLambdaFunction-EPGY4s7i.cjs","names":["FunctionExecutionWrapper","envParser: EnvironmentParser<{}>","fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >","event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Context, Handler } from 'aws-lambda';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype FunctionEvent<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = TEvent & {\n parsedInput: InferComposableStandardSchema<TInput>;\n services: ServiceRecord<TServices>;\n logger: TLogger;\n db: TDatabase | undefined;\n auditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n TEvent,\n TInput extends ComposableStandardSchema | undefined,\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n TDatabase = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = MiddlewareObj<\n FunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n InferComposableStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaFunction<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> extends FunctionExecutionWrapper<\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n> {\n constructor(\n envParser: EnvironmentParser<{}>,\n override readonly fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >,\n ) {\n super(envParser, fn);\n }\n\n private error<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.fn.logger;\n logger.error(req.error || {}, 'Error processing function');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private baseInput<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {},\n };\n }\n\n private input<\n TEvent extends { input: InferComposableStandardSchema<TInput> },\n >(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n try {\n // Parse input if schema is provided\n if (this.fn.input) {\n const parsedInput =\n await FunctionBuilder.parseComposableStandardSchema(\n req.event,\n this.fn.input,\n );\n\n req.event.parsedInput =\n parsedInput as InferComposableStandardSchema<TInput>;\n } else {\n // If no schema, pass the event as-is\n req.event.parsedInput = req.event as any;\n }\n } catch (error) {\n this.logger.error(\n { error, event: req.event },\n 'Failed to parse input',\n );\n throw error;\n }\n },\n };\n }\n\n private loggerMiddleware<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: (req) => {\n this._logger = this.fn.logger.child({\n fn: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private database<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.db = await this.getDatabase();\n },\n };\n }\n\n private auditor<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n before: async (req) => {\n req.event.auditor = await this.createAuditor();\n },\n after: async (req) => {\n // Flush any pending audits after successful execution\n if (req.event.auditor) {\n const records = req.event.auditor.getRecords();\n if (records.length > 0) {\n this.logger.debug(\n { auditCount: records.length },\n 'Flushing function audits',\n );\n await req.event.auditor.flush();\n }\n }\n },\n };\n }\n\n private events<TEvent>(): Middleware<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditAction\n > {\n return {\n after: async (req) => {\n const response = (req.response ||\n undefined) as InferStandardSchema<TOutSchema>;\n await this.publishEvents(response);\n },\n };\n }\n\n private async _handler<TEvent>(\n event: FunctionEvent<\n TEvent,\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditAction\n >,\n ) {\n // Execute the function with the parsed context\n const result = await this.fn['fn']({\n input: event.parsedInput,\n services: event.services,\n logger: event.logger,\n db: event.db,\n auditor: event.auditor,\n } as any);\n\n // Parse output if schema is provided\n const output = await this.fn.parseOutput(result);\n\n return output;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.baseInput())\n .use(this.error())\n .use(this.services())\n .use(this.database())\n .use(this.auditor())\n .use(this.input())\n .use(this.events()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":";;;;;;;AA4DA,IAAa,oBAAb,cAeUA,0DAYR;CACA,YACEC,WACkBC,IAsBlB;AACA,QAAM,WAAW,GAAG;EAvBF;CAwBnB;CAED,AAAQ,QAQN;AACA,SAAO,EACL,SAAS,CAAC,QAAQ;GAChB,MAAM,SAAS,IAAI,OAAO,UAAU,KAAK,GAAG;AAC5C,UAAO,MAAM,IAAI,SAAS,CAAE,GAAE,4BAA4B;AAG1D,SAAM,kCAAU,IAAI,MAAM;EAC3B,EACF;CACF;CAED,AAAQ,YAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ,CAAE,EACpB;CACF;CAED,AAAQ,QAUN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI;AAEF,QAAI,KAAK,GAAG,OAAO;KACjB,MAAM,cACJ,MAAM,wCAAgB,8BACpB,IAAI,OACJ,KAAK,GAAG,MACT;AAEH,SAAI,MAAM,cACR;IACH,MAEC,KAAI,MAAM,cAAc,IAAI;GAE/B,SAAQ,OAAO;AACd,SAAK,OAAO,MACV;KAAE;KAAO,OAAO,IAAI;IAAO,GAC3B,wBACD;AACD,UAAM;GACP;EACF,EACF;CACF;CAED,AAAQ,mBAQN;AACA,SAAO,EACL,QAAQ,CAAC,QAAQ;AACf,QAAK,UAAU,KAAK,GAAG,OAAO,MAAM;IAClC,IAAI;KACF,MAAM,IAAI,QAAQ;KAClB,SAAS,IAAI,QAAQ;KACrB,QAAQ,IAAI,QAAQ;IACrB;IACD,KAAK,EACH,IAAI,IAAI,QAAQ,aACjB;GACF,EAAC;AAEF,OAAI,MAAM,SAAS,KAAK;EACzB,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,WAAW,MAAM,KAAK,aAAa;EAC9C,EACF;CACF;CAED,AAAQ,WAQN;AACA,SAAO,EACL,QAAQ,OAAO,QAAQ;AACrB,OAAI,MAAM,KAAK,MAAM,KAAK,aAAa;EACxC,EACF;CACF;CAED,AAAQ,UAQN;AACA,SAAO;GACL,QAAQ,OAAO,QAAQ;AACrB,QAAI,MAAM,UAAU,MAAM,KAAK,eAAe;GAC/C;GACD,OAAO,OAAO,QAAQ;AAEpB,QAAI,IAAI,MAAM,SAAS;KACrB,MAAM,UAAU,IAAI,MAAM,QAAQ,YAAY;AAC9C,SAAI,QAAQ,SAAS,GAAG;AACtB,WAAK,OAAO,MACV,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACD;AACD,YAAM,IAAI,MAAM,QAAQ,OAAO;KAChC;IACF;GACF;EACF;CACF;CAED,AAAQ,SAQN;AACA,SAAO,EACL,OAAO,OAAO,QAAQ;GACpB,MAAM,WAAY,IAAI;AAEtB,SAAM,KAAK,cAAc,SAAS;EACnC,EACF;CACF;CAED,MAAc,SACZC,OAQA;EAEA,MAAM,SAAS,MAAM,KAAK,GAAG,MAAM;GACjC,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd,IAAI,MAAM;GACV,SAAS,MAAM;EAChB,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO;AAEhD,SAAO;CACR;CAED,IAAI,UAA4B;EAC9B,MAAM,UAAU,KAAK,SAAS,KAAK,KAAK;AAGxC,SAAO,0BAAM,QAAQ,CAClB,IAAI,KAAK,kBAAkB,CAAC,CAC5B,IAAI,KAAK,WAAW,CAAC,CACrB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,SAAS,CAAC,CACnB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,QAAQ,CAAC;CACtB;AACF"}
@@ -76,10 +76,12 @@ var AWSLambdaSubscriber = class {
76
76
  } };
77
77
  }
78
78
  isSQSEvent(event) {
79
- return "Records" in event && event.Records.length > 0 && "eventSource" in event.Records[0] && event.Records[0].eventSource === "aws:sqs";
79
+ const firstRecord = event.Records[0];
80
+ return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
80
81
  }
81
82
  isSNSEvent(event) {
82
- return "Records" in event && event.Records.length > 0 && "EventSource" in event.Records[0] && event.Records[0].EventSource === "aws:sns";
83
+ const firstRecord = event.Records[0];
84
+ return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
83
85
  }
84
86
  parseSQSRecord(record) {
85
87
  try {
@@ -129,4 +131,4 @@ var AWSLambdaSubscriber = class {
129
131
 
130
132
  //#endregion
131
133
  export { AWSLambdaSubscriber };
132
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs.map
134
+ //# sourceMappingURL=AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >","events: any[]","event: SQSEvent | SNSEvent","record: SQSRecord","eventType: string","event: SubscriberEvent<TServices, TLogger>"],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n Context,\n Handler,\n SNSEvent,\n SQSEvent,\n SQSRecord,\n} from 'aws-lambda';\n\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n events: any[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n\ntype Middleware<\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n SubscriberEvent<TServices, TLogger>,\n InferStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaSubscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _logger!: TLogger;\n private _services!: ServiceRecord<TServices>;\n\n constructor(\n private envParser: EnvironmentParser<{}>,\n readonly subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >,\n ) {\n this._logger = subscriber.logger;\n }\n\n get logger(): TLogger {\n return this._logger;\n }\n\n private async getServices(): Promise<ServiceRecord<TServices>> {\n if (this._services) {\n return this._services;\n }\n\n const serviceDiscovery = ServiceDiscovery.getInstance(\n this.logger,\n this.envParser,\n );\n\n if (this.subscriber.services.length > 0) {\n const registered = await serviceDiscovery.register(\n this.subscriber.services,\n );\n this._services = registered as ServiceRecord<TServices>;\n } else {\n this._services = {} as ServiceRecord<TServices>;\n }\n\n return this._services;\n }\n\n private error(): Middleware<TServices, TLogger, OutSchema> {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.subscriber.logger;\n logger.error(req.error || {}, 'Error processing subscriber');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: (req) => {\n this._logger = this.subscriber.logger.child({\n subscriber: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n const rawEvent = (req as any).event as SQSEvent | SNSEvent;\n\n // Parse events based on the event type\n const events: any[] = [];\n\n if ('Records' in rawEvent) {\n if (this.isSQSEvent(rawEvent)) {\n // SQS Event\n for (const record of rawEvent.Records) {\n try {\n const event = this.parseSQSRecord(record);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SQS record',\n );\n }\n }\n } else if (this.isSNSEvent(rawEvent)) {\n // SNS Event\n for (const record of rawEvent.Records) {\n try {\n const event = JSON.parse(record.Sns.Message);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SNS record',\n );\n }\n }\n }\n }\n\n (req.event as any).events = events;\n },\n };\n }\n\n private isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n 'eventSource' in event.Records[0] &&\n event.Records[0].eventSource === 'aws:sqs'\n );\n }\n\n private isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n 'EventSource' in event.Records[0] &&\n event.Records[0].EventSource === 'aws:sns'\n );\n }\n\n private parseSQSRecord(record: SQSRecord): any | null {\n try {\n const body = JSON.parse(record.body);\n\n // Check if this is an SNS message wrapped in SQS\n if (body.Type === 'Notification' && body.Message) {\n // Parse the SNS message\n const snsMessage = JSON.parse(body.Message);\n return snsMessage;\n }\n\n // Direct SQS message\n return body;\n } catch (error) {\n this.logger.error({ error, record }, 'Failed to parse SQS record body');\n return null;\n }\n }\n\n private isSubscribedEvent(eventType: string): boolean {\n if (!this.subscriber.subscribedEvents) {\n return true; // If no events specified, accept all\n }\n\n return this.subscriber.subscribedEvents.includes(eventType as any);\n }\n\n private async _handler(event: SubscriberEvent<TServices, TLogger>) {\n // If no events after filtering, return early\n if (event.events.length === 0) {\n this.logger.info('No subscribed events to process');\n return {\n batchItemFailures: [],\n };\n }\n\n // Execute the subscriber with the parsed context\n const result = await this.subscriber.handler({\n events: event.events,\n services: event.services,\n logger: event.logger,\n });\n\n // Parse output if schema is provided\n if (this.subscriber.outputSchema && result) {\n const validationResult =\n await this.subscriber.outputSchema['~standard'].validate(result);\n\n if (validationResult.issues) {\n this.logger.error(\n { issues: validationResult.issues },\n 'Subscriber output validation failed',\n );\n throw new Error('Subscriber output validation failed');\n }\n\n return validationResult.value;\n }\n\n return result;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.error())\n .use(this.services())\n .use(this.parseEvents()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AWSLambdaSubscriberAdaptor-BLfO612H.mjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >","events: any[]","event: SQSEvent | SNSEvent","record: SQSRecord","eventType: string","event: SubscriberEvent<TServices, TLogger>"],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n Context,\n Handler,\n SNSEvent,\n SQSEvent,\n SQSRecord,\n} from 'aws-lambda';\n\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n events: any[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n\ntype Middleware<\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n SubscriberEvent<TServices, TLogger>,\n InferStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaSubscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _logger!: TLogger;\n private _services!: ServiceRecord<TServices>;\n\n constructor(\n private envParser: EnvironmentParser<{}>,\n readonly subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >,\n ) {\n this._logger = subscriber.logger;\n }\n\n get logger(): TLogger {\n return this._logger;\n }\n\n private async getServices(): Promise<ServiceRecord<TServices>> {\n if (this._services) {\n return this._services;\n }\n\n const serviceDiscovery = ServiceDiscovery.getInstance(\n this.logger,\n this.envParser,\n );\n\n if (this.subscriber.services.length > 0) {\n const registered = await serviceDiscovery.register(\n this.subscriber.services,\n );\n this._services = registered as ServiceRecord<TServices>;\n } else {\n this._services = {} as ServiceRecord<TServices>;\n }\n\n return this._services;\n }\n\n private error(): Middleware<TServices, TLogger, OutSchema> {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.subscriber.logger;\n logger.error(req.error || {}, 'Error processing subscriber');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: (req) => {\n this._logger = this.subscriber.logger.child({\n subscriber: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n const rawEvent = (req as any).event as SQSEvent | SNSEvent;\n\n // Parse events based on the event type\n const events: any[] = [];\n\n if ('Records' in rawEvent) {\n if (this.isSQSEvent(rawEvent)) {\n // SQS Event\n for (const record of rawEvent.Records) {\n try {\n const event = this.parseSQSRecord(record);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SQS record',\n );\n }\n }\n } else if (this.isSNSEvent(rawEvent)) {\n // SNS Event\n for (const record of rawEvent.Records) {\n try {\n const event = JSON.parse(record.Sns.Message);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SNS record',\n );\n }\n }\n }\n }\n\n (req.event as any).events = events;\n },\n };\n }\n\n private isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n const firstRecord = event.Records[0];\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n firstRecord !== undefined &&\n 'eventSource' in firstRecord &&\n firstRecord.eventSource === 'aws:sqs'\n );\n }\n\n private isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n const firstRecord = event.Records[0];\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n firstRecord !== undefined &&\n 'EventSource' in firstRecord &&\n firstRecord.EventSource === 'aws:sns'\n );\n }\n\n private parseSQSRecord(record: SQSRecord): any | null {\n try {\n const body = JSON.parse(record.body);\n\n // Check if this is an SNS message wrapped in SQS\n if (body.Type === 'Notification' && body.Message) {\n // Parse the SNS message\n const snsMessage = JSON.parse(body.Message);\n return snsMessage;\n }\n\n // Direct SQS message\n return body;\n } catch (error) {\n this.logger.error({ error, record }, 'Failed to parse SQS record body');\n return null;\n }\n }\n\n private isSubscribedEvent(eventType: string): boolean {\n if (!this.subscriber.subscribedEvents) {\n return true; // If no events specified, accept all\n }\n\n return this.subscriber.subscribedEvents.includes(eventType as any);\n }\n\n private async _handler(event: SubscriberEvent<TServices, TLogger>) {\n // If no events after filtering, return early\n if (event.events.length === 0) {\n this.logger.info('No subscribed events to process');\n return {\n batchItemFailures: [],\n };\n }\n\n // Execute the subscriber with the parsed context\n const result = await this.subscriber.handler({\n events: event.events,\n services: event.services,\n logger: event.logger,\n });\n\n // Parse output if schema is provided\n if (this.subscriber.outputSchema && result) {\n const validationResult =\n await this.subscriber.outputSchema['~standard'].validate(result);\n\n if (validationResult.issues) {\n this.logger.error(\n { issues: validationResult.issues },\n 'Subscriber output validation failed',\n );\n throw new Error('Subscriber output validation failed');\n }\n\n return validationResult.value;\n }\n\n return result;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.error())\n .use(this.services())\n .use(this.parseEvents()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":"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"}
@@ -77,10 +77,12 @@ var AWSLambdaSubscriber = class {
77
77
  } };
78
78
  }
79
79
  isSQSEvent(event) {
80
- return "Records" in event && event.Records.length > 0 && "eventSource" in event.Records[0] && event.Records[0].eventSource === "aws:sqs";
80
+ const firstRecord = event.Records[0];
81
+ return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
81
82
  }
82
83
  isSNSEvent(event) {
83
- return "Records" in event && event.Records.length > 0 && "EventSource" in event.Records[0] && event.Records[0].EventSource === "aws:sns";
84
+ const firstRecord = event.Records[0];
85
+ return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
84
86
  }
85
87
  parseSQSRecord(record) {
86
88
  try {
@@ -135,4 +137,4 @@ Object.defineProperty(exports, 'AWSLambdaSubscriber', {
135
137
  return AWSLambdaSubscriber;
136
138
  }
137
139
  });
138
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs.map
140
+ //# sourceMappingURL=AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >","events: any[]","event: SQSEvent | SNSEvent","record: SQSRecord","eventType: string","event: SubscriberEvent<TServices, TLogger>"],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n Context,\n Handler,\n SNSEvent,\n SQSEvent,\n SQSRecord,\n} from 'aws-lambda';\n\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n events: any[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n\ntype Middleware<\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n SubscriberEvent<TServices, TLogger>,\n InferStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaSubscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _logger!: TLogger;\n private _services!: ServiceRecord<TServices>;\n\n constructor(\n private envParser: EnvironmentParser<{}>,\n readonly subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >,\n ) {\n this._logger = subscriber.logger;\n }\n\n get logger(): TLogger {\n return this._logger;\n }\n\n private async getServices(): Promise<ServiceRecord<TServices>> {\n if (this._services) {\n return this._services;\n }\n\n const serviceDiscovery = ServiceDiscovery.getInstance(\n this.logger,\n this.envParser,\n );\n\n if (this.subscriber.services.length > 0) {\n const registered = await serviceDiscovery.register(\n this.subscriber.services,\n );\n this._services = registered as ServiceRecord<TServices>;\n } else {\n this._services = {} as ServiceRecord<TServices>;\n }\n\n return this._services;\n }\n\n private error(): Middleware<TServices, TLogger, OutSchema> {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.subscriber.logger;\n logger.error(req.error || {}, 'Error processing subscriber');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: (req) => {\n this._logger = this.subscriber.logger.child({\n subscriber: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n const rawEvent = (req as any).event as SQSEvent | SNSEvent;\n\n // Parse events based on the event type\n const events: any[] = [];\n\n if ('Records' in rawEvent) {\n if (this.isSQSEvent(rawEvent)) {\n // SQS Event\n for (const record of rawEvent.Records) {\n try {\n const event = this.parseSQSRecord(record);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SQS record',\n );\n }\n }\n } else if (this.isSNSEvent(rawEvent)) {\n // SNS Event\n for (const record of rawEvent.Records) {\n try {\n const event = JSON.parse(record.Sns.Message);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SNS record',\n );\n }\n }\n }\n }\n\n (req.event as any).events = events;\n },\n };\n }\n\n private isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n 'eventSource' in event.Records[0] &&\n event.Records[0].eventSource === 'aws:sqs'\n );\n }\n\n private isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n 'EventSource' in event.Records[0] &&\n event.Records[0].EventSource === 'aws:sns'\n );\n }\n\n private parseSQSRecord(record: SQSRecord): any | null {\n try {\n const body = JSON.parse(record.body);\n\n // Check if this is an SNS message wrapped in SQS\n if (body.Type === 'Notification' && body.Message) {\n // Parse the SNS message\n const snsMessage = JSON.parse(body.Message);\n return snsMessage;\n }\n\n // Direct SQS message\n return body;\n } catch (error) {\n this.logger.error({ error, record }, 'Failed to parse SQS record body');\n return null;\n }\n }\n\n private isSubscribedEvent(eventType: string): boolean {\n if (!this.subscriber.subscribedEvents) {\n return true; // If no events specified, accept all\n }\n\n return this.subscriber.subscribedEvents.includes(eventType as any);\n }\n\n private async _handler(event: SubscriberEvent<TServices, TLogger>) {\n // If no events after filtering, return early\n if (event.events.length === 0) {\n this.logger.info('No subscribed events to process');\n return {\n batchItemFailures: [],\n };\n }\n\n // Execute the subscriber with the parsed context\n const result = await this.subscriber.handler({\n events: event.events,\n services: event.services,\n logger: event.logger,\n });\n\n // Parse output if schema is provided\n if (this.subscriber.outputSchema && result) {\n const validationResult =\n await this.subscriber.outputSchema['~standard'].validate(result);\n\n if (validationResult.issues) {\n this.logger.error(\n { issues: validationResult.issues },\n 'Subscriber output validation failed',\n );\n throw new Error('Subscriber output validation failed');\n }\n\n return validationResult.value;\n }\n\n return result;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.error())\n .use(this.services())\n .use(this.parseEvents()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >","events: any[]","event: SQSEvent | SNSEvent","record: SQSRecord","eventType: string","event: SubscriberEvent<TServices, TLogger>"],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n Context,\n Handler,\n SNSEvent,\n SQSEvent,\n SQSRecord,\n} from 'aws-lambda';\n\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n TEvent,\n TResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n events: any[];\n services: ServiceRecord<TServices>;\n logger: TLogger;\n};\n\ntype Middleware<\n TServices extends Service[],\n TLogger extends Logger,\n TOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n SubscriberEvent<TServices, TLogger>,\n InferStandardSchema<TOutSchema>,\n Error,\n Context\n>;\n\nexport class AWSLambdaSubscriber<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TSubscribedEvents extends any[] = [],\n> {\n private _logger!: TLogger;\n private _services!: ServiceRecord<TServices>;\n\n constructor(\n private envParser: EnvironmentParser<{}>,\n readonly subscriber: Subscriber<\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TSubscribedEvents\n >,\n ) {\n this._logger = subscriber.logger;\n }\n\n get logger(): TLogger {\n return this._logger;\n }\n\n private async getServices(): Promise<ServiceRecord<TServices>> {\n if (this._services) {\n return this._services;\n }\n\n const serviceDiscovery = ServiceDiscovery.getInstance(\n this.logger,\n this.envParser,\n );\n\n if (this.subscriber.services.length > 0) {\n const registered = await serviceDiscovery.register(\n this.subscriber.services,\n );\n this._services = registered as ServiceRecord<TServices>;\n } else {\n this._services = {} as ServiceRecord<TServices>;\n }\n\n return this._services;\n }\n\n private error(): Middleware<TServices, TLogger, OutSchema> {\n return {\n onError: (req) => {\n const logger = req.event?.logger || this.subscriber.logger;\n logger.error(req.error || {}, 'Error processing subscriber');\n\n // Re-throw the wrapped error to let Lambda handle it\n throw wrapError(req.error);\n },\n };\n }\n\n private loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: (req) => {\n this._logger = this.subscriber.logger.child({\n subscriber: {\n name: req.context.functionName,\n version: req.context.functionVersion,\n memory: req.context.memoryLimitInMB,\n },\n req: {\n id: req.context.awsRequestId,\n },\n }) as TLogger;\n\n req.event.logger = this._logger;\n },\n };\n }\n\n private services(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n req.event.services = await this.getServices();\n },\n };\n }\n\n private parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n return {\n before: async (req) => {\n const rawEvent = (req as any).event as SQSEvent | SNSEvent;\n\n // Parse events based on the event type\n const events: any[] = [];\n\n if ('Records' in rawEvent) {\n if (this.isSQSEvent(rawEvent)) {\n // SQS Event\n for (const record of rawEvent.Records) {\n try {\n const event = this.parseSQSRecord(record);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SQS record',\n );\n }\n }\n } else if (this.isSNSEvent(rawEvent)) {\n // SNS Event\n for (const record of rawEvent.Records) {\n try {\n const event = JSON.parse(record.Sns.Message);\n if (event && this.isSubscribedEvent(event.type)) {\n events.push(event);\n }\n } catch (error) {\n this.logger.error(\n { error, record },\n 'Failed to parse SNS record',\n );\n }\n }\n }\n }\n\n (req.event as any).events = events;\n },\n };\n }\n\n private isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n const firstRecord = event.Records[0];\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n firstRecord !== undefined &&\n 'eventSource' in firstRecord &&\n firstRecord.eventSource === 'aws:sqs'\n );\n }\n\n private isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n const firstRecord = event.Records[0];\n return (\n 'Records' in event &&\n event.Records.length > 0 &&\n firstRecord !== undefined &&\n 'EventSource' in firstRecord &&\n firstRecord.EventSource === 'aws:sns'\n );\n }\n\n private parseSQSRecord(record: SQSRecord): any | null {\n try {\n const body = JSON.parse(record.body);\n\n // Check if this is an SNS message wrapped in SQS\n if (body.Type === 'Notification' && body.Message) {\n // Parse the SNS message\n const snsMessage = JSON.parse(body.Message);\n return snsMessage;\n }\n\n // Direct SQS message\n return body;\n } catch (error) {\n this.logger.error({ error, record }, 'Failed to parse SQS record body');\n return null;\n }\n }\n\n private isSubscribedEvent(eventType: string): boolean {\n if (!this.subscriber.subscribedEvents) {\n return true; // If no events specified, accept all\n }\n\n return this.subscriber.subscribedEvents.includes(eventType as any);\n }\n\n private async _handler(event: SubscriberEvent<TServices, TLogger>) {\n // If no events after filtering, return early\n if (event.events.length === 0) {\n this.logger.info('No subscribed events to process');\n return {\n batchItemFailures: [],\n };\n }\n\n // Execute the subscriber with the parsed context\n const result = await this.subscriber.handler({\n events: event.events,\n services: event.services,\n logger: event.logger,\n });\n\n // Parse output if schema is provided\n if (this.subscriber.outputSchema && result) {\n const validationResult =\n await this.subscriber.outputSchema['~standard'].validate(result);\n\n if (validationResult.issues) {\n this.logger.error(\n { issues: validationResult.issues },\n 'Subscriber output validation failed',\n );\n throw new Error('Subscriber output validation failed');\n }\n\n return validationResult.value;\n }\n\n return result;\n }\n\n get handler(): AWSLambdaHandler {\n const handler = this._handler.bind(this);\n\n // Apply middleware in order\n return middy(handler)\n .use(this.loggerMiddleware())\n .use(this.error())\n .use(this.services())\n .use(this.parseEvents()) as unknown as AWSLambdaHandler;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Subscriber } from "./Subscriber-aNr1qkxR.mjs";
1
+ import { Subscriber } from "./Subscriber-ikctpU3I.mjs";
2
2
  import { Service } from "@geekmidas/services";
3
3
  import { EnvironmentParser } from "@geekmidas/envkit";
4
4
  import { EventPublisher } from "@geekmidas/events";
@@ -27,6 +27,8 @@ declare class AWSLambdaSubscriber<TServices extends Service[] = [], TLogger exte
27
27
  private _handler;
28
28
  get handler(): AWSLambdaHandler;
29
29
  }
30
+ //# sourceMappingURL=AWSLambdaSubscriberAdaptor.d.ts.map
31
+
30
32
  //#endregion
31
33
  export { AWSLambdaHandler, AWSLambdaSubscriber };
32
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-C0aZBU64.d.mts.map
34
+ //# sourceMappingURL=AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts","names":[],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAmBY,gDAAgD,QAC1D,QACA;cAoBW,sCACO,gCACF,SAAS,0BACP,kEACM;EA1Bd,QAAA,SAAA;EAAgB,SAAA,UAAA,EAmCH,UAnCG,CAoCtB,SApCsB,EAqCtB,OArCsB,EAsCtB,SAtCsB,EAuCtB,eAvCsB,EAwCtB,0BAxCsB,EAyCtB,iBAzCsB,CAAA;EAAA,QAC1B,OAAA;EAAM,QACN,SAAA;EAAO,WAFmD,CAAA,SAAA,EAkCrC,iBAlCqC,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAmCnC,UAnCmC,CAoCtD,SApCsD,EAqCtD,OArCsD,EAsCtD,SAtCsD,EAuCtD,eAvCsD,EAwCtD,0BAxCsD,EAyCtD,iBAzCsD,CAAA;EAAO,IAAA,MAAA,CAAA,CAAA,EA+CnD,OA/CmD;EAsBtD,QAAA,WAAA;EAAmB,QAAA,KAAA;EAAA,QACZ,gBAAA;EAAO,QACT,QAAA;EAAM,QAAG,WAAA;EAAM,QACb,UAAA;EAAgB,QACV,UAAA;EAAc,QAUlC,cAAA;EAAS,QACT,iBAAA;EAAO,QACP,QAAA;EAAS,IACT,OAAA,CAAA,CAAA,EA4MW,gBA5MX"}
@@ -1,4 +1,4 @@
1
- import { Subscriber } from "./Subscriber-DMSzvO_J.cjs";
1
+ import { Subscriber } from "./Subscriber-COYMSevD.cjs";
2
2
  import { EventPublisher } from "@geekmidas/events";
3
3
  import { Logger } from "@geekmidas/logger";
4
4
  import { Service } from "@geekmidas/services";
@@ -27,6 +27,8 @@ declare class AWSLambdaSubscriber<TServices extends Service[] = [], TLogger exte
27
27
  private _handler;
28
28
  get handler(): AWSLambdaHandler;
29
29
  }
30
+ //# sourceMappingURL=AWSLambdaSubscriberAdaptor.d.ts.map
31
+
30
32
  //#endregion
31
33
  export { AWSLambdaHandler, AWSLambdaSubscriber };
32
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-DT8icDRf.d.cts.map
34
+ //# sourceMappingURL=AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts","names":[],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAmBY,gDAAgD,QAC1D,QACA;cAoBW,sCACO,gCACF,SAAS,0BACP,kEACM;EA1Bd,QAAA,SAAA;EAAgB,SAAA,UAAA,EAmCH,UAnCG,CAoCtB,SApCsB,EAqCtB,OArCsB,EAsCtB,SAtCsB,EAuCtB,eAvCsB,EAwCtB,0BAxCsB,EAyCtB,iBAzCsB,CAAA;EAAA,QAC1B,OAAA;EAAM,QACN,SAAA;EAAO,WAFmD,CAAA,SAAA,EAkCrC,iBAlCqC,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAmCnC,UAnCmC,CAoCtD,SApCsD,EAqCtD,OArCsD,EAsCtD,SAtCsD,EAuCtD,eAvCsD,EAwCtD,0BAxCsD,EAyCtD,iBAzCsD,CAAA;EAAO,IAAA,MAAA,CAAA,CAAA,EA+CnD,OA/CmD;EAsBtD,QAAA,WAAA;EAAmB,QAAA,KAAA;EAAA,QACZ,gBAAA;EAAO,QACT,QAAA;EAAM,QAAG,WAAA;EAAM,QACb,UAAA;EAAgB,QACV,UAAA;EAAc,QAUlC,cAAA;EAAS,QACT,iBAAA;EAAO,QACP,QAAA;EAAS,IACT,OAAA,CAAA,CAAA,EA4MW,gBA5MX"}
@@ -1,5 +1,5 @@
1
- import { HttpMethod } from "./types-Bp9ysFXd.cjs";
2
- import { CookieFn, Endpoint, EndpointSchemas, HeaderFn } from "./Endpoint-CC2RGjkl.cjs";
1
+ import { HttpMethod } from "./types-B5H3piDg.cjs";
2
+ import { CookieFn, Endpoint, EndpointSchemas, HeaderFn } from "./Endpoint-BPv9_-m_.cjs";
3
3
  import { AuditStorage, AuditableAction } from "@geekmidas/audit";
4
4
  import { EventPublisher } from "@geekmidas/events";
5
5
  import { Logger } from "@geekmidas/logger";
@@ -61,6 +61,8 @@ type GetInputResponse = {
61
61
  type AmazonApiGatewayV1EndpointHandler = (event: APIGatewayProxyEvent, context: Context) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
62
62
  type AmazonApiGatewayV2EndpointHandler = (event: APIGatewayProxyEventV2, context: Context) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
63
63
  type HandlerEvent<T extends Function> = T extends ((event: infer E, context: Context) => any) ? E : never;
64
+ //# sourceMappingURL=AmazonApiGatewayEndpointAdaptor.d.ts.map
65
+
64
66
  //#endregion
65
67
  export { AmazonApiGatewayEndpoint, AmazonApiGatewayEndpointHandlerResponse, AmazonApiGatewayV1EndpointHandler, AmazonApiGatewayV2EndpointHandler, Event, GetInputResponse, HandlerEvent, LoggerContext };
66
- //# sourceMappingURL=AmazonApiGatewayEndpointAdaptor-CbJqLU6I.d.cts.map
68
+ //# sourceMappingURL=AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts","names":[],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { HttpMethod } from "./types-CScirkHt.mjs";
2
- import { CookieFn, Endpoint, EndpointSchemas, HeaderFn } from "./Endpoint-C5djXyae.mjs";
1
+ import { HttpMethod } from "./types-DdIlpxAd.mjs";
2
+ import { CookieFn, Endpoint, EndpointSchemas, HeaderFn } from "./Endpoint-BdwG75G_.mjs";
3
3
  import { Service, ServiceRecord } from "@geekmidas/services";
4
4
  import { AuditStorage, AuditableAction } from "@geekmidas/audit";
5
5
  import { EnvironmentParser } from "@geekmidas/envkit";
@@ -61,6 +61,8 @@ type GetInputResponse = {
61
61
  type AmazonApiGatewayV1EndpointHandler = (event: APIGatewayProxyEvent, context: Context) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
62
62
  type AmazonApiGatewayV2EndpointHandler = (event: APIGatewayProxyEventV2, context: Context) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
63
63
  type HandlerEvent<T extends Function> = T extends ((event: infer E, context: Context) => any) ? E : never;
64
+ //# sourceMappingURL=AmazonApiGatewayEndpointAdaptor.d.ts.map
65
+
64
66
  //#endregion
65
67
  export { AmazonApiGatewayEndpoint, AmazonApiGatewayEndpointHandlerResponse, AmazonApiGatewayV1EndpointHandler, AmazonApiGatewayV2EndpointHandler, Event, GetInputResponse, HandlerEvent, LoggerContext };
66
- //# sourceMappingURL=AmazonApiGatewayEndpointAdaptor-DC3N7zY_.d.mts.map
68
+ //# sourceMappingURL=AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts","names":[],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { AmazonApiGatewayEndpoint } from "./AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs";
2
- import { parseQueryParams } from "./parseQueryParams-CHINupbZ.mjs";
2
+ import { parseQueryParams } from "./parseQueryParams-UMTRnRrW.mjs";
3
3
 
4
4
  //#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
5
5
  var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
@@ -39,4 +39,4 @@ var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
39
39
 
40
40
  //#endregion
41
41
  export { AmazonApiGatewayV1Endpoint };
42
- //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs.map
42
+ //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs","names":["e: APIGatewayProxyEvent","mergedParams: Record<string, string | string[]>","data: APIGatewayProxyEvent","context: Context","envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >"],"sources":["../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { HttpMethod } from '../types';\nimport type { Endpoint, EndpointSchemas } from './Endpoint';\n\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { APIGatewayProxyEvent, Context } from 'aws-lambda';\n\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Service } from '@geekmidas/services';\nimport {\n AmazonApiGatewayEndpoint,\n type AmazonApiGatewayV1EndpointHandler,\n type GetInputResponse,\n type LoggerContext,\n} from './AmazonApiGatewayEndpointAdaptor';\nimport { parseQueryParams } from './parseQueryParams';\n\nexport class AmazonApiGatewayV1Endpoint<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n> extends AmazonApiGatewayEndpoint<\n AmazonApiGatewayV1EndpointHandler,\n APIGatewayProxyEvent,\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n> {\n override getInput(e: APIGatewayProxyEvent): GetInputResponse {\n // For arrays, AWS API Gateway V1 provides multiValueQueryStringParameters\n const multiValueParams = e.multiValueQueryStringParameters || {};\n const singleValueParams = e.queryStringParameters || {};\n\n // Merge single and multi-value parameters\n const mergedParams: Record<string, string | string[]> = {};\n\n // Add single value parameters\n for (const [key, value] of Object.entries(singleValueParams)) {\n if (value !== undefined) {\n mergedParams[key] = value;\n }\n }\n\n // Override with multi-value parameters where applicable\n for (const [key, values] of Object.entries(multiValueParams)) {\n if (values && values.length > 1) {\n mergedParams[key] = values;\n }\n }\n\n return {\n body: e.body ? JSON.parse(e.body) : undefined,\n query: parseQueryParams(mergedParams),\n params: e.pathParameters || {},\n };\n }\n override getLoggerContext(\n data: APIGatewayProxyEvent,\n context: Context,\n ): LoggerContext {\n return {\n fn: {\n name: context.functionName,\n version: context.functionVersion,\n },\n req: {\n id: data.requestContext.requestId,\n awsRequestId: context.awsRequestId,\n ip: data.requestContext.identity.sourceIp,\n userAgent: data.requestContext.identity.userAgent || undefined,\n path: data.requestContext.path,\n },\n };\n }\n constructor(\n protected override envParser: EnvironmentParser<{}>,\n protected override readonly endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n ) {\n super(envParser, endpoint);\n }\n}\n"],"mappings":";;;;AAkBA,IAAa,6BAAb,cASU,yBAWR;CACA,AAAS,SAASA,GAA2C;EAE3D,MAAM,mBAAmB,EAAE,mCAAmC,CAAE;EAChE,MAAM,oBAAoB,EAAE,yBAAyB,CAAE;EAGvD,MAAMC,eAAkD,CAAE;AAG1D,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,kBAAkB,CAC1D,KAAI,iBACF,cAAa,OAAO;AAKxB,OAAK,MAAM,CAAC,KAAK,OAAO,IAAI,OAAO,QAAQ,iBAAiB,CAC1D,KAAI,UAAU,OAAO,SAAS,EAC5B,cAAa,OAAO;AAIxB,SAAO;GACL,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,KAAK;GACjC,OAAO,iBAAiB,aAAa;GACrC,QAAQ,EAAE,kBAAkB,CAAE;EAC/B;CACF;CACD,AAAS,iBACPC,MACAC,SACe;AACf,SAAO;GACL,IAAI;IACF,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB;GACD,KAAK;IACH,IAAI,KAAK,eAAe;IACxB,cAAc,QAAQ;IACtB,IAAI,KAAK,eAAe,SAAS;IACjC,WAAW,KAAK,eAAe,SAAS;IACxC,MAAM,KAAK,eAAe;GAC3B;EACF;CACF;CACD,YACqBC,WACSC,UAU5B;AACA,QAAM,WAAW,SAAS;EAZP;EACS;CAY7B;AACF"}
@@ -1,5 +1,5 @@
1
1
  const require_AmazonApiGatewayEndpointAdaptor = require('./AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs');
2
- const require_parseQueryParams = require('./parseQueryParams-CwvXXwkW.cjs');
2
+ const require_parseQueryParams = require('./parseQueryParams-BSNkjmZ9.cjs');
3
3
 
4
4
  //#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
5
5
  var AmazonApiGatewayV1Endpoint = class extends require_AmazonApiGatewayEndpointAdaptor.AmazonApiGatewayEndpoint {
@@ -44,4 +44,4 @@ Object.defineProperty(exports, 'AmazonApiGatewayV1Endpoint', {
44
44
  return AmazonApiGatewayV1Endpoint;
45
45
  }
46
46
  });
47
- //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs.map
47
+ //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs","names":["AmazonApiGatewayEndpoint","e: APIGatewayProxyEvent","mergedParams: Record<string, string | string[]>","data: APIGatewayProxyEvent","context: Context","envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >"],"sources":["../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { HttpMethod } from '../types';\nimport type { Endpoint, EndpointSchemas } from './Endpoint';\n\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { APIGatewayProxyEvent, Context } from 'aws-lambda';\n\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Service } from '@geekmidas/services';\nimport {\n AmazonApiGatewayEndpoint,\n type AmazonApiGatewayV1EndpointHandler,\n type GetInputResponse,\n type LoggerContext,\n} from './AmazonApiGatewayEndpointAdaptor';\nimport { parseQueryParams } from './parseQueryParams';\n\nexport class AmazonApiGatewayV1Endpoint<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n> extends AmazonApiGatewayEndpoint<\n AmazonApiGatewayV1EndpointHandler,\n APIGatewayProxyEvent,\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n> {\n override getInput(e: APIGatewayProxyEvent): GetInputResponse {\n // For arrays, AWS API Gateway V1 provides multiValueQueryStringParameters\n const multiValueParams = e.multiValueQueryStringParameters || {};\n const singleValueParams = e.queryStringParameters || {};\n\n // Merge single and multi-value parameters\n const mergedParams: Record<string, string | string[]> = {};\n\n // Add single value parameters\n for (const [key, value] of Object.entries(singleValueParams)) {\n if (value !== undefined) {\n mergedParams[key] = value;\n }\n }\n\n // Override with multi-value parameters where applicable\n for (const [key, values] of Object.entries(multiValueParams)) {\n if (values && values.length > 1) {\n mergedParams[key] = values;\n }\n }\n\n return {\n body: e.body ? JSON.parse(e.body) : undefined,\n query: parseQueryParams(mergedParams),\n params: e.pathParameters || {},\n };\n }\n override getLoggerContext(\n data: APIGatewayProxyEvent,\n context: Context,\n ): LoggerContext {\n return {\n fn: {\n name: context.functionName,\n version: context.functionVersion,\n },\n req: {\n id: data.requestContext.requestId,\n awsRequestId: context.awsRequestId,\n ip: data.requestContext.identity.sourceIp,\n userAgent: data.requestContext.identity.userAgent || undefined,\n path: data.requestContext.path,\n },\n };\n }\n constructor(\n protected override envParser: EnvironmentParser<{}>,\n protected override readonly endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n ) {\n super(envParser, endpoint);\n }\n}\n"],"mappings":";;;;AAkBA,IAAa,6BAAb,cASUA,iEAWR;CACA,AAAS,SAASC,GAA2C;EAE3D,MAAM,mBAAmB,EAAE,mCAAmC,CAAE;EAChE,MAAM,oBAAoB,EAAE,yBAAyB,CAAE;EAGvD,MAAMC,eAAkD,CAAE;AAG1D,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,kBAAkB,CAC1D,KAAI,iBACF,cAAa,OAAO;AAKxB,OAAK,MAAM,CAAC,KAAK,OAAO,IAAI,OAAO,QAAQ,iBAAiB,CAC1D,KAAI,UAAU,OAAO,SAAS,EAC5B,cAAa,OAAO;AAIxB,SAAO;GACL,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,KAAK;GACjC,OAAO,0CAAiB,aAAa;GACrC,QAAQ,EAAE,kBAAkB,CAAE;EAC/B;CACF;CACD,AAAS,iBACPC,MACAC,SACe;AACf,SAAO;GACL,IAAI;IACF,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB;GACD,KAAK;IACH,IAAI,KAAK,eAAe;IACxB,cAAc,QAAQ;IACtB,IAAI,KAAK,eAAe,SAAS;IACjC,WAAW,KAAK,eAAe,SAAS;IACxC,MAAM,KAAK,eAAe;GAC3B;EACF;CACF;CACD,YACqBC,WACSC,UAU5B;AACA,QAAM,WAAW,SAAS;EAZP;EACS;CAY7B;AACF"}
@@ -1,11 +1,11 @@
1
- import { HttpMethod } from "./types-CScirkHt.mjs";
2
- import { Endpoint, EndpointSchemas } from "./Endpoint-C5djXyae.mjs";
3
- import { AmazonApiGatewayEndpoint, AmazonApiGatewayV1EndpointHandler, GetInputResponse, LoggerContext } from "./AmazonApiGatewayEndpointAdaptor-DC3N7zY_.mjs";
4
- import { Service } from "@geekmidas/services";
5
- import { EnvironmentParser } from "@geekmidas/envkit";
1
+ import { HttpMethod } from "./types-B5H3piDg.cjs";
2
+ import { Endpoint, EndpointSchemas } from "./Endpoint-BPv9_-m_.cjs";
3
+ import { AmazonApiGatewayEndpoint, AmazonApiGatewayV1EndpointHandler, GetInputResponse, LoggerContext } from "./AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.cjs";
6
4
  import { EventPublisher } from "@geekmidas/events";
7
5
  import { Logger } from "@geekmidas/logger";
6
+ import { Service } from "@geekmidas/services";
8
7
  import { StandardSchemaV1 } from "@standard-schema/spec";
8
+ import { EnvironmentParser } from "@geekmidas/envkit";
9
9
  import { APIGatewayProxyEvent, Context } from "aws-lambda";
10
10
 
11
11
  //#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.ts
@@ -16,6 +16,8 @@ declare class AmazonApiGatewayV1Endpoint<TRoute extends string, TMethod extends
16
16
  getLoggerContext(data: APIGatewayProxyEvent, context: Context): LoggerContext;
17
17
  constructor(envParser: EnvironmentParser<{}>, endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher>);
18
18
  }
19
+ //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor.d.ts.map
20
+
19
21
  //#endregion
20
22
  export { AmazonApiGatewayV1Endpoint };
21
- //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-BVxgQ-7J.d.mts.map
23
+ //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts","names":[],"sources":["../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;cAkBa,kEAEK,2BACD,yCACI,4DACD,gCACF,SAAS,oDAED,qDAChB,yBACR,mCACA,sBACA,QACA,SACA,QACA,YACA,WACA,SACA,UACA;uBAiDgC;EApErB,mBAAA,QAAA,EAqE6B,QArEH,CAsEjC,MAtEiC,EAuEjC,OAvEiC,EAwEjC,MAxEiC,EAyEjC,UAzEiC,EA0EjC,SA1EiC,EA2EjC,OA3EiC,EA4EjC,QA5EiC,EA6EjC,eA7EiC,CAAA;EAAA,QAAA,CAAA,CAAA,EAqBhB,oBArBgB,CAAA,EAqBO,gBArBP;EAAA,gBAErB,CAAA,IAAA,EAgDR,oBAhDQ,EAAA,OAAA,EAiDL,OAjDK,CAAA,EAkDb,aAlDa;EAAU,WACX,CAAA,SAAA,EAiEiB,iBAjEjB,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,EAkEyB,QAlEzB,CAmEX,MAnEW,EAoEX,OApEW,EAqEX,MArEW,EAsEX,UAtEW,EAuEX,SAvEW,EAwEX,OAxEW,EAyEX,QAzEW,EA0EX,eA1EW,CAAA"}
@@ -1,11 +1,11 @@
1
- import { HttpMethod } from "./types-Bp9ysFXd.cjs";
2
- import { Endpoint, EndpointSchemas } from "./Endpoint-CC2RGjkl.cjs";
3
- import { AmazonApiGatewayEndpoint, AmazonApiGatewayV1EndpointHandler, GetInputResponse, LoggerContext } from "./AmazonApiGatewayEndpointAdaptor-CbJqLU6I.cjs";
1
+ import { HttpMethod } from "./types-DdIlpxAd.mjs";
2
+ import { Endpoint, EndpointSchemas } from "./Endpoint-BdwG75G_.mjs";
3
+ import { AmazonApiGatewayEndpoint, AmazonApiGatewayV1EndpointHandler, GetInputResponse, LoggerContext } from "./AmazonApiGatewayEndpointAdaptor-qlKXuZxy.mjs";
4
+ import { Service } from "@geekmidas/services";
5
+ import { EnvironmentParser } from "@geekmidas/envkit";
4
6
  import { EventPublisher } from "@geekmidas/events";
5
7
  import { Logger } from "@geekmidas/logger";
6
- import { Service } from "@geekmidas/services";
7
8
  import { StandardSchemaV1 } from "@standard-schema/spec";
8
- import { EnvironmentParser } from "@geekmidas/envkit";
9
9
  import { APIGatewayProxyEvent, Context } from "aws-lambda";
10
10
 
11
11
  //#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.ts
@@ -16,6 +16,8 @@ declare class AmazonApiGatewayV1Endpoint<TRoute extends string, TMethod extends
16
16
  getLoggerContext(data: APIGatewayProxyEvent, context: Context): LoggerContext;
17
17
  constructor(envParser: EnvironmentParser<{}>, endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher>);
18
18
  }
19
+ //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor.d.ts.map
20
+
19
21
  //#endregion
20
22
  export { AmazonApiGatewayV1Endpoint };
21
- //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-CVwJ5k16.d.cts.map
23
+ //# sourceMappingURL=AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts","names":[],"sources":["../src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;cAkBa,kEAEK,2BACD,yCACI,4DACD,gCACF,SAAS,oDAED,qDAChB,yBACR,mCACA,sBACA,QACA,SACA,QACA,YACA,WACA,SACA,UACA;uBAiDgC;EApErB,mBAAA,QAAA,EAqE6B,QArEH,CAsEjC,MAtEiC,EAuEjC,OAvEiC,EAwEjC,MAxEiC,EAyEjC,UAzEiC,EA0EjC,SA1EiC,EA2EjC,OA3EiC,EA4EjC,QA5EiC,EA6EjC,eA7EiC,CAAA;EAAA,QAAA,CAAA,CAAA,EAqBhB,oBArBgB,CAAA,EAqBO,gBArBP;EAAA,gBAErB,CAAA,IAAA,EAgDR,oBAhDQ,EAAA,OAAA,EAiDL,OAjDK,CAAA,EAkDb,aAlDa;EAAU,WACX,CAAA,SAAA,EAiEiB,iBAjEjB,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,EAkEyB,QAlEzB,CAmEX,MAnEW,EAoEX,OApEW,EAqEX,MArEW,EAsEX,UAtEW,EAuEX,SAvEW,EAwEX,OAxEW,EAyEX,QAzEW,EA0EX,eA1EW,CAAA"}
@@ -1,5 +1,5 @@
1
1
  const require_AmazonApiGatewayEndpointAdaptor = require('./AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs');
2
- const require_parseQueryParams = require('./parseQueryParams-CwvXXwkW.cjs');
2
+ const require_parseQueryParams = require('./parseQueryParams-BSNkjmZ9.cjs');
3
3
 
4
4
  //#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
5
5
  var AmazonApiGatewayV2Endpoint = class extends require_AmazonApiGatewayEndpointAdaptor.AmazonApiGatewayEndpoint {
@@ -43,4 +43,4 @@ Object.defineProperty(exports, 'AmazonApiGatewayV2Endpoint', {
43
43
  return AmazonApiGatewayV2Endpoint;
44
44
  }
45
45
  });
46
- //# sourceMappingURL=AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs.map
46
+ //# sourceMappingURL=AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs","names":["AmazonApiGatewayEndpoint","e: APIGatewayProxyEventV2","processedParams: Record<string, string | string[]>","event: APIGatewayProxyEventV2","context: Context","envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >"],"sources":["../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { HttpMethod } from '../types';\nimport type { Endpoint, EndpointSchemas } from './Endpoint';\n\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Service } from '@geekmidas/services';\nimport type { APIGatewayProxyEventV2, Context } from 'aws-lambda';\nimport {\n AmazonApiGatewayEndpoint,\n type AmazonApiGatewayV2EndpointHandler,\n type GetInputResponse,\n type LoggerContext,\n} from './AmazonApiGatewayEndpointAdaptor';\nimport { parseQueryParams } from './parseQueryParams';\n\nexport class AmazonApiGatewayV2Endpoint<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n> extends AmazonApiGatewayEndpoint<\n AmazonApiGatewayV2EndpointHandler,\n APIGatewayProxyEventV2,\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n> {\n override getInput(e: APIGatewayProxyEventV2): GetInputResponse {\n // API Gateway V2 handles arrays as comma-separated values\n const queryParams = e.queryStringParameters || {};\n const processedParams: Record<string, string | string[]> = {};\n\n for (const [key, value] of Object.entries(queryParams)) {\n if (value !== undefined) {\n // Check if value contains comma and could be an array\n // Be careful not to split values that legitimately contain commas\n if (value.includes(',') && !value.includes('\"')) {\n processedParams[key] = value.split(',').map((v) => v.trim());\n } else {\n processedParams[key] = value;\n }\n }\n }\n\n return {\n body: e.body ? JSON.parse(e.body) : undefined,\n query: parseQueryParams(processedParams),\n params: e.pathParameters || {},\n };\n }\n override getLoggerContext(\n event: APIGatewayProxyEventV2,\n context: Context,\n ): LoggerContext {\n return {\n fn: {\n name: context.functionName,\n version: context.functionVersion,\n },\n req: {\n id: event.requestContext.requestId,\n awsRequestId: context.awsRequestId,\n ip: event.requestContext.http.sourceIp,\n userAgent: event.requestContext.http.userAgent || undefined,\n path: event.requestContext.http.path,\n },\n };\n }\n constructor(\n protected override envParser: EnvironmentParser<{}>,\n protected override readonly endpoint: Endpoint<\n TRoute,\n TMethod,\n TInput,\n TOutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher\n >,\n ) {\n super(envParser, endpoint);\n }\n}\n"],"mappings":";;;;AAiBA,IAAa,6BAAb,cASUA,iEAWR;CACA,AAAS,SAASC,GAA6C;EAE7D,MAAM,cAAc,EAAE,yBAAyB,CAAE;EACjD,MAAMC,kBAAqD,CAAE;AAE7D,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,YAAY,CACpD,KAAI,iBAGF,KAAI,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,KAAI,CAC7C,iBAAgB,OAAO,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;MAE5D,iBAAgB,OAAO;AAK7B,SAAO;GACL,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,KAAK;GACjC,OAAO,0CAAiB,gBAAgB;GACxC,QAAQ,EAAE,kBAAkB,CAAE;EAC/B;CACF;CACD,AAAS,iBACPC,OACAC,SACe;AACf,SAAO;GACL,IAAI;IACF,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB;GACD,KAAK;IACH,IAAI,MAAM,eAAe;IACzB,cAAc,QAAQ;IACtB,IAAI,MAAM,eAAe,KAAK;IAC9B,WAAW,MAAM,eAAe,KAAK;IACrC,MAAM,MAAM,eAAe,KAAK;GACjC;EACF;CACF;CACD,YACqBC,WACSC,UAU5B;AACA,QAAM,WAAW,SAAS;EAZP;EACS;CAY7B;AACF"}
@@ -1,6 +1,6 @@
1
- import { HttpMethod } from "./types-Bp9ysFXd.cjs";
2
- import { Endpoint, EndpointSchemas } from "./Endpoint-CC2RGjkl.cjs";
3
- import { AmazonApiGatewayEndpoint, AmazonApiGatewayV2EndpointHandler, GetInputResponse, LoggerContext } from "./AmazonApiGatewayEndpointAdaptor-CbJqLU6I.cjs";
1
+ import { HttpMethod } from "./types-B5H3piDg.cjs";
2
+ import { Endpoint, EndpointSchemas } from "./Endpoint-BPv9_-m_.cjs";
3
+ import { AmazonApiGatewayEndpoint, AmazonApiGatewayV2EndpointHandler, GetInputResponse, LoggerContext } from "./AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.cjs";
4
4
  import { EventPublisher } from "@geekmidas/events";
5
5
  import { Logger } from "@geekmidas/logger";
6
6
  import { Service } from "@geekmidas/services";
@@ -16,6 +16,8 @@ declare class AmazonApiGatewayV2Endpoint<TRoute extends string, TMethod extends
16
16
  getLoggerContext(event: APIGatewayProxyEventV2, context: Context): LoggerContext;
17
17
  constructor(envParser: EnvironmentParser<{}>, endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher>);
18
18
  }
19
+ //# sourceMappingURL=AmazonApiGatewayV2EndpointAdaptor.d.ts.map
20
+
19
21
  //#endregion
20
22
  export { AmazonApiGatewayV2Endpoint };
21
- //# sourceMappingURL=AmazonApiGatewayV2EndpointAdaptor-1oBZdQH3.d.cts.map
23
+ //# sourceMappingURL=AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map