@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,7 +1,7 @@
1
1
  import type {
2
- AuditStorage,
3
- AuditableAction,
4
- ExtractStorageAuditAction,
2
+ AuditableAction,
3
+ AuditStorage,
4
+ ExtractStorageAuditAction,
5
5
  } from '@geekmidas/audit';
6
6
  import type { EventPublisher, MappedEvent } from '@geekmidas/events';
7
7
  import type { Logger } from '@geekmidas/logger';
@@ -14,712 +14,712 @@ import { BaseFunctionBuilder } from '../functions';
14
14
  import type { HttpMethod } from '../types';
15
15
  import type { Authorizer, SecurityScheme } from './Authorizer';
16
16
  import { getSecurityScheme } from './Authorizer';
17
- import { Endpoint, type EndpointSchemas } from './Endpoint';
17
+ import type { ActorExtractor, MappedAudit } from './audit';
18
18
  import type {
19
- AuthorizeFn,
20
- EndpointHandler,
21
- SessionFn,
22
- SuccessStatus,
19
+ AuthorizeFn,
20
+ EndpointHandler,
21
+ SessionFn,
22
+ SuccessStatus,
23
23
  } from './Endpoint';
24
- import type { ActorExtractor, MappedAudit } from './audit';
24
+ import { Endpoint, type EndpointSchemas } from './Endpoint';
25
25
  import type { RlsBypass, RlsConfig } from './rls';
26
26
  import { RLS_BYPASS } from './rls';
27
27
 
28
28
  export class EndpointBuilder<
29
- TRoute extends string,
30
- TMethod extends HttpMethod,
31
- TInput extends EndpointSchemas = {},
32
- TServices extends Service[] = [],
33
- TLogger extends Logger = Logger,
34
- OutSchema extends StandardSchemaV1 | undefined = undefined,
35
- TSession = unknown,
36
- TEventPublisher extends EventPublisher<any> | undefined = undefined,
37
- TEventPublisherServiceName extends string = string,
38
- TAuthorizers extends readonly string[] = readonly string[],
39
- TAuditStorage extends AuditStorage | undefined = undefined,
40
- TAuditStorageServiceName extends string = string,
41
- TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
42
- string,
43
- unknown
44
- >,
45
- TDatabase = undefined,
46
- TDatabaseServiceName extends string = string,
29
+ TRoute extends string,
30
+ TMethod extends HttpMethod,
31
+ TInput extends EndpointSchemas = {},
32
+ TServices extends Service[] = [],
33
+ TLogger extends Logger = Logger,
34
+ OutSchema extends StandardSchemaV1 | undefined = undefined,
35
+ TSession = unknown,
36
+ TEventPublisher extends EventPublisher<any> | undefined = undefined,
37
+ TEventPublisherServiceName extends string = string,
38
+ TAuthorizers extends readonly string[] = readonly string[],
39
+ TAuditStorage extends AuditStorage | undefined = undefined,
40
+ TAuditStorageServiceName extends string = string,
41
+ TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
42
+ string,
43
+ unknown
44
+ >,
45
+ TDatabase = undefined,
46
+ TDatabaseServiceName extends string = string,
47
47
  > extends BaseFunctionBuilder<
48
- TInput,
49
- OutSchema,
50
- TServices,
51
- TLogger,
52
- TEventPublisher,
53
- TEventPublisherServiceName,
54
- TAuditStorage,
55
- TAuditStorageServiceName,
56
- TDatabase,
57
- TDatabaseServiceName
48
+ TInput,
49
+ OutSchema,
50
+ TServices,
51
+ TLogger,
52
+ TEventPublisher,
53
+ TEventPublisherServiceName,
54
+ TAuditStorage,
55
+ TAuditStorageServiceName,
56
+ TDatabase,
57
+ TDatabaseServiceName
58
58
  > {
59
- protected schemas: TInput = {} as TInput;
60
- protected _description?: string;
61
- protected _status?: SuccessStatus;
62
- protected _tags?: string[];
63
- protected _memorySize?: number;
64
- _getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>
65
- ({}) as TSession;
66
- _authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;
67
- _rateLimit?: RateLimitConfig;
68
- _availableAuthorizers: Authorizer[] = [];
69
- _authorizerName?: TAuthorizers[number];
70
- _actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
71
- _audits: MappedAudit<TAuditAction, OutSchema>[] = [];
72
- _customSecuritySchemes: Record<string, SecurityScheme> = {};
73
- _rlsConfig?: RlsConfig<TServices, TSession, TLogger>;
74
- _rlsBypass?: boolean;
75
-
76
- constructor(
77
- readonly route: TRoute,
78
- readonly method: TMethod,
79
- ) {
80
- super(ConstructType.Endpoint);
81
- }
82
-
83
- // Internal setter for EndpointFactory to set default publisher
84
- _setPublisher(
85
- publisher: Service<TEventPublisherServiceName, TEventPublisher>,
86
- ) {
87
- this._publisher = publisher;
88
- }
89
-
90
- // Internal setter for EndpointFactory to set default auditor storage
91
- _setAuditorStorage(
92
- storage: Service<TAuditStorageServiceName, TAuditStorage>,
93
- ) {
94
- this._auditorStorage = storage;
95
- }
96
-
97
- // Internal setter for EndpointFactory to set default database service
98
- _setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>) {
99
- this._databaseService = service;
100
- }
101
-
102
- description(description: string): this {
103
- this._description = description;
104
- return this;
105
- }
106
-
107
- status(status: SuccessStatus): this {
108
- this._status = status;
109
- return this;
110
- }
111
-
112
- override event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(
113
- event: TEvent,
114
- ): this {
115
- this._events.push(event);
116
- return this;
117
- }
118
-
119
- tags(tags: string[]): this {
120
- this._tags = tags;
121
- return this;
122
- }
123
-
124
- memorySize(memorySize: number): this {
125
- this._memorySize = memorySize;
126
- return this;
127
- }
128
-
129
- override publisher<T extends EventPublisher<any>, TName extends string>(
130
- publisher: Service<TName, T>,
131
- ): EndpointBuilder<
132
- TRoute,
133
- TMethod,
134
- TInput,
135
- TServices,
136
- TLogger,
137
- OutSchema,
138
- TSession,
139
- T,
140
- TName,
141
- TAuthorizers,
142
- TAuditStorage,
143
- TAuditStorageServiceName,
144
- TAuditAction,
145
- TDatabase,
146
- TDatabaseServiceName
147
- > {
148
- this._publisher = publisher as unknown as Service<
149
- TEventPublisherServiceName,
150
- TEventPublisher
151
- >;
152
-
153
- return this as unknown as EndpointBuilder<
154
- TRoute,
155
- TMethod,
156
- TInput,
157
- TServices,
158
- TLogger,
159
- OutSchema,
160
- TSession,
161
- T,
162
- TName,
163
- TAuthorizers,
164
- TAuditStorage,
165
- TAuditStorageServiceName,
166
- TAuditAction,
167
- TDatabase,
168
- TDatabaseServiceName
169
- >;
170
- }
171
-
172
- body<T extends StandardSchemaV1>(
173
- schema: T,
174
- ): EndpointBuilder<
175
- TRoute,
176
- TMethod,
177
- Omit<TInput, 'body'> & { body: T },
178
- TServices,
179
- TLogger,
180
- OutSchema,
181
- TSession,
182
- TEventPublisher,
183
- TEventPublisherServiceName,
184
- TAuthorizers,
185
- TAuditStorage,
186
- TAuditStorageServiceName,
187
- TAuditAction,
188
- TDatabase,
189
- TDatabaseServiceName
190
- > {
191
- this.schemas.body = schema as unknown as T;
192
- // @ts-ignore
193
- return this;
194
- }
195
-
196
- search<T extends StandardSchemaV1>(
197
- schema: T,
198
- ): EndpointBuilder<
199
- TRoute,
200
- TMethod,
201
- Omit<TInput, 'query'> & { query: T },
202
- TServices,
203
- TLogger,
204
- OutSchema,
205
- TSession,
206
- TEventPublisher,
207
- TEventPublisherServiceName,
208
- TAuthorizers,
209
- TAuditStorage,
210
- TAuditStorageServiceName,
211
- TAuditAction,
212
- TDatabase,
213
- TDatabaseServiceName
214
- > {
215
- this.schemas.query = schema as unknown as T;
216
- // @ts-ignore
217
- return this;
218
- }
219
-
220
- query<T extends StandardSchemaV1>(
221
- schema: T,
222
- ): EndpointBuilder<
223
- TRoute,
224
- TMethod,
225
- Omit<TInput, 'query'> & { query: T },
226
- TServices,
227
- TLogger,
228
- OutSchema,
229
- TSession,
230
- TEventPublisher,
231
- TEventPublisherServiceName,
232
- TAuthorizers,
233
- TAuditStorage,
234
- TAuditStorageServiceName,
235
- TAuditAction,
236
- TDatabase,
237
- TDatabaseServiceName
238
- > {
239
- return this.search(schema);
240
- }
241
-
242
- params<T extends StandardSchemaV1>(
243
- schema: T,
244
- ): EndpointBuilder<
245
- TRoute,
246
- TMethod,
247
- Omit<TInput, 'params'> & { params: T },
248
- TServices,
249
- TLogger,
250
- OutSchema,
251
- TSession,
252
- TEventPublisher,
253
- TEventPublisherServiceName,
254
- TAuthorizers,
255
- TAuditStorage,
256
- TAuditStorageServiceName,
257
- TAuditAction,
258
- TDatabase,
259
- TDatabaseServiceName
260
- > {
261
- this.schemas.params = schema as unknown as T;
262
- // @ts-ignore
263
- return this;
264
- }
265
-
266
- rateLimit(config: RateLimitConfig): this {
267
- this._rateLimit = config;
268
- return this;
269
- }
270
-
271
- authorizer(
272
- name: TAuthorizers[number] | 'none',
273
- ): EndpointBuilder<
274
- TRoute,
275
- TMethod,
276
- TInput,
277
- TServices,
278
- TLogger,
279
- OutSchema,
280
- TSession,
281
- TEventPublisher,
282
- TEventPublisherServiceName,
283
- TAuthorizers,
284
- TAuditStorage,
285
- TAuditStorageServiceName,
286
- TAuditAction,
287
- TDatabase,
288
- TDatabaseServiceName
289
- > {
290
- // Special case: 'none' explicitly marks endpoint as having no authorizer
291
- if (name === 'none') {
292
- this._authorizerName = undefined;
293
- return this;
294
- }
295
-
296
- // Validate that the authorizer exists in available authorizers
297
- const authorizerExists = this._availableAuthorizers.some(
298
- (a) => a.name === name,
299
- );
300
- if (!authorizerExists && this._availableAuthorizers.length > 0) {
301
- const available = this._availableAuthorizers
302
- .map((a) => a.name)
303
- .join(', ');
304
- throw new Error(
305
- `Authorizer "${name as string}" not found in available authorizers: ${available}`,
306
- );
307
- }
308
- this._authorizerName = name;
309
- return this;
310
- }
311
-
312
- services<T extends Service[]>(
313
- services: T,
314
- ): EndpointBuilder<
315
- TRoute,
316
- TMethod,
317
- TInput,
318
- [...TServices, ...T],
319
- TLogger,
320
- OutSchema,
321
- TSession,
322
- TEventPublisher,
323
- TEventPublisherServiceName,
324
- TAuthorizers,
325
- TAuditStorage,
326
- TAuditStorageServiceName,
327
- TAuditAction,
328
- TDatabase,
329
- TDatabaseServiceName
330
- > {
331
- this._services = uniqBy(
332
- [...this._services, ...services],
333
- (s) => s.serviceName,
334
- ) as TServices;
335
-
336
- return this as unknown as EndpointBuilder<
337
- TRoute,
338
- TMethod,
339
- TInput,
340
- [...TServices, ...T],
341
- TLogger,
342
- OutSchema,
343
- TSession,
344
- TEventPublisher,
345
- TEventPublisherServiceName,
346
- TAuthorizers,
347
- TAuditStorage,
348
- TAuditStorageServiceName,
349
- TAuditAction,
350
- TDatabase,
351
- TDatabaseServiceName
352
- >;
353
- }
354
-
355
- logger<T extends Logger>(
356
- logger: T,
357
- ): EndpointBuilder<
358
- TRoute,
359
- TMethod,
360
- TInput,
361
- TServices,
362
- T,
363
- OutSchema,
364
- TSession,
365
- TEventPublisher,
366
- TEventPublisherServiceName,
367
- TAuthorizers,
368
- TAuditStorage,
369
- TAuditStorageServiceName,
370
- TAuditAction,
371
- TDatabase,
372
- TDatabaseServiceName
373
- > {
374
- this._logger = logger as unknown as TLogger;
375
-
376
- return this as unknown as EndpointBuilder<
377
- TRoute,
378
- TMethod,
379
- TInput,
380
- TServices,
381
- T,
382
- OutSchema,
383
- TSession,
384
- TEventPublisher,
385
- TEventPublisherServiceName,
386
- TAuthorizers,
387
- TAuditStorage,
388
- TAuditStorageServiceName,
389
- TAuditAction,
390
- TDatabase,
391
- TDatabaseServiceName
392
- >;
393
- }
394
-
395
- output<T extends StandardSchemaV1>(
396
- schema: T,
397
- ): EndpointBuilder<
398
- TRoute,
399
- TMethod,
400
- TInput,
401
- TServices,
402
- TLogger,
403
- T,
404
- TSession,
405
- TEventPublisher,
406
- TEventPublisherServiceName,
407
- TAuthorizers,
408
- TAuditStorage,
409
- TAuditStorageServiceName,
410
- TAuditAction,
411
- TDatabase,
412
- TDatabaseServiceName
413
- > {
414
- this.outputSchema = schema as unknown as OutSchema;
415
-
416
- return this as unknown as EndpointBuilder<
417
- TRoute,
418
- TMethod,
419
- TInput,
420
- TServices,
421
- TLogger,
422
- T,
423
- TSession,
424
- TEventPublisher,
425
- TEventPublisherServiceName,
426
- TAuthorizers,
427
- TAuditStorage,
428
- TAuditStorageServiceName,
429
- TAuditAction,
430
- TDatabase,
431
- TDatabaseServiceName
432
- >;
433
- }
434
-
435
- /**
436
- * Set the auditor storage service for this endpoint.
437
- * This enables audit functionality and makes `auditor` available in the handler context.
438
- * The audit action type is automatically inferred from the storage's generic parameter.
439
- */
440
- override auditor<T extends AuditStorage<any>, TName extends string>(
441
- storage: Service<TName, T>,
442
- ): EndpointBuilder<
443
- TRoute,
444
- TMethod,
445
- TInput,
446
- TServices,
447
- TLogger,
448
- OutSchema,
449
- TSession,
450
- TEventPublisher,
451
- TEventPublisherServiceName,
452
- TAuthorizers,
453
- T,
454
- TName,
455
- ExtractStorageAuditAction<T>,
456
- TDatabase,
457
- TDatabaseServiceName
458
- > {
459
- this._auditorStorage = storage as unknown as Service<
460
- TAuditStorageServiceName,
461
- TAuditStorage
462
- >;
463
-
464
- return this as unknown as EndpointBuilder<
465
- TRoute,
466
- TMethod,
467
- TInput,
468
- TServices,
469
- TLogger,
470
- OutSchema,
471
- TSession,
472
- TEventPublisher,
473
- TEventPublisherServiceName,
474
- TAuthorizers,
475
- T,
476
- TName,
477
- ExtractStorageAuditAction<T>,
478
- TDatabase,
479
- TDatabaseServiceName
480
- >;
481
- }
482
-
483
- /**
484
- * Set the actor extractor function for audit records.
485
- * The actor is extracted from the request context and attached to all audits.
486
- */
487
- actor(
488
- extractor: ActorExtractor<TServices, TSession, TLogger>,
489
- ): EndpointBuilder<
490
- TRoute,
491
- TMethod,
492
- TInput,
493
- TServices,
494
- TLogger,
495
- OutSchema,
496
- TSession,
497
- TEventPublisher,
498
- TEventPublisherServiceName,
499
- TAuthorizers,
500
- TAuditStorage,
501
- TAuditStorageServiceName,
502
- TAuditAction,
503
- TDatabase,
504
- TDatabaseServiceName
505
- > {
506
- this._actorExtractor = extractor;
507
- return this;
508
- }
509
-
510
- /**
511
- * Add declarative audit definitions that are processed after the handler executes.
512
- * Similar to `.event()` for events, but for audits.
513
- *
514
- * @example
515
- * ```typescript
516
- * .audit<AppAuditAction>([
517
- * {
518
- * type: 'user.created',
519
- * payload: (response) => ({ userId: response.id, email: response.email }),
520
- * when: (response) => response.active,
521
- * entityId: (response) => response.id,
522
- * table: 'users',
523
- * },
524
- * ])
525
- * ```
526
- */
527
- audit(audits: MappedAudit<TAuditAction, OutSchema>[]): this {
528
- this._audits = audits;
529
- return this;
530
- }
531
-
532
- /**
533
- * Set the database service for this endpoint.
534
- * The database will be available in the handler context as `db`.
535
- * When audit storage is configured and uses the same database,
536
- * `db` will automatically be the transaction for ACID compliance.
537
- *
538
- * @example
539
- * ```typescript
540
- * .database(databaseService)
541
- * .handle(async ({ db }) => {
542
- * // db is the raw database or transaction (when auditor uses same db)
543
- * return await db.selectFrom('users').selectAll().execute();
544
- * })
545
- * ```
546
- */
547
- override database<T, TName extends string>(
548
- service: Service<TName, T>,
549
- ): EndpointBuilder<
550
- TRoute,
551
- TMethod,
552
- TInput,
553
- TServices,
554
- TLogger,
555
- OutSchema,
556
- TSession,
557
- TEventPublisher,
558
- TEventPublisherServiceName,
559
- TAuthorizers,
560
- TAuditStorage,
561
- TAuditStorageServiceName,
562
- TAuditAction,
563
- T,
564
- TName
565
- > {
566
- this._databaseService = service as unknown as Service<
567
- TDatabaseServiceName,
568
- TDatabase
569
- >;
570
-
571
- return this as unknown as EndpointBuilder<
572
- TRoute,
573
- TMethod,
574
- TInput,
575
- TServices,
576
- TLogger,
577
- OutSchema,
578
- TSession,
579
- TEventPublisher,
580
- TEventPublisherServiceName,
581
- TAuthorizers,
582
- TAuditStorage,
583
- TAuditStorageServiceName,
584
- TAuditAction,
585
- T,
586
- TName
587
- >;
588
- }
589
-
590
- /**
591
- * Configure RLS (Row-Level Security) context for this endpoint.
592
- * Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.
593
- *
594
- * @example
595
- * ```typescript
596
- * // Custom RLS config for this endpoint
597
- * .rls({
598
- * extractor: ({ session }) => ({
599
- * user_id: session.userId,
600
- * tenant_id: session.tenantId,
601
- * }),
602
- * prefix: 'app',
603
- * })
604
- *
605
- * // Bypass RLS (for admin endpoints)
606
- * .rls(false)
607
- * ```
608
- */
609
- rls(
610
- config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass,
611
- ): this {
612
- if (config === false || config === RLS_BYPASS) {
613
- this._rlsBypass = true;
614
- this._rlsConfig = undefined;
615
- } else {
616
- this._rlsConfig = config;
617
- this._rlsBypass = false;
618
- }
619
- return this;
620
- }
621
-
622
- /**
623
- * Explicitly bypass RLS for this endpoint.
624
- * Useful for admin operations that need unrestricted database access.
625
- *
626
- * @example
627
- * ```typescript
628
- * .rlsBypass()
629
- * .handle(async ({ db }) => {
630
- * // Full access, no RLS filtering
631
- * return db.selectFrom('orders').selectAll().execute();
632
- * })
633
- * ```
634
- */
635
- rlsBypass(): this {
636
- this._rlsBypass = true;
637
- this._rlsConfig = undefined;
638
- return this;
639
- }
640
-
641
- // EndpointBuilder doesn't have a generic input method - it uses body, query, params instead
642
- input(_schema: any): any {
643
- throw new Error(
644
- 'EndpointBuilder does not support generic input. Use body(), query(), or params() instead.',
645
- );
646
- }
647
-
648
- handle(
649
- fn: EndpointHandler<
650
- TInput,
651
- TServices,
652
- TLogger,
653
- OutSchema,
654
- TSession,
655
- TDatabase,
656
- TAuditStorage,
657
- TAuditAction
658
- >,
659
- ): Endpoint<
660
- TRoute,
661
- TMethod,
662
- TInput,
663
- OutSchema,
664
- TServices,
665
- TLogger,
666
- TSession,
667
- TEventPublisher,
668
- TEventPublisherServiceName,
669
- TAuditStorage,
670
- TAuditStorageServiceName,
671
- TAuditAction,
672
- TDatabase,
673
- TDatabaseServiceName
674
- > {
675
- // Find authorizer metadata if name is set
676
- // If the authorizer name is set but not in availableAuthorizers, create a simple authorizer object
677
- let authorizer: Authorizer | undefined;
678
- if (this._authorizerName) {
679
- const existingAuthorizer = this._availableAuthorizers.find(
680
- (a) => a.name === this._authorizerName,
681
- );
682
-
683
- if (existingAuthorizer) {
684
- authorizer = existingAuthorizer;
685
- } else {
686
- // Create authorizer with security scheme if available (built-in or custom)
687
- const securityScheme = getSecurityScheme(
688
- this._authorizerName as string,
689
- this._customSecuritySchemes,
690
- );
691
- authorizer = {
692
- name: this._authorizerName as string,
693
- securityScheme,
694
- };
695
- }
696
- }
697
-
698
- return new Endpoint({
699
- fn,
700
- method: this.method,
701
- route: this.route,
702
- description: this._description,
703
- tags: this._tags,
704
- input: this.schemas,
705
- output: this.outputSchema,
706
- services: this._services,
707
- logger: this._logger,
708
- timeout: this._timeout,
709
- memorySize: this._memorySize,
710
- authorize: this._authorize,
711
- status: this._status,
712
- getSession: this._getSession,
713
- rateLimit: this._rateLimit,
714
- publisherService: this._publisher,
715
- events: this._events,
716
- authorizer,
717
- auditorStorageService: this._auditorStorage,
718
- actorExtractor: this._actorExtractor,
719
- audits: this._audits,
720
- databaseService: this._databaseService,
721
- rlsConfig: this._rlsConfig,
722
- rlsBypass: this._rlsBypass,
723
- });
724
- }
59
+ protected schemas: TInput = {} as TInput;
60
+ protected _description?: string;
61
+ protected _status?: SuccessStatus;
62
+ protected _tags?: string[];
63
+ protected _memorySize?: number;
64
+ _getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>
65
+ ({}) as TSession;
66
+ _authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;
67
+ _rateLimit?: RateLimitConfig;
68
+ _availableAuthorizers: Authorizer[] = [];
69
+ _authorizerName?: TAuthorizers[number];
70
+ _actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
71
+ _audits: MappedAudit<TAuditAction, OutSchema>[] = [];
72
+ _customSecuritySchemes: Record<string, SecurityScheme> = {};
73
+ _rlsConfig?: RlsConfig<TServices, TSession, TLogger>;
74
+ _rlsBypass?: boolean;
75
+
76
+ constructor(
77
+ readonly route: TRoute,
78
+ readonly method: TMethod,
79
+ ) {
80
+ super(ConstructType.Endpoint);
81
+ }
82
+
83
+ // Internal setter for EndpointFactory to set default publisher
84
+ _setPublisher(
85
+ publisher: Service<TEventPublisherServiceName, TEventPublisher>,
86
+ ) {
87
+ this._publisher = publisher;
88
+ }
89
+
90
+ // Internal setter for EndpointFactory to set default auditor storage
91
+ _setAuditorStorage(
92
+ storage: Service<TAuditStorageServiceName, TAuditStorage>,
93
+ ) {
94
+ this._auditorStorage = storage;
95
+ }
96
+
97
+ // Internal setter for EndpointFactory to set default database service
98
+ _setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>) {
99
+ this._databaseService = service;
100
+ }
101
+
102
+ description(description: string): this {
103
+ this._description = description;
104
+ return this;
105
+ }
106
+
107
+ status(status: SuccessStatus): this {
108
+ this._status = status;
109
+ return this;
110
+ }
111
+
112
+ override event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(
113
+ event: TEvent,
114
+ ): this {
115
+ this._events.push(event);
116
+ return this;
117
+ }
118
+
119
+ tags(tags: string[]): this {
120
+ this._tags = tags;
121
+ return this;
122
+ }
123
+
124
+ memorySize(memorySize: number): this {
125
+ this._memorySize = memorySize;
126
+ return this;
127
+ }
128
+
129
+ override publisher<T extends EventPublisher<any>, TName extends string>(
130
+ publisher: Service<TName, T>,
131
+ ): EndpointBuilder<
132
+ TRoute,
133
+ TMethod,
134
+ TInput,
135
+ TServices,
136
+ TLogger,
137
+ OutSchema,
138
+ TSession,
139
+ T,
140
+ TName,
141
+ TAuthorizers,
142
+ TAuditStorage,
143
+ TAuditStorageServiceName,
144
+ TAuditAction,
145
+ TDatabase,
146
+ TDatabaseServiceName
147
+ > {
148
+ this._publisher = publisher as unknown as Service<
149
+ TEventPublisherServiceName,
150
+ TEventPublisher
151
+ >;
152
+
153
+ return this as unknown as EndpointBuilder<
154
+ TRoute,
155
+ TMethod,
156
+ TInput,
157
+ TServices,
158
+ TLogger,
159
+ OutSchema,
160
+ TSession,
161
+ T,
162
+ TName,
163
+ TAuthorizers,
164
+ TAuditStorage,
165
+ TAuditStorageServiceName,
166
+ TAuditAction,
167
+ TDatabase,
168
+ TDatabaseServiceName
169
+ >;
170
+ }
171
+
172
+ body<T extends StandardSchemaV1>(
173
+ schema: T,
174
+ ): EndpointBuilder<
175
+ TRoute,
176
+ TMethod,
177
+ Omit<TInput, 'body'> & { body: T },
178
+ TServices,
179
+ TLogger,
180
+ OutSchema,
181
+ TSession,
182
+ TEventPublisher,
183
+ TEventPublisherServiceName,
184
+ TAuthorizers,
185
+ TAuditStorage,
186
+ TAuditStorageServiceName,
187
+ TAuditAction,
188
+ TDatabase,
189
+ TDatabaseServiceName
190
+ > {
191
+ this.schemas.body = schema as unknown as T;
192
+ // @ts-expect-error
193
+ return this;
194
+ }
195
+
196
+ search<T extends StandardSchemaV1>(
197
+ schema: T,
198
+ ): EndpointBuilder<
199
+ TRoute,
200
+ TMethod,
201
+ Omit<TInput, 'query'> & { query: T },
202
+ TServices,
203
+ TLogger,
204
+ OutSchema,
205
+ TSession,
206
+ TEventPublisher,
207
+ TEventPublisherServiceName,
208
+ TAuthorizers,
209
+ TAuditStorage,
210
+ TAuditStorageServiceName,
211
+ TAuditAction,
212
+ TDatabase,
213
+ TDatabaseServiceName
214
+ > {
215
+ this.schemas.query = schema as unknown as T;
216
+ // @ts-expect-error
217
+ return this;
218
+ }
219
+
220
+ query<T extends StandardSchemaV1>(
221
+ schema: T,
222
+ ): EndpointBuilder<
223
+ TRoute,
224
+ TMethod,
225
+ Omit<TInput, 'query'> & { query: T },
226
+ TServices,
227
+ TLogger,
228
+ OutSchema,
229
+ TSession,
230
+ TEventPublisher,
231
+ TEventPublisherServiceName,
232
+ TAuthorizers,
233
+ TAuditStorage,
234
+ TAuditStorageServiceName,
235
+ TAuditAction,
236
+ TDatabase,
237
+ TDatabaseServiceName
238
+ > {
239
+ return this.search(schema);
240
+ }
241
+
242
+ params<T extends StandardSchemaV1>(
243
+ schema: T,
244
+ ): EndpointBuilder<
245
+ TRoute,
246
+ TMethod,
247
+ Omit<TInput, 'params'> & { params: T },
248
+ TServices,
249
+ TLogger,
250
+ OutSchema,
251
+ TSession,
252
+ TEventPublisher,
253
+ TEventPublisherServiceName,
254
+ TAuthorizers,
255
+ TAuditStorage,
256
+ TAuditStorageServiceName,
257
+ TAuditAction,
258
+ TDatabase,
259
+ TDatabaseServiceName
260
+ > {
261
+ this.schemas.params = schema as unknown as T;
262
+ // @ts-expect-error
263
+ return this;
264
+ }
265
+
266
+ rateLimit(config: RateLimitConfig): this {
267
+ this._rateLimit = config;
268
+ return this;
269
+ }
270
+
271
+ authorizer(
272
+ name: TAuthorizers[number] | 'none',
273
+ ): EndpointBuilder<
274
+ TRoute,
275
+ TMethod,
276
+ TInput,
277
+ TServices,
278
+ TLogger,
279
+ OutSchema,
280
+ TSession,
281
+ TEventPublisher,
282
+ TEventPublisherServiceName,
283
+ TAuthorizers,
284
+ TAuditStorage,
285
+ TAuditStorageServiceName,
286
+ TAuditAction,
287
+ TDatabase,
288
+ TDatabaseServiceName
289
+ > {
290
+ // Special case: 'none' explicitly marks endpoint as having no authorizer
291
+ if (name === 'none') {
292
+ this._authorizerName = undefined;
293
+ return this;
294
+ }
295
+
296
+ // Validate that the authorizer exists in available authorizers
297
+ const authorizerExists = this._availableAuthorizers.some(
298
+ (a) => a.name === name,
299
+ );
300
+ if (!authorizerExists && this._availableAuthorizers.length > 0) {
301
+ const available = this._availableAuthorizers
302
+ .map((a) => a.name)
303
+ .join(', ');
304
+ throw new Error(
305
+ `Authorizer "${name as string}" not found in available authorizers: ${available}`,
306
+ );
307
+ }
308
+ this._authorizerName = name;
309
+ return this;
310
+ }
311
+
312
+ services<T extends Service[]>(
313
+ services: T,
314
+ ): EndpointBuilder<
315
+ TRoute,
316
+ TMethod,
317
+ TInput,
318
+ [...TServices, ...T],
319
+ TLogger,
320
+ OutSchema,
321
+ TSession,
322
+ TEventPublisher,
323
+ TEventPublisherServiceName,
324
+ TAuthorizers,
325
+ TAuditStorage,
326
+ TAuditStorageServiceName,
327
+ TAuditAction,
328
+ TDatabase,
329
+ TDatabaseServiceName
330
+ > {
331
+ this._services = uniqBy(
332
+ [...this._services, ...services],
333
+ (s) => s.serviceName,
334
+ ) as TServices;
335
+
336
+ return this as unknown as EndpointBuilder<
337
+ TRoute,
338
+ TMethod,
339
+ TInput,
340
+ [...TServices, ...T],
341
+ TLogger,
342
+ OutSchema,
343
+ TSession,
344
+ TEventPublisher,
345
+ TEventPublisherServiceName,
346
+ TAuthorizers,
347
+ TAuditStorage,
348
+ TAuditStorageServiceName,
349
+ TAuditAction,
350
+ TDatabase,
351
+ TDatabaseServiceName
352
+ >;
353
+ }
354
+
355
+ logger<T extends Logger>(
356
+ logger: T,
357
+ ): EndpointBuilder<
358
+ TRoute,
359
+ TMethod,
360
+ TInput,
361
+ TServices,
362
+ T,
363
+ OutSchema,
364
+ TSession,
365
+ TEventPublisher,
366
+ TEventPublisherServiceName,
367
+ TAuthorizers,
368
+ TAuditStorage,
369
+ TAuditStorageServiceName,
370
+ TAuditAction,
371
+ TDatabase,
372
+ TDatabaseServiceName
373
+ > {
374
+ this._logger = logger as unknown as TLogger;
375
+
376
+ return this as unknown as EndpointBuilder<
377
+ TRoute,
378
+ TMethod,
379
+ TInput,
380
+ TServices,
381
+ T,
382
+ OutSchema,
383
+ TSession,
384
+ TEventPublisher,
385
+ TEventPublisherServiceName,
386
+ TAuthorizers,
387
+ TAuditStorage,
388
+ TAuditStorageServiceName,
389
+ TAuditAction,
390
+ TDatabase,
391
+ TDatabaseServiceName
392
+ >;
393
+ }
394
+
395
+ output<T extends StandardSchemaV1>(
396
+ schema: T,
397
+ ): EndpointBuilder<
398
+ TRoute,
399
+ TMethod,
400
+ TInput,
401
+ TServices,
402
+ TLogger,
403
+ T,
404
+ TSession,
405
+ TEventPublisher,
406
+ TEventPublisherServiceName,
407
+ TAuthorizers,
408
+ TAuditStorage,
409
+ TAuditStorageServiceName,
410
+ TAuditAction,
411
+ TDatabase,
412
+ TDatabaseServiceName
413
+ > {
414
+ this.outputSchema = schema as unknown as OutSchema;
415
+
416
+ return this as unknown as EndpointBuilder<
417
+ TRoute,
418
+ TMethod,
419
+ TInput,
420
+ TServices,
421
+ TLogger,
422
+ T,
423
+ TSession,
424
+ TEventPublisher,
425
+ TEventPublisherServiceName,
426
+ TAuthorizers,
427
+ TAuditStorage,
428
+ TAuditStorageServiceName,
429
+ TAuditAction,
430
+ TDatabase,
431
+ TDatabaseServiceName
432
+ >;
433
+ }
434
+
435
+ /**
436
+ * Set the auditor storage service for this endpoint.
437
+ * This enables audit functionality and makes `auditor` available in the handler context.
438
+ * The audit action type is automatically inferred from the storage's generic parameter.
439
+ */
440
+ override auditor<T extends AuditStorage<any>, TName extends string>(
441
+ storage: Service<TName, T>,
442
+ ): EndpointBuilder<
443
+ TRoute,
444
+ TMethod,
445
+ TInput,
446
+ TServices,
447
+ TLogger,
448
+ OutSchema,
449
+ TSession,
450
+ TEventPublisher,
451
+ TEventPublisherServiceName,
452
+ TAuthorizers,
453
+ T,
454
+ TName,
455
+ ExtractStorageAuditAction<T>,
456
+ TDatabase,
457
+ TDatabaseServiceName
458
+ > {
459
+ this._auditorStorage = storage as unknown as Service<
460
+ TAuditStorageServiceName,
461
+ TAuditStorage
462
+ >;
463
+
464
+ return this as unknown as EndpointBuilder<
465
+ TRoute,
466
+ TMethod,
467
+ TInput,
468
+ TServices,
469
+ TLogger,
470
+ OutSchema,
471
+ TSession,
472
+ TEventPublisher,
473
+ TEventPublisherServiceName,
474
+ TAuthorizers,
475
+ T,
476
+ TName,
477
+ ExtractStorageAuditAction<T>,
478
+ TDatabase,
479
+ TDatabaseServiceName
480
+ >;
481
+ }
482
+
483
+ /**
484
+ * Set the actor extractor function for audit records.
485
+ * The actor is extracted from the request context and attached to all audits.
486
+ */
487
+ actor(
488
+ extractor: ActorExtractor<TServices, TSession, TLogger>,
489
+ ): EndpointBuilder<
490
+ TRoute,
491
+ TMethod,
492
+ TInput,
493
+ TServices,
494
+ TLogger,
495
+ OutSchema,
496
+ TSession,
497
+ TEventPublisher,
498
+ TEventPublisherServiceName,
499
+ TAuthorizers,
500
+ TAuditStorage,
501
+ TAuditStorageServiceName,
502
+ TAuditAction,
503
+ TDatabase,
504
+ TDatabaseServiceName
505
+ > {
506
+ this._actorExtractor = extractor;
507
+ return this;
508
+ }
509
+
510
+ /**
511
+ * Add declarative audit definitions that are processed after the handler executes.
512
+ * Similar to `.event()` for events, but for audits.
513
+ *
514
+ * @example
515
+ * ```typescript
516
+ * .audit<AppAuditAction>([
517
+ * {
518
+ * type: 'user.created',
519
+ * payload: (response) => ({ userId: response.id, email: response.email }),
520
+ * when: (response) => response.active,
521
+ * entityId: (response) => response.id,
522
+ * table: 'users',
523
+ * },
524
+ * ])
525
+ * ```
526
+ */
527
+ audit(audits: MappedAudit<TAuditAction, OutSchema>[]): this {
528
+ this._audits = audits;
529
+ return this;
530
+ }
531
+
532
+ /**
533
+ * Set the database service for this endpoint.
534
+ * The database will be available in the handler context as `db`.
535
+ * When audit storage is configured and uses the same database,
536
+ * `db` will automatically be the transaction for ACID compliance.
537
+ *
538
+ * @example
539
+ * ```typescript
540
+ * .database(databaseService)
541
+ * .handle(async ({ db }) => {
542
+ * // db is the raw database or transaction (when auditor uses same db)
543
+ * return await db.selectFrom('users').selectAll().execute();
544
+ * })
545
+ * ```
546
+ */
547
+ override database<T, TName extends string>(
548
+ service: Service<TName, T>,
549
+ ): EndpointBuilder<
550
+ TRoute,
551
+ TMethod,
552
+ TInput,
553
+ TServices,
554
+ TLogger,
555
+ OutSchema,
556
+ TSession,
557
+ TEventPublisher,
558
+ TEventPublisherServiceName,
559
+ TAuthorizers,
560
+ TAuditStorage,
561
+ TAuditStorageServiceName,
562
+ TAuditAction,
563
+ T,
564
+ TName
565
+ > {
566
+ this._databaseService = service as unknown as Service<
567
+ TDatabaseServiceName,
568
+ TDatabase
569
+ >;
570
+
571
+ return this as unknown as EndpointBuilder<
572
+ TRoute,
573
+ TMethod,
574
+ TInput,
575
+ TServices,
576
+ TLogger,
577
+ OutSchema,
578
+ TSession,
579
+ TEventPublisher,
580
+ TEventPublisherServiceName,
581
+ TAuthorizers,
582
+ TAuditStorage,
583
+ TAuditStorageServiceName,
584
+ TAuditAction,
585
+ T,
586
+ TName
587
+ >;
588
+ }
589
+
590
+ /**
591
+ * Configure RLS (Row-Level Security) context for this endpoint.
592
+ * Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.
593
+ *
594
+ * @example
595
+ * ```typescript
596
+ * // Custom RLS config for this endpoint
597
+ * .rls({
598
+ * extractor: ({ session }) => ({
599
+ * user_id: session.userId,
600
+ * tenant_id: session.tenantId,
601
+ * }),
602
+ * prefix: 'app',
603
+ * })
604
+ *
605
+ * // Bypass RLS (for admin endpoints)
606
+ * .rls(false)
607
+ * ```
608
+ */
609
+ rls(
610
+ config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass,
611
+ ): this {
612
+ if (config === false || config === RLS_BYPASS) {
613
+ this._rlsBypass = true;
614
+ this._rlsConfig = undefined;
615
+ } else {
616
+ this._rlsConfig = config;
617
+ this._rlsBypass = false;
618
+ }
619
+ return this;
620
+ }
621
+
622
+ /**
623
+ * Explicitly bypass RLS for this endpoint.
624
+ * Useful for admin operations that need unrestricted database access.
625
+ *
626
+ * @example
627
+ * ```typescript
628
+ * .rlsBypass()
629
+ * .handle(async ({ db }) => {
630
+ * // Full access, no RLS filtering
631
+ * return db.selectFrom('orders').selectAll().execute();
632
+ * })
633
+ * ```
634
+ */
635
+ rlsBypass(): this {
636
+ this._rlsBypass = true;
637
+ this._rlsConfig = undefined;
638
+ return this;
639
+ }
640
+
641
+ // EndpointBuilder doesn't have a generic input method - it uses body, query, params instead
642
+ input(_schema: any): any {
643
+ throw new Error(
644
+ 'EndpointBuilder does not support generic input. Use body(), query(), or params() instead.',
645
+ );
646
+ }
647
+
648
+ handle(
649
+ fn: EndpointHandler<
650
+ TInput,
651
+ TServices,
652
+ TLogger,
653
+ OutSchema,
654
+ TSession,
655
+ TDatabase,
656
+ TAuditStorage,
657
+ TAuditAction
658
+ >,
659
+ ): Endpoint<
660
+ TRoute,
661
+ TMethod,
662
+ TInput,
663
+ OutSchema,
664
+ TServices,
665
+ TLogger,
666
+ TSession,
667
+ TEventPublisher,
668
+ TEventPublisherServiceName,
669
+ TAuditStorage,
670
+ TAuditStorageServiceName,
671
+ TAuditAction,
672
+ TDatabase,
673
+ TDatabaseServiceName
674
+ > {
675
+ // Find authorizer metadata if name is set
676
+ // If the authorizer name is set but not in availableAuthorizers, create a simple authorizer object
677
+ let authorizer: Authorizer | undefined;
678
+ if (this._authorizerName) {
679
+ const existingAuthorizer = this._availableAuthorizers.find(
680
+ (a) => a.name === this._authorizerName,
681
+ );
682
+
683
+ if (existingAuthorizer) {
684
+ authorizer = existingAuthorizer;
685
+ } else {
686
+ // Create authorizer with security scheme if available (built-in or custom)
687
+ const securityScheme = getSecurityScheme(
688
+ this._authorizerName as string,
689
+ this._customSecuritySchemes,
690
+ );
691
+ authorizer = {
692
+ name: this._authorizerName as string,
693
+ securityScheme,
694
+ };
695
+ }
696
+ }
697
+
698
+ return new Endpoint({
699
+ fn,
700
+ method: this.method,
701
+ route: this.route,
702
+ description: this._description,
703
+ tags: this._tags,
704
+ input: this.schemas,
705
+ output: this.outputSchema,
706
+ services: this._services,
707
+ logger: this._logger,
708
+ timeout: this._timeout,
709
+ memorySize: this._memorySize,
710
+ authorize: this._authorize,
711
+ status: this._status,
712
+ getSession: this._getSession,
713
+ rateLimit: this._rateLimit,
714
+ publisherService: this._publisher,
715
+ events: this._events,
716
+ authorizer,
717
+ auditorStorageService: this._auditorStorage,
718
+ actorExtractor: this._actorExtractor,
719
+ audits: this._audits,
720
+ databaseService: this._databaseService,
721
+ rlsConfig: this._rlsConfig,
722
+ rlsBypass: this._rlsBypass,
723
+ });
724
+ }
725
725
  }