@geekmidas/constructs 3.0.7 → 3.0.8

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 (459) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{Construct-BXG8cFSm.cjs → Construct-B14miJ6P.cjs} +95 -10
  3. package/dist/Construct-B14miJ6P.cjs.map +1 -0
  4. package/dist/{Construct-BjpXFNxy.d.mts → Construct-CXqvzglu.d.cts} +11 -6
  5. package/dist/{Construct-BjpXFNxy.d.mts.map → Construct-CXqvzglu.d.cts.map} +1 -1
  6. package/dist/{Construct-CQ9zV58W.mjs → Construct-CdJY2DJS.mjs} +83 -9
  7. package/dist/Construct-CdJY2DJS.mjs.map +1 -0
  8. package/dist/{Construct-CX7HyFfT.d.cts → Construct-D0n7QTaI.d.mts} +13 -8
  9. package/dist/Construct-D0n7QTaI.d.mts.map +1 -0
  10. package/dist/{Endpoint-CGdCGJkC.d.cts → Endpoint-C991gK3T.d.cts} +130 -27
  11. package/dist/Endpoint-C991gK3T.d.cts.map +1 -0
  12. package/dist/{Endpoint-BET0JSZK.d.mts → Endpoint-CRHpLPV3.d.mts} +130 -27
  13. package/dist/Endpoint-CRHpLPV3.d.mts.map +1 -0
  14. package/dist/{HonoEndpointAdaptor-B5fKdLi7.cjs → HonoEndpointAdaptor-BDz1qM4z.cjs} +81 -24
  15. package/dist/HonoEndpointAdaptor-BDz1qM4z.cjs.map +1 -0
  16. package/dist/{HonoEndpointAdaptor-DOUODM7n.mjs → HonoEndpointAdaptor-DPBfEPZj.mjs} +64 -7
  17. package/dist/HonoEndpointAdaptor-DPBfEPZj.mjs.map +1 -0
  18. package/dist/{Subscriber-1rDE7HuM.d.cts → Subscriber-D8WkA8np.d.cts} +3 -3
  19. package/dist/{Subscriber-1rDE7HuM.d.cts.map → Subscriber-D8WkA8np.d.cts.map} +1 -1
  20. package/dist/{Subscriber-9ObcUdcC.d.mts → Subscriber-Tft61-YG.d.mts} +5 -5
  21. package/dist/Subscriber-Tft61-YG.d.mts.map +1 -0
  22. package/dist/adaptors/aws.cjs +737 -21
  23. package/dist/adaptors/aws.cjs.map +1 -0
  24. package/dist/adaptors/aws.d.cts +221 -17
  25. package/dist/adaptors/aws.d.cts.map +1 -0
  26. package/dist/adaptors/aws.d.mts +221 -17
  27. package/dist/adaptors/aws.d.mts.map +1 -0
  28. package/dist/adaptors/aws.mjs +734 -18
  29. package/dist/adaptors/aws.mjs.map +1 -0
  30. package/dist/adaptors/hono.cjs +5 -12
  31. package/dist/adaptors/hono.d.cts +52 -10
  32. package/dist/adaptors/hono.d.cts.map +1 -0
  33. package/dist/adaptors/hono.d.mts +52 -10
  34. package/dist/adaptors/hono.d.mts.map +1 -0
  35. package/dist/adaptors/hono.mjs +5 -12
  36. package/dist/adaptors/testing.cjs +392 -21
  37. package/dist/adaptors/testing.cjs.map +1 -0
  38. package/dist/adaptors/testing.d.cts +177 -14
  39. package/dist/adaptors/testing.d.cts.map +1 -0
  40. package/dist/adaptors/testing.d.mts +177 -14
  41. package/dist/adaptors/testing.d.mts.map +1 -0
  42. package/dist/adaptors/testing.mjs +388 -17
  43. package/dist/adaptors/testing.mjs.map +1 -0
  44. package/dist/crons/index.cjs +82 -10
  45. package/dist/crons/index.cjs.map +1 -1
  46. package/dist/crons/index.d.cts +48 -11
  47. package/dist/crons/index.d.cts.map +1 -1
  48. package/dist/crons/index.d.mts +45 -11
  49. package/dist/crons/index.d.mts.map +1 -1
  50. package/dist/crons/index.mjs +79 -7
  51. package/dist/crons/index.mjs.map +1 -1
  52. package/dist/endpoints/index.cjs +717 -23
  53. package/dist/endpoints/index.cjs.map +1 -1
  54. package/dist/endpoints/index.d.cts +316 -14
  55. package/dist/endpoints/index.d.cts.map +1 -1
  56. package/dist/endpoints/index.d.mts +315 -14
  57. package/dist/endpoints/index.d.mts.map +1 -1
  58. package/dist/endpoints/index.mjs +706 -12
  59. package/dist/endpoints/index.mjs.map +1 -1
  60. package/dist/functions/index.cjs +5 -8
  61. package/dist/functions/index.d.cts +2 -5
  62. package/dist/functions/index.d.mts +2 -5
  63. package/dist/functions/index.mjs +2 -5
  64. package/dist/functions-DiaRAdfp.cjs +2893 -0
  65. package/dist/functions-DiaRAdfp.cjs.map +1 -0
  66. package/dist/functions-GmSHFbpr.mjs +2864 -0
  67. package/dist/functions-GmSHFbpr.mjs.map +1 -0
  68. package/dist/index-Cq4fz8uM.d.mts +132 -0
  69. package/dist/index-Cq4fz8uM.d.mts.map +1 -0
  70. package/dist/index-CzIMpK-e.d.cts +135 -0
  71. package/dist/index-CzIMpK-e.d.cts.map +1 -0
  72. package/dist/index.cjs +1 -1
  73. package/dist/index.d.cts +3 -3
  74. package/dist/index.d.mts +3 -3
  75. package/dist/index.mjs +1 -1
  76. package/dist/lazyAccessors-CJZYs9uM.mjs +1887 -0
  77. package/dist/lazyAccessors-CJZYs9uM.mjs.map +1 -0
  78. package/dist/lazyAccessors-DHvDeww0.cjs +1964 -0
  79. package/dist/lazyAccessors-DHvDeww0.cjs.map +1 -0
  80. package/dist/processAudits-B0PbJf1Z.mjs +80 -0
  81. package/dist/processAudits-B0PbJf1Z.mjs.map +1 -0
  82. package/dist/processAudits-CUko08pi.cjs +92 -0
  83. package/dist/processAudits-CUko08pi.cjs.map +1 -0
  84. package/dist/subscribers/index.cjs +77 -6
  85. package/dist/subscribers/index.cjs.map +1 -1
  86. package/dist/subscribers/index.d.cts +27 -5
  87. package/dist/subscribers/index.d.cts.map +1 -1
  88. package/dist/subscribers/index.d.mts +26 -5
  89. package/dist/subscribers/index.d.mts.map +1 -1
  90. package/dist/subscribers/index.mjs +74 -3
  91. package/dist/subscribers/index.mjs.map +1 -1
  92. package/dist/{telemetry-BTaiRqPo.d.cts → telemetry-Bt0vK4ma.d.cts} +1 -1
  93. package/dist/{telemetry-BJo1gcV1.d.mts.map → telemetry-Bt0vK4ma.d.cts.map} +1 -1
  94. package/dist/{telemetry-BJo1gcV1.d.mts → telemetry-COvVBKBM.d.mts} +1 -1
  95. package/dist/{telemetry-BTaiRqPo.d.cts.map → telemetry-COvVBKBM.d.mts.map} +1 -1
  96. package/dist/{types-B5H3piDg.d.cts → types-B8YlI4cx.d.cts} +1 -1
  97. package/dist/{types-B5H3piDg.d.cts.map → types-B8YlI4cx.d.cts.map} +1 -1
  98. package/dist/{types-BqPOdHEm.d.mts → types-BA3eK4xj.d.mts} +1 -1
  99. package/dist/{types-BqPOdHEm.d.mts.map → types-BA3eK4xj.d.mts.map} +1 -1
  100. package/dist/types.d.cts +1 -1
  101. package/dist/types.d.mts +1 -1
  102. package/package.json +9 -9
  103. package/src/Construct.ts +26 -8
  104. package/src/__tests__/Construct.environment.spec.ts +123 -0
  105. package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +1 -9
  106. package/tsdown.config.ts +30 -1
  107. package/dist/AWSLambdaFunction-CC8gMZhz.d.mts +0 -32
  108. package/dist/AWSLambdaFunction-CC8gMZhz.d.mts.map +0 -1
  109. package/dist/AWSLambdaFunction-CPEAl5nZ.cjs +0 -120
  110. package/dist/AWSLambdaFunction-CPEAl5nZ.cjs.map +0 -1
  111. package/dist/AWSLambdaFunction-DJiCAPAf.mjs +0 -114
  112. package/dist/AWSLambdaFunction-DJiCAPAf.mjs.map +0 -1
  113. package/dist/AWSLambdaFunction-tzqv5XU6.d.cts +0 -32
  114. package/dist/AWSLambdaFunction-tzqv5XU6.d.cts.map +0 -1
  115. package/dist/AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts +0 -36
  116. package/dist/AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts.map +0 -1
  117. package/dist/AWSLambdaSubscriberAdaptor-Cmx9OQGG.d.mts +0 -36
  118. package/dist/AWSLambdaSubscriberAdaptor-Cmx9OQGG.d.mts.map +0 -1
  119. package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs +0 -172
  120. package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs.map +0 -1
  121. package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs +0 -178
  122. package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs.map +0 -1
  123. package/dist/AmazonApiGatewayEndpointAdaptor-BIltcbAc.cjs +0 -277
  124. package/dist/AmazonApiGatewayEndpointAdaptor-BIltcbAc.cjs.map +0 -1
  125. package/dist/AmazonApiGatewayEndpointAdaptor-BpYtYCeW.mjs +0 -271
  126. package/dist/AmazonApiGatewayEndpointAdaptor-BpYtYCeW.mjs.map +0 -1
  127. package/dist/AmazonApiGatewayEndpointAdaptor-DA0rS_1Y.d.mts +0 -124
  128. package/dist/AmazonApiGatewayEndpointAdaptor-DA0rS_1Y.d.mts.map +0 -1
  129. package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts +0 -124
  130. package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts.map +0 -1
  131. package/dist/AmazonApiGatewayV1EndpointAdaptor-C7rJzNvG.d.mts +0 -23
  132. package/dist/AmazonApiGatewayV1EndpointAdaptor-C7rJzNvG.d.mts.map +0 -1
  133. package/dist/AmazonApiGatewayV1EndpointAdaptor-CRwyWT6t.mjs +0 -42
  134. package/dist/AmazonApiGatewayV1EndpointAdaptor-CRwyWT6t.mjs.map +0 -1
  135. package/dist/AmazonApiGatewayV1EndpointAdaptor-DEETT6Wj.cjs +0 -47
  136. package/dist/AmazonApiGatewayV1EndpointAdaptor-DEETT6Wj.cjs.map +0 -1
  137. package/dist/AmazonApiGatewayV1EndpointAdaptor-DcN2fYsv.d.cts +0 -23
  138. package/dist/AmazonApiGatewayV1EndpointAdaptor-DcN2fYsv.d.cts.map +0 -1
  139. package/dist/AmazonApiGatewayV2EndpointAdaptor-C2qO8FN6.cjs +0 -48
  140. package/dist/AmazonApiGatewayV2EndpointAdaptor-C2qO8FN6.cjs.map +0 -1
  141. package/dist/AmazonApiGatewayV2EndpointAdaptor-Cn9UoRgB.d.cts +0 -22
  142. package/dist/AmazonApiGatewayV2EndpointAdaptor-Cn9UoRgB.d.cts.map +0 -1
  143. package/dist/AmazonApiGatewayV2EndpointAdaptor-d7NP-bZX.d.mts +0 -22
  144. package/dist/AmazonApiGatewayV2EndpointAdaptor-d7NP-bZX.d.mts.map +0 -1
  145. package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs +0 -42
  146. package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs.map +0 -1
  147. package/dist/Authorizer-BZ1LcZFt.cjs +0 -92
  148. package/dist/Authorizer-BZ1LcZFt.cjs.map +0 -1
  149. package/dist/Authorizer-C5_FC_Rq.d.mts +0 -126
  150. package/dist/Authorizer-C5_FC_Rq.d.mts.map +0 -1
  151. package/dist/Authorizer-CZpg1Jqk.mjs +0 -68
  152. package/dist/Authorizer-CZpg1Jqk.mjs.map +0 -1
  153. package/dist/Authorizer-DWtwC8we.d.cts +0 -126
  154. package/dist/Authorizer-DWtwC8we.d.cts.map +0 -1
  155. package/dist/BaseFunctionBuilder-C-4hYTfj.d.cts +0 -42
  156. package/dist/BaseFunctionBuilder-C-4hYTfj.d.cts.map +0 -1
  157. package/dist/BaseFunctionBuilder-C3rQMoWb.mjs +0 -70
  158. package/dist/BaseFunctionBuilder-C3rQMoWb.mjs.map +0 -1
  159. package/dist/BaseFunctionBuilder-DXf6HK-N.cjs +0 -76
  160. package/dist/BaseFunctionBuilder-DXf6HK-N.cjs.map +0 -1
  161. package/dist/BaseFunctionBuilder-Q5qIlF-F.d.mts +0 -42
  162. package/dist/BaseFunctionBuilder-Q5qIlF-F.d.mts.map +0 -1
  163. package/dist/Construct-BXG8cFSm.cjs.map +0 -1
  164. package/dist/Construct-CQ9zV58W.mjs.map +0 -1
  165. package/dist/Construct-CX7HyFfT.d.cts.map +0 -1
  166. package/dist/Construct.cjs +0 -6
  167. package/dist/Construct.d.cts +0 -2
  168. package/dist/Construct.d.mts +0 -2
  169. package/dist/Construct.mjs +0 -3
  170. package/dist/Cron-BljK1gsV.d.mts +0 -26
  171. package/dist/Cron-BljK1gsV.d.mts.map +0 -1
  172. package/dist/Cron-C1vyfJ8B.cjs +0 -25
  173. package/dist/Cron-C1vyfJ8B.cjs.map +0 -1
  174. package/dist/Cron-CjWQEad0.mjs +0 -20
  175. package/dist/Cron-CjWQEad0.mjs.map +0 -1
  176. package/dist/Cron-CllHkk3z.d.cts +0 -26
  177. package/dist/Cron-CllHkk3z.d.cts.map +0 -1
  178. package/dist/CronBuilder-CAJFtnmZ.mjs +0 -68
  179. package/dist/CronBuilder-CAJFtnmZ.mjs.map +0 -1
  180. package/dist/CronBuilder-CG54f9LM.d.mts +0 -32
  181. package/dist/CronBuilder-CG54f9LM.d.mts.map +0 -1
  182. package/dist/CronBuilder-CSMd02lu.cjs +0 -74
  183. package/dist/CronBuilder-CSMd02lu.cjs.map +0 -1
  184. package/dist/CronBuilder-i23l40xs.d.cts +0 -32
  185. package/dist/CronBuilder-i23l40xs.d.cts.map +0 -1
  186. package/dist/Endpoint-BET0JSZK.d.mts.map +0 -1
  187. package/dist/Endpoint-BcxvF4F3.cjs +0 -440
  188. package/dist/Endpoint-BcxvF4F3.cjs.map +0 -1
  189. package/dist/Endpoint-CGdCGJkC.d.cts.map +0 -1
  190. package/dist/Endpoint-DvY3aqAy.mjs +0 -422
  191. package/dist/Endpoint-DvY3aqAy.mjs.map +0 -1
  192. package/dist/EndpointBuilder-6kdrQyIh.d.mts +0 -146
  193. package/dist/EndpointBuilder-6kdrQyIh.d.mts.map +0 -1
  194. package/dist/EndpointBuilder-CSwIguiR.d.cts +0 -146
  195. package/dist/EndpointBuilder-CSwIguiR.d.cts.map +0 -1
  196. package/dist/EndpointBuilder-EptJojG9.cjs +0 -268
  197. package/dist/EndpointBuilder-EptJojG9.cjs.map +0 -1
  198. package/dist/EndpointBuilder-iDpnACRb.mjs +0 -262
  199. package/dist/EndpointBuilder-iDpnACRb.mjs.map +0 -1
  200. package/dist/EndpointFactory-CBagQW5j.d.mts +0 -142
  201. package/dist/EndpointFactory-CBagQW5j.d.mts.map +0 -1
  202. package/dist/EndpointFactory-D2QxeaAh.cjs +0 -393
  203. package/dist/EndpointFactory-D2QxeaAh.cjs.map +0 -1
  204. package/dist/EndpointFactory-DQYSH8XK.d.cts +0 -142
  205. package/dist/EndpointFactory-DQYSH8XK.d.cts.map +0 -1
  206. package/dist/EndpointFactory-wgcqWod-.mjs +0 -381
  207. package/dist/EndpointFactory-wgcqWod-.mjs.map +0 -1
  208. package/dist/Function-CwlB89lS.d.cts +0 -76
  209. package/dist/Function-CwlB89lS.d.cts.map +0 -1
  210. package/dist/Function-D74HrBnX.d.mts +0 -76
  211. package/dist/Function-D74HrBnX.d.mts.map +0 -1
  212. package/dist/Function-DgQ_no6B.cjs +0 -84
  213. package/dist/Function-DgQ_no6B.cjs.map +0 -1
  214. package/dist/Function-xfQbftdE.mjs +0 -72
  215. package/dist/Function-xfQbftdE.mjs.map +0 -1
  216. package/dist/FunctionBuilder-CBeqX18X.mjs +0 -80
  217. package/dist/FunctionBuilder-CBeqX18X.mjs.map +0 -1
  218. package/dist/FunctionBuilder-C_qPxC8g.d.mts +0 -40
  219. package/dist/FunctionBuilder-C_qPxC8g.d.mts.map +0 -1
  220. package/dist/FunctionBuilder-C_xG9As7.cjs +0 -86
  221. package/dist/FunctionBuilder-C_xG9As7.cjs.map +0 -1
  222. package/dist/FunctionBuilder-D_7f5MfS.d.cts +0 -40
  223. package/dist/FunctionBuilder-D_7f5MfS.d.cts.map +0 -1
  224. package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs +0 -101
  225. package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs.map +0 -1
  226. package/dist/FunctionExecutionWrapper-Cg8HjuHL.d.cts +0 -50
  227. package/dist/FunctionExecutionWrapper-Cg8HjuHL.d.cts.map +0 -1
  228. package/dist/FunctionExecutionWrapper-KKHP6fDY.cjs +0 -107
  229. package/dist/FunctionExecutionWrapper-KKHP6fDY.cjs.map +0 -1
  230. package/dist/FunctionExecutionWrapper-xbTmBARx.d.mts +0 -50
  231. package/dist/FunctionExecutionWrapper-xbTmBARx.d.mts.map +0 -1
  232. package/dist/HonoEndpointAdaptor-B5fKdLi7.cjs.map +0 -1
  233. package/dist/HonoEndpointAdaptor-C2deTEwW.d.mts +0 -50
  234. package/dist/HonoEndpointAdaptor-C2deTEwW.d.mts.map +0 -1
  235. package/dist/HonoEndpointAdaptor-D3IgM-0B.d.cts +0 -50
  236. package/dist/HonoEndpointAdaptor-D3IgM-0B.d.cts.map +0 -1
  237. package/dist/HonoEndpointAdaptor-DOUODM7n.mjs.map +0 -1
  238. package/dist/MswEndpointAdaptor-B41INCc7.mjs +0 -108
  239. package/dist/MswEndpointAdaptor-B41INCc7.mjs.map +0 -1
  240. package/dist/MswEndpointAdaptor-CA_fu6Wx.cjs +0 -120
  241. package/dist/MswEndpointAdaptor-CA_fu6Wx.cjs.map +0 -1
  242. package/dist/MswEndpointAdaptor-CXgYbOxw.d.mts +0 -101
  243. package/dist/MswEndpointAdaptor-CXgYbOxw.d.mts.map +0 -1
  244. package/dist/MswEndpointAdaptor-CsYvrQeB.d.cts +0 -101
  245. package/dist/MswEndpointAdaptor-CsYvrQeB.d.cts.map +0 -1
  246. package/dist/Subscriber-9ObcUdcC.d.mts.map +0 -1
  247. package/dist/Subscriber-BH76wgkL.mjs +0 -28
  248. package/dist/Subscriber-BH76wgkL.mjs.map +0 -1
  249. package/dist/Subscriber-BgspJeS4.cjs +0 -34
  250. package/dist/Subscriber-BgspJeS4.cjs.map +0 -1
  251. package/dist/SubscriberBuilder-B4md5wzs.mjs +0 -54
  252. package/dist/SubscriberBuilder-B4md5wzs.mjs.map +0 -1
  253. package/dist/SubscriberBuilder-Be7WBbCL.d.cts +0 -28
  254. package/dist/SubscriberBuilder-Be7WBbCL.d.cts.map +0 -1
  255. package/dist/SubscriberBuilder-BtL22ZJ9.cjs +0 -60
  256. package/dist/SubscriberBuilder-BtL22ZJ9.cjs.map +0 -1
  257. package/dist/SubscriberBuilder-DsfIkgTF.d.mts +0 -28
  258. package/dist/SubscriberBuilder-DsfIkgTF.d.mts.map +0 -1
  259. package/dist/TestEndpointAdaptor-BFmgf7Fn.mjs +0 -174
  260. package/dist/TestEndpointAdaptor-BFmgf7Fn.mjs.map +0 -1
  261. package/dist/TestEndpointAdaptor-C79Z-QS4.d.mts +0 -45
  262. package/dist/TestEndpointAdaptor-C79Z-QS4.d.mts.map +0 -1
  263. package/dist/TestEndpointAdaptor-DYLDyAAC.cjs +0 -180
  264. package/dist/TestEndpointAdaptor-DYLDyAAC.cjs.map +0 -1
  265. package/dist/TestEndpointAdaptor-pM8yskbb.d.cts +0 -45
  266. package/dist/TestEndpointAdaptor-pM8yskbb.d.cts.map +0 -1
  267. package/dist/TestFunctionAdaptor-B859kIeb.cjs +0 -81
  268. package/dist/TestFunctionAdaptor-B859kIeb.cjs.map +0 -1
  269. package/dist/TestFunctionAdaptor-C0A-VqnM.d.mts +0 -30
  270. package/dist/TestFunctionAdaptor-C0A-VqnM.d.mts.map +0 -1
  271. package/dist/TestFunctionAdaptor-CqdSlhx1.mjs +0 -75
  272. package/dist/TestFunctionAdaptor-CqdSlhx1.mjs.map +0 -1
  273. package/dist/TestFunctionAdaptor-Dbq55dKP.d.cts +0 -30
  274. package/dist/TestFunctionAdaptor-Dbq55dKP.d.cts.map +0 -1
  275. package/dist/TestSubscriberAdaptor-BEyCFP9G.d.mts +0 -26
  276. package/dist/TestSubscriberAdaptor-BEyCFP9G.d.mts.map +0 -1
  277. package/dist/TestSubscriberAdaptor-BknOLRQw.d.cts +0 -26
  278. package/dist/TestSubscriberAdaptor-BknOLRQw.d.cts.map +0 -1
  279. package/dist/TestSubscriberAdaptor-CCcviuKa.mjs +0 -51
  280. package/dist/TestSubscriberAdaptor-CCcviuKa.mjs.map +0 -1
  281. package/dist/TestSubscriberAdaptor-_69o1d0f.cjs +0 -57
  282. package/dist/TestSubscriberAdaptor-_69o1d0f.cjs.map +0 -1
  283. package/dist/chunk-CUT6urMc.cjs +0 -30
  284. package/dist/crons/Cron.cjs +0 -8
  285. package/dist/crons/Cron.d.cts +0 -7
  286. package/dist/crons/Cron.d.mts +0 -7
  287. package/dist/crons/Cron.mjs +0 -8
  288. package/dist/crons/CronBuilder.cjs +0 -9
  289. package/dist/crons/CronBuilder.d.cts +0 -8
  290. package/dist/crons/CronBuilder.d.mts +0 -8
  291. package/dist/crons/CronBuilder.mjs +0 -9
  292. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +0 -11
  293. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +0 -11
  294. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +0 -11
  295. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +0 -11
  296. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +0 -13
  297. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +0 -12
  298. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +0 -12
  299. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +0 -13
  300. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +0 -13
  301. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +0 -12
  302. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +0 -12
  303. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +0 -13
  304. package/dist/endpoints/Authorizer.cjs +0 -6
  305. package/dist/endpoints/Authorizer.d.cts +0 -2
  306. package/dist/endpoints/Authorizer.d.mts +0 -2
  307. package/dist/endpoints/Authorizer.mjs +0 -3
  308. package/dist/endpoints/Endpoint.cjs +0 -10
  309. package/dist/endpoints/Endpoint.d.cts +0 -9
  310. package/dist/endpoints/Endpoint.d.mts +0 -9
  311. package/dist/endpoints/Endpoint.mjs +0 -8
  312. package/dist/endpoints/EndpointBuilder.cjs +0 -11
  313. package/dist/endpoints/EndpointBuilder.d.cts +0 -10
  314. package/dist/endpoints/EndpointBuilder.d.mts +0 -10
  315. package/dist/endpoints/EndpointBuilder.mjs +0 -11
  316. package/dist/endpoints/EndpointFactory.cjs +0 -13
  317. package/dist/endpoints/EndpointFactory.d.cts +0 -11
  318. package/dist/endpoints/EndpointFactory.d.mts +0 -11
  319. package/dist/endpoints/EndpointFactory.mjs +0 -12
  320. package/dist/endpoints/HonoEndpointAdaptor.cjs +0 -14
  321. package/dist/endpoints/HonoEndpointAdaptor.d.cts +0 -10
  322. package/dist/endpoints/HonoEndpointAdaptor.d.mts +0 -10
  323. package/dist/endpoints/HonoEndpointAdaptor.mjs +0 -14
  324. package/dist/endpoints/MswEndpointAdaptor.cjs +0 -16
  325. package/dist/endpoints/MswEndpointAdaptor.d.cts +0 -10
  326. package/dist/endpoints/MswEndpointAdaptor.d.mts +0 -10
  327. package/dist/endpoints/MswEndpointAdaptor.mjs +0 -15
  328. package/dist/endpoints/TestEndpointAdaptor.cjs +0 -12
  329. package/dist/endpoints/TestEndpointAdaptor.d.cts +0 -10
  330. package/dist/endpoints/TestEndpointAdaptor.d.mts +0 -10
  331. package/dist/endpoints/TestEndpointAdaptor.mjs +0 -12
  332. package/dist/endpoints/audit.cjs +0 -0
  333. package/dist/endpoints/audit.d.cts +0 -9
  334. package/dist/endpoints/audit.d.mts +0 -9
  335. package/dist/endpoints/audit.mjs +0 -0
  336. package/dist/endpoints/helpers.cjs +0 -10
  337. package/dist/endpoints/helpers.d.cts +0 -60
  338. package/dist/endpoints/helpers.d.cts.map +0 -1
  339. package/dist/endpoints/helpers.d.mts +0 -60
  340. package/dist/endpoints/helpers.d.mts.map +0 -1
  341. package/dist/endpoints/helpers.mjs +0 -9
  342. package/dist/endpoints/lazyAccessors.cjs +0 -10
  343. package/dist/endpoints/lazyAccessors.d.cts +0 -10
  344. package/dist/endpoints/lazyAccessors.d.mts +0 -10
  345. package/dist/endpoints/lazyAccessors.mjs +0 -3
  346. package/dist/endpoints/parseHonoQuery.cjs +0 -3
  347. package/dist/endpoints/parseHonoQuery.d.cts +0 -14
  348. package/dist/endpoints/parseHonoQuery.d.cts.map +0 -1
  349. package/dist/endpoints/parseHonoQuery.d.mts +0 -14
  350. package/dist/endpoints/parseHonoQuery.d.mts.map +0 -1
  351. package/dist/endpoints/parseHonoQuery.mjs +0 -3
  352. package/dist/endpoints/parseQueryParams.cjs +0 -3
  353. package/dist/endpoints/parseQueryParams.d.cts +0 -14
  354. package/dist/endpoints/parseQueryParams.d.cts.map +0 -1
  355. package/dist/endpoints/parseQueryParams.d.mts +0 -14
  356. package/dist/endpoints/parseQueryParams.d.mts.map +0 -1
  357. package/dist/endpoints/parseQueryParams.mjs +0 -3
  358. package/dist/endpoints/processAudits.cjs +0 -5
  359. package/dist/endpoints/processAudits.d.cts +0 -95
  360. package/dist/endpoints/processAudits.d.cts.map +0 -1
  361. package/dist/endpoints/processAudits.d.mts +0 -95
  362. package/dist/endpoints/processAudits.d.mts.map +0 -1
  363. package/dist/endpoints/processAudits.mjs +0 -3
  364. package/dist/endpoints/rls.cjs +0 -3
  365. package/dist/endpoints/rls.d.cts +0 -9
  366. package/dist/endpoints/rls.d.mts +0 -9
  367. package/dist/endpoints/rls.mjs +0 -3
  368. package/dist/functions/AWSLambdaFunction.cjs +0 -9
  369. package/dist/functions/AWSLambdaFunction.d.cts +0 -5
  370. package/dist/functions/AWSLambdaFunction.d.mts +0 -5
  371. package/dist/functions/AWSLambdaFunction.mjs +0 -9
  372. package/dist/functions/BaseFunctionBuilder.cjs +0 -4
  373. package/dist/functions/BaseFunctionBuilder.d.cts +0 -3
  374. package/dist/functions/BaseFunctionBuilder.d.mts +0 -3
  375. package/dist/functions/BaseFunctionBuilder.mjs +0 -4
  376. package/dist/functions/Function.cjs +0 -5
  377. package/dist/functions/Function.d.cts +0 -3
  378. package/dist/functions/Function.d.mts +0 -3
  379. package/dist/functions/Function.mjs +0 -4
  380. package/dist/functions/FunctionBuilder.cjs +0 -6
  381. package/dist/functions/FunctionBuilder.d.cts +0 -5
  382. package/dist/functions/FunctionBuilder.d.mts +0 -5
  383. package/dist/functions/FunctionBuilder.mjs +0 -6
  384. package/dist/functions/FunctionExecutionWrapper.cjs +0 -8
  385. package/dist/functions/FunctionExecutionWrapper.d.cts +0 -4
  386. package/dist/functions/FunctionExecutionWrapper.d.mts +0 -4
  387. package/dist/functions/FunctionExecutionWrapper.mjs +0 -8
  388. package/dist/functions/TestFunctionAdaptor.cjs +0 -8
  389. package/dist/functions/TestFunctionAdaptor.d.cts +0 -4
  390. package/dist/functions/TestFunctionAdaptor.d.mts +0 -4
  391. package/dist/functions/TestFunctionAdaptor.mjs +0 -8
  392. package/dist/functions-B1mrMoUH.mjs +0 -8
  393. package/dist/functions-B1mrMoUH.mjs.map +0 -1
  394. package/dist/functions-rOD3pXQd.cjs +0 -13
  395. package/dist/functions-rOD3pXQd.cjs.map +0 -1
  396. package/dist/helpers-BYyX0qTA.cjs +0 -95
  397. package/dist/helpers-BYyX0qTA.cjs.map +0 -1
  398. package/dist/helpers-BtwC2IW8.mjs +0 -83
  399. package/dist/helpers-BtwC2IW8.mjs.map +0 -1
  400. package/dist/index-BfeupgMl.d.cts +0 -12
  401. package/dist/index-BfeupgMl.d.cts.map +0 -1
  402. package/dist/index-Cg2UDz1r.d.mts +0 -12
  403. package/dist/index-Cg2UDz1r.d.mts.map +0 -1
  404. package/dist/lazyAccessors-BVEtB9lU.cjs +0 -223
  405. package/dist/lazyAccessors-BVEtB9lU.cjs.map +0 -1
  406. package/dist/lazyAccessors-Bxy5DBp4.d.cts +0 -49
  407. package/dist/lazyAccessors-Bxy5DBp4.d.cts.map +0 -1
  408. package/dist/lazyAccessors-CWFdtzSR.d.mts +0 -49
  409. package/dist/lazyAccessors-CWFdtzSR.d.mts.map +0 -1
  410. package/dist/lazyAccessors-DM6HcXQk.mjs +0 -175
  411. package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
  412. package/dist/parseHonoQuery-BBs8CX-H.cjs +0 -24
  413. package/dist/parseHonoQuery-BBs8CX-H.cjs.map +0 -1
  414. package/dist/parseHonoQuery-Cp8CII0P.mjs +0 -18
  415. package/dist/parseHonoQuery-Cp8CII0P.mjs.map +0 -1
  416. package/dist/parseQueryParams-B4RK1za3.cjs +0 -31
  417. package/dist/parseQueryParams-B4RK1za3.cjs.map +0 -1
  418. package/dist/parseQueryParams-DS3Qmrbd.mjs +0 -25
  419. package/dist/parseQueryParams-DS3Qmrbd.mjs.map +0 -1
  420. package/dist/processAudits-CzHkPokQ.cjs +0 -180
  421. package/dist/processAudits-CzHkPokQ.cjs.map +0 -1
  422. package/dist/processAudits-Dj8UGqcW.mjs +0 -162
  423. package/dist/processAudits-Dj8UGqcW.mjs.map +0 -1
  424. package/dist/publisher-BUDHcaz3.d.cts +0 -16
  425. package/dist/publisher-BUDHcaz3.d.cts.map +0 -1
  426. package/dist/publisher-Bw4770Hi.mjs +0 -41
  427. package/dist/publisher-Bw4770Hi.mjs.map +0 -1
  428. package/dist/publisher-DXglijK_.d.mts +0 -16
  429. package/dist/publisher-DXglijK_.d.mts.map +0 -1
  430. package/dist/publisher-lFQleddL.cjs +0 -53
  431. package/dist/publisher-lFQleddL.cjs.map +0 -1
  432. package/dist/publisher.cjs +0 -4
  433. package/dist/publisher.d.cts +0 -3
  434. package/dist/publisher.d.mts +0 -3
  435. package/dist/publisher.mjs +0 -3
  436. package/dist/rls-C0r4UKVm.mjs +0 -9
  437. package/dist/rls-C0r4UKVm.mjs.map +0 -1
  438. package/dist/rls-Cfb6w-tQ.cjs +0 -15
  439. package/dist/rls-Cfb6w-tQ.cjs.map +0 -1
  440. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +0 -3
  441. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +0 -4
  442. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +0 -4
  443. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +0 -3
  444. package/dist/subscribers/Subscriber.cjs +0 -4
  445. package/dist/subscribers/Subscriber.d.cts +0 -3
  446. package/dist/subscribers/Subscriber.d.mts +0 -3
  447. package/dist/subscribers/Subscriber.mjs +0 -4
  448. package/dist/subscribers/SubscriberBuilder.cjs +0 -5
  449. package/dist/subscribers/SubscriberBuilder.d.cts +0 -4
  450. package/dist/subscribers/SubscriberBuilder.d.mts +0 -4
  451. package/dist/subscribers/SubscriberBuilder.mjs +0 -5
  452. package/dist/subscribers/TestSubscriberAdaptor.cjs +0 -4
  453. package/dist/subscribers/TestSubscriberAdaptor.d.cts +0 -4
  454. package/dist/subscribers/TestSubscriberAdaptor.d.mts +0 -4
  455. package/dist/subscribers/TestSubscriberAdaptor.mjs +0 -4
  456. package/dist/telemetry.cjs +0 -0
  457. package/dist/telemetry.d.cts +0 -2
  458. package/dist/telemetry.d.mts +0 -2
  459. package/dist/telemetry.mjs +0 -0
@@ -1,120 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_FunctionBuilder = require('./FunctionBuilder-C_xG9As7.cjs');
3
- const require_FunctionExecutionWrapper = require('./FunctionExecutionWrapper-KKHP6fDY.cjs');
4
- const __middy_core = require_chunk.__toESM(require("@middy/core"));
5
- const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
6
- const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
7
-
8
- //#region src/functions/AWSLambdaFunction.ts
9
- var AWSLambdaFunction = class extends require_FunctionExecutionWrapper.FunctionExecutionWrapper {
10
- constructor(envParser, fn) {
11
- super(envParser, fn);
12
- this.fn = fn;
13
- }
14
- error() {
15
- return { onError: (req) => {
16
- const logger = req.event?.logger || this.fn.logger;
17
- logger.error(req.error || {}, "Error processing function");
18
- throw (0, __geekmidas_errors.wrapError)(req.error);
19
- } };
20
- }
21
- baseInput() {
22
- return { before: (_req) => {} };
23
- }
24
- input() {
25
- return { before: async (req) => {
26
- try {
27
- if (this.fn.input) {
28
- const parsedInput = await require_FunctionBuilder.FunctionBuilder.parseComposableStandardSchema(req.event, this.fn.input);
29
- req.event.parsedInput = parsedInput;
30
- } else req.event.parsedInput = req.event;
31
- } catch (error) {
32
- this.logger.error({
33
- error,
34
- event: req.event
35
- }, "Failed to parse input");
36
- throw error;
37
- }
38
- } };
39
- }
40
- loggerMiddleware() {
41
- return { before: (req) => {
42
- this._logger = this.fn.logger.child({
43
- fn: {
44
- name: req.context.functionName,
45
- version: req.context.functionVersion,
46
- memory: req.context.memoryLimitInMB
47
- },
48
- req: { id: req.context.awsRequestId }
49
- });
50
- req.event.logger = this._logger;
51
- } };
52
- }
53
- services() {
54
- return { before: async (req) => {
55
- req.event.services = await this.getServices();
56
- } };
57
- }
58
- database() {
59
- return { before: async (req) => {
60
- req.event.db = await this.getDatabase();
61
- } };
62
- }
63
- auditor() {
64
- return {
65
- before: async (req) => {
66
- req.event.auditor = await this.createAuditor();
67
- },
68
- after: async (req) => {
69
- if (req.event.auditor) {
70
- const records = req.event.auditor.getRecords();
71
- if (records.length > 0) {
72
- this.logger.debug({ auditCount: records.length }, "Flushing function audits");
73
- await req.event.auditor.flush();
74
- }
75
- }
76
- }
77
- };
78
- }
79
- events() {
80
- return { after: async (req) => {
81
- const response = req.response || void 0;
82
- await this.publishEvents(response);
83
- } };
84
- }
85
- async _handler(event) {
86
- const result = await this.fn.fn({
87
- input: event.parsedInput,
88
- services: event.services,
89
- logger: event.logger,
90
- db: event.db,
91
- auditor: event.auditor
92
- });
93
- const output = await this.fn.parseOutput(result);
94
- return output;
95
- }
96
- get handler() {
97
- const handler = this._handler.bind(this);
98
- const chain = (0, __middy_core.default)(handler).use(this.loggerMiddleware()).use(this.baseInput()).use(this.error()).use(this.services()).use(this.database()).use(this.auditor()).use(this.input()).use(this.events());
99
- const wrappedHandler = async (event, context) => {
100
- const startTime = Date.now();
101
- const requestId = context.awsRequestId;
102
- const logger = this.fn.logger.child({ requestId });
103
- return (0, __geekmidas_services.runWithRequestContext)({
104
- logger,
105
- requestId,
106
- startTime
107
- }, () => chain(event, context));
108
- };
109
- return wrappedHandler;
110
- }
111
- };
112
-
113
- //#endregion
114
- Object.defineProperty(exports, 'AWSLambdaFunction', {
115
- enumerable: true,
116
- get: function () {
117
- return AWSLambdaFunction;
118
- }
119
- });
120
- //# sourceMappingURL=AWSLambdaFunction-CPEAl5nZ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AWSLambdaFunction-CPEAl5nZ.cjs","names":["FunctionExecutionWrapper","envParser: EnvironmentParser<{}>","fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>","event: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>","event: unknown","context: Context"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n\tComposableStandardSchema,\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { runWithRequestContext } from '@geekmidas/services';\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';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype FunctionEvent<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = TEvent & {\n\tparsedInput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\tdb: TDatabase | undefined;\n\tauditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = MiddlewareObj<\n\tFunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n\tInferComposableStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaFunction<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> extends FunctionExecutionWrapper<\n\tTInput,\n\tTOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName,\n\tTAuditAction\n> {\n\tconstructor(\n\t\tenvParser: EnvironmentParser<{}>,\n\t\toverride readonly fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>,\n\t) {\n\t\tsuper(envParser, fn);\n\t}\n\n\tprivate error<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.fn.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing function');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate baseInput<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (_req) => {},\n\t\t};\n\t}\n\n\tprivate input<\n\t\tTEvent extends { input: InferComposableStandardSchema<TInput> },\n\t>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\t// Parse input if schema is provided\n\t\t\t\t\tif (this.fn.input) {\n\t\t\t\t\t\tconst parsedInput =\n\t\t\t\t\t\t\tawait FunctionBuilder.parseComposableStandardSchema(\n\t\t\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t\t\tthis.fn.input,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treq.event.parsedInput =\n\t\t\t\t\t\t\tparsedInput as InferComposableStandardSchema<TInput>;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If no schema, pass the event as-is\n\t\t\t\t\t\treq.event.parsedInput = req.event as any;\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t{ error, event: req.event },\n\t\t\t\t\t\t'Failed to parse input',\n\t\t\t\t\t);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.fn.logger.child({\n\t\t\t\t\tfn: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.db = await this.getDatabase();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate auditor<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.auditor = await this.createAuditor();\n\t\t\t},\n\t\t\tafter: async (req) => {\n\t\t\t\t// Flush any pending audits after successful execution\n\t\t\t\tif (req.event.auditor) {\n\t\t\t\t\tconst records = req.event.auditor.getRecords();\n\t\t\t\t\tif (records.length > 0) {\n\t\t\t\t\t\tthis.logger.debug(\n\t\t\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t\t\t'Flushing function audits',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait req.event.auditor.flush();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst response = (req.response ||\n\t\t\t\t\tundefined) as InferStandardSchema<TOutSchema>;\n\t\t\t\tawait this.publishEvents(response);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler<TEvent>(\n\t\tevent: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t) {\n\t\t// Execute the function with the parsed context\n\t\tconst result = await this.fn.fn({\n\t\t\tinput: event.parsedInput,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t\tdb: event.db,\n\t\t\tauditor: event.auditor,\n\t\t} as any);\n\n\t\t// Parse output if schema is provided\n\t\tconst output = await this.fn.parseOutput(result);\n\n\t\treturn output;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\tconst chain = middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.baseInput())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.database())\n\t\t\t.use(this.auditor())\n\t\t\t.use(this.input())\n\t\t\t.use(this.events());\n\n\t\t// Wrap entire Middy chain in request context for service access\n\t\tconst wrappedHandler = async (event: unknown, context: Context) => {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst requestId = context.awsRequestId;\n\t\t\tconst logger = this.fn.logger.child({ requestId }) as TLogger;\n\n\t\t\treturn runWithRequestContext({ logger, requestId, startTime }, () =>\n\t\t\t\tchain(event as Parameters<typeof chain>[0], context),\n\t\t\t);\n\t\t};\n\n\t\treturn wrappedHandler as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":"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"}
@@ -1,114 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-CBeqX18X.mjs";
2
- import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-B0ZAssiy.mjs";
3
- import middy from "@middy/core";
4
- import { wrapError } from "@geekmidas/errors";
5
- import { runWithRequestContext } from "@geekmidas/services";
6
-
7
- //#region src/functions/AWSLambdaFunction.ts
8
- var AWSLambdaFunction = class extends FunctionExecutionWrapper {
9
- constructor(envParser, fn) {
10
- super(envParser, fn);
11
- this.fn = fn;
12
- }
13
- error() {
14
- return { onError: (req) => {
15
- const logger = req.event?.logger || this.fn.logger;
16
- logger.error(req.error || {}, "Error processing function");
17
- throw wrapError(req.error);
18
- } };
19
- }
20
- baseInput() {
21
- return { before: (_req) => {} };
22
- }
23
- input() {
24
- return { before: async (req) => {
25
- try {
26
- if (this.fn.input) {
27
- const parsedInput = await FunctionBuilder.parseComposableStandardSchema(req.event, this.fn.input);
28
- req.event.parsedInput = parsedInput;
29
- } else req.event.parsedInput = req.event;
30
- } catch (error) {
31
- this.logger.error({
32
- error,
33
- event: req.event
34
- }, "Failed to parse input");
35
- throw error;
36
- }
37
- } };
38
- }
39
- loggerMiddleware() {
40
- return { before: (req) => {
41
- this._logger = this.fn.logger.child({
42
- fn: {
43
- name: req.context.functionName,
44
- version: req.context.functionVersion,
45
- memory: req.context.memoryLimitInMB
46
- },
47
- req: { id: req.context.awsRequestId }
48
- });
49
- req.event.logger = this._logger;
50
- } };
51
- }
52
- services() {
53
- return { before: async (req) => {
54
- req.event.services = await this.getServices();
55
- } };
56
- }
57
- database() {
58
- return { before: async (req) => {
59
- req.event.db = await this.getDatabase();
60
- } };
61
- }
62
- auditor() {
63
- return {
64
- before: async (req) => {
65
- req.event.auditor = await this.createAuditor();
66
- },
67
- after: async (req) => {
68
- if (req.event.auditor) {
69
- const records = req.event.auditor.getRecords();
70
- if (records.length > 0) {
71
- this.logger.debug({ auditCount: records.length }, "Flushing function audits");
72
- await req.event.auditor.flush();
73
- }
74
- }
75
- }
76
- };
77
- }
78
- events() {
79
- return { after: async (req) => {
80
- const response = req.response || void 0;
81
- await this.publishEvents(response);
82
- } };
83
- }
84
- async _handler(event) {
85
- const result = await this.fn.fn({
86
- input: event.parsedInput,
87
- services: event.services,
88
- logger: event.logger,
89
- db: event.db,
90
- auditor: event.auditor
91
- });
92
- const output = await this.fn.parseOutput(result);
93
- return output;
94
- }
95
- get handler() {
96
- const handler = this._handler.bind(this);
97
- const chain = middy(handler).use(this.loggerMiddleware()).use(this.baseInput()).use(this.error()).use(this.services()).use(this.database()).use(this.auditor()).use(this.input()).use(this.events());
98
- const wrappedHandler = async (event, context) => {
99
- const startTime = Date.now();
100
- const requestId = context.awsRequestId;
101
- const logger = this.fn.logger.child({ requestId });
102
- return runWithRequestContext({
103
- logger,
104
- requestId,
105
- startTime
106
- }, () => chain(event, context));
107
- };
108
- return wrappedHandler;
109
- }
110
- };
111
-
112
- //#endregion
113
- export { AWSLambdaFunction };
114
- //# sourceMappingURL=AWSLambdaFunction-DJiCAPAf.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AWSLambdaFunction-DJiCAPAf.mjs","names":["envParser: EnvironmentParser<{}>","fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>","event: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>","event: unknown","context: Context"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n\tComposableStandardSchema,\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { runWithRequestContext } from '@geekmidas/services';\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';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype FunctionEvent<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = TEvent & {\n\tparsedInput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\tdb: TDatabase | undefined;\n\tauditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = MiddlewareObj<\n\tFunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n\tInferComposableStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaFunction<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> extends FunctionExecutionWrapper<\n\tTInput,\n\tTOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName,\n\tTAuditAction\n> {\n\tconstructor(\n\t\tenvParser: EnvironmentParser<{}>,\n\t\toverride readonly fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>,\n\t) {\n\t\tsuper(envParser, fn);\n\t}\n\n\tprivate error<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.fn.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing function');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate baseInput<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (_req) => {},\n\t\t};\n\t}\n\n\tprivate input<\n\t\tTEvent extends { input: InferComposableStandardSchema<TInput> },\n\t>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\t// Parse input if schema is provided\n\t\t\t\t\tif (this.fn.input) {\n\t\t\t\t\t\tconst parsedInput =\n\t\t\t\t\t\t\tawait FunctionBuilder.parseComposableStandardSchema(\n\t\t\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t\t\tthis.fn.input,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treq.event.parsedInput =\n\t\t\t\t\t\t\tparsedInput as InferComposableStandardSchema<TInput>;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If no schema, pass the event as-is\n\t\t\t\t\t\treq.event.parsedInput = req.event as any;\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t{ error, event: req.event },\n\t\t\t\t\t\t'Failed to parse input',\n\t\t\t\t\t);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.fn.logger.child({\n\t\t\t\t\tfn: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.db = await this.getDatabase();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate auditor<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.auditor = await this.createAuditor();\n\t\t\t},\n\t\t\tafter: async (req) => {\n\t\t\t\t// Flush any pending audits after successful execution\n\t\t\t\tif (req.event.auditor) {\n\t\t\t\t\tconst records = req.event.auditor.getRecords();\n\t\t\t\t\tif (records.length > 0) {\n\t\t\t\t\t\tthis.logger.debug(\n\t\t\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t\t\t'Flushing function audits',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait req.event.auditor.flush();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst response = (req.response ||\n\t\t\t\t\tundefined) as InferStandardSchema<TOutSchema>;\n\t\t\t\tawait this.publishEvents(response);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler<TEvent>(\n\t\tevent: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t) {\n\t\t// Execute the function with the parsed context\n\t\tconst result = await this.fn.fn({\n\t\t\tinput: event.parsedInput,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t\tdb: event.db,\n\t\t\tauditor: event.auditor,\n\t\t} as any);\n\n\t\t// Parse output if schema is provided\n\t\tconst output = await this.fn.parseOutput(result);\n\n\t\treturn output;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\tconst chain = middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.baseInput())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.database())\n\t\t\t.use(this.auditor())\n\t\t\t.use(this.input())\n\t\t\t.use(this.events());\n\n\t\t// Wrap entire Middy chain in request context for service access\n\t\tconst wrappedHandler = async (event: unknown, context: Context) => {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst requestId = context.awsRequestId;\n\t\t\tconst logger = this.fn.logger.child({ requestId }) as TLogger;\n\n\t\t\treturn runWithRequestContext({ logger, requestId, startTime }, () =>\n\t\t\t\tchain(event as Parameters<typeof chain>[0], context),\n\t\t\t);\n\t\t};\n\n\t\treturn wrappedHandler as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import { Function, FunctionHandler } from "./Function-CwlB89lS.cjs";
2
- import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-Cg8HjuHL.cjs";
3
- import { AuditStorage, AuditableAction } from "@geekmidas/audit";
4
- import { EventPublisher } from "@geekmidas/events";
5
- import { Logger } from "@geekmidas/logger";
6
- import { Service } from "@geekmidas/services";
7
- import { StandardSchemaV1 } from "@standard-schema/spec";
8
- import { EnvironmentParser } from "@geekmidas/envkit";
9
- import { Handler } from "aws-lambda";
10
- import { ComposableStandardSchema } from "@geekmidas/schema";
11
-
12
- //#region src/functions/AWSLambdaFunction.d.ts
13
- type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
14
- declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> extends FunctionExecutionWrapper<TInput, TOutSchema, TServices, TLogger, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction> {
15
- readonly fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>;
16
- constructor(envParser: EnvironmentParser<{}>, fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>);
17
- private error;
18
- private baseInput;
19
- private input;
20
- private loggerMiddleware;
21
- private services;
22
- private database;
23
- private auditor;
24
- private events;
25
- private _handler;
26
- get handler(): AWSLambdaHandler;
27
- }
28
- //# sourceMappingURL=AWSLambdaFunction.d.ts.map
29
-
30
- //#endregion
31
- export { AWSLambdaFunction, AWSLambdaHandler };
32
- //# sourceMappingURL=AWSLambdaFunction-tzqv5XU6.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AWSLambdaFunction-tzqv5XU6.d.cts","names":[],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAmBY,gDAAgD,QAC3D,QACA;cAuCY,iCACG,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC,0CAI/C,yBACT,QACA,YACA,WACA,SACA,iBACA,4BACA,eACA,0BACA,WACA,sBACA;EAnEW,SAAA,EAAA,EAuEY,QAvEI,CAwEzB,MAxEyB,EAyEzB,SAzEyB,EA0EzB,OA1EyB,EA2EzB,UA3EyB,EA4EzB,eA5EyB,EA6EzB,0BA7EyB,EA8EzB,aA9EyB,EA+EzB,wBA/EyB,EAgFzB,SAhFyB,EAiFzB,oBAjFyB,EAkFzB,YAlFyB,EAmFzB,eAnFyB,CAoFxB,MApFwB,EAqFxB,SArFwB,EAsFxB,OAtFwB,EAuFxB,UAvFwB,EAwFxB,SAxFwB,EAyFxB,aAzFwB,EA0FxB,YA1FwB,CAAA,CAAA;EAAA,WAAA,CAAA,SAAA,EAsEf,iBAtEe,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAuEJ,QAvEI,CAwEzB,MAxEyB,EAyEzB,SAzEyB,EA0EzB,OA1EyB,EA2EzB,UA3EyB,EA4EzB,eA5EyB,EA6EzB,0BA7EyB,EA8EzB,aA9EyB,EA+EzB,wBA/EyB,EAgFzB,SAhFyB,EAiFzB,oBAjFyB,EAkFzB,YAlFyB,EAmFzB,eAnFyB,CAoFxB,MApFwB,EAqFxB,SArFwB,EAsFxB,OAtFwB,EAuFxB,UAvFwB,EAwFxB,SAxFwB,EAyFxB,aAzFwB,EA0FxB,YA1FwB,CAAA,CAAA;EAAA,QAC3B,KAAA;EAAM,QACN,SAAA;EAAO,QAFoD,KAAA;EAAO,QAAA,gBAAA;EAyCtD,QAAA,QAAA;EAAiB,QAAA,QAAA;EAAA,QACd,OAAA;EAAwB,QACpB,MAAA;EAAgB,QACjB,QAAA;EAAO,IACT,OAAA,CAAA,CAAA,EAgQD,gBAhQC"}
@@ -1,36 +0,0 @@
1
- import { Subscriber } from "./Subscriber-1rDE7HuM.cjs";
2
- import { EventPublisher } from "@geekmidas/events";
3
- import { Logger } from "@geekmidas/logger";
4
- import { Service } from "@geekmidas/services";
5
- import { StandardSchemaV1 } from "@standard-schema/spec";
6
- import { EnvironmentParser } from "@geekmidas/envkit";
7
- import { Handler } from "aws-lambda";
8
-
9
- //#region src/subscribers/AWSLambdaSubscriberAdaptor.d.ts
10
- type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
11
- declare class AWSLambdaSubscriber<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends any[] = []> {
12
- private envParser;
13
- readonly subscriber: Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
14
- private _logger;
15
- private _services;
16
- constructor(envParser: EnvironmentParser<{}>, subscriber: Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>);
17
- get logger(): TLogger;
18
- private getServices;
19
- private error;
20
- private loggerMiddleware;
21
- private services;
22
- private parseEvents;
23
- private isSQSEvent;
24
- private isSNSEvent;
25
- private parseSNSRecord;
26
- private parseSQSRecord;
27
- private safeJsonParse;
28
- private shouldIncludeEvent;
29
- private _handler;
30
- get handler(): AWSLambdaHandler;
31
- }
32
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor.d.ts.map
33
-
34
- //#endregion
35
- export { AWSLambdaHandler, AWSLambdaSubscriber };
36
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts","names":[],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAmBY,gDAAgD,QAC3D,QACA;cAoBY,sCACM,gCACF,SAAS,0BACP,kEACM;EA1Bb,QAAA,SAAA;EAAgB,SAAA,UAAA,EAmCL,UAnCK,CAoCzB,SApCyB,EAqCzB,OArCyB,EAsCzB,SAtCyB,EAuCzB,eAvCyB,EAwCzB,0BAxCyB,EAyCzB,iBAzCyB,CAAA;EAAA,QAC3B,OAAA;EAAM,QACN,SAAA;EAAO,WAFoD,CAAA,SAAA,EAkCvC,iBAlCuC,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAmCrC,UAnCqC,CAoCzD,SApCyD,EAqCzD,OArCyD,EAsCzD,SAtCyD,EAuCzD,eAvCyD,EAwCzD,0BAxCyD,EAyCzD,iBAzCyD,CAAA;EAAO,IAAA,MAAA,CAAA,CAAA,EA+CpD,OA/CoD;EAsBtD,QAAA,WAAA;EAAmB,QAAA,KAAA;EAAA,QACb,gBAAA;EAAO,QACT,QAAA;EAAM,QAAG,WAAA;EAAM,QACb,UAAA;EAAgB,QACV,UAAA;EAAc,QAUpC,cAAA;EAAS,QACT,cAAA;EAAO,QACP,aAAA;EAAS,QACT,kBAAA;EAAe,QACf,QAAA;EAA0B,IAC1B,OAAA,CAAA,CAAA,EAgQa,gBAhQb"}
@@ -1,36 +0,0 @@
1
- import { Subscriber } from "./Subscriber-9ObcUdcC.mjs";
2
- import { Service } from "@geekmidas/services";
3
- import { EnvironmentParser } from "@geekmidas/envkit";
4
- import { EventPublisher } from "@geekmidas/events";
5
- import { Logger } from "@geekmidas/logger";
6
- import { StandardSchemaV1 } from "@standard-schema/spec";
7
- import { Handler } from "aws-lambda";
8
-
9
- //#region src/subscribers/AWSLambdaSubscriberAdaptor.d.ts
10
- type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
11
- declare class AWSLambdaSubscriber<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends any[] = []> {
12
- private envParser;
13
- readonly subscriber: Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
14
- private _logger;
15
- private _services;
16
- constructor(envParser: EnvironmentParser<{}>, subscriber: Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>);
17
- get logger(): TLogger;
18
- private getServices;
19
- private error;
20
- private loggerMiddleware;
21
- private services;
22
- private parseEvents;
23
- private isSQSEvent;
24
- private isSNSEvent;
25
- private parseSNSRecord;
26
- private parseSQSRecord;
27
- private safeJsonParse;
28
- private shouldIncludeEvent;
29
- private _handler;
30
- get handler(): AWSLambdaHandler;
31
- }
32
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor.d.ts.map
33
-
34
- //#endregion
35
- export { AWSLambdaHandler, AWSLambdaSubscriber };
36
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-Cmx9OQGG.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AWSLambdaSubscriberAdaptor-Cmx9OQGG.d.mts","names":[],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAmBY,gDAAgD,QAC3D,QACA;cAoBY,sCACM,gCACF,SAAS,0BACP,kEACM;EA1Bb,QAAA,SAAA;EAAgB,SAAA,UAAA,EAmCL,UAnCK,CAoCzB,SApCyB,EAqCzB,OArCyB,EAsCzB,SAtCyB,EAuCzB,eAvCyB,EAwCzB,0BAxCyB,EAyCzB,iBAzCyB,CAAA;EAAA,QAC3B,OAAA;EAAM,QACN,SAAA;EAAO,WAFoD,CAAA,SAAA,EAkCvC,iBAlCuC,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAmCrC,UAnCqC,CAoCzD,SApCyD,EAqCzD,OArCyD,EAsCzD,SAtCyD,EAuCzD,eAvCyD,EAwCzD,0BAxCyD,EAyCzD,iBAzCyD,CAAA;EAAO,IAAA,MAAA,CAAA,CAAA,EA+CpD,OA/CoD;EAsBtD,QAAA,WAAA;EAAmB,QAAA,KAAA;EAAA,QACb,gBAAA;EAAO,QACT,QAAA;EAAM,QAAG,WAAA;EAAM,QACb,UAAA;EAAgB,QACV,UAAA;EAAc,QAUpC,cAAA;EAAS,QACT,cAAA;EAAO,QACP,aAAA;EAAS,QACT,kBAAA;EAAe,QACf,QAAA;EAA0B,IAC1B,OAAA,CAAA,CAAA,EAgQa,gBAhQb"}
@@ -1,172 +0,0 @@
1
- import middy from "@middy/core";
2
- import { wrapError } from "@geekmidas/errors";
3
- import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
4
-
5
- //#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
6
- var AWSLambdaSubscriber = class {
7
- _logger;
8
- _services;
9
- constructor(envParser, subscriber) {
10
- this.envParser = envParser;
11
- this.subscriber = subscriber;
12
- this._logger = subscriber.logger;
13
- }
14
- get logger() {
15
- return this._logger;
16
- }
17
- async getServices() {
18
- if (this._services) return this._services;
19
- const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
20
- if (this.subscriber.services.length > 0) {
21
- const registered = await serviceDiscovery.register(this.subscriber.services);
22
- this._services = registered;
23
- } else this._services = {};
24
- return this._services;
25
- }
26
- error() {
27
- return { onError: (req) => {
28
- const logger = req.event?.logger || this.subscriber.logger;
29
- logger.error(req.error || {}, "Error processing subscriber");
30
- throw wrapError(req.error);
31
- } };
32
- }
33
- loggerMiddleware() {
34
- return { before: (req) => {
35
- this._logger = this.subscriber.logger.child({
36
- subscriber: {
37
- name: req.context.functionName,
38
- version: req.context.functionVersion,
39
- memory: req.context.memoryLimitInMB
40
- },
41
- req: { id: req.context.awsRequestId }
42
- });
43
- req.event.logger = this._logger;
44
- } };
45
- }
46
- services() {
47
- return { before: async (req) => {
48
- req.event.services = await this.getServices();
49
- } };
50
- }
51
- parseEvents() {
52
- return { before: async (req) => {
53
- const { logger,...e } = req.event;
54
- const rawEvent = e;
55
- logger.info({ rawEvent });
56
- const events = [];
57
- if ("Records" in rawEvent) {
58
- if (this.isSQSEvent(rawEvent)) for (const record of rawEvent.Records) try {
59
- const event = this.parseSQSRecord(record);
60
- if (this.shouldIncludeEvent(event)) events.push(event);
61
- } catch (error) {
62
- this.logger.error({
63
- error,
64
- record
65
- }, "Failed to parse SQS record");
66
- }
67
- else if (this.isSNSEvent(rawEvent)) for (const record of rawEvent.Records) try {
68
- const event = this.parseSNSRecord(record);
69
- if (this.shouldIncludeEvent(event)) events.push(event);
70
- } catch (error) {
71
- this.logger.error({
72
- error,
73
- record
74
- }, "Failed to parse SNS record");
75
- }
76
- }
77
- req.event.events = events;
78
- } };
79
- }
80
- isSQSEvent(event) {
81
- const firstRecord = event.Records[0];
82
- return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
83
- }
84
- isSNSEvent(event) {
85
- const firstRecord = event.Records[0];
86
- return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
87
- }
88
- parseSNSRecord(record) {
89
- const message = this.safeJsonParse(record.Sns.Message);
90
- const messageType = record.Sns.MessageAttributes?.type?.Value;
91
- if (message === null) return messageType ? {
92
- type: messageType,
93
- payload: record.Sns.Message
94
- } : record.Sns.Message;
95
- const resolvedType = messageType ?? message.type;
96
- if (message.type) return message;
97
- return resolvedType ? {
98
- type: resolvedType,
99
- payload: message
100
- } : message;
101
- }
102
- parseSQSRecord(record) {
103
- const body = this.safeJsonParse(record.body);
104
- if (body === null) return record.body;
105
- if (body.Type === "Notification" && body.Message) {
106
- const snsMessage = this.safeJsonParse(body.Message);
107
- const messageType = body.MessageAttributes?.type?.Value;
108
- if (snsMessage === null) return messageType ? {
109
- type: messageType,
110
- payload: body.Message
111
- } : body.Message;
112
- if (snsMessage.type) return snsMessage;
113
- const resolvedType = messageType ?? snsMessage.type;
114
- return resolvedType ? {
115
- type: resolvedType,
116
- payload: snsMessage
117
- } : snsMessage;
118
- }
119
- return body;
120
- }
121
- safeJsonParse(value) {
122
- try {
123
- return JSON.parse(value);
124
- } catch {
125
- return null;
126
- }
127
- }
128
- shouldIncludeEvent(event) {
129
- if (typeof event !== "object" || !event?.type) return true;
130
- if (!this.subscriber.subscribedEvents) return true;
131
- return this.subscriber.subscribedEvents.includes(event.type);
132
- }
133
- async _handler(event) {
134
- if (event.events.length === 0) {
135
- this.logger.info("No subscribed events to process");
136
- return { batchItemFailures: [] };
137
- }
138
- const result = await this.subscriber.handler({
139
- events: event.events,
140
- services: event.services,
141
- logger: event.logger
142
- });
143
- if (this.subscriber.outputSchema && result) {
144
- const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
145
- if (validationResult.issues) {
146
- this.logger.error({ issues: validationResult.issues }, "Subscriber output validation failed");
147
- throw new Error("Subscriber output validation failed");
148
- }
149
- return validationResult.value;
150
- }
151
- return result;
152
- }
153
- get handler() {
154
- const handler = this._handler.bind(this);
155
- const chain = middy(handler).use(this.loggerMiddleware()).use(this.parseEvents()).use(this.error()).use(this.services());
156
- const wrappedHandler = async (event, context) => {
157
- const startTime = Date.now();
158
- const requestId = context.awsRequestId;
159
- const logger = this.subscriber.logger.child({ requestId });
160
- return runWithRequestContext({
161
- logger,
162
- requestId,
163
- startTime
164
- }, () => chain(event, context));
165
- };
166
- return wrappedHandler;
167
- }
168
- };
169
-
170
- //#endregion
171
- export { AWSLambdaSubscriber };
172
- //# sourceMappingURL=AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>","events: any[]","event: SQSEvent | SNSEvent","record: SNSEventRecord","record: SQSRecord","value: string","event: any","event: SubscriberEvent<TServices, TLogger>","event: unknown","context: Context"],"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 { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { runWithRequestContext, ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n\tContext,\n\tHandler,\n\tSNSEvent,\n\tSNSEventRecord,\n\tSQSEvent,\n\tSQSRecord,\n} from 'aws-lambda';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n\tevents: any[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n\ntype Middleware<\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n\tSubscriberEvent<TServices, TLogger>,\n\tInferStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaSubscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _logger!: TLogger;\n\tprivate _services!: ServiceRecord<TServices>;\n\n\tconstructor(\n\t\tprivate envParser: EnvironmentParser<{}>,\n\t\treadonly subscriber: Subscriber<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>,\n\t) {\n\t\tthis._logger = subscriber.logger;\n\t}\n\n\tget logger(): TLogger {\n\t\treturn this._logger;\n\t}\n\n\tprivate async getServices(): Promise<ServiceRecord<TServices>> {\n\t\tif (this._services) {\n\t\t\treturn this._services;\n\t\t}\n\n\t\tconst serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);\n\n\t\tif (this.subscriber.services.length > 0) {\n\t\t\tconst registered = await serviceDiscovery.register(\n\t\t\t\tthis.subscriber.services,\n\t\t\t);\n\t\t\tthis._services = registered as ServiceRecord<TServices>;\n\t\t} else {\n\t\t\tthis._services = {} as ServiceRecord<TServices>;\n\t\t}\n\n\t\treturn this._services;\n\t}\n\n\tprivate error(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.subscriber.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing subscriber');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.subscriber.logger.child({\n\t\t\t\t\tsubscriber: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst { logger, ...e } = req.event;\n\t\t\t\tconst rawEvent = e as any as SQSEvent | SNSEvent;\n\n\t\t\t\tlogger.info({\n\t\t\t\t\trawEvent,\n\t\t\t\t});\n\n\t\t\t\t// Parse events based on the event type\n\t\t\t\tconst events: any[] = [];\n\n\t\t\t\tif ('Records' in rawEvent) {\n\t\t\t\t\tif (this.isSQSEvent(rawEvent)) {\n\t\t\t\t\t\t// SQS Event\n\t\t\t\t\t\tfor (const record of rawEvent.Records) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst event = this.parseSQSRecord(record);\n\t\t\t\t\t\t\t\tif (this.shouldIncludeEvent(event)) {\n\t\t\t\t\t\t\t\t\tevents.push(event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t{ error, record },\n\t\t\t\t\t\t\t\t\t'Failed to parse SQS record',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (this.isSNSEvent(rawEvent)) {\n\t\t\t\t\t\t// SNS Event\n\t\t\t\t\t\tfor (const record of rawEvent.Records) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst event = this.parseSNSRecord(record);\n\t\t\t\t\t\t\t\tif (this.shouldIncludeEvent(event)) {\n\t\t\t\t\t\t\t\t\tevents.push(event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t{ error, record },\n\t\t\t\t\t\t\t\t\t'Failed to parse SNS record',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t(req.event as any).events = events;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n\t\tconst firstRecord = event.Records[0];\n\t\treturn (\n\t\t\t'Records' in event &&\n\t\t\tevent.Records.length > 0 &&\n\t\t\tfirstRecord !== undefined &&\n\t\t\t'eventSource' in firstRecord &&\n\t\t\tfirstRecord.eventSource === 'aws:sqs'\n\t\t);\n\t}\n\n\tprivate isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n\t\tconst firstRecord = event.Records[0];\n\t\treturn (\n\t\t\t'Records' in event &&\n\t\t\tevent.Records.length > 0 &&\n\t\t\tfirstRecord !== undefined &&\n\t\t\t'EventSource' in firstRecord &&\n\t\t\tfirstRecord.EventSource === 'aws:sns'\n\t\t);\n\t}\n\n\tprivate parseSNSRecord(record: SNSEventRecord): any {\n\t\tconst message = this.safeJsonParse(record.Sns.Message);\n\t\tconst messageType = record.Sns.MessageAttributes?.type?.Value;\n\n\t\t// Not JSON — wrap raw string with type from MessageAttributes if available\n\t\tif (message === null) {\n\t\t\treturn messageType\n\t\t\t\t? { type: messageType, payload: record.Sns.Message }\n\t\t\t\t: record.Sns.Message;\n\t\t}\n\n\t\t// Resolve type from MessageAttributes (preferred) or message body\n\t\tconst resolvedType = messageType ?? message.type;\n\n\t\tif (message.type) {\n\t\t\treturn message; // Full event format: { type, payload }\n\t\t}\n\n\t\t// Payload-only format: type is in MessageAttributes\n\t\treturn resolvedType ? { type: resolvedType, payload: message } : message;\n\t}\n\n\tprivate parseSQSRecord(record: SQSRecord): any {\n\t\tconst body = this.safeJsonParse(record.body);\n\n\t\t// Not JSON — return raw body as-is\n\t\tif (body === null) {\n\t\t\treturn record.body;\n\t\t}\n\n\t\t// Check if this is an SNS message wrapped in SQS\n\t\tif (body.Type === 'Notification' && body.Message) {\n\t\t\tconst snsMessage = this.safeJsonParse(body.Message);\n\t\t\tconst messageType = body.MessageAttributes?.type?.Value;\n\n\t\t\t// SNS Message not JSON — wrap with type from MessageAttributes if available\n\t\t\tif (snsMessage === null) {\n\t\t\t\treturn messageType\n\t\t\t\t\t? { type: messageType, payload: body.Message }\n\t\t\t\t\t: body.Message;\n\t\t\t}\n\n\t\t\tif (snsMessage.type) {\n\t\t\t\treturn snsMessage; // Full event format: { type, payload }\n\t\t\t}\n\n\t\t\t// Payload-only format: type is in MessageAttributes\n\t\t\tconst resolvedType = messageType ?? snsMessage.type;\n\t\t\treturn resolvedType\n\t\t\t\t? { type: resolvedType, payload: snsMessage }\n\t\t\t\t: snsMessage;\n\t\t}\n\n\t\t// Direct SQS message\n\t\treturn body;\n\t}\n\n\tprivate safeJsonParse(value: string): any | null {\n\t\ttry {\n\t\t\treturn JSON.parse(value);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate shouldIncludeEvent(event: any): boolean {\n\t\t// No event type (raw string/non-object) — always include\n\t\tif (typeof event !== 'object' || !event?.type) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// No filter configured — accept all\n\t\tif (!this.subscriber.subscribedEvents) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.subscriber.subscribedEvents.includes(event.type as any);\n\t}\n\n\tprivate async _handler(event: SubscriberEvent<TServices, TLogger>) {\n\t\t// If no events after filtering, return early\n\t\tif (event.events.length === 0) {\n\t\t\tthis.logger.info('No subscribed events to process');\n\t\t\treturn {\n\t\t\t\tbatchItemFailures: [],\n\t\t\t};\n\t\t}\n\n\t\t// Execute the subscriber with the parsed context\n\t\tconst result = await this.subscriber.handler({\n\t\t\tevents: event.events,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t});\n\n\t\t// Parse output if schema is provided\n\t\tif (this.subscriber.outputSchema && result) {\n\t\t\tconst validationResult =\n\t\t\t\tawait this.subscriber.outputSchema['~standard'].validate(result);\n\n\t\t\tif (validationResult.issues) {\n\t\t\t\tthis.logger.error(\n\t\t\t\t\t{ issues: validationResult.issues },\n\t\t\t\t\t'Subscriber output validation failed',\n\t\t\t\t);\n\t\t\t\tthrow new Error('Subscriber output validation failed');\n\t\t\t}\n\n\t\t\treturn validationResult.value;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\tconst chain = middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.parseEvents())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services());\n\n\t\t// Wrap entire Middy chain in request context for service access\n\t\tconst wrappedHandler = async (event: unknown, context: Context) => {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst requestId = context.awsRequestId;\n\t\t\tconst logger = this.subscriber.logger.child({\n\t\t\t\trequestId,\n\t\t\t}) as TLogger;\n\n\t\t\treturn runWithRequestContext({ logger, requestId, startTime }, () =>\n\t\t\t\tchain(event as Parameters<typeof chain>[0], context),\n\t\t\t);\n\t\t};\n\n\t\treturn wrappedHandler as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":"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"}