@geekmidas/constructs 0.3.2 → 0.5.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 (550) hide show
  1. package/dist/{AWSLambdaFunction-EPGY4s7i.cjs → AWSLambdaFunction-Ba1DcsW2.cjs} +6 -6
  2. package/dist/AWSLambdaFunction-Ba1DcsW2.cjs.map +1 -0
  3. package/dist/{AWSLambdaFunction-BdebRMUh.d.mts → AWSLambdaFunction-CKe73Qr0.d.cts} +6 -6
  4. package/dist/AWSLambdaFunction-CKe73Qr0.d.cts.map +1 -0
  5. package/dist/{AWSLambdaFunction-D0tEOTXQ.d.cts → AWSLambdaFunction-CuG3HNZx.d.mts} +6 -6
  6. package/dist/AWSLambdaFunction-CuG3HNZx.d.mts.map +1 -0
  7. package/dist/{AWSLambdaFunction-C54a1doJ.mjs → AWSLambdaFunction-DnMm4xvz.mjs} +6 -6
  8. package/dist/AWSLambdaFunction-DnMm4xvz.mjs.map +1 -0
  9. package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts} +4 -4
  10. package/dist/AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.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-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts} +4 -4
  14. package/dist/AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map +1 -0
  15. package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs} +3 -3
  16. package/dist/AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs → AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs} +56 -14
  18. package/dist/AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map +1 -0
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs → AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs} +55 -13
  20. package/dist/AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map +1 -0
  21. package/dist/{AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts → AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts} +52 -6
  22. package/dist/AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map +1 -0
  23. package/dist/{AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts → AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts} +51 -5
  24. package/dist/AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map +1 -0
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts → AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts} +4 -4
  26. package/dist/AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map +1 -0
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs → AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs} +4 -4
  28. package/dist/AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map +1 -0
  29. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs → AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs} +4 -4
  30. package/dist/AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map +1 -0
  31. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts → AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts} +5 -5
  32. package/dist/AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map +1 -0
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs → AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs} +4 -4
  34. package/dist/AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map +1 -0
  35. package/dist/{AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs → AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs} +4 -4
  36. package/dist/AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map +1 -0
  37. package/dist/{AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts → AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts} +4 -6
  38. package/dist/AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map +1 -0
  39. package/dist/{AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts → AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts} +5 -7
  40. package/dist/AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.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-Czi1Jwza.mjs → BaseFunctionBuilder-0qlenb9z.mjs} +2 -2
  50. package/dist/BaseFunctionBuilder-0qlenb9z.mjs.map +1 -0
  51. package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +1 -1
  52. package/dist/{BaseFunctionBuilder-DRY419e7.d.mts → BaseFunctionBuilder-CDfDWWAQ.d.mts} +2 -2
  53. package/dist/BaseFunctionBuilder-CDfDWWAQ.d.mts.map +1 -0
  54. package/dist/{BaseFunctionBuilder-MYG3C9ug.cjs → BaseFunctionBuilder-D7o93EGv.cjs} +2 -2
  55. package/dist/BaseFunctionBuilder-D7o93EGv.cjs.map +1 -0
  56. package/dist/{Construct-Ba5cMxib.cjs → Construct-BlnyYtJC.cjs} +31 -2
  57. package/dist/Construct-BlnyYtJC.cjs.map +1 -0
  58. package/dist/Construct-C4rPE67v.d.cts.map +1 -1
  59. package/dist/{Construct-DdyGHuag.mjs → Construct-D5dCvxZ3.mjs} +31 -2
  60. package/dist/Construct-D5dCvxZ3.mjs.map +1 -0
  61. package/dist/{Construct-XrijZFFh.d.mts → Construct-dZiwVo0q.d.mts} +1 -1
  62. package/dist/Construct-dZiwVo0q.d.mts.map +1 -0
  63. package/dist/Construct.cjs +1 -1
  64. package/dist/Construct.d.mts +1 -1
  65. package/dist/Construct.mjs +1 -1
  66. package/dist/{Cron-bDLcTvV5.d.cts → Cron-B6FnTu7k.d.cts} +2 -2
  67. package/dist/Cron-B6FnTu7k.d.cts.map +1 -0
  68. package/dist/{Cron-CGF4YAfM.cjs → Cron-BAPQetlC.cjs} +3 -3
  69. package/dist/Cron-BAPQetlC.cjs.map +1 -0
  70. package/dist/{Cron-BxhGs5up.mjs → Cron-CAk_ddH8.mjs} +3 -3
  71. package/dist/Cron-CAk_ddH8.mjs.map +1 -0
  72. package/dist/{Cron-cdjlSKNp.d.mts → Cron-D3bEljxQ.d.mts} +2 -2
  73. package/dist/Cron-D3bEljxQ.d.mts.map +1 -0
  74. package/dist/{CronBuilder-DKVXyE0Q.d.cts → CronBuilder-CA8euP0z.d.cts} +4 -4
  75. package/dist/CronBuilder-CA8euP0z.d.cts.map +1 -0
  76. package/dist/{CronBuilder-BC4m5-p1.d.mts → CronBuilder-DvdiKzhq.d.mts} +4 -4
  77. package/dist/CronBuilder-DvdiKzhq.d.mts.map +1 -0
  78. package/dist/{CronBuilder-CcxKRtVP.cjs → CronBuilder-DxXA5ymv.cjs} +4 -4
  79. package/dist/CronBuilder-DxXA5ymv.cjs.map +1 -0
  80. package/dist/{CronBuilder-d2jh-IB2.mjs → CronBuilder-e8TaHPYm.mjs} +4 -4
  81. package/dist/CronBuilder-e8TaHPYm.mjs.map +1 -0
  82. package/dist/{Endpoint-BPv9_-m_.d.cts → Endpoint-BOlbY5iq.d.cts} +3 -3
  83. package/dist/Endpoint-BOlbY5iq.d.cts.map +1 -0
  84. package/dist/{Endpoint-CuOEswxJ.mjs → Endpoint-BbdNmtlM.mjs} +6 -6
  85. package/dist/Endpoint-BbdNmtlM.mjs.map +1 -0
  86. package/dist/{Endpoint-BdwG75G_.d.mts → Endpoint-Dlv7nxgj.d.mts} +4 -4
  87. package/dist/Endpoint-Dlv7nxgj.d.mts.map +1 -0
  88. package/dist/{Endpoint-BVGZXFyV.cjs → Endpoint-DxvnlfXg.cjs} +6 -6
  89. package/dist/Endpoint-DxvnlfXg.cjs.map +1 -0
  90. package/dist/{EndpointBuilder-Cgj1P_ra.cjs → EndpointBuilder-40Iz5CjY.cjs} +6 -6
  91. package/dist/EndpointBuilder-40Iz5CjY.cjs.map +1 -0
  92. package/dist/{EndpointBuilder-DnCB1h1j.mjs → EndpointBuilder-BaVvhW9m.mjs} +6 -6
  93. package/dist/EndpointBuilder-BaVvhW9m.mjs.map +1 -0
  94. package/dist/{EndpointBuilder-DIy_m1bu.d.cts → EndpointBuilder-CFfWWjUa.d.cts} +3 -3
  95. package/dist/EndpointBuilder-CFfWWjUa.d.cts.map +1 -0
  96. package/dist/{EndpointBuilder-B3az942t.d.mts → EndpointBuilder-T_K2NLWw.d.mts} +5 -5
  97. package/dist/EndpointBuilder-T_K2NLWw.d.mts.map +1 -0
  98. package/dist/{EndpointFactory-CyPbm3AD.d.cts → EndpointFactory-ChzBVEM9.d.cts} +4 -4
  99. package/dist/EndpointFactory-ChzBVEM9.d.cts.map +1 -0
  100. package/dist/{EndpointFactory-CbdxPCIH.mjs → EndpointFactory-DfNjSgVG.mjs} +7 -7
  101. package/dist/EndpointFactory-DfNjSgVG.mjs.map +1 -0
  102. package/dist/{EndpointFactory-C-0nE6Jg.d.mts → EndpointFactory-GAL_tuPf.d.mts} +4 -4
  103. package/dist/EndpointFactory-GAL_tuPf.d.mts.map +1 -0
  104. package/dist/{EndpointFactory-CYj6BYok.cjs → EndpointFactory-r6jxPvQ8.cjs} +7 -7
  105. package/dist/EndpointFactory-r6jxPvQ8.cjs.map +1 -0
  106. package/dist/{Function-BVHqIDp9.mjs → Function-D8tBamM3.mjs} +3 -3
  107. package/dist/Function-D8tBamM3.mjs.map +1 -0
  108. package/dist/{Function-DN2G6OT5.d.mts → Function-DBmU3uGI.d.mts} +3 -3
  109. package/dist/Function-DBmU3uGI.d.mts.map +1 -0
  110. package/dist/{Function-Cf7f_kCz.d.cts → Function-PNW4HdNE.d.cts} +2 -2
  111. package/dist/Function-PNW4HdNE.d.cts.map +1 -0
  112. package/dist/{Function-DDZb1525.cjs → Function-iLKrUXuw.cjs} +3 -3
  113. package/dist/Function-iLKrUXuw.cjs.map +1 -0
  114. package/dist/{FunctionBuilder-DswJ-9sD.cjs → FunctionBuilder-BEpPgeho.cjs} +4 -4
  115. package/dist/FunctionBuilder-BEpPgeho.cjs.map +1 -0
  116. package/dist/{FunctionBuilder-Cxx8D2na.d.mts → FunctionBuilder-Bv4H2I1a.d.mts} +4 -4
  117. package/dist/FunctionBuilder-Bv4H2I1a.d.mts.map +1 -0
  118. package/dist/{FunctionBuilder-CrDYgfiI.mjs → FunctionBuilder-BwNF99AB.mjs} +4 -4
  119. package/dist/FunctionBuilder-BwNF99AB.mjs.map +1 -0
  120. package/dist/{FunctionBuilder-CJBzzXL3.d.cts → FunctionBuilder-DCqXIHaq.d.cts} +2 -2
  121. package/dist/FunctionBuilder-DCqXIHaq.d.cts.map +1 -0
  122. package/dist/{FunctionExecutionWrapper-CLDh7Z2_.mjs → FunctionExecutionWrapper-B__HE_B-.mjs} +3 -3
  123. package/dist/FunctionExecutionWrapper-B__HE_B-.mjs.map +1 -0
  124. package/dist/{FunctionExecutionWrapper-DF260Aaj.d.mts → FunctionExecutionWrapper-BclgIztn.d.cts} +5 -5
  125. package/dist/FunctionExecutionWrapper-BclgIztn.d.cts.map +1 -0
  126. package/dist/{FunctionExecutionWrapper-BYI2bGTL.cjs → FunctionExecutionWrapper-BjF6t9Hb.cjs} +3 -3
  127. package/dist/FunctionExecutionWrapper-BjF6t9Hb.cjs.map +1 -0
  128. package/dist/{FunctionExecutionWrapper-Qy8bmgFR.d.cts → FunctionExecutionWrapper-Dq21c6vt.d.mts} +5 -5
  129. package/dist/FunctionExecutionWrapper-Dq21c6vt.d.mts.map +1 -0
  130. package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs +251 -0
  131. package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs.map +1 -0
  132. package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs +257 -0
  133. package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs.map +1 -0
  134. package/dist/{HonoEndpointAdaptor-YcRHYALH.d.cts → HonoEndpointAdaptor-Dkkemmbo.d.cts} +10 -5
  135. package/dist/HonoEndpointAdaptor-Dkkemmbo.d.cts.map +1 -0
  136. package/dist/{HonoEndpointAdaptor-BaPlUhz0.d.mts → HonoEndpointAdaptor-HukjdF6M.d.mts} +11 -6
  137. package/dist/HonoEndpointAdaptor-HukjdF6M.d.mts.map +1 -0
  138. package/dist/{Subscriber-COYMSevD.d.cts → Subscriber--zUjZDR6.d.cts} +1 -1
  139. package/dist/Subscriber--zUjZDR6.d.cts.map +1 -0
  140. package/dist/{Subscriber-ikctpU3I.d.mts → Subscriber-0Ac7cXID.d.mts} +2 -2
  141. package/dist/Subscriber-0Ac7cXID.d.mts.map +1 -0
  142. package/dist/{Subscriber-BmPf9GFb.mjs → Subscriber-BgZ8T-O2.mjs} +2 -2
  143. package/dist/Subscriber-BgZ8T-O2.mjs.map +1 -0
  144. package/dist/{Subscriber-BiHjVXtM.cjs → Subscriber-CoFmHMIM.cjs} +2 -2
  145. package/dist/Subscriber-CoFmHMIM.cjs.map +1 -0
  146. package/dist/{SubscriberBuilder-D_9zzllj.d.mts → SubscriberBuilder-D8cmUHee.d.mts} +2 -2
  147. package/dist/SubscriberBuilder-D8cmUHee.d.mts.map +1 -0
  148. package/dist/{SubscriberBuilder-DJPEeYDJ.mjs → SubscriberBuilder-DWXWZBPo.mjs} +2 -2
  149. package/dist/SubscriberBuilder-DWXWZBPo.mjs.map +1 -0
  150. package/dist/{SubscriberBuilder-ivHAGIVi.d.cts → SubscriberBuilder-DciTqb-7.d.cts} +2 -2
  151. package/dist/SubscriberBuilder-DciTqb-7.d.cts.map +1 -0
  152. package/dist/{SubscriberBuilder-Cp1C-xtT.cjs → SubscriberBuilder-JlxhyqGp.cjs} +2 -2
  153. package/dist/SubscriberBuilder-JlxhyqGp.cjs.map +1 -0
  154. package/dist/{TestEndpointAdaptor-DB7bREhS.d.mts → TestEndpointAdaptor-Boijwbmz.d.mts} +4 -4
  155. package/dist/TestEndpointAdaptor-Boijwbmz.d.mts.map +1 -0
  156. package/dist/{TestEndpointAdaptor-C10xBI--.d.cts → TestEndpointAdaptor-DdwpRyNh.d.cts} +3 -3
  157. package/dist/TestEndpointAdaptor-DdwpRyNh.d.cts.map +1 -0
  158. package/dist/TestEndpointAdaptor-Dk75ExxE.cjs +176 -0
  159. package/dist/TestEndpointAdaptor-Dk75ExxE.cjs.map +1 -0
  160. package/dist/TestEndpointAdaptor-OiA2JLDp.mjs +170 -0
  161. package/dist/TestEndpointAdaptor-OiA2JLDp.mjs.map +1 -0
  162. package/dist/adaptors/aws.cjs +12 -12
  163. package/dist/adaptors/aws.d.cts +13 -12
  164. package/dist/adaptors/aws.d.mts +16 -15
  165. package/dist/adaptors/aws.mjs +12 -12
  166. package/dist/adaptors/hono.cjs +10 -9
  167. package/dist/adaptors/hono.d.cts +6 -6
  168. package/dist/adaptors/hono.d.mts +9 -9
  169. package/dist/adaptors/hono.mjs +10 -9
  170. package/dist/adaptors/testing.cjs +8 -7
  171. package/dist/adaptors/testing.d.cts +6 -6
  172. package/dist/adaptors/testing.d.mts +9 -9
  173. package/dist/adaptors/testing.mjs +8 -7
  174. package/dist/crons/Cron.cjs +6 -6
  175. package/dist/crons/Cron.d.cts +4 -4
  176. package/dist/crons/Cron.d.mts +6 -6
  177. package/dist/crons/Cron.mjs +6 -6
  178. package/dist/crons/CronBuilder.cjs +7 -7
  179. package/dist/crons/CronBuilder.d.cts +5 -5
  180. package/dist/crons/CronBuilder.d.mts +7 -7
  181. package/dist/crons/CronBuilder.mjs +7 -7
  182. package/dist/crons/index.cjs +7 -7
  183. package/dist/crons/index.cjs.map +1 -1
  184. package/dist/crons/index.d.cts +9 -9
  185. package/dist/crons/index.d.mts +7 -7
  186. package/dist/crons/index.mjs +7 -7
  187. package/dist/crons/index.mjs.map +1 -1
  188. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  189. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -7
  190. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +11 -10
  191. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  192. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  193. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -7
  194. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +11 -10
  195. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  196. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  197. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -8
  198. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +12 -11
  199. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  200. package/dist/endpoints/Authorizer.cjs +1 -1
  201. package/dist/endpoints/Authorizer.d.cts +1 -1
  202. package/dist/endpoints/Authorizer.d.mts +1 -1
  203. package/dist/endpoints/Authorizer.mjs +1 -1
  204. package/dist/endpoints/Endpoint.cjs +6 -6
  205. package/dist/endpoints/Endpoint.d.cts +5 -5
  206. package/dist/endpoints/Endpoint.d.mts +8 -8
  207. package/dist/endpoints/Endpoint.mjs +6 -6
  208. package/dist/endpoints/EndpointBuilder.cjs +9 -9
  209. package/dist/endpoints/EndpointBuilder.d.cts +6 -6
  210. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  211. package/dist/endpoints/EndpointBuilder.mjs +9 -9
  212. package/dist/endpoints/EndpointFactory.cjs +10 -10
  213. package/dist/endpoints/EndpointFactory.d.cts +7 -7
  214. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  215. package/dist/endpoints/EndpointFactory.mjs +10 -10
  216. package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
  217. package/dist/endpoints/HonoEndpointAdaptor.d.cts +6 -6
  218. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  219. package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
  220. package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
  221. package/dist/endpoints/TestEndpointAdaptor.d.cts +6 -6
  222. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  223. package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
  224. package/dist/endpoints/audit.d.cts +5 -5
  225. package/dist/endpoints/audit.d.mts +8 -8
  226. package/dist/endpoints/helpers.cjs +7 -7
  227. package/dist/endpoints/helpers.d.cts +5 -5
  228. package/dist/endpoints/helpers.d.cts.map +1 -1
  229. package/dist/endpoints/helpers.d.mts +8 -8
  230. package/dist/endpoints/helpers.d.mts.map +1 -1
  231. package/dist/endpoints/helpers.mjs +7 -7
  232. package/dist/endpoints/index.cjs +20 -10
  233. package/dist/endpoints/index.cjs.map +1 -1
  234. package/dist/endpoints/index.d.cts +12 -10
  235. package/dist/endpoints/index.d.cts.map +1 -1
  236. package/dist/endpoints/index.d.mts +15 -13
  237. package/dist/endpoints/index.d.mts.map +1 -1
  238. package/dist/endpoints/index.mjs +13 -11
  239. package/dist/endpoints/index.mjs.map +1 -1
  240. package/dist/endpoints/lazyAccessors.cjs +10 -0
  241. package/dist/endpoints/lazyAccessors.d.cts +10 -0
  242. package/dist/endpoints/lazyAccessors.d.mts +10 -0
  243. package/dist/endpoints/lazyAccessors.mjs +3 -0
  244. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  245. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  246. package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
  247. package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
  248. package/dist/endpoints/processAudits.d.cts +5 -5
  249. package/dist/endpoints/processAudits.d.cts.map +1 -1
  250. package/dist/endpoints/processAudits.d.mts +8 -8
  251. package/dist/endpoints/processAudits.d.mts.map +1 -1
  252. package/dist/endpoints/rls.cjs +1 -1
  253. package/dist/endpoints/rls.d.cts +5 -5
  254. package/dist/endpoints/rls.d.mts +8 -8
  255. package/dist/endpoints/rls.mjs +1 -1
  256. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  257. package/dist/functions/AWSLambdaFunction.d.cts +3 -3
  258. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  259. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  260. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  261. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  262. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  263. package/dist/functions/Function.cjs +2 -2
  264. package/dist/functions/Function.d.cts +1 -1
  265. package/dist/functions/Function.d.mts +2 -2
  266. package/dist/functions/Function.mjs +2 -2
  267. package/dist/functions/FunctionBuilder.cjs +4 -4
  268. package/dist/functions/FunctionBuilder.d.cts +2 -2
  269. package/dist/functions/FunctionBuilder.d.mts +4 -4
  270. package/dist/functions/FunctionBuilder.mjs +4 -4
  271. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  272. package/dist/functions/FunctionExecutionWrapper.d.cts +2 -2
  273. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  274. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  275. package/dist/functions/TestFunctionAdaptor.cjs +7 -7
  276. package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
  277. package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
  278. package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
  279. package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
  280. package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
  281. package/dist/functions/TestFunctionAdaptor.mjs +7 -7
  282. package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
  283. package/dist/functions/index.cjs +5 -5
  284. package/dist/functions/index.d.cts +3 -3
  285. package/dist/functions/index.d.mts +5 -5
  286. package/dist/functions/index.mjs +5 -5
  287. package/dist/{functions-fTid0RMK.cjs → functions-BkKXVeHm.cjs} +2 -2
  288. package/dist/functions-BkKXVeHm.cjs.map +1 -0
  289. package/dist/functions-C3A1vMRW.mjs +8 -0
  290. package/dist/functions-C3A1vMRW.mjs.map +1 -0
  291. package/dist/{helpers-BcP1tXAi.cjs → helpers-BelEzV4U.cjs} +2 -2
  292. package/dist/helpers-BelEzV4U.cjs.map +1 -0
  293. package/dist/{helpers-ByRTDO_m.mjs → helpers-DgsMFMUV.mjs} +2 -2
  294. package/dist/helpers-DgsMFMUV.mjs.map +1 -0
  295. package/dist/{index-BWzGIj06.d.mts → index-CgAQHr3f.d.mts} +2 -2
  296. package/dist/index-CgAQHr3f.d.mts.map +1 -0
  297. package/dist/index-D0fp_IK1.d.cts +12 -0
  298. package/dist/index-D0fp_IK1.d.cts.map +1 -0
  299. package/dist/index.cjs +1 -1
  300. package/dist/index.d.cts +2 -1
  301. package/dist/index.d.mts +4 -3
  302. package/dist/index.mjs +1 -1
  303. package/dist/lazyAccessors-B-Jgkg2o.mjs +175 -0
  304. package/dist/lazyAccessors-B-Jgkg2o.mjs.map +1 -0
  305. package/dist/lazyAccessors-B2ILzU-j.d.mts +49 -0
  306. package/dist/lazyAccessors-B2ILzU-j.d.mts.map +1 -0
  307. package/dist/lazyAccessors-B8Hhras9.cjs +223 -0
  308. package/dist/lazyAccessors-B8Hhras9.cjs.map +1 -0
  309. package/dist/lazyAccessors-Bcpi06ed.d.cts +49 -0
  310. package/dist/lazyAccessors-Bcpi06ed.d.cts.map +1 -0
  311. package/dist/{parseHonoQuery-CZC5_97v.cjs → parseHonoQuery-D4MhxTRc.cjs} +1 -1
  312. package/dist/parseHonoQuery-D4MhxTRc.cjs.map +1 -0
  313. package/dist/{parseHonoQuery-DDgIkTO4.mjs → parseHonoQuery-DpK3sGPc.mjs} +1 -1
  314. package/dist/parseHonoQuery-DpK3sGPc.mjs.map +1 -0
  315. package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -1
  316. package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -1
  317. package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
  318. package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
  319. package/dist/publisher-Bw4770Hi.mjs.map +1 -1
  320. package/dist/publisher-C4BhHB5I.d.cts +16 -0
  321. package/dist/publisher-C4BhHB5I.d.cts.map +1 -0
  322. package/dist/publisher-NE-GnXL8.d.mts +16 -0
  323. package/dist/publisher-NE-GnXL8.d.mts.map +1 -0
  324. package/dist/publisher-lFQleddL.cjs.map +1 -1
  325. package/dist/publisher.d.cts +3 -16
  326. package/dist/publisher.d.mts +3 -16
  327. package/dist/{rls-CmJ7bRsz.cjs → rls-BrywnrQb.cjs} +1 -1
  328. package/dist/{rls-CmJ7bRsz.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
  329. package/dist/{rls-Bf3FRwto.mjs → rls-C0cWOnk4.mjs} +1 -1
  330. package/dist/{rls-Bf3FRwto.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
  331. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  332. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +2 -2
  333. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  334. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  335. package/dist/subscribers/Subscriber.cjs +2 -2
  336. package/dist/subscribers/Subscriber.d.cts +1 -1
  337. package/dist/subscribers/Subscriber.d.mts +2 -2
  338. package/dist/subscribers/Subscriber.mjs +2 -2
  339. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  340. package/dist/subscribers/SubscriberBuilder.d.cts +2 -2
  341. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  342. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  343. package/dist/subscribers/index.cjs +3 -3
  344. package/dist/subscribers/index.cjs.map +1 -1
  345. package/dist/subscribers/index.d.cts +4 -4
  346. package/dist/subscribers/index.d.cts.map +1 -1
  347. package/dist/subscribers/index.d.mts +3 -3
  348. package/dist/subscribers/index.d.mts.map +1 -1
  349. package/dist/subscribers/index.mjs +3 -3
  350. package/dist/subscribers/index.mjs.map +1 -1
  351. package/dist/telemetry-BTaiRqPo.d.cts +95 -0
  352. package/dist/telemetry-BTaiRqPo.d.cts.map +1 -0
  353. package/dist/telemetry-yAHf5yDs.d.mts +95 -0
  354. package/dist/telemetry-yAHf5yDs.d.mts.map +1 -0
  355. package/dist/telemetry.cjs +0 -0
  356. package/dist/telemetry.d.cts +2 -0
  357. package/dist/telemetry.d.mts +2 -0
  358. package/dist/telemetry.mjs +0 -0
  359. package/dist/types-B5H3piDg.d.cts.map +1 -1
  360. package/dist/{types-DdIlpxAd.d.mts → types-Dw-iLd3Y.d.mts} +1 -1
  361. package/dist/types-Dw-iLd3Y.d.mts.map +1 -0
  362. package/dist/types.d.mts +1 -1
  363. package/package.json +18 -18
  364. package/src/Construct.ts +117 -86
  365. package/src/__benchmarks__/build-time-optimization.bench.ts +274 -0
  366. package/src/__benchmarks__/endpoint.bench.ts +375 -375
  367. package/src/__benchmarks__/fixtures.ts +241 -0
  368. package/src/__benchmarks__/hono-adaptor.bench.ts +533 -0
  369. package/src/__benchmarks__/hono-server.bench.ts +206 -206
  370. package/src/__benchmarks__/response-builder.bench.ts +428 -0
  371. package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +319 -0
  372. package/src/__benchmarks__/strategies/strategy-c-middleware.ts +530 -0
  373. package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +567 -0
  374. package/src/__tests__/Construct.environment.spec.ts +349 -350
  375. package/src/__tests__/publisher.setting.spec.ts +496 -499
  376. package/src/__tests__/publisher.spec.ts +440 -442
  377. package/src/crons/Cron.ts +117 -117
  378. package/src/crons/CronBuilder.ts +237 -238
  379. package/src/crons/__tests__/Cron.spec.ts +448 -448
  380. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +214 -214
  381. package/src/crons/index.ts +4 -4
  382. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +571 -463
  383. package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +86 -86
  384. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +85 -81
  385. package/src/endpoints/Authorizer.ts +100 -100
  386. package/src/endpoints/Endpoint.ts +921 -937
  387. package/src/endpoints/EndpointBuilder.ts +703 -703
  388. package/src/endpoints/EndpointFactory.ts +1054 -1056
  389. package/src/endpoints/HonoEndpointAdaptor.ts +621 -548
  390. package/src/endpoints/TestEndpointAdaptor.ts +372 -353
  391. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +499 -0
  392. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +541 -542
  393. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +1172 -1174
  394. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +599 -599
  395. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +710 -710
  396. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +280 -280
  397. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +924 -730
  398. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +307 -0
  399. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +408 -408
  400. package/src/endpoints/__tests__/Authorizer.spec.ts +286 -0
  401. package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +162 -162
  402. package/src/endpoints/__tests__/Endpoint.headers.spec.ts +182 -182
  403. package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +158 -159
  404. package/src/endpoints/__tests__/Endpoint.spec.ts +819 -822
  405. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +427 -427
  406. package/src/endpoints/__tests__/EndpointBuilder.spec.ts +478 -478
  407. package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +426 -426
  408. package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +501 -501
  409. package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +177 -177
  410. package/src/endpoints/__tests__/EndpointFactory.spec.ts +471 -471
  411. package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +143 -143
  412. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +663 -663
  413. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +608 -608
  414. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +561 -561
  415. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1036 -1036
  416. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +278 -278
  417. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1093 -1093
  418. package/src/endpoints/__tests__/ResponseBuilder.spec.ts +230 -230
  419. package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +569 -569
  420. package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +841 -841
  421. package/src/endpoints/__tests__/endpoint-types.test.ts +68 -68
  422. package/src/endpoints/__tests__/helpers.spec.ts +37 -0
  423. package/src/endpoints/__tests__/lazyAccessors.spec.ts +330 -0
  424. package/src/endpoints/__tests__/processAudits.spec.ts +631 -0
  425. package/src/endpoints/audit.ts +51 -51
  426. package/src/endpoints/helpers.ts +34 -35
  427. package/src/endpoints/index.ts +33 -23
  428. package/src/endpoints/lazyAccessors.ts +241 -0
  429. package/src/endpoints/parseHonoQuery.ts +41 -41
  430. package/src/endpoints/parseQueryParams.ts +36 -36
  431. package/src/endpoints/processAudits.ts +269 -269
  432. package/src/endpoints/rls.ts +16 -16
  433. package/src/functions/AWSLambdaFunction.ts +294 -295
  434. package/src/functions/BaseFunctionBuilder.ts +185 -185
  435. package/src/functions/Function.ts +190 -190
  436. package/src/functions/FunctionBuilder.ts +353 -353
  437. package/src/functions/FunctionExecutionWrapper.ts +199 -200
  438. package/src/functions/TestFunctionAdaptor.ts +191 -191
  439. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +424 -424
  440. package/src/functions/__tests__/Function.audits.spec.ts +364 -364
  441. package/src/functions/__tests__/Function.spec.ts +453 -454
  442. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +179 -179
  443. package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +369 -369
  444. package/src/functions/index.ts +6 -4
  445. package/src/index.ts +13 -9
  446. package/src/publisher.ts +71 -72
  447. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +244 -248
  448. package/src/subscribers/Subscriber.ts +82 -84
  449. package/src/subscribers/SubscriberBuilder.ts +129 -129
  450. package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +589 -589
  451. package/src/subscribers/__tests__/Subscriber.spec.ts +402 -404
  452. package/src/subscribers/index.ts +1 -0
  453. package/src/telemetry.ts +103 -0
  454. package/src/types.ts +7 -7
  455. package/test.ts +58 -59
  456. package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +0 -1
  457. package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +0 -1
  458. package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +0 -1
  459. package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +0 -1
  460. package/dist/AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map +0 -1
  461. package/dist/AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map +0 -1
  462. package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +0 -1
  463. package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +0 -1
  464. package/dist/AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map +0 -1
  465. package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +0 -1
  466. package/dist/AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map +0 -1
  467. package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +0 -1
  468. package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +0 -1
  469. package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +0 -1
  470. package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +0 -1
  471. package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +0 -1
  472. package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +0 -1
  473. package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +0 -1
  474. package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +0 -1
  475. package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +0 -1
  476. package/dist/Authorizer-B-btowNd.d.cts.map +0 -1
  477. package/dist/Authorizer-C0ge_tc8.cjs.map +0 -1
  478. package/dist/Authorizer-gWxYsGEp.d.mts.map +0 -1
  479. package/dist/Authorizer-r9U3y_ms.mjs.map +0 -1
  480. package/dist/BaseFunctionBuilder-Czi1Jwza.mjs.map +0 -1
  481. package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +0 -1
  482. package/dist/BaseFunctionBuilder-MYG3C9ug.cjs.map +0 -1
  483. package/dist/Construct-Ba5cMxib.cjs.map +0 -1
  484. package/dist/Construct-DdyGHuag.mjs.map +0 -1
  485. package/dist/Construct-XrijZFFh.d.mts.map +0 -1
  486. package/dist/Cron-BxhGs5up.mjs.map +0 -1
  487. package/dist/Cron-CGF4YAfM.cjs.map +0 -1
  488. package/dist/Cron-bDLcTvV5.d.cts.map +0 -1
  489. package/dist/Cron-cdjlSKNp.d.mts.map +0 -1
  490. package/dist/CronBuilder-BC4m5-p1.d.mts.map +0 -1
  491. package/dist/CronBuilder-CcxKRtVP.cjs.map +0 -1
  492. package/dist/CronBuilder-DKVXyE0Q.d.cts.map +0 -1
  493. package/dist/CronBuilder-d2jh-IB2.mjs.map +0 -1
  494. package/dist/Endpoint-BPv9_-m_.d.cts.map +0 -1
  495. package/dist/Endpoint-BVGZXFyV.cjs.map +0 -1
  496. package/dist/Endpoint-BdwG75G_.d.mts.map +0 -1
  497. package/dist/Endpoint-CuOEswxJ.mjs.map +0 -1
  498. package/dist/EndpointBuilder-B3az942t.d.mts.map +0 -1
  499. package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +0 -1
  500. package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +0 -1
  501. package/dist/EndpointBuilder-DnCB1h1j.mjs.map +0 -1
  502. package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +0 -1
  503. package/dist/EndpointFactory-CYj6BYok.cjs.map +0 -1
  504. package/dist/EndpointFactory-CbdxPCIH.mjs.map +0 -1
  505. package/dist/EndpointFactory-CyPbm3AD.d.cts.map +0 -1
  506. package/dist/Function-BVHqIDp9.mjs.map +0 -1
  507. package/dist/Function-Cf7f_kCz.d.cts.map +0 -1
  508. package/dist/Function-DDZb1525.cjs.map +0 -1
  509. package/dist/Function-DN2G6OT5.d.mts.map +0 -1
  510. package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +0 -1
  511. package/dist/FunctionBuilder-CrDYgfiI.mjs.map +0 -1
  512. package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +0 -1
  513. package/dist/FunctionBuilder-DswJ-9sD.cjs.map +0 -1
  514. package/dist/FunctionExecutionWrapper-BYI2bGTL.cjs.map +0 -1
  515. package/dist/FunctionExecutionWrapper-CLDh7Z2_.mjs.map +0 -1
  516. package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +0 -1
  517. package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +0 -1
  518. package/dist/HonoEndpointAdaptor-BaPlUhz0.d.mts.map +0 -1
  519. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
  520. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
  521. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
  522. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.map +0 -1
  523. package/dist/HonoEndpointAdaptor-YcRHYALH.d.cts.map +0 -1
  524. package/dist/Subscriber-BiHjVXtM.cjs.map +0 -1
  525. package/dist/Subscriber-BmPf9GFb.mjs.map +0 -1
  526. package/dist/Subscriber-COYMSevD.d.cts.map +0 -1
  527. package/dist/Subscriber-ikctpU3I.d.mts.map +0 -1
  528. package/dist/SubscriberBuilder-Cp1C-xtT.cjs.map +0 -1
  529. package/dist/SubscriberBuilder-DJPEeYDJ.mjs.map +0 -1
  530. package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +0 -1
  531. package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +0 -1
  532. package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
  533. package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +0 -1
  534. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs +0 -160
  535. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs.map +0 -1
  536. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs +0 -166
  537. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs.map +0 -1
  538. package/dist/functions-C6EK1xL6.mjs +0 -8
  539. package/dist/functions-C6EK1xL6.mjs.map +0 -1
  540. package/dist/functions-fTid0RMK.cjs.map +0 -1
  541. package/dist/helpers-BcP1tXAi.cjs.map +0 -1
  542. package/dist/helpers-ByRTDO_m.mjs.map +0 -1
  543. package/dist/index-BWzGIj06.d.mts.map +0 -1
  544. package/dist/index-DmFozqLd.d.cts +0 -12
  545. package/dist/index-DmFozqLd.d.cts.map +0 -1
  546. package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
  547. package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
  548. package/dist/publisher.d.cts.map +0 -1
  549. package/dist/publisher.d.mts.map +0 -1
  550. package/dist/types-DdIlpxAd.d.mts.map +0 -1
@@ -1,448 +1,448 @@
1
1
  import type {
2
- AuditRecord,
3
- AuditStorage,
4
- AuditableAction,
2
+ AuditableAction,
3
+ AuditRecord,
4
+ AuditStorage,
5
5
  } from '@geekmidas/audit';
6
6
  import type { Service } from '@geekmidas/services';
7
7
  import { describe, expect, it } from 'vitest';
8
8
  import { z } from 'zod';
9
- import { EndpointBuilder } from '../EndpointBuilder';
10
9
  import type { ActorExtractor, MappedAudit } from '../audit';
10
+ import { EndpointBuilder } from '../EndpointBuilder';
11
11
 
12
12
  // In-memory audit storage for testing
13
13
  class InMemoryAuditStorage implements AuditStorage {
14
- records: AuditRecord[] = [];
14
+ records: AuditRecord[] = [];
15
15
 
16
- async write(records: AuditRecord[]): Promise<void> {
17
- this.records.push(...records);
18
- }
16
+ async write(records: AuditRecord[]): Promise<void> {
17
+ this.records.push(...records);
18
+ }
19
19
 
20
- async query(): Promise<AuditRecord[]> {
21
- return this.records;
22
- }
20
+ async query(): Promise<AuditRecord[]> {
21
+ return this.records;
22
+ }
23
23
  }
24
24
 
25
25
  const auditStorageService = {
26
- serviceName: 'auditStorage' as const,
27
- async register() {
28
- return new InMemoryAuditStorage();
29
- },
26
+ serviceName: 'auditStorage' as const,
27
+ async register() {
28
+ return new InMemoryAuditStorage();
29
+ },
30
30
  } satisfies Service<'auditStorage', InMemoryAuditStorage>;
31
31
 
32
32
  // Define test audit actions
33
33
  type TestAuditAction =
34
- | AuditableAction<'user.created', { userId: string; email: string }>
35
- | AuditableAction<'user.updated', { userId: string; changes: string[] }>
36
- | AuditableAction<'user.deleted', { userId: string }>;
34
+ | AuditableAction<'user.created', { userId: string; email: string }>
35
+ | AuditableAction<'user.updated', { userId: string; changes: string[] }>
36
+ | AuditableAction<'user.deleted', { userId: string }>;
37
37
 
38
38
  describe('EndpointBuilder audit methods', () => {
39
- describe('auditor', () => {
40
- it('should set auditor storage service', () => {
41
- const builder = new EndpointBuilder('/users', 'POST').auditor(
42
- auditStorageService,
43
- );
44
-
45
- expect((builder as any)._auditorStorage).toBe(auditStorageService);
46
- });
47
-
48
- it('should return builder for chaining', () => {
49
- const builder = new EndpointBuilder('/users', 'POST');
50
- const result = builder.auditor(auditStorageService);
51
-
52
- expect(result).toBe(builder);
53
- });
54
-
55
- it('should pass auditor storage service to endpoint', () => {
56
- const endpoint = new EndpointBuilder('/users', 'POST')
57
- .auditor(auditStorageService)
58
- .handle(async () => ({ id: '123' }));
59
-
60
- expect(endpoint.auditorStorageService).toBe(auditStorageService);
61
- });
62
-
63
- it('should allow chaining with other methods', () => {
64
- const bodySchema = z.object({ name: z.string() });
65
- const outputSchema = z.object({ id: z.string() });
66
-
67
- const endpoint = new EndpointBuilder('/users', 'POST')
68
- .body(bodySchema)
69
- .output(outputSchema)
70
- .auditor(auditStorageService)
71
- .status(201)
72
- .handle(async () => ({ id: '123' }));
73
-
74
- expect(endpoint.auditorStorageService).toBe(auditStorageService);
75
- expect(endpoint.input?.body).toBe(bodySchema);
76
- expect(endpoint.outputSchema).toBe(outputSchema);
77
- expect(endpoint.status).toBe(201);
78
- });
79
- });
80
-
81
- describe('actor', () => {
82
- it('should set actor extractor function', () => {
83
- const actorExtractor: ActorExtractor = ({ session }) => ({
84
- id: (session as any)?.userId ?? 'anonymous',
85
- type: 'user',
86
- });
87
-
88
- const builder = new EndpointBuilder('/users', 'POST').actor(
89
- actorExtractor,
90
- );
91
-
92
- expect((builder as any)._actorExtractor).toBe(actorExtractor);
93
- });
94
-
95
- it('should return builder for chaining', () => {
96
- const builder = new EndpointBuilder('/users', 'POST');
97
- const result = builder.actor(() => ({ id: '123', type: 'user' }));
98
-
99
- expect(result).toBe(builder);
100
- });
101
-
102
- it('should pass actor extractor to endpoint', () => {
103
- const actorExtractor: ActorExtractor = ({ header }) => ({
104
- id: header('x-user-id') ?? 'anonymous',
105
- type: 'user',
106
- ip: header('x-forwarded-for'),
107
- });
108
-
109
- const endpoint = new EndpointBuilder('/users', 'POST')
110
- .auditor(auditStorageService)
111
- .actor(actorExtractor)
112
- .handle(async () => ({ id: '123' }));
113
-
114
- expect(endpoint.actorExtractor).toBe(actorExtractor);
115
- });
116
-
117
- it('should work with async actor extractor', () => {
118
- const asyncActorExtractor: ActorExtractor = async ({ services }) => {
119
- // Simulate async lookup
120
- await Promise.resolve();
121
- return { id: 'async-user', type: 'user' };
122
- };
123
-
124
- const endpoint = new EndpointBuilder('/users', 'POST')
125
- .auditor(auditStorageService)
126
- .actor(asyncActorExtractor)
127
- .handle(async () => ({ id: '123' }));
128
-
129
- expect(endpoint.actorExtractor).toBe(asyncActorExtractor);
130
- });
131
-
132
- it('should allow chaining auditor and actor in any order', () => {
133
- const actorExtractor: ActorExtractor = () => ({
134
- id: '123',
135
- type: 'user',
136
- });
137
-
138
- // auditor then actor
139
- const endpoint1 = new EndpointBuilder('/users', 'POST')
140
- .auditor(auditStorageService)
141
- .actor(actorExtractor)
142
- .handle(async () => ({ id: '123' }));
143
-
144
- // actor then auditor
145
- const endpoint2 = new EndpointBuilder('/users', 'POST')
146
- .actor(actorExtractor)
147
- .auditor(auditStorageService)
148
- .handle(async () => ({ id: '123' }));
149
-
150
- expect(endpoint1.auditorStorageService).toBe(auditStorageService);
151
- expect(endpoint1.actorExtractor).toBe(actorExtractor);
152
- expect(endpoint2.auditorStorageService).toBe(auditStorageService);
153
- expect(endpoint2.actorExtractor).toBe(actorExtractor);
154
- });
155
- });
156
-
157
- describe('audit', () => {
158
- it('should set declarative audit definitions', () => {
159
- const outputSchema = z.object({
160
- id: z.string(),
161
- email: z.string(),
162
- active: z.boolean(),
163
- });
164
-
165
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
166
- {
167
- type: 'user.created',
168
- payload: (response) => ({
169
- userId: response.id,
170
- email: response.email,
171
- }),
172
- },
173
- ];
174
-
175
- const builder = new EndpointBuilder('/users', 'POST')
176
- .output(outputSchema)
177
- .audit<TestAuditAction>(audits);
178
-
179
- expect((builder as any)._audits).toBe(audits);
180
- });
181
-
182
- it('should return builder for chaining', () => {
183
- const builder = new EndpointBuilder('/users', 'POST');
184
- const result = builder.audit([]);
185
-
186
- expect(result).toBe(builder);
187
- });
188
-
189
- it('should pass audit definitions to endpoint', () => {
190
- const outputSchema = z.object({
191
- id: z.string(),
192
- email: z.string(),
193
- active: z.boolean(),
194
- });
195
-
196
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
197
- {
198
- type: 'user.created',
199
- payload: (response) => ({
200
- userId: response.id,
201
- email: response.email,
202
- }),
203
- when: (response) => response.active,
204
- entityId: (response) => response.id,
205
- table: 'users',
206
- },
207
- ];
208
-
209
- const endpoint = new EndpointBuilder('/users', 'POST')
210
- .output(outputSchema)
211
- .auditor(auditStorageService)
212
- .audit<TestAuditAction>(audits)
213
- .handle(async () => ({
214
- id: '123',
215
- email: 'test@test.com',
216
- active: true,
217
- }));
218
-
219
- expect(endpoint.audits).toBe(audits);
220
- });
221
-
222
- it('should support multiple audit definitions', () => {
223
- const outputSchema = z.object({
224
- id: z.string(),
225
- email: z.string(),
226
- changes: z.array(z.string()),
227
- });
228
-
229
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
230
- {
231
- type: 'user.created',
232
- payload: (response) => ({
233
- userId: response.id,
234
- email: response.email,
235
- }),
236
- },
237
- {
238
- type: 'user.updated',
239
- payload: (response) => ({
240
- userId: response.id,
241
- changes: response.changes,
242
- }),
243
- when: (response) => response.changes.length > 0,
244
- },
245
- ];
246
-
247
- const endpoint = new EndpointBuilder('/users', 'POST')
248
- .output(outputSchema)
249
- .auditor(auditStorageService)
250
- .audit<TestAuditAction>(audits)
251
- .handle(async () => ({
252
- id: '123',
253
- email: 'test@test.com',
254
- changes: ['name'],
255
- }));
256
-
257
- expect(endpoint.audits).toHaveLength(2);
258
- expect(endpoint.audits[0].type).toBe('user.created');
259
- expect(endpoint.audits[1].type).toBe('user.updated');
260
- });
261
-
262
- it('should support conditional audits with when function', () => {
263
- const outputSchema = z.object({
264
- id: z.string(),
265
- email: z.string(),
266
- active: z.boolean(),
267
- });
268
-
269
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
270
- {
271
- type: 'user.created',
272
- payload: (response) => ({
273
- userId: response.id,
274
- email: response.email,
275
- }),
276
- when: (response) => response.active,
277
- },
278
- ];
279
-
280
- const endpoint = new EndpointBuilder('/users', 'POST')
281
- .output(outputSchema)
282
- .audit<TestAuditAction>(audits)
283
- .handle(async () => ({
284
- id: '123',
285
- email: 'test@test.com',
286
- active: true,
287
- }));
288
-
289
- // Verify the when function works
290
- const whenFn = endpoint.audits[0].when!;
291
- expect(whenFn({ id: '1', email: 'a@b.com', active: true })).toBe(true);
292
- expect(whenFn({ id: '1', email: 'a@b.com', active: false })).toBe(false);
293
- });
294
-
295
- it('should support entityId extraction', () => {
296
- const outputSchema = z.object({
297
- id: z.string(),
298
- email: z.string(),
299
- });
300
-
301
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
302
- {
303
- type: 'user.created',
304
- payload: (response) => ({
305
- userId: response.id,
306
- email: response.email,
307
- }),
308
- entityId: (response) => response.id,
309
- },
310
- ];
311
-
312
- const endpoint = new EndpointBuilder('/users', 'POST')
313
- .output(outputSchema)
314
- .audit<TestAuditAction>(audits)
315
- .handle(async () => ({ id: '123', email: 'test@test.com' }));
316
-
317
- const entityIdFn = endpoint.audits[0].entityId!;
318
- expect(entityIdFn({ id: 'user-456', email: 'a@b.com' })).toBe('user-456');
319
- });
320
-
321
- it('should support composite entityId', () => {
322
- const outputSchema = z.object({
323
- id: z.string(),
324
- orgId: z.string(),
325
- email: z.string(),
326
- });
327
-
328
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
329
- {
330
- type: 'user.created',
331
- payload: (response) => ({
332
- userId: response.id,
333
- email: response.email,
334
- }),
335
- entityId: (response) => ({
336
- userId: response.id,
337
- orgId: response.orgId,
338
- }),
339
- },
340
- ];
341
-
342
- const endpoint = new EndpointBuilder('/users', 'POST')
343
- .output(outputSchema)
344
- .audit<TestAuditAction>(audits)
345
- .handle(async () => ({
346
- id: '123',
347
- orgId: 'org-1',
348
- email: 'test@test.com',
349
- }));
350
-
351
- const entityIdFn = endpoint.audits[0].entityId!;
352
- expect(entityIdFn({ id: 'u-1', orgId: 'o-1', email: 'a@b.com' })).toEqual(
353
- {
354
- userId: 'u-1',
355
- orgId: 'o-1',
356
- },
357
- );
358
- });
359
- });
360
-
361
- describe('full audit chain', () => {
362
- it('should support complete audit configuration', () => {
363
- const outputSchema = z.object({
364
- id: z.string(),
365
- email: z.string(),
366
- active: z.boolean(),
367
- });
368
-
369
- const actorExtractor: ActorExtractor = ({ session, header }) => ({
370
- id: (session as any)?.userId ?? 'anonymous',
371
- type: 'user',
372
- ip: header('x-forwarded-for'),
373
- });
374
-
375
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
376
- {
377
- type: 'user.created',
378
- payload: (response) => ({
379
- userId: response.id,
380
- email: response.email,
381
- }),
382
- when: (response) => response.active,
383
- entityId: (response) => response.id,
384
- table: 'users',
385
- },
386
- ];
387
-
388
- const endpoint = new EndpointBuilder('/users', 'POST')
389
- .output(outputSchema)
390
- .auditor(auditStorageService)
391
- .actor(actorExtractor)
392
- .audit<TestAuditAction>(audits)
393
- .handle(async () => ({
394
- id: '123',
395
- email: 'test@test.com',
396
- active: true,
397
- }));
398
-
399
- expect(endpoint.auditorStorageService).toBe(auditStorageService);
400
- expect(endpoint.actorExtractor).toBe(actorExtractor);
401
- expect(endpoint.audits).toBe(audits);
402
- expect(endpoint.audits[0].table).toBe('users');
403
- });
404
-
405
- it('should work without actor extractor', () => {
406
- const outputSchema = z.object({ id: z.string(), email: z.string() });
407
-
408
- const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
409
- {
410
- type: 'user.created',
411
- payload: (response) => ({
412
- userId: response.id,
413
- email: response.email,
414
- }),
415
- },
416
- ];
417
-
418
- const endpoint = new EndpointBuilder('/users', 'POST')
419
- .output(outputSchema)
420
- .auditor(auditStorageService)
421
- .audit<TestAuditAction>(audits)
422
- .handle(async () => ({ id: '123', email: 'test@test.com' }));
423
-
424
- expect(endpoint.auditorStorageService).toBe(auditStorageService);
425
- expect(endpoint.actorExtractor).toBeUndefined();
426
- expect(endpoint.audits).toBe(audits);
427
- });
428
-
429
- it('should work without audit definitions (imperative auditing only)', () => {
430
- const endpoint = new EndpointBuilder('/users', 'POST')
431
- .auditor(auditStorageService)
432
- .actor(() => ({ id: '123', type: 'user' }))
433
- .handle(async () => ({ id: '123' }));
434
-
435
- expect(endpoint.auditorStorageService).toBe(auditStorageService);
436
- expect(endpoint.actorExtractor).toBeDefined();
437
- expect(endpoint.audits).toEqual([]);
438
- });
439
-
440
- it('should default to empty audits array', () => {
441
- const endpoint = new EndpointBuilder('/users', 'GET').handle(
442
- async () => ({}),
443
- );
444
-
445
- expect(endpoint.audits).toEqual([]);
446
- });
447
- });
39
+ describe('auditor', () => {
40
+ it('should set auditor storage service', () => {
41
+ const builder = new EndpointBuilder('/users', 'POST').auditor(
42
+ auditStorageService,
43
+ );
44
+
45
+ expect((builder as any)._auditorStorage).toBe(auditStorageService);
46
+ });
47
+
48
+ it('should return builder for chaining', () => {
49
+ const builder = new EndpointBuilder('/users', 'POST');
50
+ const result = builder.auditor(auditStorageService);
51
+
52
+ expect(result).toBe(builder);
53
+ });
54
+
55
+ it('should pass auditor storage service to endpoint', () => {
56
+ const endpoint = new EndpointBuilder('/users', 'POST')
57
+ .auditor(auditStorageService)
58
+ .handle(async () => ({ id: '123' }));
59
+
60
+ expect(endpoint.auditorStorageService).toBe(auditStorageService);
61
+ });
62
+
63
+ it('should allow chaining with other methods', () => {
64
+ const bodySchema = z.object({ name: z.string() });
65
+ const outputSchema = z.object({ id: z.string() });
66
+
67
+ const endpoint = new EndpointBuilder('/users', 'POST')
68
+ .body(bodySchema)
69
+ .output(outputSchema)
70
+ .auditor(auditStorageService)
71
+ .status(201)
72
+ .handle(async () => ({ id: '123' }));
73
+
74
+ expect(endpoint.auditorStorageService).toBe(auditStorageService);
75
+ expect(endpoint.input?.body).toBe(bodySchema);
76
+ expect(endpoint.outputSchema).toBe(outputSchema);
77
+ expect(endpoint.status).toBe(201);
78
+ });
79
+ });
80
+
81
+ describe('actor', () => {
82
+ it('should set actor extractor function', () => {
83
+ const actorExtractor: ActorExtractor = ({ session }) => ({
84
+ id: (session as any)?.userId ?? 'anonymous',
85
+ type: 'user',
86
+ });
87
+
88
+ const builder = new EndpointBuilder('/users', 'POST').actor(
89
+ actorExtractor,
90
+ );
91
+
92
+ expect((builder as any)._actorExtractor).toBe(actorExtractor);
93
+ });
94
+
95
+ it('should return builder for chaining', () => {
96
+ const builder = new EndpointBuilder('/users', 'POST');
97
+ const result = builder.actor(() => ({ id: '123', type: 'user' }));
98
+
99
+ expect(result).toBe(builder);
100
+ });
101
+
102
+ it('should pass actor extractor to endpoint', () => {
103
+ const actorExtractor: ActorExtractor = ({ header }) => ({
104
+ id: header('x-user-id') ?? 'anonymous',
105
+ type: 'user',
106
+ ip: header('x-forwarded-for'),
107
+ });
108
+
109
+ const endpoint = new EndpointBuilder('/users', 'POST')
110
+ .auditor(auditStorageService)
111
+ .actor(actorExtractor)
112
+ .handle(async () => ({ id: '123' }));
113
+
114
+ expect(endpoint.actorExtractor).toBe(actorExtractor);
115
+ });
116
+
117
+ it('should work with async actor extractor', () => {
118
+ const asyncActorExtractor: ActorExtractor = async ({ services }) => {
119
+ // Simulate async lookup
120
+ await Promise.resolve();
121
+ return { id: 'async-user', type: 'user' };
122
+ };
123
+
124
+ const endpoint = new EndpointBuilder('/users', 'POST')
125
+ .auditor(auditStorageService)
126
+ .actor(asyncActorExtractor)
127
+ .handle(async () => ({ id: '123' }));
128
+
129
+ expect(endpoint.actorExtractor).toBe(asyncActorExtractor);
130
+ });
131
+
132
+ it('should allow chaining auditor and actor in any order', () => {
133
+ const actorExtractor: ActorExtractor = () => ({
134
+ id: '123',
135
+ type: 'user',
136
+ });
137
+
138
+ // auditor then actor
139
+ const endpoint1 = new EndpointBuilder('/users', 'POST')
140
+ .auditor(auditStorageService)
141
+ .actor(actorExtractor)
142
+ .handle(async () => ({ id: '123' }));
143
+
144
+ // actor then auditor
145
+ const endpoint2 = new EndpointBuilder('/users', 'POST')
146
+ .actor(actorExtractor)
147
+ .auditor(auditStorageService)
148
+ .handle(async () => ({ id: '123' }));
149
+
150
+ expect(endpoint1.auditorStorageService).toBe(auditStorageService);
151
+ expect(endpoint1.actorExtractor).toBe(actorExtractor);
152
+ expect(endpoint2.auditorStorageService).toBe(auditStorageService);
153
+ expect(endpoint2.actorExtractor).toBe(actorExtractor);
154
+ });
155
+ });
156
+
157
+ describe('audit', () => {
158
+ it('should set declarative audit definitions', () => {
159
+ const outputSchema = z.object({
160
+ id: z.string(),
161
+ email: z.string(),
162
+ active: z.boolean(),
163
+ });
164
+
165
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
166
+ {
167
+ type: 'user.created',
168
+ payload: (response) => ({
169
+ userId: response.id,
170
+ email: response.email,
171
+ }),
172
+ },
173
+ ];
174
+
175
+ const builder = new EndpointBuilder('/users', 'POST')
176
+ .output(outputSchema)
177
+ .audit<TestAuditAction>(audits);
178
+
179
+ expect((builder as any)._audits).toBe(audits);
180
+ });
181
+
182
+ it('should return builder for chaining', () => {
183
+ const builder = new EndpointBuilder('/users', 'POST');
184
+ const result = builder.audit([]);
185
+
186
+ expect(result).toBe(builder);
187
+ });
188
+
189
+ it('should pass audit definitions to endpoint', () => {
190
+ const outputSchema = z.object({
191
+ id: z.string(),
192
+ email: z.string(),
193
+ active: z.boolean(),
194
+ });
195
+
196
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
197
+ {
198
+ type: 'user.created',
199
+ payload: (response) => ({
200
+ userId: response.id,
201
+ email: response.email,
202
+ }),
203
+ when: (response) => response.active,
204
+ entityId: (response) => response.id,
205
+ table: 'users',
206
+ },
207
+ ];
208
+
209
+ const endpoint = new EndpointBuilder('/users', 'POST')
210
+ .output(outputSchema)
211
+ .auditor(auditStorageService)
212
+ .audit<TestAuditAction>(audits)
213
+ .handle(async () => ({
214
+ id: '123',
215
+ email: 'test@test.com',
216
+ active: true,
217
+ }));
218
+
219
+ expect(endpoint.audits).toBe(audits);
220
+ });
221
+
222
+ it('should support multiple audit definitions', () => {
223
+ const outputSchema = z.object({
224
+ id: z.string(),
225
+ email: z.string(),
226
+ changes: z.array(z.string()),
227
+ });
228
+
229
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
230
+ {
231
+ type: 'user.created',
232
+ payload: (response) => ({
233
+ userId: response.id,
234
+ email: response.email,
235
+ }),
236
+ },
237
+ {
238
+ type: 'user.updated',
239
+ payload: (response) => ({
240
+ userId: response.id,
241
+ changes: response.changes,
242
+ }),
243
+ when: (response) => response.changes.length > 0,
244
+ },
245
+ ];
246
+
247
+ const endpoint = new EndpointBuilder('/users', 'POST')
248
+ .output(outputSchema)
249
+ .auditor(auditStorageService)
250
+ .audit<TestAuditAction>(audits)
251
+ .handle(async () => ({
252
+ id: '123',
253
+ email: 'test@test.com',
254
+ changes: ['name'],
255
+ }));
256
+
257
+ expect(endpoint.audits).toHaveLength(2);
258
+ expect(endpoint.audits[0].type).toBe('user.created');
259
+ expect(endpoint.audits[1].type).toBe('user.updated');
260
+ });
261
+
262
+ it('should support conditional audits with when function', () => {
263
+ const outputSchema = z.object({
264
+ id: z.string(),
265
+ email: z.string(),
266
+ active: z.boolean(),
267
+ });
268
+
269
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
270
+ {
271
+ type: 'user.created',
272
+ payload: (response) => ({
273
+ userId: response.id,
274
+ email: response.email,
275
+ }),
276
+ when: (response) => response.active,
277
+ },
278
+ ];
279
+
280
+ const endpoint = new EndpointBuilder('/users', 'POST')
281
+ .output(outputSchema)
282
+ .audit<TestAuditAction>(audits)
283
+ .handle(async () => ({
284
+ id: '123',
285
+ email: 'test@test.com',
286
+ active: true,
287
+ }));
288
+
289
+ // Verify the when function works
290
+ const whenFn = endpoint.audits[0].when!;
291
+ expect(whenFn({ id: '1', email: 'a@b.com', active: true })).toBe(true);
292
+ expect(whenFn({ id: '1', email: 'a@b.com', active: false })).toBe(false);
293
+ });
294
+
295
+ it('should support entityId extraction', () => {
296
+ const outputSchema = z.object({
297
+ id: z.string(),
298
+ email: z.string(),
299
+ });
300
+
301
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
302
+ {
303
+ type: 'user.created',
304
+ payload: (response) => ({
305
+ userId: response.id,
306
+ email: response.email,
307
+ }),
308
+ entityId: (response) => response.id,
309
+ },
310
+ ];
311
+
312
+ const endpoint = new EndpointBuilder('/users', 'POST')
313
+ .output(outputSchema)
314
+ .audit<TestAuditAction>(audits)
315
+ .handle(async () => ({ id: '123', email: 'test@test.com' }));
316
+
317
+ const entityIdFn = endpoint.audits[0].entityId!;
318
+ expect(entityIdFn({ id: 'user-456', email: 'a@b.com' })).toBe('user-456');
319
+ });
320
+
321
+ it('should support composite entityId', () => {
322
+ const outputSchema = z.object({
323
+ id: z.string(),
324
+ orgId: z.string(),
325
+ email: z.string(),
326
+ });
327
+
328
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
329
+ {
330
+ type: 'user.created',
331
+ payload: (response) => ({
332
+ userId: response.id,
333
+ email: response.email,
334
+ }),
335
+ entityId: (response) => ({
336
+ userId: response.id,
337
+ orgId: response.orgId,
338
+ }),
339
+ },
340
+ ];
341
+
342
+ const endpoint = new EndpointBuilder('/users', 'POST')
343
+ .output(outputSchema)
344
+ .audit<TestAuditAction>(audits)
345
+ .handle(async () => ({
346
+ id: '123',
347
+ orgId: 'org-1',
348
+ email: 'test@test.com',
349
+ }));
350
+
351
+ const entityIdFn = endpoint.audits[0].entityId!;
352
+ expect(entityIdFn({ id: 'u-1', orgId: 'o-1', email: 'a@b.com' })).toEqual(
353
+ {
354
+ userId: 'u-1',
355
+ orgId: 'o-1',
356
+ },
357
+ );
358
+ });
359
+ });
360
+
361
+ describe('full audit chain', () => {
362
+ it('should support complete audit configuration', () => {
363
+ const outputSchema = z.object({
364
+ id: z.string(),
365
+ email: z.string(),
366
+ active: z.boolean(),
367
+ });
368
+
369
+ const actorExtractor: ActorExtractor = ({ session, header }) => ({
370
+ id: (session as any)?.userId ?? 'anonymous',
371
+ type: 'user',
372
+ ip: header('x-forwarded-for'),
373
+ });
374
+
375
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
376
+ {
377
+ type: 'user.created',
378
+ payload: (response) => ({
379
+ userId: response.id,
380
+ email: response.email,
381
+ }),
382
+ when: (response) => response.active,
383
+ entityId: (response) => response.id,
384
+ table: 'users',
385
+ },
386
+ ];
387
+
388
+ const endpoint = new EndpointBuilder('/users', 'POST')
389
+ .output(outputSchema)
390
+ .auditor(auditStorageService)
391
+ .actor(actorExtractor)
392
+ .audit<TestAuditAction>(audits)
393
+ .handle(async () => ({
394
+ id: '123',
395
+ email: 'test@test.com',
396
+ active: true,
397
+ }));
398
+
399
+ expect(endpoint.auditorStorageService).toBe(auditStorageService);
400
+ expect(endpoint.actorExtractor).toBe(actorExtractor);
401
+ expect(endpoint.audits).toBe(audits);
402
+ expect(endpoint.audits[0].table).toBe('users');
403
+ });
404
+
405
+ it('should work without actor extractor', () => {
406
+ const outputSchema = z.object({ id: z.string(), email: z.string() });
407
+
408
+ const audits: MappedAudit<TestAuditAction, typeof outputSchema>[] = [
409
+ {
410
+ type: 'user.created',
411
+ payload: (response) => ({
412
+ userId: response.id,
413
+ email: response.email,
414
+ }),
415
+ },
416
+ ];
417
+
418
+ const endpoint = new EndpointBuilder('/users', 'POST')
419
+ .output(outputSchema)
420
+ .auditor(auditStorageService)
421
+ .audit<TestAuditAction>(audits)
422
+ .handle(async () => ({ id: '123', email: 'test@test.com' }));
423
+
424
+ expect(endpoint.auditorStorageService).toBe(auditStorageService);
425
+ expect(endpoint.actorExtractor).toBeUndefined();
426
+ expect(endpoint.audits).toBe(audits);
427
+ });
428
+
429
+ it('should work without audit definitions (imperative auditing only)', () => {
430
+ const endpoint = new EndpointBuilder('/users', 'POST')
431
+ .auditor(auditStorageService)
432
+ .actor(() => ({ id: '123', type: 'user' }))
433
+ .handle(async () => ({ id: '123' }));
434
+
435
+ expect(endpoint.auditorStorageService).toBe(auditStorageService);
436
+ expect(endpoint.actorExtractor).toBeDefined();
437
+ expect(endpoint.audits).toEqual([]);
438
+ });
439
+
440
+ it('should default to empty audits array', () => {
441
+ const endpoint = new EndpointBuilder('/users', 'GET').handle(
442
+ async () => ({}),
443
+ );
444
+
445
+ expect(endpoint.audits).toEqual([]);
446
+ });
447
+ });
448
448
  });