@geekmidas/constructs 0.0.11 → 0.0.13

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 (363) hide show
  1. package/README.md +448 -0
  2. package/dist/AWSLambdaFunction-B-Oxr8qt.d.cts +30 -0
  3. package/dist/{AWSLambdaFunction-DcI_77u8.cjs → AWSLambdaFunction-C-fuCLA3.cjs} +28 -5
  4. package/dist/AWSLambdaFunction-C-fuCLA3.cjs.map +1 -0
  5. package/dist/AWSLambdaFunction-CAm9r5ZX.d.mts +30 -0
  6. package/dist/{AWSLambdaFunction-BTSGYZSx.mjs → AWSLambdaFunction-H65WfXLt.mjs} +28 -5
  7. package/dist/AWSLambdaFunction-H65WfXLt.mjs.map +1 -0
  8. package/dist/{AWSLambdaSubscriberAdaptor-mLOpS63x.d.mts → AWSLambdaSubscriberAdaptor-Cknp_nn1.d.cts} +4 -4
  9. package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs → AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs} +1 -1
  10. package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs.map → AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs.map} +1 -1
  11. package/dist/{AWSLambdaSubscriberAdaptor-DX5NFdWf.d.cts → AWSLambdaSubscriberAdaptor-DpHzp-AM.d.mts} +4 -4
  12. package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs → AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs} +1 -1
  13. package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs.map → AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs.map} +1 -1
  14. package/dist/{AmazonApiGatewayEndpointAdaptor-CATWBIJo.d.mts → AmazonApiGatewayEndpointAdaptor-4hPy5vty.d.mts} +9 -8
  15. package/dist/{AmazonApiGatewayEndpointAdaptor-vi0D3dWg.mjs → AmazonApiGatewayEndpointAdaptor-C6Jk5HSy.mjs} +51 -16
  16. package/dist/AmazonApiGatewayEndpointAdaptor-C6Jk5HSy.mjs.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-BTqB3c1_.cjs → AmazonApiGatewayEndpointAdaptor-CI9L7Ucn.cjs} +51 -16
  18. package/dist/AmazonApiGatewayEndpointAdaptor-CI9L7Ucn.cjs.map +1 -0
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-BwtDtS-i.d.cts → AmazonApiGatewayEndpointAdaptor-ro0RMLzr.d.cts} +8 -7
  20. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D2_u_zR6.mjs → AmazonApiGatewayV1EndpointAdaptor-BMy8DdNJ.mjs} +3 -3
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D2_u_zR6.mjs.map → AmazonApiGatewayV1EndpointAdaptor-BMy8DdNJ.mjs.map} +1 -1
  22. package/dist/{AmazonApiGatewayV1EndpointAdaptor-B1AVk2MM.d.cts → AmazonApiGatewayV1EndpointAdaptor-BWJWKqQT.d.cts} +3 -3
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-nwrtG5L9.cjs → AmazonApiGatewayV1EndpointAdaptor-DYL1bCBS.cjs} +3 -3
  24. package/dist/{AmazonApiGatewayV1EndpointAdaptor-nwrtG5L9.cjs.map → AmazonApiGatewayV1EndpointAdaptor-DYL1bCBS.cjs.map} +1 -1
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-2Rd0LLz4.d.mts → AmazonApiGatewayV1EndpointAdaptor-hyR-WwyP.d.mts} +4 -4
  26. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DoWAJ9oN.mjs → AmazonApiGatewayV2EndpointAdaptor-BU5wQMOe.mjs} +3 -3
  27. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DoWAJ9oN.mjs.map → AmazonApiGatewayV2EndpointAdaptor-BU5wQMOe.mjs.map} +1 -1
  28. package/dist/{AmazonApiGatewayV2EndpointAdaptor-FSIdXYV6.cjs → AmazonApiGatewayV2EndpointAdaptor-CPLCMeaN.cjs} +3 -3
  29. package/dist/{AmazonApiGatewayV2EndpointAdaptor-FSIdXYV6.cjs.map → AmazonApiGatewayV2EndpointAdaptor-CPLCMeaN.cjs.map} +1 -1
  30. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DmY_QfjO.d.cts → AmazonApiGatewayV2EndpointAdaptor-D1Irdggp.d.cts} +3 -3
  31. package/dist/{AmazonApiGatewayV2EndpointAdaptor-cBDfwdBx.d.mts → AmazonApiGatewayV2EndpointAdaptor-DX3SuI5S.d.mts} +4 -4
  32. package/dist/{Authorizer-Bbk9ziuG.d.mts → Authorizer-BTmly8ps.d.cts} +1 -1
  33. package/dist/{Authorizer-iXsSB600.d.cts → Authorizer-pmPvIVgv.d.mts} +1 -1
  34. package/dist/{BaseFunctionBuilder-DSqF1r3a.mjs → BaseFunctionBuilder-B5gkW0Kt.mjs} +16 -2
  35. package/dist/BaseFunctionBuilder-B5gkW0Kt.mjs.map +1 -0
  36. package/dist/{BaseFunctionBuilder-bTDKP7bd.cjs → BaseFunctionBuilder-C5Se7pdL.cjs} +16 -2
  37. package/dist/BaseFunctionBuilder-C5Se7pdL.cjs.map +1 -0
  38. package/dist/{BaseFunctionBuilder-DOcm1heZ.d.mts → BaseFunctionBuilder-CbDnPZpD.d.mts} +13 -4
  39. package/dist/{BaseFunctionBuilder-hWNVKXQB.d.cts → BaseFunctionBuilder-DUZMbEr3.d.cts} +13 -4
  40. package/dist/{Construct-XCGKof_O.cjs → Construct-BYSPikVm.cjs} +8 -3
  41. package/dist/Construct-BYSPikVm.cjs.map +1 -0
  42. package/dist/{Construct-rZQg2yus.mjs → Construct-LWeB1rSQ.mjs} +8 -3
  43. package/dist/Construct-LWeB1rSQ.mjs.map +1 -0
  44. package/dist/{Construct-iDmbkZ3o.d.mts → Construct-ZPqE0vhn.d.mts} +5 -3
  45. package/dist/{Construct-zc8BkRSp.d.cts → Construct-dI_rgdSp.d.cts} +5 -3
  46. package/dist/Construct.cjs +1 -1
  47. package/dist/Construct.d.cts +1 -1
  48. package/dist/Construct.d.mts +1 -1
  49. package/dist/Construct.mjs +1 -1
  50. package/dist/{Cron-CYIhd0VE.cjs → Cron-Bi3QOge_.cjs} +5 -5
  51. package/dist/Cron-Bi3QOge_.cjs.map +1 -0
  52. package/dist/{Cron-D5HGEt6g.d.mts → Cron-COdfP0Jd.d.cts} +5 -5
  53. package/dist/{Cron-DbJNPTbP.d.cts → Cron-D8cn_ahj.d.mts} +5 -5
  54. package/dist/{Cron-BnO1uXhh.mjs → Cron-Dy_HW2Vv.mjs} +5 -5
  55. package/dist/Cron-Dy_HW2Vv.mjs.map +1 -0
  56. package/dist/{CronBuilder-BxKwHCdJ.mjs → CronBuilder-Bl3A2Zp4.mjs} +15 -6
  57. package/dist/CronBuilder-Bl3A2Zp4.mjs.map +1 -0
  58. package/dist/{CronBuilder-D-546XtP.d.cts → CronBuilder-DntF6H3A.d.cts} +17 -12
  59. package/dist/{CronBuilder-vRiZb1_N.d.mts → CronBuilder-DoMnSs_0.d.mts} +17 -12
  60. package/dist/{CronBuilder-D_3AiPFO.cjs → CronBuilder-Dv_w7Yri.cjs} +15 -6
  61. package/dist/CronBuilder-Dv_w7Yri.cjs.map +1 -0
  62. package/dist/{Endpoint-DqZkc6ft.d.mts → Endpoint-Bbs_sFvg.d.mts} +120 -23
  63. package/dist/{Endpoint-BpTSQn7W.d.cts → Endpoint-Bu8Phz6y.d.cts} +120 -23
  64. package/dist/{Endpoint-BdIGWw1H.cjs → Endpoint-DDpF7NO1.cjs} +22 -10
  65. package/dist/Endpoint-DDpF7NO1.cjs.map +1 -0
  66. package/dist/{Endpoint-ChzcIFdV.mjs → Endpoint-S6Yh2_PN.mjs} +22 -10
  67. package/dist/Endpoint-S6Yh2_PN.mjs.map +1 -0
  68. package/dist/EndpointBuilder-CPxmF_w7.d.cts +103 -0
  69. package/dist/EndpointBuilder-Csfyfjd7.d.mts +103 -0
  70. package/dist/{EndpointBuilder-dmMiNRm9.cjs → EndpointBuilder-DpGmObMb.cjs} +68 -5
  71. package/dist/EndpointBuilder-DpGmObMb.cjs.map +1 -0
  72. package/dist/{EndpointBuilder-yo40Qkf_.mjs → EndpointBuilder-aE2E6WTx.mjs} +68 -5
  73. package/dist/EndpointBuilder-aE2E6WTx.mjs.map +1 -0
  74. package/dist/{EndpointFactory-D_mmO7Gu.d.mts → EndpointFactory-Bf9JSWzI.d.cts} +12 -11
  75. package/dist/{EndpointFactory-CNbcr8u_.cjs → EndpointFactory-BfH6mjJ3.cjs} +3 -3
  76. package/dist/EndpointFactory-BfH6mjJ3.cjs.map +1 -0
  77. package/dist/{EndpointFactory-JPhk0Qom.d.cts → EndpointFactory-Cgk1R0oO.d.mts} +12 -11
  78. package/dist/{EndpointFactory-LD3upVQK.mjs → EndpointFactory-D4leYk1N.mjs} +3 -3
  79. package/dist/EndpointFactory-D4leYk1N.mjs.map +1 -0
  80. package/dist/{Function-DDaSfL_E.cjs → Function-DagDbeXo.cjs} +7 -6
  81. package/dist/Function-DagDbeXo.cjs.map +1 -0
  82. package/dist/{Function-Cl9fiR3a.mjs → Function-DfKsM5Kx.mjs} +7 -6
  83. package/dist/Function-DfKsM5Kx.mjs.map +1 -0
  84. package/dist/{Function-C-5_23Wi.d.mts → Function-V9M9UVHp.d.mts} +25 -7
  85. package/dist/{Function-CW-WcZTu.d.cts → Function-VI1TB3Mh.d.cts} +25 -7
  86. package/dist/{FunctionBuilder-vW12WFOw.mjs → FunctionBuilder-CVT7bG2o.mjs} +27 -6
  87. package/dist/FunctionBuilder-CVT7bG2o.mjs.map +1 -0
  88. package/dist/FunctionBuilder-CjVEFTYC.d.cts +38 -0
  89. package/dist/FunctionBuilder-D1ofSeMd.d.mts +38 -0
  90. package/dist/{FunctionBuilder-LQuBiqRc.cjs → FunctionBuilder-DXvG_XD-.cjs} +27 -6
  91. package/dist/FunctionBuilder-DXvG_XD-.cjs.map +1 -0
  92. package/dist/FunctionExecutionWrapper-Bubnr0zA.mjs +101 -0
  93. package/dist/FunctionExecutionWrapper-Bubnr0zA.mjs.map +1 -0
  94. package/dist/FunctionExecutionWrapper-CwtwYozd.d.cts +48 -0
  95. package/dist/FunctionExecutionWrapper-DkNycmOh.cjs +107 -0
  96. package/dist/FunctionExecutionWrapper-DkNycmOh.cjs.map +1 -0
  97. package/dist/FunctionExecutionWrapper-rhbIYT0Q.d.mts +48 -0
  98. package/dist/{HonoEndpointAdaptor-BVQtyvna.d.cts → HonoEndpointAdaptor-B34kNobH.d.cts} +8 -7
  99. package/dist/{HonoEndpointAdaptor-W-disJnm.d.mts → HonoEndpointAdaptor-BDpi32mH.d.mts} +9 -8
  100. package/dist/{HonoEndpointAdaptor-Bc61IS6Q.cjs → HonoEndpointAdaptor-CfLRHHFw.cjs} +55 -20
  101. package/dist/HonoEndpointAdaptor-CfLRHHFw.cjs.map +1 -0
  102. package/dist/{HonoEndpointAdaptor-NR3h5gml.mjs → HonoEndpointAdaptor-DuyE06nH.mjs} +55 -20
  103. package/dist/HonoEndpointAdaptor-DuyE06nH.mjs.map +1 -0
  104. package/dist/{Subscriber-C2OPATI8.cjs → Subscriber-Bdh8rMSL.cjs} +2 -2
  105. package/dist/{Subscriber-C2OPATI8.cjs.map → Subscriber-Bdh8rMSL.cjs.map} +1 -1
  106. package/dist/{Subscriber-BVq3ST4C.d.cts → Subscriber-BhzqUzs-.d.cts} +2 -2
  107. package/dist/{Subscriber-BKftCzwT.mjs → Subscriber-CJOWwaw1.mjs} +2 -2
  108. package/dist/{Subscriber-BKftCzwT.mjs.map → Subscriber-CJOWwaw1.mjs.map} +1 -1
  109. package/dist/{Subscriber-BuHaqWo4.d.mts → Subscriber-s6yfjeOc.d.mts} +2 -2
  110. package/dist/{SubscriberBuilder-2asHtGbl.d.mts → SubscriberBuilder-BCVkp-ga.d.cts} +3 -3
  111. package/dist/{SubscriberBuilder-yDfpHPZE.mjs → SubscriberBuilder-BWQmiYd8.mjs} +2 -2
  112. package/dist/{SubscriberBuilder-yDfpHPZE.mjs.map → SubscriberBuilder-BWQmiYd8.mjs.map} +1 -1
  113. package/dist/{SubscriberBuilder-yikoQ8ND.cjs → SubscriberBuilder-DieD_60p.cjs} +2 -2
  114. package/dist/{SubscriberBuilder-yikoQ8ND.cjs.map → SubscriberBuilder-DieD_60p.cjs.map} +1 -1
  115. package/dist/{SubscriberBuilder-CHIRyNjy.d.cts → SubscriberBuilder-aCua5_wA.d.mts} +3 -3
  116. package/dist/{TestEndpointAdaptor-DpmNXp7G.mjs → TestEndpointAdaptor-BEyZa0Yg.mjs} +51 -18
  117. package/dist/TestEndpointAdaptor-BEyZa0Yg.mjs.map +1 -0
  118. package/dist/{TestEndpointAdaptor-DA1D6l-U.cjs → TestEndpointAdaptor-C8425RJ0.cjs} +51 -18
  119. package/dist/TestEndpointAdaptor-C8425RJ0.cjs.map +1 -0
  120. package/dist/{TestEndpointAdaptor-BrE5Rs4U.d.cts → TestEndpointAdaptor-H5To8PH7.d.cts} +6 -5
  121. package/dist/{TestEndpointAdaptor-B10J-cI-.d.mts → TestEndpointAdaptor-jxn68ayg.d.mts} +7 -6
  122. package/dist/adaptors/aws.cjs +14 -13
  123. package/dist/adaptors/aws.d.cts +14 -14
  124. package/dist/adaptors/aws.d.mts +15 -15
  125. package/dist/adaptors/aws.mjs +14 -13
  126. package/dist/adaptors/hono.cjs +10 -9
  127. package/dist/adaptors/hono.d.cts +8 -8
  128. package/dist/adaptors/hono.d.mts +9 -9
  129. package/dist/adaptors/hono.mjs +10 -9
  130. package/dist/adaptors/testing.cjs +8 -7
  131. package/dist/adaptors/testing.d.cts +8 -8
  132. package/dist/adaptors/testing.d.mts +9 -9
  133. package/dist/adaptors/testing.mjs +8 -7
  134. package/dist/crons/Cron.cjs +6 -6
  135. package/dist/crons/Cron.d.cts +6 -6
  136. package/dist/crons/Cron.d.mts +6 -6
  137. package/dist/crons/Cron.mjs +6 -6
  138. package/dist/crons/CronBuilder.cjs +7 -7
  139. package/dist/crons/CronBuilder.d.cts +7 -7
  140. package/dist/crons/CronBuilder.d.mts +7 -7
  141. package/dist/crons/CronBuilder.mjs +7 -7
  142. package/dist/crons/index.cjs +7 -7
  143. package/dist/crons/index.d.cts +11 -11
  144. package/dist/crons/index.d.mts +8 -8
  145. package/dist/crons/index.mjs +7 -7
  146. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +8 -7
  147. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -8
  148. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -9
  149. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +8 -7
  150. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +10 -9
  151. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +9 -9
  152. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -10
  153. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +10 -9
  154. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +10 -9
  155. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -9
  156. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -10
  157. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +10 -9
  158. package/dist/endpoints/Authorizer.d.cts +1 -1
  159. package/dist/endpoints/Authorizer.d.mts +1 -1
  160. package/dist/endpoints/Endpoint.cjs +6 -6
  161. package/dist/endpoints/Endpoint.d.cts +7 -7
  162. package/dist/endpoints/Endpoint.d.mts +8 -8
  163. package/dist/endpoints/Endpoint.mjs +6 -6
  164. package/dist/endpoints/EndpointBuilder.cjs +7 -7
  165. package/dist/endpoints/EndpointBuilder.d.cts +8 -8
  166. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  167. package/dist/endpoints/EndpointBuilder.mjs +7 -7
  168. package/dist/endpoints/EndpointFactory.cjs +8 -8
  169. package/dist/endpoints/EndpointFactory.d.cts +9 -9
  170. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  171. package/dist/endpoints/EndpointFactory.mjs +8 -8
  172. package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
  173. package/dist/endpoints/HonoEndpointAdaptor.d.cts +8 -8
  174. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  175. package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
  176. package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
  177. package/dist/endpoints/TestEndpointAdaptor.d.cts +8 -8
  178. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  179. package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
  180. package/dist/endpoints/audit.cjs +0 -0
  181. package/dist/endpoints/audit.d.cts +9 -0
  182. package/dist/endpoints/audit.d.mts +9 -0
  183. package/dist/endpoints/audit.mjs +0 -0
  184. package/dist/endpoints/helpers.cjs +7 -7
  185. package/dist/endpoints/helpers.d.cts +7 -7
  186. package/dist/endpoints/helpers.d.mts +8 -8
  187. package/dist/endpoints/helpers.mjs +7 -7
  188. package/dist/endpoints/index.cjs +8 -8
  189. package/dist/endpoints/index.cjs.map +1 -1
  190. package/dist/endpoints/index.d.cts +12 -12
  191. package/dist/endpoints/index.d.mts +13 -13
  192. package/dist/endpoints/index.mjs +8 -8
  193. package/dist/endpoints/index.mjs.map +1 -1
  194. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  195. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  196. package/dist/endpoints/parseQueryParams.cjs +1 -1
  197. package/dist/endpoints/parseQueryParams.mjs +1 -1
  198. package/dist/endpoints/processAudits.cjs +5 -0
  199. package/dist/endpoints/processAudits.d.cts +74 -0
  200. package/dist/endpoints/processAudits.d.mts +74 -0
  201. package/dist/endpoints/processAudits.mjs +3 -0
  202. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  203. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  204. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  205. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  206. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  207. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  208. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  209. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  210. package/dist/functions/Function.cjs +2 -2
  211. package/dist/functions/Function.d.cts +2 -2
  212. package/dist/functions/Function.d.mts +2 -2
  213. package/dist/functions/Function.mjs +2 -2
  214. package/dist/functions/FunctionBuilder.cjs +4 -4
  215. package/dist/functions/FunctionBuilder.d.cts +4 -4
  216. package/dist/functions/FunctionBuilder.d.mts +4 -4
  217. package/dist/functions/FunctionBuilder.mjs +4 -4
  218. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  219. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  220. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  221. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  222. package/dist/functions/TestFunctionAdaptor.cjs +38 -5
  223. package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
  224. package/dist/functions/TestFunctionAdaptor.d.cts +10 -7
  225. package/dist/functions/TestFunctionAdaptor.d.mts +10 -7
  226. package/dist/functions/TestFunctionAdaptor.mjs +38 -5
  227. package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
  228. package/dist/functions/index.cjs +5 -5
  229. package/dist/functions/index.d.cts +5 -5
  230. package/dist/functions/index.d.mts +5 -5
  231. package/dist/functions/index.mjs +5 -5
  232. package/dist/{functions-yg097ymU.cjs → functions-FCb-wWFC.cjs} +2 -2
  233. package/dist/{functions-yg097ymU.cjs.map → functions-FCb-wWFC.cjs.map} +1 -1
  234. package/dist/functions-JhRsNoAZ.mjs +8 -0
  235. package/dist/{functions-HCoZ4YKF.mjs.map → functions-JhRsNoAZ.mjs.map} +1 -1
  236. package/dist/{helpers-CHsIWAEx.mjs → helpers-2CLKTnRm.mjs} +2 -2
  237. package/dist/{helpers-CHsIWAEx.mjs.map → helpers-2CLKTnRm.mjs.map} +1 -1
  238. package/dist/{helpers-Cq6wjo7s.cjs → helpers-Khuhi_Qx.cjs} +2 -2
  239. package/dist/{helpers-Cq6wjo7s.cjs.map → helpers-Khuhi_Qx.cjs.map} +1 -1
  240. package/dist/index-Bomy7R9z.d.mts +10 -0
  241. package/dist/index-DRYfZHb3.d.cts +10 -0
  242. package/dist/index.cjs +1 -1
  243. package/dist/index.d.cts +1 -1
  244. package/dist/index.d.mts +2 -2
  245. package/dist/index.mjs +1 -1
  246. package/dist/{parseHonoQuery-DopC24vB.cjs → parseHonoQuery-CT8Cvin-.cjs} +1 -1
  247. package/dist/{parseHonoQuery-DopC24vB.cjs.map → parseHonoQuery-CT8Cvin-.cjs.map} +1 -1
  248. package/dist/{parseHonoQuery-znDKBhdE.mjs → parseHonoQuery-CwFKw2ua.mjs} +1 -1
  249. package/dist/{parseHonoQuery-znDKBhdE.mjs.map → parseHonoQuery-CwFKw2ua.mjs.map} +1 -1
  250. package/dist/{parseQueryParams-BJaRh3OB.mjs → parseQueryParams-CHINupbZ.mjs} +1 -1
  251. package/dist/{parseQueryParams-BJaRh3OB.mjs.map → parseQueryParams-CHINupbZ.mjs.map} +1 -1
  252. package/dist/{parseQueryParams-BzPop4I1.cjs → parseQueryParams-CwvXXwkW.cjs} +1 -1
  253. package/dist/{parseQueryParams-BzPop4I1.cjs.map → parseQueryParams-CwvXXwkW.cjs.map} +1 -1
  254. package/dist/processAudits-BFokHhCO.cjs +174 -0
  255. package/dist/processAudits-BFokHhCO.cjs.map +1 -0
  256. package/dist/processAudits-DfcB-X-4.mjs +156 -0
  257. package/dist/processAudits-DfcB-X-4.mjs.map +1 -0
  258. package/dist/publisher-Bw4770Hi.mjs.map +1 -1
  259. package/dist/publisher-lFQleddL.cjs.map +1 -1
  260. package/dist/publisher.d.cts +3 -2
  261. package/dist/publisher.d.mts +3 -2
  262. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  263. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  264. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  265. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  266. package/dist/subscribers/Subscriber.cjs +2 -2
  267. package/dist/subscribers/Subscriber.d.cts +2 -2
  268. package/dist/subscribers/Subscriber.d.mts +2 -2
  269. package/dist/subscribers/Subscriber.mjs +2 -2
  270. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  271. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  272. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  273. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  274. package/dist/subscribers/index.cjs +3 -3
  275. package/dist/subscribers/index.d.cts +5 -5
  276. package/dist/subscribers/index.d.mts +5 -5
  277. package/dist/subscribers/index.mjs +3 -3
  278. package/dist/{types-CVq20-fE.d.mts → types-DKf0juBf.d.mts} +1 -1
  279. package/dist/types.d.mts +1 -1
  280. package/package.json +15 -11
  281. package/src/Construct.ts +8 -0
  282. package/src/crons/Cron.ts +12 -3
  283. package/src/crons/CronBuilder.ts +85 -13
  284. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +2 -2
  285. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +112 -20
  286. package/src/endpoints/Endpoint.ts +208 -39
  287. package/src/endpoints/EndpointBuilder.ts +291 -21
  288. package/src/endpoints/EndpointFactory.ts +5 -1
  289. package/src/endpoints/HonoEndpointAdaptor.ts +144 -33
  290. package/src/endpoints/TestEndpointAdaptor.ts +116 -21
  291. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +8 -0
  292. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +29 -0
  293. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +626 -0
  294. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +9 -0
  295. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +757 -0
  296. package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +3 -1
  297. package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +1 -1
  298. package/src/endpoints/__tests__/Endpoint.spec.ts +19 -0
  299. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +448 -0
  300. package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +51 -14
  301. package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +8 -8
  302. package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +11 -11
  303. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +703 -0
  304. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +632 -0
  305. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +8 -0
  306. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1063 -0
  307. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +4 -0
  308. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +25 -0
  309. package/src/endpoints/audit.ts +87 -0
  310. package/src/endpoints/index.ts +1 -0
  311. package/src/endpoints/processAudits.ts +348 -0
  312. package/src/functions/AWSLambdaFunction.ts +125 -12
  313. package/src/functions/BaseFunctionBuilder.ts +98 -7
  314. package/src/functions/Function.ts +83 -15
  315. package/src/functions/FunctionBuilder.ts +217 -17
  316. package/src/functions/FunctionExecutionWrapper.ts +133 -2
  317. package/src/functions/TestFunctionAdaptor.ts +94 -8
  318. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +82 -0
  319. package/src/functions/__tests__/Function.audits.spec.ts +393 -0
  320. package/src/functions/__tests__/Function.spec.ts +76 -0
  321. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +54 -7
  322. package/src/publisher.ts +12 -1
  323. package/dist/AWSLambdaFunction-BTSGYZSx.mjs.map +0 -1
  324. package/dist/AWSLambdaFunction-Bel0NFTl.d.mts +0 -27
  325. package/dist/AWSLambdaFunction-DcI_77u8.cjs.map +0 -1
  326. package/dist/AWSLambdaFunction-xyCenuD7.d.cts +0 -27
  327. package/dist/AmazonApiGatewayEndpointAdaptor-BTqB3c1_.cjs.map +0 -1
  328. package/dist/AmazonApiGatewayEndpointAdaptor-vi0D3dWg.mjs.map +0 -1
  329. package/dist/BaseFunctionBuilder-DSqF1r3a.mjs.map +0 -1
  330. package/dist/BaseFunctionBuilder-bTDKP7bd.cjs.map +0 -1
  331. package/dist/Construct-XCGKof_O.cjs.map +0 -1
  332. package/dist/Construct-rZQg2yus.mjs.map +0 -1
  333. package/dist/Cron-BnO1uXhh.mjs.map +0 -1
  334. package/dist/Cron-CYIhd0VE.cjs.map +0 -1
  335. package/dist/CronBuilder-BxKwHCdJ.mjs.map +0 -1
  336. package/dist/CronBuilder-D_3AiPFO.cjs.map +0 -1
  337. package/dist/Endpoint-BdIGWw1H.cjs.map +0 -1
  338. package/dist/Endpoint-ChzcIFdV.mjs.map +0 -1
  339. package/dist/EndpointBuilder-Cx6pUcCn.d.mts +0 -55
  340. package/dist/EndpointBuilder-Xka8ULR1.d.cts +0 -55
  341. package/dist/EndpointBuilder-dmMiNRm9.cjs.map +0 -1
  342. package/dist/EndpointBuilder-yo40Qkf_.mjs.map +0 -1
  343. package/dist/EndpointFactory-CNbcr8u_.cjs.map +0 -1
  344. package/dist/EndpointFactory-LD3upVQK.mjs.map +0 -1
  345. package/dist/Function-Cl9fiR3a.mjs.map +0 -1
  346. package/dist/Function-DDaSfL_E.cjs.map +0 -1
  347. package/dist/FunctionBuilder-LQuBiqRc.cjs.map +0 -1
  348. package/dist/FunctionBuilder-fU1H7tFN.d.cts +0 -26
  349. package/dist/FunctionBuilder-udObIGV0.d.mts +0 -26
  350. package/dist/FunctionBuilder-vW12WFOw.mjs.map +0 -1
  351. package/dist/FunctionExecutionWrapper-BBIoHUt6.cjs +0 -42
  352. package/dist/FunctionExecutionWrapper-BBIoHUt6.cjs.map +0 -1
  353. package/dist/FunctionExecutionWrapper-DYBy9OP3.d.mts +0 -24
  354. package/dist/FunctionExecutionWrapper-Dtyhid1Q.mjs +0 -36
  355. package/dist/FunctionExecutionWrapper-Dtyhid1Q.mjs.map +0 -1
  356. package/dist/FunctionExecutionWrapper-Dwr2ZKzC.d.cts +0 -24
  357. package/dist/HonoEndpointAdaptor-Bc61IS6Q.cjs.map +0 -1
  358. package/dist/HonoEndpointAdaptor-NR3h5gml.mjs.map +0 -1
  359. package/dist/TestEndpointAdaptor-DA1D6l-U.cjs.map +0 -1
  360. package/dist/TestEndpointAdaptor-DpmNXp7G.mjs.map +0 -1
  361. package/dist/functions-HCoZ4YKF.mjs +0 -8
  362. package/dist/index-RtxMVjUZ.d.mts +0 -9
  363. package/dist/index-fiIGH95t.d.cts +0 -9
@@ -1,5 +1,8 @@
1
+ import type { AuditStorage, AuditableAction } from '@geekmidas/audit';
2
+ import type { EventPublisher } from '@geekmidas/events';
1
3
  import type { Logger } from '@geekmidas/logger';
2
4
  import { ConsoleLogger } from '@geekmidas/logger/console';
5
+ import type { ComposableStandardSchema } from '@geekmidas/schema';
3
6
  import type { Service } from '@geekmidas/services';
4
7
  import type { StandardSchemaV1 } from '@standard-schema/spec';
5
8
  import uniqBy from 'lodash.uniqby';
@@ -7,9 +10,6 @@ import { ConstructType } from '../Construct';
7
10
  import { BaseFunctionBuilder } from './BaseFunctionBuilder';
8
11
  import { Function, type FunctionHandler } from './Function';
9
12
 
10
- import type { EventPublisher } from '@geekmidas/events';
11
- import type { ComposableStandardSchema } from '@geekmidas/schema';
12
-
13
13
  const DEFAULT_LOGGER = new ConsoleLogger() as any;
14
14
 
15
15
  export class FunctionBuilder<
@@ -19,13 +19,25 @@ export class FunctionBuilder<
19
19
  TLogger extends Logger = Logger,
20
20
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
21
21
  TEventPublisherServiceName extends string = string,
22
+ TAuditStorage extends AuditStorage | undefined = undefined,
23
+ TAuditStorageServiceName extends string = string,
24
+ TDatabase = undefined,
25
+ TDatabaseServiceName extends string = string,
26
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
27
+ string,
28
+ unknown
29
+ >,
22
30
  > extends BaseFunctionBuilder<
23
31
  TInput,
24
32
  OutSchema,
25
33
  TServices,
26
34
  TLogger,
27
35
  TEventPublisher,
28
- TEventPublisherServiceName
36
+ TEventPublisherServiceName,
37
+ TAuditStorage,
38
+ TAuditStorageServiceName,
39
+ TDatabase,
40
+ TDatabaseServiceName
29
41
  > {
30
42
  protected _memorySize?: number;
31
43
 
@@ -51,7 +63,12 @@ export class FunctionBuilder<
51
63
  TServices,
52
64
  TLogger,
53
65
  TEventPublisher,
54
- TEventPublisherServiceName
66
+ TEventPublisherServiceName,
67
+ TAuditStorage,
68
+ TAuditStorageServiceName,
69
+ TDatabase,
70
+ TDatabaseServiceName,
71
+ TAuditAction
55
72
  > {
56
73
  this.outputSchema = schema as unknown as OutSchema;
57
74
 
@@ -61,7 +78,12 @@ export class FunctionBuilder<
61
78
  TServices,
62
79
  TLogger,
63
80
  TEventPublisher,
64
- TEventPublisherServiceName
81
+ TEventPublisherServiceName,
82
+ TAuditStorage,
83
+ TAuditStorageServiceName,
84
+ TDatabase,
85
+ TDatabaseServiceName,
86
+ TAuditAction
65
87
  >;
66
88
  }
67
89
 
@@ -73,7 +95,12 @@ export class FunctionBuilder<
73
95
  TServices,
74
96
  TLogger,
75
97
  TEventPublisher,
76
- TEventPublisherServiceName
98
+ TEventPublisherServiceName,
99
+ TAuditStorage,
100
+ TAuditStorageServiceName,
101
+ TDatabase,
102
+ TDatabaseServiceName,
103
+ TAuditAction
77
104
  > {
78
105
  this.inputSchema = schema as unknown as TInput;
79
106
 
@@ -83,7 +110,12 @@ export class FunctionBuilder<
83
110
  TServices,
84
111
  TLogger,
85
112
  TEventPublisher,
86
- TEventPublisherServiceName
113
+ TEventPublisherServiceName,
114
+ TAuditStorage,
115
+ TAuditStorageServiceName,
116
+ TDatabase,
117
+ TDatabaseServiceName,
118
+ TAuditAction
87
119
  >;
88
120
  }
89
121
 
@@ -95,7 +127,12 @@ export class FunctionBuilder<
95
127
  [...TServices, ...T],
96
128
  TLogger,
97
129
  TEventPublisher,
98
- TEventPublisherServiceName
130
+ TEventPublisherServiceName,
131
+ TAuditStorage,
132
+ TAuditStorageServiceName,
133
+ TDatabase,
134
+ TDatabaseServiceName,
135
+ TAuditAction
99
136
  > {
100
137
  this._services = uniqBy(
101
138
  [...this._services, ...services],
@@ -108,7 +145,12 @@ export class FunctionBuilder<
108
145
  [...TServices, ...T],
109
146
  TLogger,
110
147
  TEventPublisher,
111
- TEventPublisherServiceName
148
+ TEventPublisherServiceName,
149
+ TAuditStorage,
150
+ TAuditStorageServiceName,
151
+ TDatabase,
152
+ TDatabaseServiceName,
153
+ TAuditAction
112
154
  >;
113
155
  }
114
156
 
@@ -120,7 +162,12 @@ export class FunctionBuilder<
120
162
  TServices,
121
163
  T,
122
164
  TEventPublisher,
123
- TEventPublisherServiceName
165
+ TEventPublisherServiceName,
166
+ TAuditStorage,
167
+ TAuditStorageServiceName,
168
+ TDatabase,
169
+ TDatabaseServiceName,
170
+ TAuditAction
124
171
  > {
125
172
  this._logger = logger as unknown as TLogger;
126
173
 
@@ -130,13 +177,30 @@ export class FunctionBuilder<
130
177
  TServices,
131
178
  T,
132
179
  TEventPublisher,
133
- TEventPublisherServiceName
180
+ TEventPublisherServiceName,
181
+ TAuditStorage,
182
+ TAuditStorageServiceName,
183
+ TDatabase,
184
+ TDatabaseServiceName,
185
+ TAuditAction
134
186
  >;
135
187
  }
136
188
 
137
189
  publisher<T extends EventPublisher<any>, TName extends string>(
138
190
  publisher: Service<TName, T>,
139
- ): FunctionBuilder<TInput, OutSchema, TServices, TLogger, T, TName> {
191
+ ): FunctionBuilder<
192
+ TInput,
193
+ OutSchema,
194
+ TServices,
195
+ TLogger,
196
+ T,
197
+ TName,
198
+ TAuditStorage,
199
+ TAuditStorageServiceName,
200
+ TDatabase,
201
+ TDatabaseServiceName,
202
+ TAuditAction
203
+ > {
140
204
  this._publisher = publisher as unknown as Service<
141
205
  TEventPublisherServiceName,
142
206
  TEventPublisher
@@ -148,20 +212,152 @@ export class FunctionBuilder<
148
212
  TServices,
149
213
  TLogger,
150
214
  T,
151
- TName
215
+ TName,
216
+ TAuditStorage,
217
+ TAuditStorageServiceName,
218
+ TDatabase,
219
+ TDatabaseServiceName,
220
+ TAuditAction
221
+ >;
222
+ }
223
+
224
+ auditor<T extends AuditStorage, TName extends string>(
225
+ storage: Service<TName, T>,
226
+ ): FunctionBuilder<
227
+ TInput,
228
+ OutSchema,
229
+ TServices,
230
+ TLogger,
231
+ TEventPublisher,
232
+ TEventPublisherServiceName,
233
+ T,
234
+ TName,
235
+ TDatabase,
236
+ TDatabaseServiceName,
237
+ TAuditAction
238
+ > {
239
+ this._auditorStorage = storage as unknown as Service<
240
+ TAuditStorageServiceName,
241
+ TAuditStorage
242
+ >;
243
+
244
+ return this as unknown as FunctionBuilder<
245
+ TInput,
246
+ OutSchema,
247
+ TServices,
248
+ TLogger,
249
+ TEventPublisher,
250
+ TEventPublisherServiceName,
251
+ T,
252
+ TName,
253
+ TDatabase,
254
+ TDatabaseServiceName,
255
+ TAuditAction
256
+ >;
257
+ }
258
+
259
+ /**
260
+ * Set the audit action types for this function.
261
+ * This provides type-safety for the auditor in the handler context.
262
+ */
263
+ actions<T extends AuditableAction<string, unknown>>(): FunctionBuilder<
264
+ TInput,
265
+ OutSchema,
266
+ TServices,
267
+ TLogger,
268
+ TEventPublisher,
269
+ TEventPublisherServiceName,
270
+ TAuditStorage,
271
+ TAuditStorageServiceName,
272
+ TDatabase,
273
+ TDatabaseServiceName,
274
+ T
275
+ > {
276
+ return this as unknown as FunctionBuilder<
277
+ TInput,
278
+ OutSchema,
279
+ TServices,
280
+ TLogger,
281
+ TEventPublisher,
282
+ TEventPublisherServiceName,
283
+ TAuditStorage,
284
+ TAuditStorageServiceName,
285
+ TDatabase,
286
+ TDatabaseServiceName,
287
+ T
288
+ >;
289
+ }
290
+
291
+ /**
292
+ * Set the database service for this function.
293
+ * The database will be available in the handler context as `db`.
294
+ */
295
+ database<T, TName extends string>(
296
+ service: Service<TName, T>,
297
+ ): FunctionBuilder<
298
+ TInput,
299
+ OutSchema,
300
+ TServices,
301
+ TLogger,
302
+ TEventPublisher,
303
+ TEventPublisherServiceName,
304
+ TAuditStorage,
305
+ TAuditStorageServiceName,
306
+ T,
307
+ TName,
308
+ TAuditAction
309
+ > {
310
+ this._databaseService = service as unknown as Service<
311
+ TDatabaseServiceName,
312
+ TDatabase
313
+ >;
314
+
315
+ return this as unknown as FunctionBuilder<
316
+ TInput,
317
+ OutSchema,
318
+ TServices,
319
+ TLogger,
320
+ TEventPublisher,
321
+ TEventPublisherServiceName,
322
+ TAuditStorage,
323
+ TAuditStorageServiceName,
324
+ T,
325
+ TName,
326
+ TAuditAction
152
327
  >;
153
328
  }
154
329
 
155
330
  handle(
156
- fn: FunctionHandler<TInput, TServices, TLogger, OutSchema>,
331
+ fn: FunctionHandler<
332
+ TInput,
333
+ TServices,
334
+ TLogger,
335
+ OutSchema,
336
+ TDatabase,
337
+ TAuditStorage,
338
+ TAuditAction
339
+ >,
157
340
  ): Function<
158
341
  TInput,
159
342
  TServices,
160
343
  TLogger,
161
344
  OutSchema,
162
- FunctionHandler<TInput, TServices, TLogger, OutSchema>,
163
345
  TEventPublisher,
164
- TEventPublisherServiceName
346
+ TEventPublisherServiceName,
347
+ TAuditStorage,
348
+ TAuditStorageServiceName,
349
+ TDatabase,
350
+ TDatabaseServiceName,
351
+ TAuditAction,
352
+ FunctionHandler<
353
+ TInput,
354
+ TServices,
355
+ TLogger,
356
+ OutSchema,
357
+ TDatabase,
358
+ TAuditStorage,
359
+ TAuditAction
360
+ >
165
361
  > {
166
362
  const func = new Function(
167
363
  fn,
@@ -174,6 +370,8 @@ export class FunctionBuilder<
174
370
  this._publisher,
175
371
  this._events,
176
372
  this._memorySize,
373
+ this._auditorStorage,
374
+ this._databaseService,
177
375
  );
178
376
 
179
377
  // Reset builder state after creating the function to prevent pollution
@@ -181,6 +379,8 @@ export class FunctionBuilder<
181
379
  this._logger = DEFAULT_LOGGER;
182
380
  this._events = [];
183
381
  this._publisher = undefined;
382
+ this._auditorStorage = undefined;
383
+ this._databaseService = undefined;
184
384
  this.inputSchema = undefined;
185
385
  this.outputSchema = undefined;
186
386
  this._timeout = undefined;
@@ -1,3 +1,6 @@
1
+ import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';
2
+ import { DefaultAuditor } from '@geekmidas/audit';
3
+ import { withAuditableTransaction } from '@geekmidas/audit/kysely';
1
4
  import type { EnvironmentParser } from '@geekmidas/envkit';
2
5
  import type { EventPublisher } from '@geekmidas/events';
3
6
  import type { Logger } from '@geekmidas/logger';
@@ -23,6 +26,14 @@ export abstract class FunctionExecutionWrapper<
23
26
  TLogger extends Logger = Logger,
24
27
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
25
28
  TEventPublisherServiceName extends string = string,
29
+ TAuditStorage extends AuditStorage | undefined = undefined,
30
+ TAuditStorageServiceName extends string = string,
31
+ TDatabase = undefined,
32
+ TDatabaseServiceName extends string = string,
33
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
34
+ string,
35
+ unknown
36
+ >,
26
37
  > {
27
38
  constructor(
28
39
  protected envParser: EnvironmentParser<{}>,
@@ -31,9 +42,22 @@ export abstract class FunctionExecutionWrapper<
31
42
  TServices,
32
43
  TLogger,
33
44
  TOutSchema,
34
- FunctionHandler<TInput, TServices, TLogger, TOutSchema>,
35
45
  TEventPublisher,
36
- TEventPublisherServiceName
46
+ TEventPublisherServiceName,
47
+ TAuditStorage,
48
+ TAuditStorageServiceName,
49
+ TDatabase,
50
+ TDatabaseServiceName,
51
+ TAuditAction,
52
+ FunctionHandler<
53
+ TInput,
54
+ TServices,
55
+ TLogger,
56
+ TOutSchema,
57
+ TDatabase,
58
+ TAuditStorage,
59
+ TAuditAction
60
+ >
37
61
  >,
38
62
  ) {}
39
63
 
@@ -56,6 +80,113 @@ export abstract class FunctionExecutionWrapper<
56
80
  return this.serviceDiscovery.register(this.fn.services);
57
81
  }
58
82
 
83
+ async getDatabase(): Promise<TDatabase | undefined> {
84
+ if (!this.fn.databaseService) {
85
+ return undefined;
86
+ }
87
+
88
+ const services = await this.serviceDiscovery.register([
89
+ this.fn.databaseService,
90
+ ]);
91
+
92
+ return services[
93
+ this.fn.databaseService.serviceName as keyof typeof services
94
+ ] as TDatabase;
95
+ }
96
+
97
+ /**
98
+ * Get the audit storage service if configured.
99
+ * Returns undefined if no auditor storage is configured.
100
+ */
101
+ async getAuditStorage(): Promise<TAuditStorage | undefined> {
102
+ if (!this.fn.auditorStorageService) {
103
+ return undefined;
104
+ }
105
+
106
+ const services = await this.serviceDiscovery.register([
107
+ this.fn.auditorStorageService,
108
+ ]);
109
+
110
+ return services[
111
+ this.fn.auditorStorageService.serviceName as keyof typeof services
112
+ ] as TAuditStorage;
113
+ }
114
+
115
+ /**
116
+ * Create an auditor instance for the function.
117
+ * Returns undefined if no auditor storage is configured.
118
+ */
119
+ async createAuditor(): Promise<Auditor<TAuditAction> | undefined> {
120
+ const storage = await this.getAuditStorage();
121
+ if (!storage) {
122
+ return undefined;
123
+ }
124
+
125
+ return new DefaultAuditor<TAuditAction>({
126
+ actor: { id: 'system', type: 'system' },
127
+ storage: storage as AuditStorage,
128
+ metadata: {
129
+ function: this.fn.type,
130
+ },
131
+ });
132
+ }
133
+
134
+ /**
135
+ * Execute handler with audit transaction support.
136
+ * If the audit storage has a database (via getDatabase()), wraps execution
137
+ * in a transaction so audits are atomic with handler's database operations.
138
+ *
139
+ * @param handler - The handler function to execute (receives auditor and db)
140
+ * @returns The handler result
141
+ */
142
+ async executeWithAudit<T>(
143
+ handler: (ctx: {
144
+ auditor?: Auditor<TAuditAction>;
145
+ db?: TDatabase;
146
+ }) => Promise<T>,
147
+ ): Promise<T> {
148
+ const auditor = await this.createAuditor();
149
+ const storage = await this.getAuditStorage();
150
+
151
+ // No audit context - just run handler with regular db
152
+ if (!auditor || !storage) {
153
+ const db = await this.getDatabase();
154
+ return handler({ db });
155
+ }
156
+
157
+ // Check if storage has a database and db service names match
158
+ const storageDb = (storage as AuditStorage).getDatabase?.();
159
+ const databaseServiceName = this.fn.databaseService?.serviceName;
160
+ const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
161
+
162
+ // If the audit storage has a database and we're using the same database service
163
+ // (or the audit storage provides the database), use transactional execution
164
+ if (storageDb && databaseServiceName && auditDbServiceName) {
165
+ return withAuditableTransaction(
166
+ storageDb as any,
167
+ auditor as any,
168
+ async (trx) => {
169
+ // Use transaction as db
170
+ const response = await handler({
171
+ auditor,
172
+ db: trx as TDatabase,
173
+ });
174
+ // Audits are flushed by withAuditableTransaction before commit
175
+ return response;
176
+ },
177
+ );
178
+ }
179
+
180
+ // No database on storage or service names don't match - run handler and flush audits after
181
+ const db = await this.getDatabase();
182
+ const response = await handler({ auditor, db });
183
+
184
+ // Flush audits (no transaction)
185
+ await auditor.flush();
186
+
187
+ return response;
188
+ }
189
+
59
190
  async getFunctionInput<TEvent>(
60
191
  event: TEvent,
61
192
  ): Promise<InferComposableStandardSchema<TInput>> {
@@ -1,3 +1,5 @@
1
+ import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';
2
+ import { DefaultAuditor } from '@geekmidas/audit';
1
3
  import { EnvironmentParser } from '@geekmidas/envkit';
2
4
  import type { EventPublisher } from '@geekmidas/events';
3
5
  import type { Logger } from '@geekmidas/logger';
@@ -17,12 +19,20 @@ import type { Function } from './Function';
17
19
  import { FunctionBuilder } from './FunctionBuilder';
18
20
 
19
21
  export class TestFunctionAdaptor<
20
- TInput extends StandardSchemaV1 | undefined = undefined,
22
+ TInput extends ComposableStandardSchema | undefined = undefined,
21
23
  TOutSchema extends StandardSchemaV1 | undefined = undefined,
22
24
  TServices extends Service[] = [],
23
25
  TLogger extends Logger = Logger,
24
26
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
25
27
  TEventPublisherServiceName extends string = string,
28
+ TAuditStorage extends AuditStorage | undefined = undefined,
29
+ TAuditStorageServiceName extends string = string,
30
+ TDatabase = undefined,
31
+ TDatabaseServiceName extends string = string,
32
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
33
+ string,
34
+ unknown
35
+ >,
26
36
  > {
27
37
  static getDefaultServiceDiscovery<
28
38
  TInput extends ComposableStandardSchema | undefined = undefined,
@@ -31,15 +41,28 @@ export class TestFunctionAdaptor<
31
41
  TLogger extends Logger = Logger,
32
42
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
33
43
  TEventPublisherServiceName extends string = string,
44
+ TAuditStorage extends AuditStorage | undefined = undefined,
45
+ TAuditStorageServiceName extends string = string,
46
+ TDatabase = undefined,
47
+ TDatabaseServiceName extends string = string,
48
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
49
+ string,
50
+ unknown
51
+ >,
34
52
  >(
35
53
  fn: Function<
36
54
  TInput,
37
55
  TServices,
38
56
  TLogger,
39
57
  TOutSchema,
40
- any,
41
58
  TEventPublisher,
42
- TEventPublisherServiceName
59
+ TEventPublisherServiceName,
60
+ TAuditStorage,
61
+ TAuditStorageServiceName,
62
+ TDatabase,
63
+ TDatabaseServiceName,
64
+ TAuditAction,
65
+ any
43
66
  >,
44
67
  ) {
45
68
  return ServiceDiscovery.getInstance(fn.logger, new EnvironmentParser({}));
@@ -51,9 +74,14 @@ export class TestFunctionAdaptor<
51
74
  TServices,
52
75
  TLogger,
53
76
  TOutSchema,
54
- any,
55
77
  TEventPublisher,
56
- TEventPublisherServiceName
78
+ TEventPublisherServiceName,
79
+ TAuditStorage,
80
+ TAuditStorageServiceName,
81
+ TDatabase,
82
+ TDatabaseServiceName,
83
+ TAuditAction,
84
+ any
57
85
  >,
58
86
  private serviceDiscovery: ServiceDiscovery<
59
87
  any,
@@ -66,7 +94,9 @@ export class TestFunctionAdaptor<
66
94
  TInput,
67
95
  TServices,
68
96
  TEventPublisher,
69
- TEventPublisherServiceName
97
+ TEventPublisherServiceName,
98
+ TDatabase,
99
+ TAuditAction
70
100
  >,
71
101
  ): Promise<InferStandardSchema<TOutSchema>> {
72
102
  // Parse input if schema is provided
@@ -89,16 +119,65 @@ export class TestFunctionAdaptor<
89
119
  services = await this.serviceDiscovery.register(this.fn.services);
90
120
  }
91
121
 
122
+ // Resolve database (use provided db or register from function)
123
+ let db: TDatabase | undefined;
124
+ if ('db' in ctx && ctx.db !== undefined) {
125
+ db = ctx.db;
126
+ } else if (this.fn.databaseService) {
127
+ const dbServices = await this.serviceDiscovery.register([
128
+ this.fn.databaseService,
129
+ ]);
130
+ db = dbServices[
131
+ this.fn.databaseService.serviceName as keyof typeof dbServices
132
+ ] as TDatabase;
133
+ }
134
+
135
+ // Resolve auditor (use provided auditor or create from function)
136
+ let auditor: Auditor<TAuditAction> | undefined;
137
+ if ('auditor' in ctx && ctx.auditor !== undefined) {
138
+ auditor = ctx.auditor;
139
+ } else if (this.fn.auditorStorageService) {
140
+ const auditServices = await this.serviceDiscovery.register([
141
+ this.fn.auditorStorageService,
142
+ ]);
143
+ const storage = auditServices[
144
+ this.fn.auditorStorageService.serviceName as keyof typeof auditServices
145
+ ] as AuditStorage;
146
+
147
+ auditor = new DefaultAuditor<TAuditAction>({
148
+ actor: { id: 'system', type: 'system' },
149
+ storage,
150
+ metadata: {
151
+ function: this.fn.type,
152
+ test: true,
153
+ },
154
+ });
155
+ }
156
+
92
157
  // Execute the function
93
158
  const response = await this.fn['fn']({
94
159
  input: parsedInput,
95
160
  services,
96
161
  logger,
97
- });
162
+ db,
163
+ auditor,
164
+ } as any);
98
165
 
99
166
  // Parse output if schema is provided
100
167
  const output = await this.fn.parseOutput(response);
101
168
 
169
+ // Flush audits if any were recorded
170
+ if (auditor) {
171
+ const records = auditor.getRecords();
172
+ if (records.length > 0) {
173
+ logger.debug(
174
+ { auditCount: records.length },
175
+ 'Flushing function audits',
176
+ );
177
+ await auditor.flush();
178
+ }
179
+ }
180
+
102
181
  // Register publisher service if provided in context
103
182
 
104
183
  await publishEvents(
@@ -114,12 +193,19 @@ export class TestFunctionAdaptor<
114
193
  }
115
194
 
116
195
  export type TestFunctionRequest<
117
- TInput extends StandardSchemaV1 | undefined = undefined,
196
+ TInput extends ComposableStandardSchema | undefined = undefined,
118
197
  TServices extends Service[] = [],
119
198
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
120
199
  TEventPublisherServiceName extends string = string,
200
+ TDatabase = undefined,
201
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
202
+ string,
203
+ unknown
204
+ >,
121
205
  > = {
122
206
  input: InferComposableStandardSchema<TInput>;
123
207
  services: ServiceRecord<TServices>;
124
208
  publisher?: Service<TEventPublisherServiceName, TEventPublisher>;
209
+ db?: TDatabase;
210
+ auditor?: Auditor<TAuditAction>;
125
211
  } & InferComposableStandardSchema<{ input: TInput }>;