@geekmidas/constructs 0.0.10 → 0.0.12

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 (324) hide show
  1. package/dist/{AWSLambdaFunction-DhUb-Vs6.cjs → AWSLambdaFunction-DMxScuaw.cjs} +3 -3
  2. package/dist/{AWSLambdaFunction-DhUb-Vs6.cjs.map → AWSLambdaFunction-DMxScuaw.cjs.map} +1 -1
  3. package/dist/{AWSLambdaFunction-D5V3YVqv.d.cts → AWSLambdaFunction-DSB2oaFG.d.mts} +5 -5
  4. package/dist/{AWSLambdaFunction-D_V-ZQmS.mjs → AWSLambdaFunction-cL8A169J.mjs} +3 -3
  5. package/dist/{AWSLambdaFunction-D_V-ZQmS.mjs.map → AWSLambdaFunction-cL8A169J.mjs.map} +1 -1
  6. package/dist/{AWSLambdaFunction-DvZcnL8a.d.mts → AWSLambdaFunction-t6q2o8EL.d.cts} +5 -5
  7. package/dist/{AWSLambdaSubscriberAdaptor-J_pSz6pu.d.cts → AWSLambdaSubscriberAdaptor-Cknp_nn1.d.cts} +2 -2
  8. package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs → AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs} +1 -1
  9. package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs.map → AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs.map} +1 -1
  10. package/dist/{AWSLambdaSubscriberAdaptor-D6kjKjSf.d.mts → AWSLambdaSubscriberAdaptor-DpHzp-AM.d.mts} +2 -2
  11. package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs → AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs} +1 -1
  12. package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs.map → AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs.map} +1 -1
  13. package/dist/{AmazonApiGatewayEndpointAdaptor-DHcUetbw.mjs → AmazonApiGatewayEndpointAdaptor-CIEhW1TQ.mjs} +47 -16
  14. package/dist/AmazonApiGatewayEndpointAdaptor-CIEhW1TQ.mjs.map +1 -0
  15. package/dist/{AmazonApiGatewayEndpointAdaptor-BnNd8tCz.d.cts → AmazonApiGatewayEndpointAdaptor-CwItKPz2.d.cts} +6 -5
  16. package/dist/{AmazonApiGatewayEndpointAdaptor-DHBF_5jn.cjs → AmazonApiGatewayEndpointAdaptor-H8YvtfQm.cjs} +47 -16
  17. package/dist/AmazonApiGatewayEndpointAdaptor-H8YvtfQm.cjs.map +1 -0
  18. package/dist/{AmazonApiGatewayEndpointAdaptor-B7MKo8h3.d.mts → AmazonApiGatewayEndpointAdaptor-eDQgPNLH.d.mts} +7 -6
  19. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CmUxFoPx.cjs → AmazonApiGatewayV1EndpointAdaptor-0n71d3gq.cjs} +3 -3
  20. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CmUxFoPx.cjs.map → AmazonApiGatewayV1EndpointAdaptor-0n71d3gq.cjs.map} +1 -1
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CsV6zyvn.mjs → AmazonApiGatewayV1EndpointAdaptor-B36zXLJ7.mjs} +3 -3
  22. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CsV6zyvn.mjs.map → AmazonApiGatewayV1EndpointAdaptor-B36zXLJ7.mjs.map} +1 -1
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-gO9OxdZl.d.mts → AmazonApiGatewayV1EndpointAdaptor-CnGVpA38.d.mts} +4 -4
  24. package/dist/{AmazonApiGatewayV1EndpointAdaptor-BC-a2tt3.d.cts → AmazonApiGatewayV1EndpointAdaptor-DaCvUL6y.d.cts} +3 -3
  25. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D1uz4wNg.d.mts → AmazonApiGatewayV2EndpointAdaptor-BELz2ijs.d.mts} +4 -4
  26. package/dist/{AmazonApiGatewayV2EndpointAdaptor-_bFcbEa-.mjs → AmazonApiGatewayV2EndpointAdaptor-CE3wZEb8.mjs} +3 -3
  27. package/dist/{AmazonApiGatewayV2EndpointAdaptor-_bFcbEa-.mjs.map → AmazonApiGatewayV2EndpointAdaptor-CE3wZEb8.mjs.map} +1 -1
  28. package/dist/{AmazonApiGatewayV2EndpointAdaptor-zNFUPxSY.d.cts → AmazonApiGatewayV2EndpointAdaptor-DA1PH0nc.d.cts} +3 -3
  29. package/dist/{AmazonApiGatewayV2EndpointAdaptor-cZbaqiUi.cjs → AmazonApiGatewayV2EndpointAdaptor-DtU3Cb8F.cjs} +3 -3
  30. package/dist/{AmazonApiGatewayV2EndpointAdaptor-cZbaqiUi.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DtU3Cb8F.cjs.map} +1 -1
  31. package/dist/{Authorizer-Bbk9ziuG.d.mts → Authorizer-BRCVPz_O.d.mts} +1 -1
  32. package/dist/{Authorizer-iXsSB600.d.cts → Authorizer-DG54w1m2.d.cts} +1 -1
  33. package/dist/{BaseFunctionBuilder-BmsbV0BU.cjs → BaseFunctionBuilder-B8rT07QR.cjs} +7 -2
  34. package/dist/BaseFunctionBuilder-B8rT07QR.cjs.map +1 -0
  35. package/dist/{BaseFunctionBuilder-DCUtCdVL.mjs → BaseFunctionBuilder-CT7p10K1.mjs} +7 -2
  36. package/dist/BaseFunctionBuilder-CT7p10K1.mjs.map +1 -0
  37. package/dist/{BaseFunctionBuilder-C4ZJPkIZ.d.cts → BaseFunctionBuilder-Cf0op65o.d.cts} +7 -4
  38. package/dist/{BaseFunctionBuilder-CxBX0arJ.d.mts → BaseFunctionBuilder-DilipY1y.d.mts} +7 -4
  39. package/dist/{Construct-VEI7M3fs.cjs → Construct-BYSPikVm.cjs} +28 -10
  40. package/dist/Construct-BYSPikVm.cjs.map +1 -0
  41. package/dist/{Construct-C3hsQBy4.mjs → Construct-LWeB1rSQ.mjs} +28 -10
  42. package/dist/Construct-LWeB1rSQ.mjs.map +1 -0
  43. package/dist/{Construct-ci5u8Xnu.d.cts → Construct-ZPqE0vhn.d.mts} +9 -4
  44. package/dist/{Construct-zhmcmIdY.d.mts → Construct-dI_rgdSp.d.cts} +9 -4
  45. package/dist/Construct.cjs +1 -1
  46. package/dist/Construct.d.cts +1 -1
  47. package/dist/Construct.d.mts +1 -1
  48. package/dist/Construct.mjs +1 -1
  49. package/dist/{Cron-ByNYsQDH.d.mts → Cron-6lOgKqSA.d.cts} +3 -3
  50. package/dist/{Cron-DkPL-Fms.d.cts → Cron-BH_07atD.d.mts} +3 -3
  51. package/dist/{Cron-Dfgr8F9d.cjs → Cron-Bnd-2pgE.cjs} +3 -3
  52. package/dist/{Cron-Dfgr8F9d.cjs.map → Cron-Bnd-2pgE.cjs.map} +1 -1
  53. package/dist/{Cron-wP6Ob48_.mjs → Cron-DNRjf2cp.mjs} +3 -3
  54. package/dist/{Cron-wP6Ob48_.mjs.map → Cron-DNRjf2cp.mjs.map} +1 -1
  55. package/dist/{CronBuilder-BknVTWLE.d.mts → CronBuilder-5oK2AL2n.d.cts} +5 -5
  56. package/dist/{CronBuilder-BqTTozUi.d.cts → CronBuilder-D2b4zY4l.d.mts} +5 -5
  57. package/dist/{CronBuilder-C27c5oqh.mjs → CronBuilder-DdR2TuQa.mjs} +5 -5
  58. package/dist/{CronBuilder-C27c5oqh.mjs.map → CronBuilder-DdR2TuQa.mjs.map} +1 -1
  59. package/dist/{CronBuilder-W1ZqCJ7m.cjs → CronBuilder-dtw4ZyH6.cjs} +5 -5
  60. package/dist/{CronBuilder-W1ZqCJ7m.cjs.map → CronBuilder-dtw4ZyH6.cjs.map} +1 -1
  61. package/dist/{Endpoint-C98BwZjA.mjs → Endpoint-B69TqESg.mjs} +15 -8
  62. package/dist/Endpoint-B69TqESg.mjs.map +1 -0
  63. package/dist/{Endpoint-BjpQmTek.cjs → Endpoint-B9PryZES.cjs} +15 -8
  64. package/dist/Endpoint-B9PryZES.cjs.map +1 -0
  65. package/dist/{Endpoint-zHPjZ35J.d.cts → Endpoint-Cs-MsYlY.d.cts} +80 -12
  66. package/dist/{Endpoint-C16whGI-.d.mts → Endpoint-DuZlyjd4.d.mts} +80 -12
  67. package/dist/EndpointBuilder-BrB-K1jO.d.mts +86 -0
  68. package/dist/EndpointBuilder-C-PHInEW.d.cts +86 -0
  69. package/dist/{EndpointBuilder-CCUx4vep.mjs → EndpointBuilder-DnVL-EU_.mjs} +47 -5
  70. package/dist/EndpointBuilder-DnVL-EU_.mjs.map +1 -0
  71. package/dist/{EndpointBuilder-D2Zu8i9b.cjs → EndpointBuilder-DofwCnWJ.cjs} +47 -5
  72. package/dist/EndpointBuilder-DofwCnWJ.cjs.map +1 -0
  73. package/dist/{EndpointFactory-KkyIOE62.d.cts → EndpointFactory-6zNpVSYp.d.mts} +12 -11
  74. package/dist/{EndpointFactory-C4YhgXOc.cjs → EndpointFactory-Ba9mx9MU.cjs} +3 -3
  75. package/dist/{EndpointFactory-C4YhgXOc.cjs.map → EndpointFactory-Ba9mx9MU.cjs.map} +1 -1
  76. package/dist/{EndpointFactory-VnSAdwdv.d.mts → EndpointFactory-e5WYVR6t.d.cts} +12 -11
  77. package/dist/{EndpointFactory-RAb2zcw0.mjs → EndpointFactory-pPaIGFHV.mjs} +3 -3
  78. package/dist/{EndpointFactory-RAb2zcw0.mjs.map → EndpointFactory-pPaIGFHV.mjs.map} +1 -1
  79. package/dist/{Function-BbLYIKLL.d.cts → Function-6EWabl_X.d.cts} +5 -4
  80. package/dist/{Function-1Fh6Tdkg.cjs → Function-CO-s2pB8.cjs} +6 -6
  81. package/dist/Function-CO-s2pB8.cjs.map +1 -0
  82. package/dist/{Function-D-QEfH7k.mjs → Function-COnc-tWM.mjs} +6 -6
  83. package/dist/Function-COnc-tWM.mjs.map +1 -0
  84. package/dist/{Function-DFRZZCC-.d.mts → Function-G3JPHMaY.d.mts} +5 -4
  85. package/dist/{FunctionBuilder-DdGjpiFT.d.cts → FunctionBuilder-B3fpp3hA.d.cts} +13 -11
  86. package/dist/{FunctionBuilder-DuktGyZc.d.mts → FunctionBuilder-ByaB_LQ4.d.mts} +13 -11
  87. package/dist/{FunctionBuilder-Bxyr1Pf9.mjs → FunctionBuilder-CMhLQ4dt.mjs} +11 -6
  88. package/dist/FunctionBuilder-CMhLQ4dt.mjs.map +1 -0
  89. package/dist/{FunctionBuilder-DcEFYgbn.cjs → FunctionBuilder-_hMwZUof.cjs} +11 -6
  90. package/dist/FunctionBuilder-_hMwZUof.cjs.map +1 -0
  91. package/dist/{FunctionExecutionWrapper-CRYi047B.d.cts → FunctionExecutionWrapper-Ci-ookJG.d.cts} +2 -2
  92. package/dist/{FunctionExecutionWrapper-DaR-dSLw.d.mts → FunctionExecutionWrapper-DHFMLrOl.d.mts} +2 -2
  93. package/dist/{FunctionExecutionWrapper-BL6PE6Dv.mjs → FunctionExecutionWrapper-i9v5L3Av.mjs} +2 -2
  94. package/dist/{FunctionExecutionWrapper-BL6PE6Dv.mjs.map → FunctionExecutionWrapper-i9v5L3Av.mjs.map} +1 -1
  95. package/dist/{FunctionExecutionWrapper-Ee-CE8Fz.cjs → FunctionExecutionWrapper-sxJNTpuc.cjs} +2 -2
  96. package/dist/{FunctionExecutionWrapper-Ee-CE8Fz.cjs.map → FunctionExecutionWrapper-sxJNTpuc.cjs.map} +1 -1
  97. package/dist/{HonoEndpointAdaptor-CY1mXTe6.d.mts → HonoEndpointAdaptor-BElil8O5.d.mts} +9 -8
  98. package/dist/{HonoEndpointAdaptor-DcvZdYzx.cjs → HonoEndpointAdaptor-Cw2if5cG.cjs} +51 -20
  99. package/dist/HonoEndpointAdaptor-Cw2if5cG.cjs.map +1 -0
  100. package/dist/{HonoEndpointAdaptor-CyVPl4w2.mjs → HonoEndpointAdaptor-DAfnTFVS.mjs} +51 -20
  101. package/dist/HonoEndpointAdaptor-DAfnTFVS.mjs.map +1 -0
  102. package/dist/{HonoEndpointAdaptor-CYvrXBe-.d.cts → HonoEndpointAdaptor-DSHl8ZCY.d.cts} +8 -7
  103. package/dist/{Subscriber-Cy28j8MS.d.cts → Subscriber-BhzqUzs-.d.cts} +2 -2
  104. package/dist/{Subscriber-CTczVFsF.mjs → Subscriber-CGb8LjZa.mjs} +2 -2
  105. package/dist/{Subscriber-CTczVFsF.mjs.map → Subscriber-CGb8LjZa.mjs.map} +1 -1
  106. package/dist/{Subscriber-BL30GpWp.cjs → Subscriber-D-FPWts6.cjs} +2 -2
  107. package/dist/{Subscriber-BL30GpWp.cjs.map → Subscriber-D-FPWts6.cjs.map} +1 -1
  108. package/dist/{Subscriber-g3IWM1_d.d.mts → Subscriber-s6yfjeOc.d.mts} +2 -2
  109. package/dist/{SubscriberBuilder-BzK8kc2a.d.cts → SubscriberBuilder-BCVkp-ga.d.cts} +2 -2
  110. package/dist/{SubscriberBuilder-CekL3BoP.mjs → SubscriberBuilder-BcAspHv9.mjs} +2 -2
  111. package/dist/{SubscriberBuilder-CekL3BoP.mjs.map → SubscriberBuilder-BcAspHv9.mjs.map} +1 -1
  112. package/dist/{SubscriberBuilder-D1hojYLa.cjs → SubscriberBuilder-BfE2cL1q.cjs} +2 -2
  113. package/dist/{SubscriberBuilder-D1hojYLa.cjs.map → SubscriberBuilder-BfE2cL1q.cjs.map} +1 -1
  114. package/dist/{SubscriberBuilder-YjQ7qIpQ.d.mts → SubscriberBuilder-aCua5_wA.d.mts} +2 -2
  115. package/dist/{TestEndpointAdaptor-C-ahwGW6.cjs → TestEndpointAdaptor-Bn1WRFph.cjs} +47 -18
  116. package/dist/TestEndpointAdaptor-Bn1WRFph.cjs.map +1 -0
  117. package/dist/{TestEndpointAdaptor-DGWuai69.d.mts → TestEndpointAdaptor-DnlAA_rm.d.mts} +7 -6
  118. package/dist/{TestEndpointAdaptor-B4z9G5Ap.mjs → TestEndpointAdaptor-DubQOJk_.mjs} +47 -18
  119. package/dist/TestEndpointAdaptor-DubQOJk_.mjs.map +1 -0
  120. package/dist/{TestEndpointAdaptor-uXliWYjS.d.cts → TestEndpointAdaptor-o-xtSyQ3.d.cts} +6 -5
  121. package/dist/adaptors/aws.cjs +14 -13
  122. package/dist/adaptors/aws.d.cts +14 -14
  123. package/dist/adaptors/aws.d.mts +15 -15
  124. package/dist/adaptors/aws.mjs +14 -13
  125. package/dist/adaptors/hono.cjs +10 -9
  126. package/dist/adaptors/hono.d.cts +8 -8
  127. package/dist/adaptors/hono.d.mts +9 -9
  128. package/dist/adaptors/hono.mjs +10 -9
  129. package/dist/adaptors/testing.cjs +8 -7
  130. package/dist/adaptors/testing.d.cts +8 -8
  131. package/dist/adaptors/testing.d.mts +9 -9
  132. package/dist/adaptors/testing.mjs +8 -7
  133. package/dist/crons/Cron.cjs +6 -6
  134. package/dist/crons/Cron.d.cts +6 -6
  135. package/dist/crons/Cron.d.mts +6 -6
  136. package/dist/crons/Cron.mjs +6 -6
  137. package/dist/crons/CronBuilder.cjs +7 -7
  138. package/dist/crons/CronBuilder.d.cts +7 -7
  139. package/dist/crons/CronBuilder.d.mts +7 -7
  140. package/dist/crons/CronBuilder.mjs +7 -7
  141. package/dist/crons/index.cjs +7 -7
  142. package/dist/crons/index.d.cts +11 -11
  143. package/dist/crons/index.d.mts +11 -11
  144. package/dist/crons/index.mjs +7 -7
  145. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +8 -7
  146. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -8
  147. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -9
  148. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +8 -7
  149. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +10 -9
  150. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +9 -9
  151. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -10
  152. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +10 -9
  153. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +10 -9
  154. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -9
  155. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -10
  156. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +10 -9
  157. package/dist/endpoints/Authorizer.d.cts +1 -1
  158. package/dist/endpoints/Authorizer.d.mts +1 -1
  159. package/dist/endpoints/Endpoint.cjs +6 -6
  160. package/dist/endpoints/Endpoint.d.cts +7 -7
  161. package/dist/endpoints/Endpoint.d.mts +8 -8
  162. package/dist/endpoints/Endpoint.mjs +6 -6
  163. package/dist/endpoints/EndpointBuilder.cjs +7 -7
  164. package/dist/endpoints/EndpointBuilder.d.cts +8 -8
  165. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  166. package/dist/endpoints/EndpointBuilder.mjs +7 -7
  167. package/dist/endpoints/EndpointFactory.cjs +8 -8
  168. package/dist/endpoints/EndpointFactory.d.cts +9 -9
  169. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  170. package/dist/endpoints/EndpointFactory.mjs +8 -8
  171. package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
  172. package/dist/endpoints/HonoEndpointAdaptor.d.cts +8 -8
  173. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  174. package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
  175. package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
  176. package/dist/endpoints/TestEndpointAdaptor.d.cts +8 -8
  177. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  178. package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
  179. package/dist/endpoints/audit.cjs +0 -0
  180. package/dist/endpoints/audit.d.cts +9 -0
  181. package/dist/endpoints/audit.d.mts +9 -0
  182. package/dist/endpoints/audit.mjs +0 -0
  183. package/dist/endpoints/helpers.cjs +7 -7
  184. package/dist/endpoints/helpers.d.cts +7 -7
  185. package/dist/endpoints/helpers.d.mts +8 -8
  186. package/dist/endpoints/helpers.mjs +7 -7
  187. package/dist/endpoints/index.cjs +8 -8
  188. package/dist/endpoints/index.cjs.map +1 -1
  189. package/dist/endpoints/index.d.cts +12 -12
  190. package/dist/endpoints/index.d.mts +13 -13
  191. package/dist/endpoints/index.mjs +8 -8
  192. package/dist/endpoints/index.mjs.map +1 -1
  193. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  194. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  195. package/dist/endpoints/parseQueryParams.cjs +1 -1
  196. package/dist/endpoints/parseQueryParams.mjs +1 -1
  197. package/dist/endpoints/processAudits.cjs +5 -0
  198. package/dist/endpoints/processAudits.d.cts +74 -0
  199. package/dist/endpoints/processAudits.d.mts +74 -0
  200. package/dist/endpoints/processAudits.mjs +3 -0
  201. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  202. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  203. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  204. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  205. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  206. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  207. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  208. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  209. package/dist/functions/Function.cjs +2 -2
  210. package/dist/functions/Function.d.cts +2 -2
  211. package/dist/functions/Function.d.mts +2 -2
  212. package/dist/functions/Function.mjs +2 -2
  213. package/dist/functions/FunctionBuilder.cjs +4 -4
  214. package/dist/functions/FunctionBuilder.d.cts +4 -4
  215. package/dist/functions/FunctionBuilder.d.mts +4 -4
  216. package/dist/functions/FunctionBuilder.mjs +4 -4
  217. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  218. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  219. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  220. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  221. package/dist/functions/TestFunctionAdaptor.cjs +4 -4
  222. package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
  223. package/dist/functions/TestFunctionAdaptor.d.mts +2 -2
  224. package/dist/functions/TestFunctionAdaptor.mjs +4 -4
  225. package/dist/functions/index.cjs +5 -5
  226. package/dist/functions/index.d.cts +5 -5
  227. package/dist/functions/index.d.mts +5 -5
  228. package/dist/functions/index.mjs +5 -5
  229. package/dist/functions-BYqZAob8.mjs +8 -0
  230. package/dist/{functions-DD-00sWF.mjs.map → functions-BYqZAob8.mjs.map} +1 -1
  231. package/dist/{functions-BtgBiuC_.cjs → functions-D03lqK-r.cjs} +2 -2
  232. package/dist/{functions-BtgBiuC_.cjs.map → functions-D03lqK-r.cjs.map} +1 -1
  233. package/dist/{helpers-QM_FSjPY.cjs → helpers-BApRyhly.cjs} +2 -2
  234. package/dist/{helpers-QM_FSjPY.cjs.map → helpers-BApRyhly.cjs.map} +1 -1
  235. package/dist/{helpers-DtPeOhUV.mjs → helpers-BPDogwac.mjs} +2 -2
  236. package/dist/{helpers-DtPeOhUV.mjs.map → helpers-BPDogwac.mjs.map} +1 -1
  237. package/dist/index-CUg_hSq-.d.cts +9 -0
  238. package/dist/index-D-a7e2gv.d.mts +9 -0
  239. package/dist/index.cjs +1 -1
  240. package/dist/index.d.cts +1 -1
  241. package/dist/index.d.mts +2 -2
  242. package/dist/index.mjs +1 -1
  243. package/dist/{parseHonoQuery-DopC24vB.cjs → parseHonoQuery-CT8Cvin-.cjs} +1 -1
  244. package/dist/{parseHonoQuery-DopC24vB.cjs.map → parseHonoQuery-CT8Cvin-.cjs.map} +1 -1
  245. package/dist/{parseHonoQuery-znDKBhdE.mjs → parseHonoQuery-CwFKw2ua.mjs} +1 -1
  246. package/dist/{parseHonoQuery-znDKBhdE.mjs.map → parseHonoQuery-CwFKw2ua.mjs.map} +1 -1
  247. package/dist/{parseQueryParams-BJaRh3OB.mjs → parseQueryParams-CHINupbZ.mjs} +1 -1
  248. package/dist/{parseQueryParams-BJaRh3OB.mjs.map → parseQueryParams-CHINupbZ.mjs.map} +1 -1
  249. package/dist/{parseQueryParams-BzPop4I1.cjs → parseQueryParams-CwvXXwkW.cjs} +1 -1
  250. package/dist/{parseQueryParams-BzPop4I1.cjs.map → parseQueryParams-CwvXXwkW.cjs.map} +1 -1
  251. package/dist/processAudits-BFokHhCO.cjs +174 -0
  252. package/dist/processAudits-BFokHhCO.cjs.map +1 -0
  253. package/dist/processAudits-DfcB-X-4.mjs +156 -0
  254. package/dist/processAudits-DfcB-X-4.mjs.map +1 -0
  255. package/dist/publisher.d.cts +1 -1
  256. package/dist/publisher.d.mts +1 -1
  257. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  258. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  259. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  260. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  261. package/dist/subscribers/Subscriber.cjs +2 -2
  262. package/dist/subscribers/Subscriber.d.cts +2 -2
  263. package/dist/subscribers/Subscriber.d.mts +2 -2
  264. package/dist/subscribers/Subscriber.mjs +2 -2
  265. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  266. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  267. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  268. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  269. package/dist/subscribers/index.cjs +3 -3
  270. package/dist/subscribers/index.d.cts +5 -5
  271. package/dist/subscribers/index.d.mts +5 -5
  272. package/dist/subscribers/index.mjs +3 -3
  273. package/dist/{types-CVq20-fE.d.mts → types-DKf0juBf.d.mts} +1 -1
  274. package/dist/types.d.mts +1 -1
  275. package/package.json +14 -10
  276. package/src/Construct.ts +31 -5
  277. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +88 -19
  278. package/src/endpoints/Endpoint.ts +66 -13
  279. package/src/endpoints/EndpointBuilder.ts +183 -19
  280. package/src/endpoints/HonoEndpointAdaptor.ts +114 -33
  281. package/src/endpoints/TestEndpointAdaptor.ts +96 -21
  282. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +8 -0
  283. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +29 -0
  284. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +626 -0
  285. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +9 -0
  286. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +718 -0
  287. package/src/endpoints/__tests__/Endpoint.spec.ts +19 -0
  288. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +424 -0
  289. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +685 -0
  290. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +632 -0
  291. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +8 -0
  292. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +678 -0
  293. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +4 -0
  294. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +25 -0
  295. package/src/endpoints/audit.ts +87 -0
  296. package/src/endpoints/index.ts +1 -0
  297. package/src/endpoints/processAudits.ts +339 -0
  298. package/src/functions/BaseFunctionBuilder.ts +50 -7
  299. package/src/functions/Function.ts +13 -9
  300. package/src/functions/FunctionBuilder.ts +78 -14
  301. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +43 -2
  302. package/dist/AmazonApiGatewayEndpointAdaptor-DHBF_5jn.cjs.map +0 -1
  303. package/dist/AmazonApiGatewayEndpointAdaptor-DHcUetbw.mjs.map +0 -1
  304. package/dist/BaseFunctionBuilder-BmsbV0BU.cjs.map +0 -1
  305. package/dist/BaseFunctionBuilder-DCUtCdVL.mjs.map +0 -1
  306. package/dist/Construct-C3hsQBy4.mjs.map +0 -1
  307. package/dist/Construct-VEI7M3fs.cjs.map +0 -1
  308. package/dist/Endpoint-BjpQmTek.cjs.map +0 -1
  309. package/dist/Endpoint-C98BwZjA.mjs.map +0 -1
  310. package/dist/EndpointBuilder-B5l7zQU1.d.cts +0 -55
  311. package/dist/EndpointBuilder-BzqR0xvt.d.mts +0 -55
  312. package/dist/EndpointBuilder-CCUx4vep.mjs.map +0 -1
  313. package/dist/EndpointBuilder-D2Zu8i9b.cjs.map +0 -1
  314. package/dist/Function-1Fh6Tdkg.cjs.map +0 -1
  315. package/dist/Function-D-QEfH7k.mjs.map +0 -1
  316. package/dist/FunctionBuilder-Bxyr1Pf9.mjs.map +0 -1
  317. package/dist/FunctionBuilder-DcEFYgbn.cjs.map +0 -1
  318. package/dist/HonoEndpointAdaptor-CyVPl4w2.mjs.map +0 -1
  319. package/dist/HonoEndpointAdaptor-DcvZdYzx.cjs.map +0 -1
  320. package/dist/TestEndpointAdaptor-B4z9G5Ap.mjs.map +0 -1
  321. package/dist/TestEndpointAdaptor-C-ahwGW6.cjs.map +0 -1
  322. package/dist/functions-DD-00sWF.mjs +0 -8
  323. package/dist/index-CcmV3PKF.d.cts +0 -9
  324. package/dist/index-DQt3pQtF.d.mts +0 -9
@@ -1,11 +1,15 @@
1
+ import type { AuditableAction, AuditStorage } from '@geekmidas/audit';
2
+ import type { EventPublisher, MappedEvent } from '@geekmidas/events';
1
3
  import type { Logger } from '@geekmidas/logger';
2
4
  import type { RateLimitConfig } from '@geekmidas/rate-limit';
3
5
  import type { Service } from '@geekmidas/services';
4
6
  import type { StandardSchemaV1 } from '@standard-schema/spec';
5
7
  import uniqBy from 'lodash.uniqby';
6
- import type { Authorizer } from './Authorizer';
7
8
  import { ConstructType } from '../Construct';
8
9
  import { BaseFunctionBuilder } from '../functions';
10
+ import type { HttpMethod } from '../types';
11
+ import type { ActorExtractor, MappedAudit } from './audit';
12
+ import type { Authorizer } from './Authorizer';
9
13
  import { Endpoint, type EndpointSchemas } from './Endpoint';
10
14
  import type {
11
15
  AuthorizeFn,
@@ -14,9 +18,6 @@ import type {
14
18
  SuccessStatus,
15
19
  } from './Endpoint';
16
20
 
17
- import type { EventPublisher, MappedEvent } from '@geekmidas/events';
18
- import type { HttpMethod } from '../types';
19
-
20
21
  export class EndpointBuilder<
21
22
  TRoute extends string,
22
23
  TMethod extends HttpMethod,
@@ -28,13 +29,21 @@ export class EndpointBuilder<
28
29
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
29
30
  TEventPublisherServiceName extends string = string,
30
31
  TAuthorizers extends readonly string[] = readonly string[],
32
+ TAuditStorage extends AuditStorage | undefined = undefined,
33
+ TAuditStorageServiceName extends string = string,
34
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
35
+ string,
36
+ unknown
37
+ >,
31
38
  > extends BaseFunctionBuilder<
32
39
  TInput,
33
40
  OutSchema,
34
41
  TServices,
35
42
  TLogger,
36
43
  TEventPublisher,
37
- TEventPublisherServiceName
44
+ TEventPublisherServiceName,
45
+ TAuditStorage,
46
+ TAuditStorageServiceName
38
47
  > {
39
48
  protected schemas: TInput = {} as TInput;
40
49
  protected _description?: string;
@@ -46,6 +55,8 @@ export class EndpointBuilder<
46
55
  _rateLimit?: RateLimitConfig;
47
56
  _availableAuthorizers: Authorizer[] = [];
48
57
  _authorizerName?: TAuthorizers[number];
58
+ _actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
59
+ _audits: MappedAudit<TAuditAction, OutSchema>[] = [];
49
60
 
50
61
  constructor(
51
62
  readonly route: TRoute,
@@ -100,7 +111,9 @@ export class EndpointBuilder<
100
111
  TSession,
101
112
  T,
102
113
  TName,
103
- TAuthorizers
114
+ TAuthorizers,
115
+ TAuditStorage,
116
+ TAuditStorageServiceName
104
117
  > {
105
118
  this._publisher = publisher as unknown as Service<
106
119
  TEventPublisherServiceName,
@@ -117,7 +130,9 @@ export class EndpointBuilder<
117
130
  TSession,
118
131
  T,
119
132
  TName,
120
- TAuthorizers
133
+ TAuthorizers,
134
+ TAuditStorage,
135
+ TAuditStorageServiceName
121
136
  >;
122
137
  }
123
138
 
@@ -133,7 +148,9 @@ export class EndpointBuilder<
133
148
  TSession,
134
149
  TEventPublisher,
135
150
  TEventPublisherServiceName,
136
- TAuthorizers
151
+ TAuthorizers,
152
+ TAuditStorage,
153
+ TAuditStorageServiceName
137
154
  > {
138
155
  this.schemas.body = schema as unknown as T;
139
156
  // @ts-ignore
@@ -152,7 +169,9 @@ export class EndpointBuilder<
152
169
  TSession,
153
170
  TEventPublisher,
154
171
  TEventPublisherServiceName,
155
- TAuthorizers
172
+ TAuthorizers,
173
+ TAuditStorage,
174
+ TAuditStorageServiceName
156
175
  > {
157
176
  this.schemas.query = schema as unknown as T;
158
177
  // @ts-ignore
@@ -171,7 +190,9 @@ export class EndpointBuilder<
171
190
  TSession,
172
191
  TEventPublisher,
173
192
  TEventPublisherServiceName,
174
- TAuthorizers
193
+ TAuthorizers,
194
+ TAuditStorage,
195
+ TAuditStorageServiceName
175
196
  > {
176
197
  return this.search(schema);
177
198
  }
@@ -188,7 +209,9 @@ export class EndpointBuilder<
188
209
  TSession,
189
210
  TEventPublisher,
190
211
  TEventPublisherServiceName,
191
- TAuthorizers
212
+ TAuthorizers,
213
+ TAuditStorage,
214
+ TAuditStorageServiceName
192
215
  > {
193
216
  this.schemas.params = schema as unknown as T;
194
217
  // @ts-ignore
@@ -212,7 +235,9 @@ export class EndpointBuilder<
212
235
  TSession,
213
236
  TEventPublisher,
214
237
  TEventPublisherServiceName,
215
- TAuthorizers
238
+ TAuthorizers,
239
+ TAuditStorage,
240
+ TAuditStorageServiceName
216
241
  > {
217
242
  // Special case: 'none' explicitly marks endpoint as having no authorizer
218
243
  if (name === 'none') {
@@ -246,7 +271,9 @@ export class EndpointBuilder<
246
271
  TSession,
247
272
  TEventPublisher,
248
273
  TEventPublisherServiceName,
249
- TAuthorizers
274
+ TAuthorizers,
275
+ TAuditStorage,
276
+ TAuditStorageServiceName
250
277
  > {
251
278
  this._services = uniqBy(
252
279
  [...this._services, ...services],
@@ -263,7 +290,9 @@ export class EndpointBuilder<
263
290
  TSession,
264
291
  TEventPublisher,
265
292
  TEventPublisherServiceName,
266
- TAuthorizers
293
+ TAuthorizers,
294
+ TAuditStorage,
295
+ TAuditStorageServiceName
267
296
  >;
268
297
  }
269
298
 
@@ -279,7 +308,9 @@ export class EndpointBuilder<
279
308
  TSession,
280
309
  TEventPublisher,
281
310
  TEventPublisherServiceName,
282
- TAuthorizers
311
+ TAuthorizers,
312
+ TAuditStorage,
313
+ TAuditStorageServiceName
283
314
  > {
284
315
  this._logger = logger as unknown as TLogger;
285
316
 
@@ -293,7 +324,9 @@ export class EndpointBuilder<
293
324
  TSession,
294
325
  TEventPublisher,
295
326
  TEventPublisherServiceName,
296
- TAuthorizers
327
+ TAuthorizers,
328
+ TAuditStorage,
329
+ TAuditStorageServiceName
297
330
  >;
298
331
  }
299
332
 
@@ -309,7 +342,9 @@ export class EndpointBuilder<
309
342
  TSession,
310
343
  TEventPublisher,
311
344
  TEventPublisherServiceName,
312
- TAuthorizers
345
+ TAuthorizers,
346
+ TAuditStorage,
347
+ TAuditStorageServiceName
313
348
  > {
314
349
  this.outputSchema = schema as unknown as OutSchema;
315
350
 
@@ -323,7 +358,129 @@ export class EndpointBuilder<
323
358
  TSession,
324
359
  TEventPublisher,
325
360
  TEventPublisherServiceName,
326
- TAuthorizers
361
+ TAuthorizers,
362
+ TAuditStorage,
363
+ TAuditStorageServiceName
364
+ >;
365
+ }
366
+
367
+ /**
368
+ * Set the auditor storage service for this endpoint.
369
+ * This enables audit functionality and makes `auditor` available in the handler context.
370
+ */
371
+ auditor<T extends AuditStorage, TName extends string>(
372
+ storage: Service<TName, T>,
373
+ ): EndpointBuilder<
374
+ TRoute,
375
+ TMethod,
376
+ TInput,
377
+ TServices,
378
+ TLogger,
379
+ OutSchema,
380
+ TSession,
381
+ TEventPublisher,
382
+ TEventPublisherServiceName,
383
+ TAuthorizers,
384
+ T,
385
+ TName,
386
+ TAuditAction
387
+ > {
388
+ this._auditorStorage = storage as unknown as Service<
389
+ TAuditStorageServiceName,
390
+ TAuditStorage
391
+ >;
392
+
393
+ return this as unknown as EndpointBuilder<
394
+ TRoute,
395
+ TMethod,
396
+ TInput,
397
+ TServices,
398
+ TLogger,
399
+ OutSchema,
400
+ TSession,
401
+ TEventPublisher,
402
+ TEventPublisherServiceName,
403
+ TAuthorizers,
404
+ T,
405
+ TName,
406
+ TAuditAction
407
+ >;
408
+ }
409
+
410
+ /**
411
+ * Set the actor extractor function for audit records.
412
+ * The actor is extracted from the request context and attached to all audits.
413
+ */
414
+ actor(
415
+ extractor: ActorExtractor<TServices, TSession, TLogger>,
416
+ ): EndpointBuilder<
417
+ TRoute,
418
+ TMethod,
419
+ TInput,
420
+ TServices,
421
+ TLogger,
422
+ OutSchema,
423
+ TSession,
424
+ TEventPublisher,
425
+ TEventPublisherServiceName,
426
+ TAuthorizers,
427
+ TAuditStorage,
428
+ TAuditStorageServiceName,
429
+ TAuditAction
430
+ > {
431
+ this._actorExtractor = extractor;
432
+ return this;
433
+ }
434
+
435
+ /**
436
+ * Add declarative audit definitions that are processed after the handler executes.
437
+ * Similar to `.event()` for events, but for audits.
438
+ *
439
+ * @example
440
+ * ```typescript
441
+ * .audit<AppAuditAction>([
442
+ * {
443
+ * type: 'user.created',
444
+ * payload: (response) => ({ userId: response.id, email: response.email }),
445
+ * when: (response) => response.active,
446
+ * entityId: (response) => response.id,
447
+ * table: 'users',
448
+ * },
449
+ * ])
450
+ * ```
451
+ */
452
+ audit<T extends AuditableAction<string, unknown>>(
453
+ audits: MappedAudit<T, OutSchema>[],
454
+ ): EndpointBuilder<
455
+ TRoute,
456
+ TMethod,
457
+ TInput,
458
+ TServices,
459
+ TLogger,
460
+ OutSchema,
461
+ TSession,
462
+ TEventPublisher,
463
+ TEventPublisherServiceName,
464
+ TAuthorizers,
465
+ TAuditStorage,
466
+ TAuditStorageServiceName,
467
+ T
468
+ > {
469
+ this._audits = audits as unknown as MappedAudit<TAuditAction, OutSchema>[];
470
+ return this as unknown as EndpointBuilder<
471
+ TRoute,
472
+ TMethod,
473
+ TInput,
474
+ TServices,
475
+ TLogger,
476
+ OutSchema,
477
+ TSession,
478
+ TEventPublisher,
479
+ TEventPublisherServiceName,
480
+ TAuthorizers,
481
+ TAuditStorage,
482
+ TAuditStorageServiceName,
483
+ T
327
484
  >;
328
485
  }
329
486
 
@@ -344,7 +501,11 @@ export class EndpointBuilder<
344
501
  TServices,
345
502
  TLogger,
346
503
  TSession,
347
- TEventPublisher
504
+ TEventPublisher,
505
+ TEventPublisherServiceName,
506
+ TAuditStorage,
507
+ TAuditStorageServiceName,
508
+ TAuditAction
348
509
  > {
349
510
  // Find authorizer metadata if name is set
350
511
  const authorizer = this._authorizerName
@@ -370,6 +531,9 @@ export class EndpointBuilder<
370
531
  publisherService: this._publisher,
371
532
  events: this._events,
372
533
  authorizer,
534
+ auditorStorageService: this._auditorStorage,
535
+ actorExtractor: this._actorExtractor,
536
+ audits: this._audits,
373
537
  });
374
538
  }
375
539
  }
@@ -1,3 +1,4 @@
1
+ import type { AuditableAction, AuditStorage } from '@geekmidas/audit';
1
2
  import type { EnvironmentParser } from '@geekmidas/envkit';
2
3
  import type { EventPublisher } from '@geekmidas/events';
3
4
  import type { Logger } from '@geekmidas/logger';
@@ -19,6 +20,7 @@ import { getEndpointsFromRoutes } from './helpers';
19
20
  import { parseHonoQuery } from './parseHonoQuery';
20
21
 
21
22
  import { wrapError } from '@geekmidas/errors';
23
+ import type { InferStandardSchema } from '@geekmidas/schema';
22
24
  import {
23
25
  type Service,
24
26
  ServiceDiscovery,
@@ -26,6 +28,11 @@ import {
26
28
  } from '@geekmidas/services';
27
29
  import type { ContentfulStatusCode } from 'hono/utils/http-status';
28
30
  import { publishConstructEvents } from '../publisher';
31
+ import type { MappedAudit } from './audit';
32
+ import {
33
+ createAuditContext,
34
+ executeWithAuditTransaction,
35
+ } from './processAudits';
29
36
 
30
37
  export interface HonoEndpointOptions {
31
38
  /**
@@ -53,6 +60,13 @@ export class HonoEndpoint<
53
60
  TLogger extends Logger = Logger,
54
61
  TSession = unknown,
55
62
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
63
+ TEventPublisherServiceName extends string = string,
64
+ TAuditStorage extends AuditStorage | undefined = undefined,
65
+ TAuditStorageServiceName extends string = string,
66
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
67
+ string,
68
+ unknown
69
+ >,
56
70
  > {
57
71
  constructor(
58
72
  private readonly endpoint: Endpoint<
@@ -63,7 +77,11 @@ export class HonoEndpoint<
63
77
  TServices,
64
78
  TLogger,
65
79
  TSession,
66
- TEventPublisher
80
+ TEventPublisher,
81
+ TEventPublisherServiceName,
82
+ TAuditStorage,
83
+ TAuditStorageServiceName,
84
+ TAuditAction
67
85
  >,
68
86
  ) {}
69
87
 
@@ -111,11 +129,12 @@ export class HonoEndpoint<
111
129
  any
112
130
  >;
113
131
  // @ts-ignore
114
- const response = c.get('__response') as InferStandardSchema<TOutSchema>;
132
+ const response = c.get('__response');
115
133
  // @ts-ignore
116
134
  const logger = c.get('__logger') as Logger;
117
135
 
118
136
  if (Endpoint.isSuccessStatus(c.res.status) && endpoint) {
137
+ // Process events (audits are handled in the handler with transaction support)
119
138
  await publishConstructEvents<any, any>(
120
139
  endpoint,
121
140
  response,
@@ -215,6 +234,13 @@ export class HonoEndpoint<
215
234
  TLogger extends Logger = Logger,
216
235
  TSession = unknown,
217
236
  TEventPublisher extends EventPublisher<any> | undefined = undefined,
237
+ TEventPublisherServiceName extends string = string,
238
+ TAuditStorage extends AuditStorage | undefined = undefined,
239
+ TAuditStorageServiceName extends string = string,
240
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
241
+ string,
242
+ unknown
243
+ >,
218
244
  >(
219
245
  endpoint: Endpoint<
220
246
  TRoute,
@@ -224,7 +250,11 @@ export class HonoEndpoint<
224
250
  TServices,
225
251
  TLogger,
226
252
  TSession,
227
- TEventPublisher
253
+ TEventPublisher,
254
+ TEventPublisherServiceName,
255
+ TAuditStorage,
256
+ TAuditStorageServiceName,
257
+ TAuditAction
228
258
  >,
229
259
  serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,
230
260
  app: Hono,
@@ -304,41 +334,91 @@ export class HonoEndpoint<
304
334
  }
305
335
  }
306
336
 
307
- const responseBuilder = new ResponseBuilder();
308
- const response = await endpoint.handler(
337
+ // Create audit context if audit storage is configured
338
+ const auditContext = await createAuditContext(
339
+ endpoint,
340
+ serviceDiscovery,
341
+ logger,
309
342
  {
310
- services,
311
- logger,
312
- body: c.req.valid('json'),
313
- query: c.req.valid('query'),
314
- params: c.req.valid('param'),
315
343
  session,
316
- header: Endpoint.createHeaders(headerValues),
317
- cookie: Endpoint.createCookies(headerValues.cookie),
318
- } as unknown as EndpointContext<
319
- TInput,
320
- TServices,
321
- TLogger,
322
- TSession
323
- >,
324
- responseBuilder,
344
+ header,
345
+ cookie,
346
+ services: services as Record<string, unknown>,
347
+ },
325
348
  );
326
349
 
327
- // Publish events if configured
350
+ // Warn if declarative audits are configured but no audit storage
351
+ const audits = endpoint.audits as MappedAudit<
352
+ TAuditAction,
353
+ TOutSchema
354
+ >[];
355
+ if (!auditContext && audits?.length) {
356
+ logger.warn('No auditor storage service available');
357
+ }
328
358
 
329
- // Validate output if schema is defined
359
+ // Execute handler with automatic audit transaction support
360
+ const result = await executeWithAuditTransaction(
361
+ auditContext,
362
+ async (auditor) => {
363
+ const responseBuilder = new ResponseBuilder();
364
+ const response = await endpoint.handler(
365
+ {
366
+ services,
367
+ logger,
368
+ body: c.req.valid('json'),
369
+ query: c.req.valid('query'),
370
+ params: c.req.valid('param'),
371
+ session,
372
+ header,
373
+ cookie,
374
+ auditor,
375
+ } as unknown as EndpointContext<
376
+ TInput,
377
+ TServices,
378
+ TLogger,
379
+ TSession
380
+ >,
381
+ responseBuilder,
382
+ );
383
+
384
+ // Check if response has metadata
385
+ let data = response;
386
+ let metadata = responseBuilder.getMetadata();
387
+
388
+ if (Endpoint.hasMetadata(response)) {
389
+ data = response.data;
390
+ metadata = response.metadata;
391
+ }
392
+
393
+ const output = endpoint.outputSchema
394
+ ? await endpoint.parseOutput(data)
395
+ : undefined;
396
+
397
+ return { output, metadata, responseBuilder };
398
+ },
399
+ // Process declarative audits after handler (inside transaction)
400
+ async (result, auditor) => {
401
+ if (!audits?.length) return;
402
+
403
+ for (const audit of audits) {
404
+ if (audit.when && !audit.when(result.output as any)) {
405
+ continue;
406
+ }
407
+ const payload = audit.payload(result.output as any);
408
+ const entityId = audit.entityId?.(result.output as any);
409
+ auditor.audit(audit.type as any, payload as any, {
410
+ table: audit.table,
411
+ entityId,
412
+ });
413
+ }
414
+ },
415
+ );
416
+
417
+ const { output, metadata } = result;
330
418
 
331
419
  try {
332
- // Check if response has metadata
333
- let data = response;
334
- let metadata = responseBuilder.getMetadata();
335
420
  let status = endpoint.status as ContentfulStatusCode;
336
421
 
337
- if (Endpoint.hasMetadata(response)) {
338
- data = response.data;
339
- metadata = response.metadata;
340
- }
341
-
342
422
  // Apply response metadata
343
423
  if (metadata.status) {
344
424
  status = metadata.status as ContentfulStatusCode;
@@ -356,21 +436,22 @@ export class HonoEndpoint<
356
436
  }
357
437
  }
358
438
 
359
- const output = endpoint.outputSchema
360
- ? await endpoint.parseOutput(data)
361
- : ({} as any);
362
439
  // @ts-ignore
363
440
  c.set('__response', output);
364
441
  // @ts-ignore
365
442
  c.set('__endpoint', endpoint);
366
443
  // @ts-ignore
367
444
  c.set('__logger', logger);
445
+ // @ts-ignore
446
+ c.set('__session', session);
447
+ // @ts-ignore
448
+ c.set('__services', services);
368
449
 
369
450
  if (HonoEndpoint.isDev) {
370
451
  logger.info({ status, body: output }, 'Outgoing response');
371
452
  }
372
453
 
373
- return c.json(output, status);
454
+ return c.json(output ?? {}, status);
374
455
  } catch (validationError: any) {
375
456
  logger.error(validationError, 'Output validation failed');
376
457
  const error = wrapError(