@geekmidas/constructs 0.3.2 → 0.6.0

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 (557) hide show
  1. package/dist/{AWSLambdaFunction-C54a1doJ.mjs → AWSLambdaFunction-BMTaCrG9.mjs} +6 -6
  2. package/dist/AWSLambdaFunction-BMTaCrG9.mjs.map +1 -0
  3. package/dist/{AWSLambdaFunction-BdebRMUh.d.mts → AWSLambdaFunction-BfLF5vNa.d.cts} +6 -6
  4. package/dist/AWSLambdaFunction-BfLF5vNa.d.cts.map +1 -0
  5. package/dist/{AWSLambdaFunction-EPGY4s7i.cjs → AWSLambdaFunction-C1gRqLO7.cjs} +6 -6
  6. package/dist/AWSLambdaFunction-C1gRqLO7.cjs.map +1 -0
  7. package/dist/{AWSLambdaFunction-D0tEOTXQ.d.cts → AWSLambdaFunction-K94K8JU2.d.mts} +6 -6
  8. package/dist/AWSLambdaFunction-K94K8JU2.d.mts.map +1 -0
  9. package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts} +2 -2
  10. package/dist/AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts.map +1 -0
  11. package/dist/{AWSLambdaSubscriberAdaptor-BLfO612H.mjs → AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs} +3 -3
  12. package/dist/AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs.map +1 -0
  13. package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs} +3 -3
  14. package/dist/AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map +1 -0
  15. package/dist/{AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts} +2 -2
  16. package/dist/AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs → AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs} +56 -14
  18. package/dist/AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs.map +1 -0
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts → AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts} +51 -5
  20. package/dist/AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts.map +1 -0
  21. package/dist/{AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs → AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs} +55 -13
  22. package/dist/AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs.map +1 -0
  23. package/dist/{AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts → AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts} +52 -6
  24. package/dist/AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts.map +1 -0
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs → AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs} +4 -4
  26. package/dist/AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs.map +1 -0
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts → AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts} +5 -5
  28. package/dist/AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts.map +1 -0
  29. package/dist/{AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts → AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts} +4 -4
  30. package/dist/AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts.map +1 -0
  31. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs → AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs} +4 -4
  32. package/dist/AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs.map +1 -0
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts → AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts} +4 -6
  34. package/dist/AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts.map +1 -0
  35. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs → AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs} +4 -4
  36. package/dist/AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs.map +1 -0
  37. package/dist/{AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs → AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs} +4 -4
  38. package/dist/AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs.map +1 -0
  39. package/dist/{AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts → AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts} +5 -7
  40. package/dist/AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts.map +1 -0
  41. package/dist/{Authorizer-C0ge_tc8.cjs → Authorizer-BXxBee2P.cjs} +1 -1
  42. package/dist/Authorizer-BXxBee2P.cjs.map +1 -0
  43. package/dist/{Authorizer-r9U3y_ms.mjs → Authorizer-BgjU8-z6.mjs} +1 -1
  44. package/dist/Authorizer-BgjU8-z6.mjs.map +1 -0
  45. package/dist/{Authorizer-gWxYsGEp.d.mts → Authorizer-DCcYOx3h.d.mts} +1 -1
  46. package/dist/Authorizer-DCcYOx3h.d.mts.map +1 -0
  47. package/dist/{Authorizer-B-btowNd.d.cts → Authorizer-DWtwC8we.d.cts} +1 -1
  48. package/dist/Authorizer-DWtwC8we.d.cts.map +1 -0
  49. package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts → BaseFunctionBuilder-BqZCqIeU.d.mts} +3 -3
  50. package/dist/BaseFunctionBuilder-BqZCqIeU.d.mts.map +1 -0
  51. package/dist/{BaseFunctionBuilder-DRY419e7.d.mts → BaseFunctionBuilder-CcK691ni.d.cts} +3 -3
  52. package/dist/BaseFunctionBuilder-CcK691ni.d.cts.map +1 -0
  53. package/dist/{BaseFunctionBuilder-Czi1Jwza.mjs → BaseFunctionBuilder-Dsqe6pnn.mjs} +2 -2
  54. package/dist/BaseFunctionBuilder-Dsqe6pnn.mjs.map +1 -0
  55. package/dist/{BaseFunctionBuilder-MYG3C9ug.cjs → BaseFunctionBuilder-Z0XwrKB5.cjs} +2 -2
  56. package/dist/BaseFunctionBuilder-Z0XwrKB5.cjs.map +1 -0
  57. package/dist/Construct-BNDLJJfD.mjs +150 -0
  58. package/dist/Construct-BNDLJJfD.mjs.map +1 -0
  59. package/dist/{Construct-Ba5cMxib.cjs → Construct-CPrCF8NK.cjs} +93 -9
  60. package/dist/Construct-CPrCF8NK.cjs.map +1 -0
  61. package/dist/{Construct-C4rPE67v.d.cts → Construct-Dl0l2d8d.d.cts} +30 -4
  62. package/dist/Construct-Dl0l2d8d.d.cts.map +1 -0
  63. package/dist/{Construct-XrijZFFh.d.mts → Construct-E8QPyHh4.d.mts} +30 -4
  64. package/dist/Construct-E8QPyHh4.d.mts.map +1 -0
  65. package/dist/Construct.cjs +4 -2
  66. package/dist/Construct.d.cts +2 -2
  67. package/dist/Construct.d.mts +2 -2
  68. package/dist/Construct.mjs +2 -2
  69. package/dist/{Cron-CGF4YAfM.cjs → Cron-BmPNTLla.cjs} +3 -3
  70. package/dist/Cron-BmPNTLla.cjs.map +1 -0
  71. package/dist/{Cron-BxhGs5up.mjs → Cron-BpJONaFv.mjs} +3 -3
  72. package/dist/Cron-BpJONaFv.mjs.map +1 -0
  73. package/dist/{Cron-bDLcTvV5.d.cts → Cron-CnmLLh3E.d.mts} +3 -3
  74. package/dist/Cron-CnmLLh3E.d.mts.map +1 -0
  75. package/dist/{Cron-cdjlSKNp.d.mts → Cron-DufAeHry.d.cts} +3 -3
  76. package/dist/Cron-DufAeHry.d.cts.map +1 -0
  77. package/dist/{CronBuilder-d2jh-IB2.mjs → CronBuilder-02HSIHJr.mjs} +4 -4
  78. package/dist/CronBuilder-02HSIHJr.mjs.map +1 -0
  79. package/dist/{CronBuilder-CcxKRtVP.cjs → CronBuilder-DC2zUS8a.cjs} +4 -4
  80. package/dist/CronBuilder-DC2zUS8a.cjs.map +1 -0
  81. package/dist/{CronBuilder-BC4m5-p1.d.mts → CronBuilder-anUSbMxb.d.mts} +4 -4
  82. package/dist/CronBuilder-anUSbMxb.d.mts.map +1 -0
  83. package/dist/{CronBuilder-DKVXyE0Q.d.cts → CronBuilder-fyqf_X8n.d.cts} +4 -4
  84. package/dist/CronBuilder-fyqf_X8n.d.cts.map +1 -0
  85. package/dist/{Endpoint-BVGZXFyV.cjs → Endpoint-BCWVbi8l.cjs} +6 -6
  86. package/dist/Endpoint-BCWVbi8l.cjs.map +1 -0
  87. package/dist/{Endpoint-BPv9_-m_.d.cts → Endpoint-BlcHiGNx.d.cts} +3 -3
  88. package/dist/Endpoint-BlcHiGNx.d.cts.map +1 -0
  89. package/dist/{Endpoint-BdwG75G_.d.mts → Endpoint-DEHuy46S.d.mts} +4 -4
  90. package/dist/Endpoint-DEHuy46S.d.mts.map +1 -0
  91. package/dist/{Endpoint-CuOEswxJ.mjs → Endpoint-ygxv2Ia6.mjs} +6 -6
  92. package/dist/Endpoint-ygxv2Ia6.mjs.map +1 -0
  93. package/dist/{EndpointBuilder-DIy_m1bu.d.cts → EndpointBuilder-DPLAUHqg.d.cts} +4 -4
  94. package/dist/EndpointBuilder-DPLAUHqg.d.cts.map +1 -0
  95. package/dist/{EndpointBuilder-B3az942t.d.mts → EndpointBuilder-DaeCeneF.d.mts} +5 -5
  96. package/dist/EndpointBuilder-DaeCeneF.d.mts.map +1 -0
  97. package/dist/{EndpointBuilder-Cgj1P_ra.cjs → EndpointBuilder-J5D67Y6a.cjs} +6 -6
  98. package/dist/EndpointBuilder-J5D67Y6a.cjs.map +1 -0
  99. package/dist/{EndpointBuilder-DnCB1h1j.mjs → EndpointBuilder-tn4zqoyw.mjs} +6 -6
  100. package/dist/EndpointBuilder-tn4zqoyw.mjs.map +1 -0
  101. package/dist/{EndpointFactory-CbdxPCIH.mjs → EndpointFactory-CIUZTTAF.mjs} +7 -7
  102. package/dist/EndpointFactory-CIUZTTAF.mjs.map +1 -0
  103. package/dist/{EndpointFactory-CyPbm3AD.d.cts → EndpointFactory-CiKcb5PX.d.cts} +4 -4
  104. package/dist/EndpointFactory-CiKcb5PX.d.cts.map +1 -0
  105. package/dist/{EndpointFactory-C-0nE6Jg.d.mts → EndpointFactory-DufM0t2z.d.mts} +4 -4
  106. package/dist/EndpointFactory-DufM0t2z.d.mts.map +1 -0
  107. package/dist/{EndpointFactory-CYj6BYok.cjs → EndpointFactory-d5uwWFkK.cjs} +7 -7
  108. package/dist/EndpointFactory-d5uwWFkK.cjs.map +1 -0
  109. package/dist/{Function-DDZb1525.cjs → Function-2qWSZqYB.cjs} +3 -3
  110. package/dist/Function-2qWSZqYB.cjs.map +1 -0
  111. package/dist/{Function-Cf7f_kCz.d.cts → Function-CbEohg13.d.cts} +3 -3
  112. package/dist/Function-CbEohg13.d.cts.map +1 -0
  113. package/dist/{Function-BVHqIDp9.mjs → Function-CdF1HmFu.mjs} +3 -3
  114. package/dist/Function-CdF1HmFu.mjs.map +1 -0
  115. package/dist/{Function-DN2G6OT5.d.mts → Function-EjIOLxlh.d.mts} +3 -3
  116. package/dist/Function-EjIOLxlh.d.mts.map +1 -0
  117. package/dist/{FunctionBuilder-DswJ-9sD.cjs → FunctionBuilder-B-pbgm09.cjs} +4 -4
  118. package/dist/FunctionBuilder-B-pbgm09.cjs.map +1 -0
  119. package/dist/{FunctionBuilder-CJBzzXL3.d.cts → FunctionBuilder-CX3ooNdq.d.cts} +4 -4
  120. package/dist/FunctionBuilder-CX3ooNdq.d.cts.map +1 -0
  121. package/dist/{FunctionBuilder-Cxx8D2na.d.mts → FunctionBuilder-D11ytDyy.d.mts} +4 -4
  122. package/dist/FunctionBuilder-D11ytDyy.d.mts.map +1 -0
  123. package/dist/{FunctionBuilder-CrDYgfiI.mjs → FunctionBuilder-DaWVthAJ.mjs} +4 -4
  124. package/dist/FunctionBuilder-DaWVthAJ.mjs.map +1 -0
  125. package/dist/{FunctionExecutionWrapper-DF260Aaj.d.mts → FunctionExecutionWrapper-BJcRjH9Z.d.cts} +5 -5
  126. package/dist/FunctionExecutionWrapper-BJcRjH9Z.d.cts.map +1 -0
  127. package/dist/{FunctionExecutionWrapper-BYI2bGTL.cjs → FunctionExecutionWrapper-C6ChBNHs.cjs} +3 -3
  128. package/dist/FunctionExecutionWrapper-C6ChBNHs.cjs.map +1 -0
  129. package/dist/{FunctionExecutionWrapper-Qy8bmgFR.d.cts → FunctionExecutionWrapper-D3RNjGIR.d.mts} +5 -5
  130. package/dist/FunctionExecutionWrapper-D3RNjGIR.d.mts.map +1 -0
  131. package/dist/{FunctionExecutionWrapper-CLDh7Z2_.mjs → FunctionExecutionWrapper-Dj3pmXaN.mjs} +3 -3
  132. package/dist/FunctionExecutionWrapper-Dj3pmXaN.mjs.map +1 -0
  133. package/dist/{HonoEndpointAdaptor-BaPlUhz0.d.mts → HonoEndpointAdaptor-CKP6nrG2.d.mts} +11 -6
  134. package/dist/HonoEndpointAdaptor-CKP6nrG2.d.mts.map +1 -0
  135. package/dist/HonoEndpointAdaptor-Cc8Rnp9G.mjs +251 -0
  136. package/dist/HonoEndpointAdaptor-Cc8Rnp9G.mjs.map +1 -0
  137. package/dist/{HonoEndpointAdaptor-YcRHYALH.d.cts → HonoEndpointAdaptor-hrrvyfw9.d.cts} +10 -5
  138. package/dist/HonoEndpointAdaptor-hrrvyfw9.d.cts.map +1 -0
  139. package/dist/HonoEndpointAdaptor-xGnDZa3a.cjs +257 -0
  140. package/dist/HonoEndpointAdaptor-xGnDZa3a.cjs.map +1 -0
  141. package/dist/{Subscriber-COYMSevD.d.cts → Subscriber-BBcIOkhW.d.cts} +2 -2
  142. package/dist/Subscriber-BBcIOkhW.d.cts.map +1 -0
  143. package/dist/{Subscriber-ikctpU3I.d.mts → Subscriber-BpTAXvbM.d.mts} +2 -2
  144. package/dist/Subscriber-BpTAXvbM.d.mts.map +1 -0
  145. package/dist/{Subscriber-BiHjVXtM.cjs → Subscriber-CL4iYm01.cjs} +2 -2
  146. package/dist/Subscriber-CL4iYm01.cjs.map +1 -0
  147. package/dist/{Subscriber-BmPf9GFb.mjs → Subscriber-CZ8Smwd2.mjs} +2 -2
  148. package/dist/Subscriber-CZ8Smwd2.mjs.map +1 -0
  149. package/dist/{SubscriberBuilder-DJPEeYDJ.mjs → SubscriberBuilder-CxQg3TTm.mjs} +2 -2
  150. package/dist/SubscriberBuilder-CxQg3TTm.mjs.map +1 -0
  151. package/dist/{SubscriberBuilder-Cp1C-xtT.cjs → SubscriberBuilder-D0OS3hd7.cjs} +2 -2
  152. package/dist/SubscriberBuilder-D0OS3hd7.cjs.map +1 -0
  153. package/dist/{SubscriberBuilder-D_9zzllj.d.mts → SubscriberBuilder-D7IgufwB.d.cts} +3 -3
  154. package/dist/SubscriberBuilder-D7IgufwB.d.cts.map +1 -0
  155. package/dist/{SubscriberBuilder-ivHAGIVi.d.cts → SubscriberBuilder-DOFBbWLt.d.mts} +3 -3
  156. package/dist/SubscriberBuilder-DOFBbWLt.d.mts.map +1 -0
  157. package/dist/{TestEndpointAdaptor-DB7bREhS.d.mts → TestEndpointAdaptor-BnJusjf7.d.mts} +4 -4
  158. package/dist/TestEndpointAdaptor-BnJusjf7.d.mts.map +1 -0
  159. package/dist/TestEndpointAdaptor-CPL8ru6q.mjs +170 -0
  160. package/dist/TestEndpointAdaptor-CPL8ru6q.mjs.map +1 -0
  161. package/dist/TestEndpointAdaptor-Ca4K26_d.cjs +176 -0
  162. package/dist/TestEndpointAdaptor-Ca4K26_d.cjs.map +1 -0
  163. package/dist/{TestEndpointAdaptor-C10xBI--.d.cts → TestEndpointAdaptor-EPPTjntv.d.cts} +3 -3
  164. package/dist/TestEndpointAdaptor-EPPTjntv.d.cts.map +1 -0
  165. package/dist/adaptors/aws.cjs +12 -12
  166. package/dist/adaptors/aws.d.cts +15 -14
  167. package/dist/adaptors/aws.d.mts +16 -15
  168. package/dist/adaptors/aws.mjs +12 -12
  169. package/dist/adaptors/hono.cjs +10 -9
  170. package/dist/adaptors/hono.d.cts +8 -8
  171. package/dist/adaptors/hono.d.mts +9 -9
  172. package/dist/adaptors/hono.mjs +10 -9
  173. package/dist/adaptors/testing.cjs +8 -7
  174. package/dist/adaptors/testing.d.cts +8 -8
  175. package/dist/adaptors/testing.d.mts +9 -9
  176. package/dist/adaptors/testing.mjs +8 -7
  177. package/dist/crons/Cron.cjs +6 -6
  178. package/dist/crons/Cron.d.cts +6 -6
  179. package/dist/crons/Cron.d.mts +6 -6
  180. package/dist/crons/Cron.mjs +6 -6
  181. package/dist/crons/CronBuilder.cjs +7 -7
  182. package/dist/crons/CronBuilder.d.cts +7 -7
  183. package/dist/crons/CronBuilder.d.mts +7 -7
  184. package/dist/crons/CronBuilder.mjs +7 -7
  185. package/dist/crons/index.cjs +7 -7
  186. package/dist/crons/index.cjs.map +1 -1
  187. package/dist/crons/index.d.cts +11 -11
  188. package/dist/crons/index.d.mts +7 -7
  189. package/dist/crons/index.mjs +7 -7
  190. package/dist/crons/index.mjs.map +1 -1
  191. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  192. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +10 -9
  193. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +11 -10
  194. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  195. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  196. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +10 -9
  197. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +11 -10
  198. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  199. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  200. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +11 -10
  201. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +12 -11
  202. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  203. package/dist/endpoints/Authorizer.cjs +1 -1
  204. package/dist/endpoints/Authorizer.d.cts +1 -1
  205. package/dist/endpoints/Authorizer.d.mts +1 -1
  206. package/dist/endpoints/Authorizer.mjs +1 -1
  207. package/dist/endpoints/Endpoint.cjs +6 -6
  208. package/dist/endpoints/Endpoint.d.cts +7 -7
  209. package/dist/endpoints/Endpoint.d.mts +8 -8
  210. package/dist/endpoints/Endpoint.mjs +6 -6
  211. package/dist/endpoints/EndpointBuilder.cjs +9 -9
  212. package/dist/endpoints/EndpointBuilder.d.cts +8 -8
  213. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  214. package/dist/endpoints/EndpointBuilder.mjs +9 -9
  215. package/dist/endpoints/EndpointFactory.cjs +10 -10
  216. package/dist/endpoints/EndpointFactory.d.cts +9 -9
  217. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  218. package/dist/endpoints/EndpointFactory.mjs +10 -10
  219. package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
  220. package/dist/endpoints/HonoEndpointAdaptor.d.cts +8 -8
  221. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  222. package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
  223. package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
  224. package/dist/endpoints/TestEndpointAdaptor.d.cts +8 -8
  225. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  226. package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
  227. package/dist/endpoints/audit.d.cts +7 -7
  228. package/dist/endpoints/audit.d.mts +8 -8
  229. package/dist/endpoints/helpers.cjs +7 -7
  230. package/dist/endpoints/helpers.d.cts +7 -7
  231. package/dist/endpoints/helpers.d.cts.map +1 -1
  232. package/dist/endpoints/helpers.d.mts +8 -8
  233. package/dist/endpoints/helpers.d.mts.map +1 -1
  234. package/dist/endpoints/helpers.mjs +7 -7
  235. package/dist/endpoints/index.cjs +20 -10
  236. package/dist/endpoints/index.cjs.map +1 -1
  237. package/dist/endpoints/index.d.cts +14 -12
  238. package/dist/endpoints/index.d.cts.map +1 -1
  239. package/dist/endpoints/index.d.mts +15 -13
  240. package/dist/endpoints/index.d.mts.map +1 -1
  241. package/dist/endpoints/index.mjs +13 -11
  242. package/dist/endpoints/index.mjs.map +1 -1
  243. package/dist/endpoints/lazyAccessors.cjs +10 -0
  244. package/dist/endpoints/lazyAccessors.d.cts +10 -0
  245. package/dist/endpoints/lazyAccessors.d.mts +10 -0
  246. package/dist/endpoints/lazyAccessors.mjs +3 -0
  247. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  248. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  249. package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
  250. package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
  251. package/dist/endpoints/processAudits.d.cts +7 -7
  252. package/dist/endpoints/processAudits.d.cts.map +1 -1
  253. package/dist/endpoints/processAudits.d.mts +8 -8
  254. package/dist/endpoints/processAudits.d.mts.map +1 -1
  255. package/dist/endpoints/rls.cjs +1 -1
  256. package/dist/endpoints/rls.d.cts +7 -7
  257. package/dist/endpoints/rls.d.mts +8 -8
  258. package/dist/endpoints/rls.mjs +1 -1
  259. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  260. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  261. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  262. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  263. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  264. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  265. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  266. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  267. package/dist/functions/Function.cjs +2 -2
  268. package/dist/functions/Function.d.cts +2 -2
  269. package/dist/functions/Function.d.mts +2 -2
  270. package/dist/functions/Function.mjs +2 -2
  271. package/dist/functions/FunctionBuilder.cjs +4 -4
  272. package/dist/functions/FunctionBuilder.d.cts +4 -4
  273. package/dist/functions/FunctionBuilder.d.mts +4 -4
  274. package/dist/functions/FunctionBuilder.mjs +4 -4
  275. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  276. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  277. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  278. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  279. package/dist/functions/TestFunctionAdaptor.cjs +7 -7
  280. package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
  281. package/dist/functions/TestFunctionAdaptor.d.cts +3 -3
  282. package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
  283. package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
  284. package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
  285. package/dist/functions/TestFunctionAdaptor.mjs +7 -7
  286. package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
  287. package/dist/functions/index.cjs +5 -5
  288. package/dist/functions/index.d.cts +5 -5
  289. package/dist/functions/index.d.mts +5 -5
  290. package/dist/functions/index.mjs +5 -5
  291. package/dist/{functions-fTid0RMK.cjs → functions-CUEv5NC3.cjs} +2 -2
  292. package/dist/functions-CUEv5NC3.cjs.map +1 -0
  293. package/dist/functions-DOYBrb7n.mjs +8 -0
  294. package/dist/functions-DOYBrb7n.mjs.map +1 -0
  295. package/dist/{helpers-ByRTDO_m.mjs → helpers-Dl1eszfi.mjs} +2 -2
  296. package/dist/helpers-Dl1eszfi.mjs.map +1 -0
  297. package/dist/{helpers-BcP1tXAi.cjs → helpers-QMdfdnvU.cjs} +2 -2
  298. package/dist/helpers-QMdfdnvU.cjs.map +1 -0
  299. package/dist/{index-BWzGIj06.d.mts → index-BrGtMlpJ.d.cts} +2 -2
  300. package/dist/index-BrGtMlpJ.d.cts.map +1 -0
  301. package/dist/index-Dn4py3Db.d.mts +12 -0
  302. package/dist/index-Dn4py3Db.d.mts.map +1 -0
  303. package/dist/index.cjs +4 -2
  304. package/dist/index.d.cts +3 -2
  305. package/dist/index.d.mts +4 -3
  306. package/dist/index.mjs +2 -2
  307. package/dist/lazyAccessors-B-Jgkg2o.mjs +175 -0
  308. package/dist/lazyAccessors-B-Jgkg2o.mjs.map +1 -0
  309. package/dist/lazyAccessors-B8Hhras9.cjs +223 -0
  310. package/dist/lazyAccessors-B8Hhras9.cjs.map +1 -0
  311. package/dist/lazyAccessors-BFAj2-S4.d.mts +49 -0
  312. package/dist/lazyAccessors-BFAj2-S4.d.mts.map +1 -0
  313. package/dist/lazyAccessors-knaNZuTN.d.cts +49 -0
  314. package/dist/lazyAccessors-knaNZuTN.d.cts.map +1 -0
  315. package/dist/{parseHonoQuery-CZC5_97v.cjs → parseHonoQuery-D4MhxTRc.cjs} +1 -1
  316. package/dist/parseHonoQuery-D4MhxTRc.cjs.map +1 -0
  317. package/dist/{parseHonoQuery-DDgIkTO4.mjs → parseHonoQuery-DpK3sGPc.mjs} +1 -1
  318. package/dist/parseHonoQuery-DpK3sGPc.mjs.map +1 -0
  319. package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -1
  320. package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -1
  321. package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
  322. package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
  323. package/dist/publisher-BXG9YiRi.d.mts +16 -0
  324. package/dist/publisher-BXG9YiRi.d.mts.map +1 -0
  325. package/dist/publisher-Bw4770Hi.mjs.map +1 -1
  326. package/dist/publisher-D9ngDXg3.d.cts +16 -0
  327. package/dist/publisher-D9ngDXg3.d.cts.map +1 -0
  328. package/dist/publisher-lFQleddL.cjs.map +1 -1
  329. package/dist/publisher.d.cts +3 -16
  330. package/dist/publisher.d.mts +3 -16
  331. package/dist/{rls-CmJ7bRsz.cjs → rls-BrywnrQb.cjs} +1 -1
  332. package/dist/{rls-CmJ7bRsz.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
  333. package/dist/{rls-Bf3FRwto.mjs → rls-C0cWOnk4.mjs} +1 -1
  334. package/dist/{rls-Bf3FRwto.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
  335. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  336. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  337. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  338. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  339. package/dist/subscribers/Subscriber.cjs +2 -2
  340. package/dist/subscribers/Subscriber.d.cts +2 -2
  341. package/dist/subscribers/Subscriber.d.mts +2 -2
  342. package/dist/subscribers/Subscriber.mjs +2 -2
  343. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  344. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  345. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  346. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  347. package/dist/subscribers/index.cjs +3 -3
  348. package/dist/subscribers/index.cjs.map +1 -1
  349. package/dist/subscribers/index.d.cts +5 -5
  350. package/dist/subscribers/index.d.cts.map +1 -1
  351. package/dist/subscribers/index.d.mts +5 -5
  352. package/dist/subscribers/index.d.mts.map +1 -1
  353. package/dist/subscribers/index.mjs +3 -3
  354. package/dist/subscribers/index.mjs.map +1 -1
  355. package/dist/telemetry-BTaiRqPo.d.cts +95 -0
  356. package/dist/telemetry-BTaiRqPo.d.cts.map +1 -0
  357. package/dist/telemetry-yAHf5yDs.d.mts +95 -0
  358. package/dist/telemetry-yAHf5yDs.d.mts.map +1 -0
  359. package/dist/telemetry.cjs +0 -0
  360. package/dist/telemetry.d.cts +2 -0
  361. package/dist/telemetry.d.mts +2 -0
  362. package/dist/telemetry.mjs +0 -0
  363. package/dist/types-B5H3piDg.d.cts.map +1 -1
  364. package/dist/{types-DdIlpxAd.d.mts → types-Dw-iLd3Y.d.mts} +1 -1
  365. package/dist/types-Dw-iLd3Y.d.mts.map +1 -0
  366. package/dist/types.d.mts +1 -1
  367. package/package.json +19 -18
  368. package/src/Construct.ts +189 -94
  369. package/src/__benchmarks__/build-time-optimization.bench.ts +274 -0
  370. package/src/__benchmarks__/endpoint.bench.ts +375 -375
  371. package/src/__benchmarks__/fixtures.ts +241 -0
  372. package/src/__benchmarks__/hono-adaptor.bench.ts +533 -0
  373. package/src/__benchmarks__/hono-server.bench.ts +206 -206
  374. package/src/__benchmarks__/response-builder.bench.ts +428 -0
  375. package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +319 -0
  376. package/src/__benchmarks__/strategies/strategy-c-middleware.ts +530 -0
  377. package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +567 -0
  378. package/src/__tests__/Construct.environment.spec.ts +572 -351
  379. package/src/__tests__/publisher.setting.spec.ts +496 -499
  380. package/src/__tests__/publisher.spec.ts +440 -442
  381. package/src/crons/Cron.ts +117 -117
  382. package/src/crons/CronBuilder.ts +237 -238
  383. package/src/crons/__tests__/Cron.spec.ts +448 -448
  384. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +214 -214
  385. package/src/crons/index.ts +4 -4
  386. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +571 -463
  387. package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +86 -86
  388. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +85 -81
  389. package/src/endpoints/Authorizer.ts +100 -100
  390. package/src/endpoints/Endpoint.ts +921 -937
  391. package/src/endpoints/EndpointBuilder.ts +703 -703
  392. package/src/endpoints/EndpointFactory.ts +1054 -1056
  393. package/src/endpoints/HonoEndpointAdaptor.ts +621 -548
  394. package/src/endpoints/TestEndpointAdaptor.ts +372 -353
  395. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +499 -0
  396. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +541 -542
  397. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +1172 -1174
  398. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +599 -599
  399. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +710 -710
  400. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +280 -280
  401. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +924 -730
  402. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +307 -0
  403. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +408 -408
  404. package/src/endpoints/__tests__/Authorizer.spec.ts +286 -0
  405. package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +162 -162
  406. package/src/endpoints/__tests__/Endpoint.headers.spec.ts +182 -182
  407. package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +158 -159
  408. package/src/endpoints/__tests__/Endpoint.spec.ts +819 -822
  409. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +427 -427
  410. package/src/endpoints/__tests__/EndpointBuilder.spec.ts +478 -478
  411. package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +426 -426
  412. package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +501 -501
  413. package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +177 -177
  414. package/src/endpoints/__tests__/EndpointFactory.spec.ts +471 -471
  415. package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +143 -143
  416. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +663 -663
  417. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +608 -608
  418. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +561 -561
  419. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1036 -1036
  420. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +278 -278
  421. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1093 -1093
  422. package/src/endpoints/__tests__/ResponseBuilder.spec.ts +230 -230
  423. package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +569 -569
  424. package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +841 -841
  425. package/src/endpoints/__tests__/endpoint-types.test.ts +68 -68
  426. package/src/endpoints/__tests__/helpers.spec.ts +37 -0
  427. package/src/endpoints/__tests__/lazyAccessors.spec.ts +330 -0
  428. package/src/endpoints/__tests__/processAudits.spec.ts +631 -0
  429. package/src/endpoints/audit.ts +51 -51
  430. package/src/endpoints/helpers.ts +34 -35
  431. package/src/endpoints/index.ts +33 -23
  432. package/src/endpoints/lazyAccessors.ts +241 -0
  433. package/src/endpoints/parseHonoQuery.ts +41 -41
  434. package/src/endpoints/parseQueryParams.ts +36 -36
  435. package/src/endpoints/processAudits.ts +269 -269
  436. package/src/endpoints/rls.ts +16 -16
  437. package/src/functions/AWSLambdaFunction.ts +294 -295
  438. package/src/functions/BaseFunctionBuilder.ts +185 -185
  439. package/src/functions/Function.ts +190 -190
  440. package/src/functions/FunctionBuilder.ts +353 -353
  441. package/src/functions/FunctionExecutionWrapper.ts +199 -200
  442. package/src/functions/TestFunctionAdaptor.ts +191 -191
  443. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +424 -424
  444. package/src/functions/__tests__/Function.audits.spec.ts +364 -364
  445. package/src/functions/__tests__/Function.spec.ts +453 -454
  446. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +179 -179
  447. package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +369 -369
  448. package/src/functions/index.ts +6 -4
  449. package/src/index.ts +18 -9
  450. package/src/publisher.ts +71 -72
  451. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +244 -248
  452. package/src/subscribers/Subscriber.ts +82 -84
  453. package/src/subscribers/SubscriberBuilder.ts +129 -129
  454. package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +589 -589
  455. package/src/subscribers/__tests__/Subscriber.spec.ts +402 -404
  456. package/src/subscribers/index.ts +1 -0
  457. package/src/telemetry.ts +103 -0
  458. package/src/types.ts +7 -7
  459. package/test.ts +58 -59
  460. package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +0 -1
  461. package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +0 -1
  462. package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +0 -1
  463. package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +0 -1
  464. package/dist/AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map +0 -1
  465. package/dist/AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map +0 -1
  466. package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +0 -1
  467. package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +0 -1
  468. package/dist/AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map +0 -1
  469. package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +0 -1
  470. package/dist/AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map +0 -1
  471. package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +0 -1
  472. package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +0 -1
  473. package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +0 -1
  474. package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +0 -1
  475. package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +0 -1
  476. package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +0 -1
  477. package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +0 -1
  478. package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +0 -1
  479. package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +0 -1
  480. package/dist/Authorizer-B-btowNd.d.cts.map +0 -1
  481. package/dist/Authorizer-C0ge_tc8.cjs.map +0 -1
  482. package/dist/Authorizer-gWxYsGEp.d.mts.map +0 -1
  483. package/dist/Authorizer-r9U3y_ms.mjs.map +0 -1
  484. package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +0 -1
  485. package/dist/BaseFunctionBuilder-Czi1Jwza.mjs.map +0 -1
  486. package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +0 -1
  487. package/dist/BaseFunctionBuilder-MYG3C9ug.cjs.map +0 -1
  488. package/dist/Construct-Ba5cMxib.cjs.map +0 -1
  489. package/dist/Construct-C4rPE67v.d.cts.map +0 -1
  490. package/dist/Construct-DdyGHuag.mjs +0 -78
  491. package/dist/Construct-DdyGHuag.mjs.map +0 -1
  492. package/dist/Construct-XrijZFFh.d.mts.map +0 -1
  493. package/dist/Cron-BxhGs5up.mjs.map +0 -1
  494. package/dist/Cron-CGF4YAfM.cjs.map +0 -1
  495. package/dist/Cron-bDLcTvV5.d.cts.map +0 -1
  496. package/dist/Cron-cdjlSKNp.d.mts.map +0 -1
  497. package/dist/CronBuilder-BC4m5-p1.d.mts.map +0 -1
  498. package/dist/CronBuilder-CcxKRtVP.cjs.map +0 -1
  499. package/dist/CronBuilder-DKVXyE0Q.d.cts.map +0 -1
  500. package/dist/CronBuilder-d2jh-IB2.mjs.map +0 -1
  501. package/dist/Endpoint-BPv9_-m_.d.cts.map +0 -1
  502. package/dist/Endpoint-BVGZXFyV.cjs.map +0 -1
  503. package/dist/Endpoint-BdwG75G_.d.mts.map +0 -1
  504. package/dist/Endpoint-CuOEswxJ.mjs.map +0 -1
  505. package/dist/EndpointBuilder-B3az942t.d.mts.map +0 -1
  506. package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +0 -1
  507. package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +0 -1
  508. package/dist/EndpointBuilder-DnCB1h1j.mjs.map +0 -1
  509. package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +0 -1
  510. package/dist/EndpointFactory-CYj6BYok.cjs.map +0 -1
  511. package/dist/EndpointFactory-CbdxPCIH.mjs.map +0 -1
  512. package/dist/EndpointFactory-CyPbm3AD.d.cts.map +0 -1
  513. package/dist/Function-BVHqIDp9.mjs.map +0 -1
  514. package/dist/Function-Cf7f_kCz.d.cts.map +0 -1
  515. package/dist/Function-DDZb1525.cjs.map +0 -1
  516. package/dist/Function-DN2G6OT5.d.mts.map +0 -1
  517. package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +0 -1
  518. package/dist/FunctionBuilder-CrDYgfiI.mjs.map +0 -1
  519. package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +0 -1
  520. package/dist/FunctionBuilder-DswJ-9sD.cjs.map +0 -1
  521. package/dist/FunctionExecutionWrapper-BYI2bGTL.cjs.map +0 -1
  522. package/dist/FunctionExecutionWrapper-CLDh7Z2_.mjs.map +0 -1
  523. package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +0 -1
  524. package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +0 -1
  525. package/dist/HonoEndpointAdaptor-BaPlUhz0.d.mts.map +0 -1
  526. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
  527. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
  528. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
  529. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.map +0 -1
  530. package/dist/HonoEndpointAdaptor-YcRHYALH.d.cts.map +0 -1
  531. package/dist/Subscriber-BiHjVXtM.cjs.map +0 -1
  532. package/dist/Subscriber-BmPf9GFb.mjs.map +0 -1
  533. package/dist/Subscriber-COYMSevD.d.cts.map +0 -1
  534. package/dist/Subscriber-ikctpU3I.d.mts.map +0 -1
  535. package/dist/SubscriberBuilder-Cp1C-xtT.cjs.map +0 -1
  536. package/dist/SubscriberBuilder-DJPEeYDJ.mjs.map +0 -1
  537. package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +0 -1
  538. package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +0 -1
  539. package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
  540. package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +0 -1
  541. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs +0 -160
  542. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs.map +0 -1
  543. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs +0 -166
  544. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs.map +0 -1
  545. package/dist/functions-C6EK1xL6.mjs +0 -8
  546. package/dist/functions-C6EK1xL6.mjs.map +0 -1
  547. package/dist/functions-fTid0RMK.cjs.map +0 -1
  548. package/dist/helpers-BcP1tXAi.cjs.map +0 -1
  549. package/dist/helpers-ByRTDO_m.mjs.map +0 -1
  550. package/dist/index-BWzGIj06.d.mts.map +0 -1
  551. package/dist/index-DmFozqLd.d.cts +0 -12
  552. package/dist/index-DmFozqLd.d.cts.map +0 -1
  553. package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
  554. package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
  555. package/dist/publisher.d.cts.map +0 -1
  556. package/dist/publisher.d.mts.map +0 -1
  557. package/dist/types-DdIlpxAd.d.mts.map +0 -1
@@ -1,510 +1,618 @@
1
- import type { AuditStorage, AuditableAction } from '@geekmidas/audit';
1
+ import type { AuditableAction, AuditStorage } from '@geekmidas/audit';
2
2
  import { withRlsContext } from '@geekmidas/db/rls';
3
- import type { Logger } from '@geekmidas/logger';
4
- import type { StandardSchemaV1 } from '@standard-schema/spec';
5
- import type { HttpMethod } from '../types';
6
- import { Endpoint, type EndpointSchemas, ResponseBuilder } from './Endpoint';
7
-
8
3
  import type { EnvironmentParser } from '@geekmidas/envkit';
4
+ import type { Logger } from '@geekmidas/logger';
9
5
  import middy, { type MiddlewareObj } from '@middy/core';
6
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
10
7
  import type {
11
- APIGatewayProxyEvent,
12
- APIGatewayProxyEventV2,
13
- Context,
8
+ APIGatewayProxyEvent,
9
+ APIGatewayProxyEventV2,
10
+ Context,
14
11
  } from 'aws-lambda';
15
12
  import set from 'lodash.set';
13
+ import type { Telemetry } from '../telemetry';
14
+ import type { HttpMethod } from '../types';
15
+ import { Endpoint, type EndpointSchemas, ResponseBuilder } from './Endpoint';
16
+
17
+ /**
18
+ * Telescope integration for request recording.
19
+ * Uses Middy middleware pattern for compatibility with existing telescope package.
20
+ */
21
+ export interface TelescopeIntegration {
22
+ middleware: MiddlewareObj<any, any, Error, Context>;
23
+ }
16
24
 
17
25
  import {
18
- UnauthorizedError,
19
- UnprocessableEntityError,
20
- wrapError,
26
+ UnauthorizedError,
27
+ UnprocessableEntityError,
28
+ wrapError,
21
29
  } from '@geekmidas/errors';
22
30
  import type { EventPublisher } from '@geekmidas/events';
23
- import {
24
- type Service,
25
- ServiceDiscovery,
26
- type ServiceRecord,
27
- } from '@geekmidas/services';
28
-
29
31
  import type {
30
- InferComposableStandardSchema,
31
- InferStandardSchema,
32
+ InferComposableStandardSchema,
33
+ InferStandardSchema,
32
34
  } from '@geekmidas/schema';
35
+ import {
36
+ runWithRequestContext,
37
+ type Service,
38
+ ServiceDiscovery,
39
+ type ServiceRecord,
40
+ } from '@geekmidas/services';
33
41
  import { publishConstructEvents } from '../publisher';
34
- import type { CookieFn, HeaderFn } from './Endpoint';
35
42
  import type { MappedAudit } from './audit';
43
+ import type { CookieFn, HeaderFn } from './Endpoint';
36
44
  import {
37
- createAuditContext,
38
- executeWithAuditTransaction,
45
+ createAuditContext,
46
+ executeWithAuditTransaction,
39
47
  } from './processAudits';
40
48
 
41
49
  // Helper function to publish events
42
50
 
51
+ /**
52
+ * Options for Amazon API Gateway endpoint adaptors
53
+ */
54
+ export interface AmazonApiGatewayEndpointOptions {
55
+ /**
56
+ * Telescope integration for request recording and monitoring.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * import { telescopeMiddleware } from '@geekmidas/telescope/lambda';
61
+ *
62
+ * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {
63
+ * telescope: { middleware: telescopeMiddleware(telescope) },
64
+ * });
65
+ * ```
66
+ */
67
+ telescope?: TelescopeIntegration;
68
+
69
+ /**
70
+ * Telemetry integration for distributed tracing.
71
+ * Works with any OpenTelemetry-compatible backend.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';
76
+ *
77
+ * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {
78
+ * telemetry: new OTelTelemetry(),
79
+ * });
80
+ * ```
81
+ */
82
+ telemetry?: Telemetry;
83
+ }
84
+
43
85
  export abstract class AmazonApiGatewayEndpoint<
44
- THandler extends
45
- | AmazonApiGatewayV1EndpointHandler
46
- | AmazonApiGatewayV2EndpointHandler,
47
- TEvent extends HandlerEvent<THandler>,
48
- TRoute extends string,
49
- TMethod extends HttpMethod,
50
- TInput extends EndpointSchemas = {},
51
- TOutSchema extends StandardSchemaV1 | undefined = undefined,
52
- TServices extends Service[] = [],
53
- TLogger extends Logger = Logger,
54
- TSession = unknown,
55
- TEventPublisher extends EventPublisher<any> | undefined = undefined,
56
- TEventPublisherServiceName extends string = string,
57
- TAuditStorage extends AuditStorage | undefined = undefined,
58
- TAuditStorageServiceName extends string = string,
59
- TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
60
- string,
61
- unknown
62
- >,
86
+ THandler extends
87
+ | AmazonApiGatewayV1EndpointHandler
88
+ | AmazonApiGatewayV2EndpointHandler,
89
+ TEvent extends HandlerEvent<THandler>,
90
+ TRoute extends string,
91
+ TMethod extends HttpMethod,
92
+ TInput extends EndpointSchemas = {},
93
+ TOutSchema extends StandardSchemaV1 | undefined = undefined,
94
+ TServices extends Service[] = [],
95
+ TLogger extends Logger = Logger,
96
+ TSession = unknown,
97
+ TEventPublisher extends EventPublisher<any> | undefined = undefined,
98
+ TEventPublisherServiceName extends string = string,
99
+ TAuditStorage extends AuditStorage | undefined = undefined,
100
+ TAuditStorageServiceName extends string = string,
101
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
102
+ string,
103
+ unknown
104
+ >,
63
105
  > {
64
- constructor(
65
- protected envParser: EnvironmentParser<{}>,
66
- protected readonly endpoint: Endpoint<
67
- TRoute,
68
- TMethod,
69
- TInput,
70
- TOutSchema,
71
- TServices,
72
- TLogger,
73
- TSession,
74
- TEventPublisher,
75
- TEventPublisherServiceName,
76
- TAuditStorage,
77
- TAuditStorageServiceName,
78
- TAuditAction
79
- >,
80
- ) {}
81
-
82
- private error(): Middleware<TEvent, TInput, TServices, TLogger> {
83
- return {
84
- onError: (req) => {
85
- (req.event.logger || this.endpoint.logger).error(
86
- req.error || {},
87
- 'Error processing request',
88
- );
89
- const wrappedError = wrapError(req.error);
90
-
91
- // Set the response with the proper status code from the HttpError
92
- req.response = {
93
- statusCode: wrappedError.statusCode,
94
- body: wrappedError.body,
95
- };
96
- },
97
- };
98
- }
99
- abstract getInput(e: TEvent): GetInputResponse;
100
-
101
- private input(): Middleware<TEvent, TInput, TServices, TLogger> {
102
- return {
103
- before: async (req) => {
104
- try {
105
- const { body, query, params } = this.getInput(req.event);
106
- const headers = req.event.headers as Record<string, string>;
107
- const header = Endpoint.createHeaders(headers);
108
- const cookie = Endpoint.createCookies(headers.cookie);
109
-
110
- set(req.event, 'body', await this.endpoint.parseInput(body, 'body'));
111
-
112
- set(
113
- req.event,
114
- 'query',
115
- await this.endpoint.parseInput(query, 'query'),
116
- );
117
- set(
118
- req.event,
119
- 'params',
120
- await this.endpoint.parseInput(params, 'params'),
121
- );
122
- set(req.event, 'header', header);
123
- set(req.event, 'cookie', cookie);
124
- } catch (error) {
125
- // Convert validation errors to 422 Unprocessable Entity
126
- if (error && typeof error === 'object' && Array.isArray(error)) {
127
- throw new UnprocessableEntityError('Validation failed', error);
128
- }
129
- throw error;
130
- }
131
- },
132
- };
133
- }
134
-
135
- abstract getLoggerContext(data: TEvent, context: Context): LoggerContext;
136
-
137
- private logger(): Middleware<TEvent, TInput, TServices, TLogger> {
138
- return {
139
- before: (req) => {
140
- req.event.logger = this.endpoint.logger.child({
141
- route: this.endpoint.route,
142
- host: req.event.headers?.host,
143
- method: this.endpoint.method,
144
- ...this.getLoggerContext(req.event, req.context),
145
- }) as TLogger;
146
- },
147
- };
148
- }
149
- private services(): Middleware<TEvent, TInput, TServices, TLogger> {
150
- return {
151
- before: async (req) => {
152
- const logger = req.event.logger as TLogger;
153
- const serviceDiscovery = ServiceDiscovery.getInstance<
154
- ServiceRecord<TServices>,
155
- TLogger
156
- >(logger, this.envParser);
157
-
158
- const services = await serviceDiscovery.register(
159
- this.endpoint.services,
160
- );
161
-
162
- req.event.services = services;
163
- },
164
- };
165
- }
166
-
167
- private authorize(): Middleware<TEvent, TInput, TServices, TLogger> {
168
- return {
169
- before: async (req) => {
170
- const logger = req.event.logger as TLogger;
171
- const services = req.event.services;
172
- const header = req.event.header;
173
- const cookie = req.event.cookie;
174
- const session = req.event.session as TSession;
175
-
176
- const isAuthorized = await this.endpoint.authorize({
177
- header,
178
- cookie,
179
- services,
180
- logger,
181
- session,
182
- });
183
-
184
- if (!isAuthorized) {
185
- logger.warn('Unauthorized access attempt');
186
- throw new UnauthorizedError(
187
- 'Unauthorized access to the endpoint',
188
- 'You do not have permission to access this resource.',
189
- );
190
- }
191
- },
192
- };
193
- }
194
-
195
- private database(): Middleware<TEvent, TInput, TServices, TLogger> {
196
- return {
197
- before: async (req) => {
198
- if (!this.endpoint.databaseService) {
199
- return;
200
- }
201
-
202
- const logger = req.event.logger as TLogger;
203
- const serviceDiscovery = ServiceDiscovery.getInstance<
204
- ServiceRecord<TServices>,
205
- TLogger
206
- >(logger, this.envParser);
207
-
208
- const db = await serviceDiscovery
209
- .register([this.endpoint.databaseService])
210
- .then(
211
- (s) =>
212
- s[this.endpoint.databaseService!.serviceName as keyof typeof s],
213
- );
214
-
215
- (req.event as any).db = db;
216
- },
217
- };
218
- }
219
-
220
- private session(): Middleware<TEvent, TInput, TServices, TLogger> {
221
- return {
222
- before: async (req) => {
223
- const logger = req.event.logger as TLogger;
224
- const services = req.event.services;
225
- const db = (req.event as any).db;
226
- req.event.session = (await this.endpoint.getSession({
227
- logger,
228
- services,
229
- header: req.event.header,
230
- cookie: req.event.cookie,
231
- ...(db !== undefined && { db }),
232
- } as any)) as TSession;
233
- },
234
- };
235
- }
236
-
237
- private events(): Middleware<TEvent, TInput, TServices, TLogger> {
238
- return {
239
- after: async (req) => {
240
- const event = req.event;
241
- const response = (event as any)
242
- .__response as InferStandardSchema<TOutSchema>;
243
- const statusCode = req.response?.statusCode ?? this.endpoint.status;
244
-
245
- // Only publish events on successful responses (2xx status codes)
246
- // Note: Audits are processed inside the handler's transaction
247
- if (Endpoint.isSuccessStatus(statusCode)) {
248
- const logger = event.logger as TLogger;
249
- const serviceDiscovery = ServiceDiscovery.getInstance<
250
- ServiceRecord<TServices>,
251
- TLogger
252
- >(logger, this.envParser);
253
-
254
- // Publish events
255
- await publishConstructEvents(
256
- this.endpoint,
257
- response,
258
- serviceDiscovery,
259
- logger,
260
- );
261
- }
262
- },
263
- };
264
- }
265
-
266
- private async _handler(
267
- event: Event<TEvent, TInput, TServices, TLogger, TSession>,
268
- ) {
269
- const input = this.endpoint.refineInput(event);
270
- const logger = event.logger as TLogger;
271
- const serviceDiscovery = ServiceDiscovery.getInstance<
272
- ServiceRecord<TServices>,
273
- TLogger
274
- >(logger, this.envParser);
275
-
276
- // Create audit context if audit storage is configured
277
- const auditContext = await createAuditContext(
278
- this.endpoint,
279
- serviceDiscovery,
280
- logger,
281
- {
282
- session: event.session,
283
- header: event.header,
284
- cookie: event.cookie,
285
- services: event.services as Record<string, unknown>,
286
- },
287
- );
288
-
289
- // Warn if declarative audits are configured but no audit storage
290
- const audits = this.endpoint.audits as MappedAudit<
291
- TAuditAction,
292
- TOutSchema
293
- >[];
294
- if (!auditContext && audits?.length) {
295
- logger.warn('No auditor storage service available');
296
- }
297
-
298
- // Get pre-resolved database from middleware
299
- const rawDb = (event as any).db;
300
-
301
- // Extract RLS context if configured and not bypassed
302
- const rlsActive =
303
- this.endpoint.rlsConfig &&
304
- !this.endpoint.rlsBypass &&
305
- rawDb !== undefined;
306
- const rlsContext = rlsActive
307
- ? await this.endpoint.rlsConfig!.extractor({
308
- services: event.services as ServiceRecord<TServices>,
309
- session: event.session,
310
- header: event.header,
311
- cookie: event.cookie,
312
- logger,
313
- })
314
- : undefined;
315
-
316
- // Execute handler with automatic audit transaction support
317
- const result = await executeWithAuditTransaction(
318
- auditContext,
319
- async (auditor) => {
320
- // Use audit transaction as db only if the storage uses the same database service
321
- const sameDatabase =
322
- auditContext?.storage?.databaseServiceName &&
323
- auditContext.storage.databaseServiceName ===
324
- this.endpoint.databaseService?.serviceName;
325
- const baseDb = sameDatabase
326
- ? (auditor?.getTransaction?.() ?? rawDb)
327
- : rawDb;
328
-
329
- // Helper to execute handler with given db
330
- const executeHandler = async (db: any) => {
331
- const responseBuilder = new ResponseBuilder();
332
- const response = await this.endpoint.handler(
333
- {
334
- header: event.header,
335
- cookie: event.cookie,
336
- logger: event.logger,
337
- services: event.services,
338
- session: event.session,
339
- auditor,
340
- db,
341
- ...input,
342
- } as any,
343
- responseBuilder,
344
- );
345
-
346
- // Check if response has metadata
347
- let data = response;
348
- let metadata = responseBuilder.getMetadata();
349
-
350
- if (Endpoint.hasMetadata(response)) {
351
- data = response.data;
352
- metadata = response.metadata;
353
- }
354
-
355
- const output = this.endpoint.outputSchema
356
- ? await this.endpoint.parseOutput(data)
357
- : undefined;
358
-
359
- return { output, metadata, responseBuilder };
360
- };
361
-
362
- // If RLS is active, wrap handler with RLS context
363
- if (rlsActive && rlsContext && baseDb) {
364
- return withRlsContext(
365
- baseDb,
366
- rlsContext,
367
- async (trx: any) => executeHandler(trx),
368
- { prefix: this.endpoint.rlsConfig!.prefix },
369
- );
370
- }
371
-
372
- return executeHandler(baseDb);
373
- },
374
- // Process declarative audits after handler (inside transaction)
375
- async (result, auditor) => {
376
- if (!audits?.length) return;
377
-
378
- for (const audit of audits) {
379
- if (audit.when && !audit.when(result.output as any)) {
380
- continue;
381
- }
382
- const payload = audit.payload(result.output as any);
383
- const entityId = audit.entityId?.(result.output as any);
384
- auditor.audit(audit.type as any, payload as any, {
385
- table: audit.table,
386
- entityId,
387
- });
388
- }
389
- },
390
- // Pass rawDb so storage can reuse existing transactions
391
- { db: rawDb },
392
- );
393
-
394
- const { output, metadata } = result;
395
- const body = output !== undefined ? JSON.stringify(output) : undefined;
396
-
397
- // Store response for middleware access
398
- (event as any).__response = output;
399
-
400
- // Build response with metadata
401
- const lambdaResponse: AmazonApiGatewayEndpointHandlerResponse = {
402
- statusCode: metadata.status ?? this.endpoint.status,
403
- body,
404
- };
405
-
406
- // Add custom headers
407
- if (metadata.headers && Object.keys(metadata.headers).length > 0) {
408
- lambdaResponse.headers = { ...metadata.headers };
409
- }
410
-
411
- // Format cookies as Set-Cookie headers
412
- if (metadata.cookies && metadata.cookies.size > 0) {
413
- const setCookieHeaders: string[] = [];
414
- for (const [name, { value, options }] of metadata.cookies) {
415
- setCookieHeaders.push(
416
- Endpoint.formatCookieHeader(name, value, options),
417
- );
418
- }
419
-
420
- if (setCookieHeaders.length > 0) {
421
- lambdaResponse.multiValueHeaders = {
422
- ...lambdaResponse.multiValueHeaders,
423
- 'Set-Cookie': setCookieHeaders,
424
- };
425
- }
426
- }
427
-
428
- return lambdaResponse;
429
- }
430
-
431
- get handler() {
432
- const handler = this._handler.bind(this);
433
- return middy(handler)
434
- .use(this.logger())
435
- .use(this.error())
436
- .use(this.services())
437
- .use(this.input())
438
- .use(this.database())
439
- .use(this.session())
440
- .use(this.authorize())
441
- .use(this.events()) as unknown as THandler;
442
- }
106
+ protected options: AmazonApiGatewayEndpointOptions;
107
+
108
+ constructor(
109
+ protected envParser: EnvironmentParser<{}>,
110
+ protected readonly endpoint: Endpoint<
111
+ TRoute,
112
+ TMethod,
113
+ TInput,
114
+ TOutSchema,
115
+ TServices,
116
+ TLogger,
117
+ TSession,
118
+ TEventPublisher,
119
+ TEventPublisherServiceName,
120
+ TAuditStorage,
121
+ TAuditStorageServiceName,
122
+ TAuditAction
123
+ >,
124
+ options: AmazonApiGatewayEndpointOptions = {},
125
+ ) {
126
+ this.options = options;
127
+ }
128
+
129
+ private error(): Middleware<TEvent, TInput, TServices, TLogger> {
130
+ return {
131
+ onError: (req) => {
132
+ (req.event.logger || this.endpoint.logger).error(
133
+ req.error || {},
134
+ 'Error processing request',
135
+ );
136
+ const wrappedError = wrapError(req.error);
137
+
138
+ // Set the response with the proper status code from the HttpError
139
+ req.response = {
140
+ statusCode: wrappedError.statusCode,
141
+ body: wrappedError.body,
142
+ };
143
+ },
144
+ };
145
+ }
146
+ abstract getInput(e: TEvent): GetInputResponse;
147
+
148
+ private input(): Middleware<TEvent, TInput, TServices, TLogger> {
149
+ return {
150
+ before: async (req) => {
151
+ try {
152
+ const { body, query, params } = this.getInput(req.event);
153
+ const headers = req.event.headers as Record<string, string>;
154
+ const header = Endpoint.createHeaders(headers);
155
+ const cookie = Endpoint.createCookies(headers.cookie);
156
+
157
+ set(req.event, 'body', await this.endpoint.parseInput(body, 'body'));
158
+
159
+ set(
160
+ req.event,
161
+ 'query',
162
+ await this.endpoint.parseInput(query, 'query'),
163
+ );
164
+ set(
165
+ req.event,
166
+ 'params',
167
+ await this.endpoint.parseInput(params, 'params'),
168
+ );
169
+ set(req.event, 'header', header);
170
+ set(req.event, 'cookie', cookie);
171
+ } catch (error) {
172
+ // Convert validation errors to 422 Unprocessable Entity
173
+ if (error && typeof error === 'object' && Array.isArray(error)) {
174
+ throw new UnprocessableEntityError('Validation failed', error);
175
+ }
176
+ throw error;
177
+ }
178
+ },
179
+ };
180
+ }
181
+
182
+ abstract getLoggerContext(data: TEvent, context: Context): LoggerContext;
183
+
184
+ private logger(): Middleware<TEvent, TInput, TServices, TLogger> {
185
+ return {
186
+ before: (req) => {
187
+ req.event.logger = this.endpoint.logger.child({
188
+ route: this.endpoint.route,
189
+ host: req.event.headers?.host,
190
+ method: this.endpoint.method,
191
+ ...this.getLoggerContext(req.event, req.context),
192
+ }) as TLogger;
193
+ },
194
+ };
195
+ }
196
+ private services(): Middleware<TEvent, TInput, TServices, TLogger> {
197
+ return {
198
+ before: async (req) => {
199
+ const _logger = req.event.logger as TLogger;
200
+ const serviceDiscovery = ServiceDiscovery.getInstance<
201
+ ServiceRecord<TServices>
202
+ >(this.envParser);
203
+
204
+ const services = await serviceDiscovery.register(
205
+ this.endpoint.services,
206
+ );
207
+
208
+ req.event.services = services;
209
+ },
210
+ };
211
+ }
212
+
213
+ private authorize(): Middleware<TEvent, TInput, TServices, TLogger> {
214
+ return {
215
+ before: async (req) => {
216
+ const logger = req.event.logger as TLogger;
217
+ const services = req.event.services;
218
+ const header = req.event.header;
219
+ const cookie = req.event.cookie;
220
+ const session = req.event.session as TSession;
221
+
222
+ const isAuthorized = await this.endpoint.authorize({
223
+ header,
224
+ cookie,
225
+ services,
226
+ logger,
227
+ session,
228
+ });
229
+
230
+ if (!isAuthorized) {
231
+ logger.warn('Unauthorized access attempt');
232
+ throw new UnauthorizedError(
233
+ 'Unauthorized access to the endpoint',
234
+ 'You do not have permission to access this resource.',
235
+ );
236
+ }
237
+ },
238
+ };
239
+ }
240
+
241
+ private database(): Middleware<TEvent, TInput, TServices, TLogger> {
242
+ return {
243
+ before: async (req) => {
244
+ if (!this.endpoint.databaseService) {
245
+ return;
246
+ }
247
+
248
+ const _logger = req.event.logger as TLogger;
249
+ const serviceDiscovery = ServiceDiscovery.getInstance<
250
+ ServiceRecord<TServices>
251
+ >(this.envParser);
252
+
253
+ const db = await serviceDiscovery
254
+ .register([this.endpoint.databaseService])
255
+ .then(
256
+ (s) =>
257
+ s[this.endpoint.databaseService?.serviceName as keyof typeof s],
258
+ );
259
+
260
+ (req.event as any).db = db;
261
+ },
262
+ };
263
+ }
264
+
265
+ private session(): Middleware<TEvent, TInput, TServices, TLogger> {
266
+ return {
267
+ before: async (req) => {
268
+ const logger = req.event.logger as TLogger;
269
+ const services = req.event.services;
270
+ const db = (req.event as any).db;
271
+ req.event.session = (await this.endpoint.getSession({
272
+ logger,
273
+ services,
274
+ header: req.event.header,
275
+ cookie: req.event.cookie,
276
+ ...(db !== undefined && { db }),
277
+ } as any)) as TSession;
278
+ },
279
+ };
280
+ }
281
+
282
+ private events(): Middleware<TEvent, TInput, TServices, TLogger> {
283
+ return {
284
+ after: async (req) => {
285
+ const event = req.event;
286
+ const response = (event as any)
287
+ .__response as InferStandardSchema<TOutSchema>;
288
+ const statusCode = req.response?.statusCode ?? this.endpoint.status;
289
+
290
+ // Only publish events on successful responses (2xx status codes)
291
+ // Note: Audits are processed inside the handler's transaction
292
+ if (Endpoint.isSuccessStatus(statusCode)) {
293
+ const logger = event.logger as TLogger;
294
+ const serviceDiscovery = ServiceDiscovery.getInstance<
295
+ ServiceRecord<TServices>,
296
+ TLogger
297
+ >(logger, this.envParser);
298
+
299
+ // Publish events
300
+ await publishConstructEvents(
301
+ this.endpoint,
302
+ response,
303
+ serviceDiscovery,
304
+ logger,
305
+ );
306
+ }
307
+ },
308
+ };
309
+ }
310
+
311
+ private async _handler(
312
+ event: Event<TEvent, TInput, TServices, TLogger, TSession>,
313
+ ) {
314
+ const input = this.endpoint.refineInput(event);
315
+ const logger = event.logger as TLogger;
316
+ const serviceDiscovery = ServiceDiscovery.getInstance<
317
+ ServiceRecord<TServices>
318
+ >(this.envParser);
319
+
320
+ // Create audit context if audit storage is configured
321
+ const auditContext = await createAuditContext(
322
+ this.endpoint,
323
+ serviceDiscovery,
324
+ logger,
325
+ {
326
+ session: event.session,
327
+ header: event.header,
328
+ cookie: event.cookie,
329
+ services: event.services as Record<string, unknown>,
330
+ },
331
+ );
332
+
333
+ // Warn if declarative audits are configured but no audit storage
334
+ const audits = this.endpoint.audits as MappedAudit<
335
+ TAuditAction,
336
+ TOutSchema
337
+ >[];
338
+ if (!auditContext && audits?.length) {
339
+ logger.warn('No auditor storage service available');
340
+ }
341
+
342
+ // Get pre-resolved database from middleware
343
+ const rawDb = (event as any).db;
344
+
345
+ // Extract RLS context if configured and not bypassed
346
+ const rlsActive =
347
+ this.endpoint.rlsConfig &&
348
+ !this.endpoint.rlsBypass &&
349
+ rawDb !== undefined;
350
+ const rlsContext = rlsActive
351
+ ? await this.endpoint.rlsConfig?.extractor({
352
+ services: event.services as ServiceRecord<TServices>,
353
+ session: event.session,
354
+ header: event.header,
355
+ cookie: event.cookie,
356
+ logger,
357
+ })
358
+ : undefined;
359
+
360
+ // Execute handler with automatic audit transaction support
361
+ const result = await executeWithAuditTransaction(
362
+ auditContext,
363
+ async (auditor) => {
364
+ // Use audit transaction as db only if the storage uses the same database service
365
+ const sameDatabase =
366
+ auditContext?.storage?.databaseServiceName &&
367
+ auditContext.storage.databaseServiceName ===
368
+ this.endpoint.databaseService?.serviceName;
369
+ const baseDb = sameDatabase
370
+ ? (auditor?.getTransaction?.() ?? rawDb)
371
+ : rawDb;
372
+
373
+ // Helper to execute handler with given db
374
+ const executeHandler = async (db: any) => {
375
+ const responseBuilder = new ResponseBuilder();
376
+ const response = await this.endpoint.handler(
377
+ {
378
+ header: event.header,
379
+ cookie: event.cookie,
380
+ logger: event.logger,
381
+ services: event.services,
382
+ session: event.session,
383
+ auditor,
384
+ db,
385
+ ...input,
386
+ } as any,
387
+ responseBuilder,
388
+ );
389
+
390
+ // Check if response has metadata
391
+ let data = response;
392
+ let metadata = responseBuilder.getMetadata();
393
+
394
+ if (Endpoint.hasMetadata(response)) {
395
+ data = response.data;
396
+ metadata = response.metadata;
397
+ }
398
+
399
+ const output = this.endpoint.outputSchema
400
+ ? await this.endpoint.parseOutput(data)
401
+ : undefined;
402
+
403
+ return { output, metadata, responseBuilder };
404
+ };
405
+
406
+ // If RLS is active, wrap handler with RLS context
407
+ if (rlsActive && rlsContext && baseDb) {
408
+ return withRlsContext(
409
+ baseDb,
410
+ rlsContext,
411
+ async (trx: any) => executeHandler(trx),
412
+ { prefix: this.endpoint.rlsConfig?.prefix },
413
+ );
414
+ }
415
+
416
+ return executeHandler(baseDb);
417
+ },
418
+ // Process declarative audits after handler (inside transaction)
419
+ async (result, auditor) => {
420
+ if (!audits?.length) return;
421
+
422
+ for (const audit of audits) {
423
+ if (audit.when && !audit.when(result.output as any)) {
424
+ continue;
425
+ }
426
+ const payload = audit.payload(result.output as any);
427
+ const entityId = audit.entityId?.(result.output as any);
428
+ auditor.audit(audit.type as any, payload as any, {
429
+ table: audit.table,
430
+ entityId,
431
+ });
432
+ }
433
+ },
434
+ // Pass rawDb so storage can reuse existing transactions
435
+ { db: rawDb },
436
+ );
437
+
438
+ const { output, metadata } = result;
439
+ const body = output !== undefined ? JSON.stringify(output) : undefined;
440
+
441
+ // Store response for middleware access
442
+ (event as any).__response = output;
443
+
444
+ // Build response with metadata
445
+ const lambdaResponse: AmazonApiGatewayEndpointHandlerResponse = {
446
+ statusCode: metadata.status ?? this.endpoint.status,
447
+ body,
448
+ };
449
+
450
+ // Add custom headers
451
+ if (metadata.headers && Object.keys(metadata.headers).length > 0) {
452
+ lambdaResponse.headers = { ...metadata.headers };
453
+ }
454
+
455
+ // Format cookies as Set-Cookie headers
456
+ if (metadata.cookies && metadata.cookies.size > 0) {
457
+ const setCookieHeaders: string[] = [];
458
+ for (const [name, { value, options }] of metadata.cookies) {
459
+ setCookieHeaders.push(
460
+ Endpoint.formatCookieHeader(name, value, options),
461
+ );
462
+ }
463
+
464
+ if (setCookieHeaders.length > 0) {
465
+ lambdaResponse.multiValueHeaders = {
466
+ ...lambdaResponse.multiValueHeaders,
467
+ 'Set-Cookie': setCookieHeaders,
468
+ };
469
+ }
470
+ }
471
+
472
+ return lambdaResponse;
473
+ }
474
+
475
+ /**
476
+ * Convert Telemetry interface to Middy middleware
477
+ */
478
+ private telemetry(): Middleware<TEvent, TInput, TServices, TLogger> | null {
479
+ if (!this.options.telemetry) {
480
+ return null;
481
+ }
482
+
483
+ const telemetry = this.options.telemetry;
484
+ let ctx: any;
485
+
486
+ return {
487
+ before: (request) => {
488
+ ctx = telemetry.onRequestStart({
489
+ event: request.event,
490
+ context: request.context,
491
+ });
492
+ },
493
+ after: (request) => {
494
+ if (ctx) {
495
+ telemetry.onRequestEnd(ctx, {
496
+ statusCode: request.response?.statusCode ?? 200,
497
+ body: request.response?.body,
498
+ headers: request.response?.headers,
499
+ });
500
+ }
501
+ },
502
+ onError: (request) => {
503
+ if (ctx && request.error) {
504
+ telemetry.onRequestError(
505
+ ctx,
506
+ request.error instanceof Error
507
+ ? request.error
508
+ : new Error(String(request.error)),
509
+ );
510
+ }
511
+ },
512
+ };
513
+ }
514
+
515
+ get handler() {
516
+ const handler = this._handler.bind(this);
517
+ let chain = middy(handler)
518
+ .use(this.logger())
519
+ .use(this.error())
520
+ .use(this.services())
521
+ .use(this.input())
522
+ .use(this.database())
523
+ .use(this.session())
524
+ .use(this.authorize())
525
+ .use(this.events());
526
+
527
+ // Add telemetry middleware if configured (runs early for span creation)
528
+ const telemetryMiddleware = this.telemetry();
529
+ if (telemetryMiddleware) {
530
+ chain = chain.use(telemetryMiddleware);
531
+ }
532
+
533
+ // Add Telescope middleware if configured (runs first/last in chain)
534
+ if (this.options.telescope?.middleware) {
535
+ chain = chain.use(this.options.telescope.middleware);
536
+ }
537
+
538
+ // Wrap entire Middy chain in request context for service access
539
+ const wrappedHandler = async (event: TEvent, context: Context) => {
540
+ const startTime = Date.now();
541
+ const requestId = context.awsRequestId;
542
+ const logger = this.endpoint.logger.child({ requestId }) as TLogger;
543
+
544
+ return runWithRequestContext({ logger, requestId, startTime }, () =>
545
+ chain(event, context),
546
+ );
547
+ };
548
+
549
+ return wrappedHandler as unknown as THandler;
550
+ }
443
551
  }
444
552
 
445
553
  export type Event<
446
- TEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,
447
- TInput extends EndpointSchemas = {},
448
- TServices extends Service[] = [],
449
- TLogger extends Logger = Logger,
450
- TSession = unknown,
554
+ TEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,
555
+ TInput extends EndpointSchemas = {},
556
+ TServices extends Service[] = [],
557
+ TLogger extends Logger = Logger,
558
+ TSession = unknown,
451
559
  > = {
452
- services: ServiceRecord<TServices>;
453
- logger: TLogger;
454
- header: HeaderFn;
455
- cookie: CookieFn;
456
- session: TSession;
560
+ services: ServiceRecord<TServices>;
561
+ logger: TLogger;
562
+ header: HeaderFn;
563
+ cookie: CookieFn;
564
+ session: TSession;
457
565
  } & TEvent &
458
- InferComposableStandardSchema<TInput>;
566
+ InferComposableStandardSchema<TInput>;
459
567
 
460
568
  type Middleware<
461
- TEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,
462
- TInput extends EndpointSchemas = {},
463
- TServices extends Service[] = [],
464
- TLogger extends Logger = Logger,
465
- TSession = unknown,
569
+ TEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,
570
+ TInput extends EndpointSchemas = {},
571
+ TServices extends Service[] = [],
572
+ TLogger extends Logger = Logger,
573
+ TSession = unknown,
466
574
  > = MiddlewareObj<Event<TEvent, TInput, TServices, TLogger, TSession>>;
467
575
 
468
576
  export type AmazonApiGatewayEndpointHandlerResponse = {
469
- statusCode: number;
470
- body: string | undefined;
471
- headers?: Record<string, string>;
472
- multiValueHeaders?: Record<string, string[]>;
577
+ statusCode: number;
578
+ body: string | undefined;
579
+ headers?: Record<string, string>;
580
+ multiValueHeaders?: Record<string, string[]>;
473
581
  };
474
582
 
475
583
  export type LoggerContext = {
476
- fn: {
477
- name: string;
478
- version: string;
479
- };
480
- req: {
481
- id: string | undefined;
482
- awsRequestId: string;
483
- path: string;
484
- ip: string | undefined;
485
- userAgent: string | undefined;
486
- };
584
+ fn: {
585
+ name: string;
586
+ version: string;
587
+ };
588
+ req: {
589
+ id: string | undefined;
590
+ awsRequestId: string;
591
+ path: string;
592
+ ip: string | undefined;
593
+ userAgent: string | undefined;
594
+ };
487
595
  };
488
596
 
489
597
  export type GetInputResponse = {
490
- body: any;
491
- query: any;
492
- params: any;
598
+ body: any;
599
+ query: any;
600
+ params: any;
493
601
  };
494
602
 
495
603
  export type AmazonApiGatewayV1EndpointHandler = (
496
- event: APIGatewayProxyEvent,
497
- context: Context,
604
+ event: APIGatewayProxyEvent,
605
+ context: Context,
498
606
  ) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
499
607
 
500
608
  export type AmazonApiGatewayV2EndpointHandler = (
501
- event: APIGatewayProxyEventV2,
502
- context: Context,
609
+ event: APIGatewayProxyEventV2,
610
+ context: Context,
503
611
  ) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
504
612
 
505
613
  export type HandlerEvent<T extends Function> = T extends (
506
- event: infer E,
507
- context: Context,
614
+ event: infer E,
615
+ context: Context,
508
616
  ) => any
509
- ? E
510
- : never;
617
+ ? E
618
+ : never;