@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CronBuilder-e8TaHPYm.mjs","names":["DEFAULT_LOGGER","memorySize: number","_expression: ScheduleExpression","schema: T","services: T","logger: T","publisher: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>"],"sources":["../src/crons/CronBuilder.ts"],"sourcesContent":["import type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { FunctionBuilder, type FunctionHandler } from '../functions';\nimport { Cron, type ScheduleExpression } from './Cron';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class CronBuilder<\n\tTInput extends ComposableStandardSchema,\n\tTServices extends Service[],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> extends FunctionBuilder<\n\tTInput,\n\tOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tundefined,\n\tstring,\n\tTDatabase,\n\tTDatabaseServiceName\n> {\n\tprivate _schedule?: ScheduleExpression;\n\n\tconstructor() {\n\t\tsuper(ConstructType.Cron);\n\t}\n\n\toverride memorySize(memorySize: number): this {\n\t\tthis._memorySize = memorySize;\n\t\treturn this;\n\t}\n\n\tschedule(\n\t\t_expression: ScheduleExpression,\n\t): CronBuilder<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._schedule = _expression;\n\t\treturn this;\n\t}\n\n\toverride input<T extends ComposableStandardSchema>(\n\t\tschema: T,\n\t): CronBuilder<\n\t\tT,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.inputSchema = schema as unknown as TInput;\n\n\t\treturn this as unknown as CronBuilder<\n\t\t\tT,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\toverride output<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): CronBuilder<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.outputSchema = schema as unknown as OutSchema;\n\n\t\treturn this as unknown as CronBuilder<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tT,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\toverride services<T extends Service[]>(\n\t\tservices: T,\n\t): CronBuilder<\n\t\tTInput,\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._services = uniqBy(\n\t\t\t[...this._services, ...services],\n\t\t\t(s) => s.serviceName,\n\t\t) as TServices;\n\n\t\treturn this as unknown as CronBuilder<\n\t\t\tTInput,\n\t\t\t[...TServices, ...T],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\toverride logger<T extends Logger>(\n\t\tlogger: T,\n\t): CronBuilder<\n\t\tTInput,\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._logger = logger as unknown as TLogger;\n\n\t\treturn this as unknown as CronBuilder<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tT,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\toverride publisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): CronBuilder<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tT,\n\t\tTName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._publisher = publisher as unknown as Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>;\n\n\t\treturn this as unknown as CronBuilder<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tT,\n\t\t\tTName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\t/**\n\t * Set the database service for this cron job.\n\t * The database will be available in the handler context as `db`.\n\t */\n\toverride database<T, TName extends string>(\n\t\tservice: Service<TName, T>,\n\t): CronBuilder<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tT,\n\t\tTName\n\t> {\n\t\tthis._databaseService = service as unknown as Service<\n\t\t\tTDatabaseServiceName,\n\t\t\tTDatabase\n\t\t>;\n\n\t\treturn this as unknown as CronBuilder<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tT,\n\t\t\tTName\n\t\t>;\n\t}\n\n\toverride handle(\n\t\tfn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n\t): Cron<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tconst cron = new Cron(\n\t\t\tfn,\n\t\t\tthis._timeout,\n\t\t\tthis._schedule,\n\t\t\tthis.inputSchema,\n\t\t\tthis.outputSchema,\n\t\t\tthis._services,\n\t\t\tthis._logger,\n\t\t\tthis._publisher,\n\t\t\tthis._events,\n\t\t\tthis._memorySize,\n\t\t\tthis._databaseService,\n\t\t);\n\n\t\t// Reset builder state after creating the cron to prevent pollution\n\t\tthis._services = [] as Service[] as TServices;\n\t\tthis._logger = DEFAULT_LOGGER;\n\t\tthis._events = [];\n\t\tthis._publisher = undefined;\n\t\tthis._databaseService = undefined;\n\t\tthis._schedule = undefined;\n\t\tthis.inputSchema = undefined;\n\t\tthis.outputSchema = undefined;\n\t\tthis._timeout = undefined;\n\t\tthis._memorySize = undefined;\n\n\t\treturn cron;\n\t}\n}\n"],"mappings":";;;;;;;AAWA,MAAMA,mBAAiB,IAAI;AAE3B,IAAa,cAAb,cASU,gBAWR;CACD,AAAQ;CAER,cAAc;AACb,QAAM,cAAc,KAAK;CACzB;CAED,AAAS,WAAWC,YAA0B;AAC7C,OAAK,cAAc;AACnB,SAAO;CACP;CAED,SACCC,aAUC;AACD,OAAK,YAAY;AACjB,SAAO;CACP;CAED,AAAS,MACRC,QAUC;AACD,OAAK,cAAc;AAEnB,SAAO;CAUP;CAED,AAAS,OACRA,QAUC;AACD,OAAK,eAAe;AAEpB,SAAO;CAUP;CAED,AAAS,SACRC,UAUC;AACD,OAAK,YAAY,OAChB,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACT;AAED,SAAO;CAUP;CAED,AAAS,OACRC,QAUC;AACD,OAAK,UAAU;AAEf,SAAO;CAUP;CAED,AAAS,UACRC,WAUC;AACD,OAAK,aAAa;AAKlB,SAAO;CAUP;;;;;CAMD,AAAS,SACRC,SAUC;AACD,OAAK,mBAAmB;AAKxB,SAAO;CAUP;CAED,AAAS,OACRC,IAUC;EACD,MAAM,OAAO,IAAI,KAChB,IACA,KAAK,UACL,KAAK,WACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK;AAIN,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUR;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACP;AACD"}
@@ -1,6 +1,6 @@
1
1
  import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-B5H3piDg.cjs";
2
- import { Function, FunctionHandler } from "./Function-Cf7f_kCz.cjs";
3
- import { Authorizer } from "./Authorizer-B-btowNd.cjs";
2
+ import { Function, FunctionHandler } from "./Function-PNW4HdNE.cjs";
3
+ import { Authorizer } from "./Authorizer-DWtwC8we.cjs";
4
4
  import { AuditActor, AuditStorage, AuditableAction, Auditor, ExtractAuditPayload, ExtractAuditType } from "@geekmidas/audit";
5
5
  import { EventPublisher, ExtractPublisherMessage, MappedEvent } from "@geekmidas/events";
6
6
  import { Logger } from "@geekmidas/logger";
@@ -729,4 +729,4 @@ type EndpointOutput<T> = T extends Endpoint<any, any, any, infer OutSchema, any,
729
729
  type EndpointEvent<T> = T extends Endpoint<any, any, any, any, any, any, any, infer TEventPublisher> ? ExtractPublisherMessage<TEventPublisher> : never;
730
730
  //#endregion
731
731
  export { ActorExtractor, AuthorizeContext, AuthorizeFn, ConvertRouteParams, CookieFn, CookieOptions, Endpoint, EndpointAuditorConfig, EndpointContext, EndpointEvent, EndpointHandler, EndpointHeaders, EndpointInput, EndpointOpenApiSchema, EndpointOptions, EndpointOutput, EndpointSchemas, HeaderFn, MappedAudit, MultiHeaderFn, RLS_BYPASS, ResponseBuilder, ResponseMetadata, ResponseWithMetadata, RlsBypass, RlsConfig, RlsContext, RlsContextExtractor, SessionContext, SessionFn, SingleHeaderFn, SuccessStatus };
732
- //# sourceMappingURL=Endpoint-BPv9_-m_.d.cts.map
732
+ //# sourceMappingURL=Endpoint-BOlbY5iq.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Endpoint-BOlbY5iq.d.cts","names":[],"sources":["../src/endpoints/audit.ts","../src/endpoints/rls.ts","../src/endpoints/Endpoint.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { ConstructType } from "./Construct-DdyGHuag.mjs";
2
- import { Function } from "./Function-BVHqIDp9.mjs";
1
+ import { ConstructType } from "./Construct-D5dCvxZ3.mjs";
2
+ import { Function } from "./Function-D8tBamM3.mjs";
3
+ import set from "lodash.set";
3
4
  import { convertSchemaWithComponents, convertStandardSchemaToJsonSchema } from "@geekmidas/schema/conversion";
4
5
  import { buildOpenApiSchema } from "@geekmidas/schema/openapi";
5
6
  import pick from "lodash.pick";
6
- import set from "lodash.set";
7
7
 
8
8
  //#region src/endpoints/Endpoint.ts
9
9
  /**
@@ -367,14 +367,14 @@ var ResponseBuilder = class {
367
367
  return this;
368
368
  }
369
369
  cookie(name, value, options) {
370
- this.metadata.cookies.set(name, {
370
+ this.metadata.cookies?.set(name, {
371
371
  value,
372
372
  options
373
373
  });
374
374
  return this;
375
375
  }
376
376
  deleteCookie(name, options) {
377
- this.metadata.cookies.set(name, {
377
+ this.metadata.cookies?.set(name, {
378
378
  value: "",
379
379
  options: {
380
380
  ...options,
@@ -419,4 +419,4 @@ let SuccessStatus = /* @__PURE__ */ function(SuccessStatus$1) {
419
419
 
420
420
  //#endregion
421
421
  export { Endpoint, ResponseBuilder, SuccessStatus };
422
- //# sourceMappingURL=Endpoint-CuOEswxJ.mjs.map
422
+ //# sourceMappingURL=Endpoint-BbdNmtlM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Endpoint-BbdNmtlM.mjs","names":["endpoints: Endpoint<any, any, any, any, any, any>[]","options?: OpenApiSchemaOptions","input: unknown","key: K","body: unknown","status: number","headers: Record<string, string>","key?: string","cookieHeader: string | undefined","name?: string","name: string","value: string","options?: CookieOptions","ctx: EndpointContext<TInput, TServices, TLogger, TSession>","ctx: EndpointContext<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage\n\t\t>","response: ResponseBuilder","obj: any","response: T | ResponseWithMetadata<T>","componentCollector?: ComponentCollector","operation: OpenAPIV3_1.OperationObject","pathParameters: OpenAPIV3_1.ParameterObject[]","queryParameters: OpenAPIV3_1.ParameterObject[]","routeObject: any","key: string","options?: Pick<CookieOptions, 'domain' | 'path'>","code: SuccessStatus","data: T"],"sources":["../src/endpoints/Endpoint.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n\tMappedEvent,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { RateLimitConfig } from '@geekmidas/rate-limit';\nimport type {\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\tconvertSchemaWithComponents,\n\tconvertStandardSchemaToJsonSchema,\n} from '@geekmidas/schema/conversion';\nimport {\n\tbuildOpenApiSchema,\n\ttype ComponentCollector,\n\ttype OpenApiSchemaOptions,\n} from '@geekmidas/schema/openapi';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport pick from 'lodash.pick';\nimport set from 'lodash.set';\nimport type { OpenAPIV3_1 } from 'openapi-types';\nimport { ConstructType } from '../Construct';\nimport { Function, type FunctionHandler } from '../functions';\nimport type { HttpMethod, LowerHttpMethod, RemoveUndefined } from '../types';\nimport type { Authorizer } from './Authorizer';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { RlsConfig } from './rls';\n\n/**\n * Represents an HTTP endpoint that can handle requests with type-safe input/output validation,\n * dependency injection, session management, and authorization.\n *\n * @template TRoute - The route path string with parameter placeholders (e.g., '/users/:id')\n * @template TMethod - The HTTP method (GET, POST, PUT, DELETE, PATCH)\n * @template TInput - The input schema definition for body, query, and path parameters\n * @template OutSchema - The output schema for response validation\n * @template TServices - Array of service dependencies to inject\n * @template TLogger - The logger instance type\n * @template TSession - The session data type\n *\n * @extends Function - Base function construct for handler execution\n *\n * @example\n * ```typescript\n * const endpoint = new Endpoint({\n * route: '/users/:id',\n * method: 'GET',\n * input: { params: userIdSchema },\n * output: userSchema,\n * fn: async ({ params }) => getUserById(params.id)\n * });\n * ```\n */\nexport class Endpoint<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> extends Function<\n\tTInput,\n\tTServices,\n\tTLogger,\n\tOutSchema,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName,\n\tTAuditAction,\n\tFunctionHandler<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTDatabase,\n\t\tTAuditStorage,\n\t\tTAuditAction\n\t>\n> {\n\toperationId?: string;\n\t/** The route path pattern with parameter placeholders */\n\troute: TRoute;\n\t/** The HTTP method for this endpoint */\n\tmethod: TMethod;\n\t/** Optional description for OpenAPI documentation */\n\tdescription?: string;\n\t/** Optional tags for OpenAPI documentation */\n\ttags?: string[];\n\t/** The HTTP success status code to return (default: 200) */\n\tpublic readonly status: SuccessStatus;\n\t/** Default headers to apply to all responses */\n\tpublic readonly defaultHeaders: Record<string, string> = {};\n\t/** Function to extract session data from the request context */\n\tpublic getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>\n\t\t({}) as TSession;\n\t/** Function to determine if the request is authorized */\n\tpublic authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;\n\t/** Optional rate limiting configuration */\n\tpublic rateLimit?: RateLimitConfig;\n\t/** Optional authorizer for this endpoint */\n\tpublic authorizer?: Authorizer;\n\t/** Optional actor extractor for audit records */\n\tpublic actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n\t/** Declarative audit definitions */\n\tpublic audits: MappedAudit<TAuditAction, OutSchema>[] = [];\n\t/** Database service for this endpoint */\n\tpublic declare databaseService?: Service<TDatabaseServiceName, TDatabase>;\n\t/** RLS configuration for this endpoint */\n\tpublic rlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n\t/** Whether to bypass RLS for this endpoint */\n\tpublic rlsBypass?: boolean;\n\t/** The endpoint handler function */\n\tprivate endpointFn!: EndpointHandler<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTDatabase,\n\t\tTAuditStorage,\n\t\tTAuditAction\n\t>;\n\n\t/**\n\t * Builds a complete OpenAPI 3.1 schema from an array of endpoints.\n\t *\n\t * @param endpoints - Array of endpoint instances to document\n\t * @param options - Optional configuration for OpenAPI generation\n\t * @returns OpenAPI 3.1 specification object\n\t *\n\t * @example\n\t * ```typescript\n\t * const schema = await Endpoint.buildOpenApiSchema([\n\t * getUserEndpoint,\n\t * createUserEndpoint\n\t * ], {\n\t * title: 'User API',\n\t * version: '1.0.0'\n\t * });\n\t * ```\n\t */\n\tstatic async buildOpenApiSchema(\n\t\tendpoints: Endpoint<any, any, any, any, any, any>[],\n\t\toptions?: OpenApiSchemaOptions,\n\t) {\n\t\treturn buildOpenApiSchema(endpoints, options);\n\t}\n\n\t/**\n\t * Gets the full path including HTTP method and route.\n\t * @returns Formatted string like 'GET /users/{id}'\n\t */\n\tget fullPath() {\n\t\treturn `${this.method} ${this._path}` as const;\n\t}\n\n\t/**\n\t * Parses and validates input data for a specific input type (body, query, params).\n\t *\n\t * @param input - The raw input data to validate\n\t * @param key - The input type key ('body', 'query', or 'params')\n\t * @returns The validated input data for the specified key\n\t * @throws {UnprocessableEntityError} When validation fails\n\t */\n\tasync parseInput<K extends keyof TInput>(\n\t\tinput: unknown,\n\t\tkey: K,\n\t): Promise<InferComposableStandardSchema<TInput[K]>> {\n\t\tconst schema = this.input?.[key];\n\t\treturn Endpoint.parseSchema(schema as StandardSchemaV1, input) as Promise<\n\t\t\tInferComposableStandardSchema<TInput[K]>\n\t\t>;\n\t}\n\n\t/**\n\t * Parses and validates the request body against the body schema.\n\t *\n\t * @param body - The raw request body to validate\n\t * @returns The validated body data\n\t * @throws {UnprocessableEntityError} When body validation fails\n\t */\n\tasync parseBody(body: unknown): Promise<InferStandardSchema<TInput['body']>> {\n\t\treturn this.parseInput(body, 'body') as Promise<\n\t\t\tInferStandardSchema<TInput['body']>\n\t\t>;\n\t}\n\n\tstatic isSuccessStatus(status: number): boolean {\n\t\treturn status >= 200 && status < 300;\n\t}\n\n\t/**\n\t * Creates a case-insensitive header lookup function from a headers object.\n\t *\n\t * @param headers - Object containing header key-value pairs\n\t * @returns Function to retrieve header values by case-insensitive key, or all headers\n\t *\n\t * @example\n\t * ```typescript\n\t * const headerFn = Endpoint.createHeaders({ 'Content-Type': 'application/json' });\n\t * headerFn('content-type'); // Returns 'application/json'\n\t * headerFn(); // Returns { 'content-type': 'application/json' }\n\t * ```\n\t */\n\tstatic createHeaders(headers: Record<string, string>): HeaderFn {\n\t\tconst headerMap = new Map<string, string>();\n\t\tfor (const [k, v] of Object.entries(headers)) {\n\t\t\tconst key = k.toLowerCase();\n\t\t\theaderMap.set(key, v);\n\t\t}\n\n\t\tfunction get(): Record<string, string>;\n\t\tfunction get(key: string): string | undefined;\n\t\tfunction get(key?: string): string | undefined | Record<string, string> {\n\t\t\tif (key === undefined) {\n\t\t\t\t// Return all headers as plain object\n\t\t\t\treturn Object.fromEntries(headerMap.entries());\n\t\t\t}\n\t\t\treturn headerMap.get(key.toLowerCase());\n\t\t}\n\n\t\treturn get;\n\t}\n\n\t/**\n\t * Parses cookie string and creates a cookie lookup function.\n\t *\n\t * @param cookieHeader - The Cookie header value\n\t * @returns Function to retrieve cookie values by name, or all cookies\n\t *\n\t * @example\n\t * ```typescript\n\t * const cookieFn = Endpoint.createCookies('session=abc123; theme=dark');\n\t * cookieFn('session'); // Returns 'abc123'\n\t * cookieFn(); // Returns { session: 'abc123', theme: 'dark' }\n\t * ```\n\t */\n\tstatic createCookies(cookieHeader: string | undefined): CookieFn {\n\t\tconst cookieMap = new Map<string, string>();\n\n\t\tif (cookieHeader) {\n\t\t\t// Parse cookie string: \"name1=value1; name2=value2\"\n\t\t\tconst cookies = cookieHeader.split(';');\n\t\t\tfor (const cookie of cookies) {\n\t\t\t\tconst [name, ...valueParts] = cookie.trim().split('=');\n\t\t\t\tif (name) {\n\t\t\t\t\tconst value = valueParts.join('='); // Handle values with = in them\n\t\t\t\t\tcookieMap.set(name, decodeURIComponent(value));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction get(): Record<string, string>;\n\t\tfunction get(name: string): string | undefined;\n\t\tfunction get(name?: string): string | undefined | Record<string, string> {\n\t\t\tif (name === undefined) {\n\t\t\t\t// Return all cookies as plain object\n\t\t\t\treturn Object.fromEntries(cookieMap.entries());\n\t\t\t}\n\t\t\treturn cookieMap.get(name);\n\t\t}\n\n\t\treturn get;\n\t}\n\n\t/**\n\t * Formats a cookie as a Set-Cookie header string.\n\t *\n\t * @param name - Cookie name\n\t * @param value - Cookie value\n\t * @param options - Cookie options (httpOnly, secure, sameSite, etc.)\n\t * @returns Formatted Set-Cookie header string\n\t *\n\t * @example\n\t * ```typescript\n\t * const header = Endpoint.formatCookieHeader('session', 'abc123', {\n\t * httpOnly: true,\n\t * secure: true,\n\t * sameSite: 'strict',\n\t * maxAge: 3600\n\t * });\n\t * // Returns: \"session=abc123; Max-Age=3600; HttpOnly; Secure; SameSite=Strict\"\n\t * ```\n\t */\n\tstatic formatCookieHeader(\n\t\tname: string,\n\t\tvalue: string,\n\t\toptions?: CookieOptions,\n\t): string {\n\t\tlet cookie = `${name}=${value}`;\n\n\t\tif (options) {\n\t\t\tif (options.domain) cookie += `; Domain=${options.domain}`;\n\t\t\tif (options.path) cookie += `; Path=${options.path}`;\n\t\t\tif (options.expires)\n\t\t\t\tcookie += `; Expires=${options.expires.toUTCString()}`;\n\t\t\tif (options.maxAge !== undefined) cookie += `; Max-Age=${options.maxAge}`;\n\t\t\tif (options.httpOnly) cookie += '; HttpOnly';\n\t\t\tif (options.secure) cookie += '; Secure';\n\t\t\tif (options.sameSite) {\n\t\t\t\tcookie += `; SameSite=${options.sameSite.charAt(0).toUpperCase() + options.sameSite.slice(1)}`;\n\t\t\t}\n\t\t}\n\n\t\treturn cookie;\n\t}\n\n\t/**\n\t * Extracts and refines input data from the endpoint context.\n\t *\n\t * @param ctx - The endpoint execution context\n\t * @returns Object containing only the input data (body, query, params)\n\t * @internal\n\t */\n\trefineInput(\n\t\tctx: EndpointContext<TInput, TServices, TLogger, TSession>,\n\t): InferComposableStandardSchema<TInput> {\n\t\tconst input = pick(ctx, [\n\t\t\t'body',\n\t\t\t'query',\n\t\t\t'params',\n\t\t]) as InferComposableStandardSchema<TInput>;\n\n\t\treturn input;\n\t}\n\n\thandler = (\n\t\tctx: EndpointContext<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage\n\t\t>,\n\t\tresponse: ResponseBuilder,\n\t): OutSchema extends StandardSchemaV1\n\t\t?\n\t\t\t\t| InferStandardSchema<OutSchema>\n\t\t\t\t| ResponseWithMetadata<InferStandardSchema<OutSchema>>\n\t\t\t\t| Promise<InferStandardSchema<OutSchema>>\n\t\t\t\t| Promise<ResponseWithMetadata<InferStandardSchema<OutSchema>>>\n\t\t:\n\t\t\t\t| any\n\t\t\t\t| ResponseWithMetadata<any>\n\t\t\t\t| Promise<any>\n\t\t\t\t| Promise<ResponseWithMetadata<any>> => {\n\t\t// Apply default headers to response builder\n\t\tfor (const [key, value] of Object.entries(this.defaultHeaders)) {\n\t\t\tresponse.header(key, value);\n\t\t}\n\n\t\t// Build context object, conditionally including auditor and db\n\t\tconst handlerCtx = {\n\t\t\t...this.refineInput(ctx),\n\t\t\tservices: ctx.services,\n\t\t\tlogger: ctx.logger,\n\t\t\theader: ctx.header,\n\t\t\tcookie: ctx.cookie,\n\t\t\tsession: ctx.session,\n\t\t\t// These are conditionally present based on configuration\n\t\t\t...('auditor' in ctx && { auditor: ctx.auditor }),\n\t\t\t...('db' in ctx && { db: ctx.db }),\n\t\t} as EndpointContext<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage\n\t\t>;\n\n\t\treturn this.endpointFn(handlerCtx, response);\n\t};\n\n\t/**\n\t * Type guard to check if an object is an Endpoint instance.\n\t *\n\t * @param obj - The object to check\n\t * @returns True if the object is an Endpoint\n\t */\n\tstatic isEndpoint(obj: any): obj is Endpoint<any, any, any, any> {\n\t\treturn Boolean(\n\t\t\tobj &&\n\t\t\t\t(obj as Function).__IS_FUNCTION__ === true &&\n\t\t\t\tobj.type === ConstructType.Endpoint,\n\t\t);\n\t}\n\n\t/**\n\t * Helper to check if response has metadata\n\t */\n\tstatic hasMetadata<T>(\n\t\tresponse: T | ResponseWithMetadata<T>,\n\t): response is ResponseWithMetadata<T> {\n\t\treturn (\n\t\t\tresponse !== null &&\n\t\t\ttypeof response === 'object' &&\n\t\t\t'data' in response &&\n\t\t\t'metadata' in response\n\t\t);\n\t}\n\n\t/**\n\t * Converts Express-style route params to OpenAPI format.\n\t * @returns Route with ':param' converted to '{param}'\n\t * @internal\n\t */\n\tget _path() {\n\t\treturn this.route.replace(/:(\\w+)/g, '{$1}') as ConvertRouteParams<TRoute>;\n\t}\n\n\t/**\n\t * Generates OpenAPI 3.1 schema for this endpoint.\n\t *\n\t * @returns OpenAPI route definition with operation details\n\t */\n\tasync toOpenApi3Route(\n\t\tcomponentCollector?: ComponentCollector,\n\t): Promise<EndpointOpenApiSchema<TRoute, TMethod>> {\n\t\tconst operation: OpenAPIV3_1.OperationObject = {\n\t\t\toperationId: this.operationId,\n\t\t\t...(this.description && { description: this.description }),\n\t\t\t...(this.tags && this.tags.length > 0 && { tags: this.tags }),\n\t\t\tresponses: {\n\t\t\t\t'200': {\n\t\t\t\t\tdescription: 'Successful response',\n\t\t\t\t} as OpenAPIV3_1.ResponseObject,\n\t\t\t},\n\t\t};\n\n\t\t// Add response schema\n\t\tif (this.outputSchema) {\n\t\t\tconst responseSchema = await convertSchemaWithComponents(\n\t\t\t\tthis.outputSchema,\n\t\t\t\tcomponentCollector,\n\t\t\t);\n\t\t\tif (responseSchema) {\n\t\t\t\tset(\n\t\t\t\t\toperation,\n\t\t\t\t\t['responses', '200', 'content', 'application/json', 'schema'],\n\t\t\t\t\tresponseSchema,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Separate path and query parameters\n\t\tconst pathParameters: OpenAPIV3_1.ParameterObject[] = [];\n\t\tconst queryParameters: OpenAPIV3_1.ParameterObject[] = [];\n\n\t\t// Since the EndpointBuilder doesn't have body/search/params methods yet,\n\t\t// and the input is a composite type, we need to check if input exists\n\t\t// and has the expected shape\n\t\tif (this.input && typeof this.input === 'object') {\n\t\t\t// Add request body for methods that support it\n\t\t\tif (\n\t\t\t\t['POST', 'PUT', 'PATCH'].includes(this.method) &&\n\t\t\t\t'body' in this.input &&\n\t\t\t\tthis.input.body\n\t\t\t) {\n\t\t\t\tconst bodySchema = await convertSchemaWithComponents(\n\t\t\t\t\tthis.input.body as StandardSchemaV1,\n\t\t\t\t\tcomponentCollector,\n\t\t\t\t);\n\t\t\t\tif (bodySchema) {\n\t\t\t\t\tset(operation, ['requestBody'], {\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t'application/json': {\n\t\t\t\t\t\t\t\tschema: bodySchema,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add path parameters\n\t\t\tif ('params' in this.input && this.input.params) {\n\t\t\t\tconst paramsSchema = await convertStandardSchemaToJsonSchema(\n\t\t\t\t\tthis.input.params as StandardSchemaV1,\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tparamsSchema &&\n\t\t\t\t\tparamsSchema.type === 'object' &&\n\t\t\t\t\tparamsSchema.properties\n\t\t\t\t) {\n\t\t\t\t\tfor (const [name, schema] of Object.entries(\n\t\t\t\t\t\tparamsSchema.properties,\n\t\t\t\t\t)) {\n\t\t\t\t\t\tpathParameters.push({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tin: 'path',\n\t\t\t\t\t\t\trequired: paramsSchema.required?.includes(name) ?? true,\n\t\t\t\t\t\t\tschema: schema as any,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add query parameters\n\t\t\tif ('query' in this.input && this.input.query) {\n\t\t\t\tconst querySchema = await convertStandardSchemaToJsonSchema(\n\t\t\t\t\tthis.input.query,\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tquerySchema &&\n\t\t\t\t\tquerySchema.type === 'object' &&\n\t\t\t\t\tquerySchema.properties\n\t\t\t\t) {\n\t\t\t\t\tfor (const [name, schema] of Object.entries(querySchema.properties)) {\n\t\t\t\t\t\tqueryParameters.push({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tin: 'query',\n\t\t\t\t\t\t\trequired: querySchema.required?.includes(name) ?? false,\n\t\t\t\t\t\t\tschema: schema as any,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Only add query parameters to the operation\n\t\tif (queryParameters.length > 0) {\n\t\t\toperation.parameters = queryParameters;\n\t\t}\n\n\t\t// Build the route object with path parameters at the route level\n\t\tconst routeObject: any = {};\n\t\tif (pathParameters.length > 0) {\n\t\t\trouteObject.parameters = pathParameters;\n\t\t}\n\t\trouteObject[this.method.toLowerCase()] = operation;\n\n\t\treturn {\n\t\t\t[this._path]: routeObject,\n\t\t} as EndpointOpenApiSchema<TRoute, TMethod>;\n\t}\n\n\t/**\n\t * Creates a new Endpoint instance.\n\t *\n\t * @param options - Configuration options for the endpoint\n\t * @param options.fn - The handler function to execute\n\t * @param options.method - HTTP method\n\t * @param options.route - Route path with parameter placeholders\n\t * @param options.description - Optional description for documentation\n\t * @param options.input - Input schemas for validation\n\t * @param options.logger - Logger instance\n\t * @param options.output - Output schema for response validation\n\t * @param options.services - Service dependencies\n\t * @param options.timeout - Execution timeout in milliseconds\n\t * @param options.getSession - Session extraction function\n\t * @param options.authorize - Authorization check function\n\t * @param options.status - Success HTTP status code (default: 200)\n\t * @param options.authorizer - Optional authorizer configuration\n\t */\n\tconstructor({\n\t\tfn,\n\t\tmethod,\n\t\troute,\n\t\tdescription,\n\t\ttags,\n\t\tinput,\n\t\tlogger,\n\t\toutput: outputSchema,\n\t\tservices,\n\t\ttimeout,\n\t\tmemorySize,\n\t\tgetSession,\n\t\tauthorize,\n\t\trateLimit,\n\t\tstatus = SuccessStatus.OK,\n\t\tpublisherService,\n\t\tevents,\n\t\tauthorizer,\n\t\tauditorStorageService,\n\t\tactorExtractor,\n\t\taudits,\n\t\tdatabaseService,\n\t\trlsConfig,\n\t\trlsBypass,\n\t}: EndpointOptions<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>) {\n\t\tsuper(\n\t\t\tfn as unknown as FunctionHandler<TInput, TServices, TLogger, OutSchema>,\n\t\t\ttimeout,\n\t\t\tConstructType.Endpoint,\n\t\t\tinput,\n\t\t\toutputSchema,\n\t\t\tservices,\n\t\t\tlogger,\n\t\t\tpublisherService,\n\t\t\tevents,\n\t\t\tmemorySize,\n\t\t\tauditorStorageService,\n\t\t);\n\n\t\tthis.route = route;\n\t\tthis.method = method;\n\t\tthis.description = description;\n\t\tthis.tags = tags;\n\t\tthis.status = status;\n\t\tthis.endpointFn = fn;\n\n\t\tif (getSession) {\n\t\t\tthis.getSession = getSession;\n\t\t}\n\n\t\tif (authorize) {\n\t\t\tthis.authorize = authorize;\n\t\t}\n\n\t\tif (rateLimit) {\n\t\t\tthis.rateLimit = rateLimit;\n\t\t}\n\n\t\tif (authorizer) {\n\t\t\tthis.authorizer = authorizer;\n\t\t}\n\n\t\tif (actorExtractor) {\n\t\t\tthis.actorExtractor = actorExtractor;\n\t\t}\n\n\t\tif (audits) {\n\t\t\tthis.audits = audits;\n\t\t}\n\n\t\tif (databaseService) {\n\t\t\tthis.databaseService = databaseService;\n\t\t}\n\n\t\tif (rlsConfig) {\n\t\t\tthis.rlsConfig = rlsConfig;\n\t\t}\n\n\t\tif (rlsBypass) {\n\t\t\tthis.rlsBypass = rlsBypass;\n\t\t}\n\t}\n}\n\n/**\n * Defines the input schema structure for an endpoint.\n *\n * @template TBody - Schema for request body validation\n * @template TSearch - Schema for query string validation\n * @template TParams - Schema for URL path parameters validation\n *\n * @example\n * ```typescript\n * type UserInput = EndpointInput<\n * typeof createUserBodySchema,\n * typeof userQuerySchema,\n * typeof userParamsSchema\n * >;\n * ```\n */\nexport type EndpointInput<\n\tTBody extends StandardSchemaV1 | undefined = undefined,\n\tTSearch extends StandardSchemaV1 | undefined = undefined,\n\tTParams extends StandardSchemaV1 | undefined = undefined,\n> = RemoveUndefined<{\n\tbody: TBody;\n\tsearch: TSearch;\n\tparams: TParams;\n}>;\n\n/**\n * Configuration options for creating an Endpoint instance.\n *\n * @template TRoute - The route path string\n * @template TMethod - The HTTP method\n * @template TInput - Input schema definitions\n * @template TOutput - Output schema definition\n * @template TServices - Service dependencies array\n * @template TLogger - Logger type\n * @template TSession - Session data type\n */\nexport interface EndpointOptions<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutput extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> {\n\t/** The route path with parameter placeholders */\n\troute: TRoute;\n\t/** The HTTP method for this endpoint */\n\tmethod: TMethod;\n\t/** The handler function that implements the endpoint logic */\n\tfn: EndpointHandler<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutput,\n\t\tTSession,\n\t\tTDatabase,\n\t\tTAuditStorage,\n\t\tTAuditAction\n\t>;\n\t/** Optional authorization check function */\n\tauthorize: AuthorizeFn<TServices, TLogger, TSession> | undefined;\n\t/** Optional description for documentation */\n\tdescription: string | undefined;\n\t/** Optional tags for OpenAPI documentation */\n\ttags?: string[];\n\t/** Optional execution timeout in milliseconds */\n\ttimeout: number | undefined;\n\t/** Optional memory size in MB for serverless deployments */\n\tmemorySize: number | undefined;\n\t/** Input validation schemas */\n\tinput: TInput | undefined;\n\t/** Output validation schema */\n\toutput: TOutput | undefined;\n\t/** Service dependencies to inject */\n\tservices: TServices;\n\t/** Logger instance */\n\tlogger: TLogger;\n\t/** Optional session extraction function */\n\tgetSession: SessionFn<TServices, TLogger, TSession, TDatabase> | undefined;\n\t/** Optional rate limiting configuration */\n\trateLimit?: RateLimitConfig;\n\t/** Success HTTP status code */\n\tstatus: SuccessStatus | undefined;\n\t/**\n\t * Event publisher service for publishing events from this endpoint\n\t */\n\tpublisherService?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n\tevents?: MappedEvent<TEventPublisher, OutSchema>[];\n\t/** Optional authorizer configuration */\n\tauthorizer?: Authorizer;\n\t/**\n\t * Auditor storage service for persisting audit records from this endpoint\n\t */\n\tauditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>;\n\t/** Optional actor extractor function for audit records */\n\tactorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n\t/** Declarative audit definitions */\n\taudits?: MappedAudit<TAuditAction, OutSchema>[];\n\t/** Database service for this endpoint */\n\tdatabaseService?: Service<TDatabaseServiceName, TDatabase>;\n\t/** RLS configuration for this endpoint */\n\trlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n\t/** Whether to bypass RLS for this endpoint */\n\trlsBypass?: boolean;\n}\n\n/**\n * Defines the possible input schema types for an endpoint.\n * Each property represents a different part of the HTTP request.\n */\nexport type EndpointSchemas = Partial<{\n\t/** Schema for URL path parameters (e.g., /users/:id) */\n\tparams: StandardSchemaV1;\n\t/** Schema for query string parameters */\n\tquery: StandardSchemaV1;\n\t/** Schema for request body (POST, PUT, PATCH) */\n\tbody: StandardSchemaV1;\n}>;\n\nexport type AuthorizeContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n\tsession: TSession;\n};\n/**\n * Function type for endpoint authorization checks.\n *\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template TSession - Session data type\n *\n * @param ctx - Context containing services, logger, headers, and session\n * @returns Boolean indicating if the request is authorized\n *\n * @example\n * ```typescript\n * const authorize: AuthorizeFn = ({ session }) => {\n * return session.userId !== undefined;\n * };\n * ```\n */\nexport type AuthorizeFn<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = (\n\tctx: AuthorizeContext<TServices, TLogger, TSession>,\n) => Promise<boolean> | boolean;\n\n/**\n * Base session context without database\n */\ntype BaseSessionContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n};\n\n/**\n * Conditional database context for session - only present when database service is configured\n */\ntype SessionDatabaseContext<TDatabase = undefined> = TDatabase extends undefined\n\t? {}\n\t: {\n\t\t\t/**\n\t\t\t * Database instance for session extraction.\n\t\t\t * Available when a database service is configured via `.database()`.\n\t\t\t * Useful for looking up user data from the database based on auth tokens.\n\t\t\t */\n\t\t\tdb: TDatabase;\n\t\t};\n\nexport type SessionContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTDatabase = undefined,\n> = BaseSessionContext<TServices, TLogger> & SessionDatabaseContext<TDatabase>;\n/**\n * Function type for extracting session data from a request.\n *\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template TSession - Session data type to extract\n * @template TDatabase - Database type (when database service is configured)\n *\n * @param ctx - Context containing services, logger, headers, and optionally database\n * @returns The extracted session data\n *\n * @example\n * ```typescript\n * // Without database\n * const getSession: SessionFn<Services, Logger, UserSession> = async ({ header, services }) => {\n * const token = header('authorization');\n * return await services.auth.verifyToken(token);\n * };\n *\n * // With database\n * const getSession: SessionFn<Services, Logger, UserSession, Database> = async ({ header, db }) => {\n * const token = header('authorization');\n * const user = await db.selectFrom('users').where('token', '=', token).executeTakeFirst();\n * return { userId: user?.id };\n * };\n * ```\n */\nexport type SessionFn<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTDatabase = undefined,\n> = (\n\tctx: SessionContext<TServices, TLogger, TDatabase>,\n) => Promise<TSession> | TSession;\n\n/**\n * Utility type that converts Express-style route parameters to OpenAPI format.\n * Transforms ':param' syntax to '{param}' syntax.\n *\n * @template T - The route string to convert\n *\n * @example\n * ```typescript\n * type Route1 = ConvertRouteParams<'/users/:id'>; // '/users/{id}'\n * type Route2 = ConvertRouteParams<'/users/:userId/posts/:postId'>; // '/users/{userId}/posts/{postId}'\n * ```\n */\nexport type ConvertRouteParams<T extends string> =\n\tT extends `${infer Start}:${infer Param}/${infer Rest}`\n\t\t? `${Start}{${Param}}/${ConvertRouteParams<Rest>}`\n\t\t: T extends `${infer Start}:${infer Param}`\n\t\t\t? `${Start}{${Param}}`\n\t\t\t: T;\n\n/**\n * Type representing the OpenAPI schema structure for an endpoint.\n *\n * @template TRoute - The route path\n * @template TMethod - The HTTP method\n *\n * @example\n * ```typescript\n * type Schema = EndpointOpenApiSchema<'/users/:id', 'GET'>;\n * // Results in: { '/users/{id}': { get: OperationObject, parameters?: ParameterObject[] } }\n * ```\n */\nexport type EndpointOpenApiSchema<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n> = {\n\t[key in ConvertRouteParams<TRoute>]: {\n\t\t[key in LowerHttpMethod<TMethod>]: OpenAPIV3_1.OperationObject<{}>;\n\t} & {\n\t\tparameters?: OpenAPIV3_1.ParameterObject[];\n\t};\n};\n\nexport type SingleHeaderFn = (key: string) => string | undefined;\nexport type MultiHeaderFn = () => EndpointHeaders;\n/**\n * Type representing HTTP headers as a Map.\n */\nexport type EndpointHeaders = Map<string, string>;\n\n/**\n * Function type for retrieving HTTP header values.\n * Supports two calling patterns:\n * - `header(key)` - Get a single header value (case-insensitive)\n * - `header()` - Get all headers as a plain object\n *\n * @example\n * ```typescript\n * // Get single header\n * const contentType = header('content-type');\n *\n * // Get all headers\n * const allHeaders = header();\n * // { 'content-type': 'application/json', 'host': 'example.com', ... }\n * ```\n */\nexport interface HeaderFn {\n\t(): Record<string, string>;\n\t(key: string): string | undefined;\n}\n\n/**\n * Function type for retrieving cookie values.\n * Supports two calling patterns:\n * - `cookie(name)` - Get a single cookie value\n * - `cookie()` - Get all cookies as a plain object\n *\n * @example\n * ```typescript\n * // Get single cookie\n * const sessionId = cookie('session');\n *\n * // Get all cookies\n * const allCookies = cookie();\n * // { session: 'abc123', theme: 'dark', ... }\n * ```\n */\nexport interface CookieFn {\n\t(): Record<string, string>;\n\t(name: string): string | undefined;\n}\n\n/**\n * Cookie options matching standard Set-Cookie attributes\n */\nexport interface CookieOptions {\n\tdomain?: string;\n\tpath?: string;\n\texpires?: Date;\n\tmaxAge?: number;\n\thttpOnly?: boolean;\n\tsecure?: boolean;\n\tsameSite?: 'strict' | 'lax' | 'none';\n}\n\n/**\n * Response metadata that handlers can set\n */\nexport interface ResponseMetadata {\n\theaders?: Record<string, string>;\n\tcookies?: Map<string, { value: string; options?: CookieOptions }>;\n\tstatus?: SuccessStatus;\n}\n\n/**\n * Return type for handlers that want to set response metadata\n */\nexport interface ResponseWithMetadata<T> {\n\tdata: T;\n\tmetadata: ResponseMetadata;\n}\n\n/**\n * Response builder for fluent API in handlers\n */\nexport class ResponseBuilder {\n\tprivate metadata: ResponseMetadata = {\n\t\theaders: {},\n\t\tcookies: new Map(),\n\t};\n\n\theader(key: string, value: string): this {\n\t\tthis.metadata.headers![key] = value;\n\t\treturn this;\n\t}\n\n\tcookie(name: string, value: string, options?: CookieOptions): this {\n\t\tthis.metadata.cookies?.set(name, { value, options });\n\t\treturn this;\n\t}\n\n\tdeleteCookie(\n\t\tname: string,\n\t\toptions?: Pick<CookieOptions, 'domain' | 'path'>,\n\t): this {\n\t\tthis.metadata.cookies?.set(name, {\n\t\t\tvalue: '',\n\t\t\toptions: { ...options, maxAge: 0, expires: new Date(0) },\n\t\t});\n\t\treturn this;\n\t}\n\n\tstatus(code: SuccessStatus): this {\n\t\tthis.metadata.status = code;\n\t\treturn this;\n\t}\n\n\tsend<T>(data: T): ResponseWithMetadata<T> {\n\t\treturn { data, metadata: this.metadata };\n\t}\n\n\tgetMetadata(): ResponseMetadata {\n\t\treturn this.metadata;\n\t}\n}\n\n/**\n * Base context properties that are always available\n */\ntype BaseEndpointContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\t/** Injected service instances */\n\tservices: ServiceRecord<TServices>;\n\t/** Logger instance for this request */\n\tlogger: TLogger;\n\t/** Function to retrieve request headers */\n\theader: HeaderFn;\n\t/** Function to retrieve request cookies */\n\tcookie: CookieFn;\n\t/** Session data extracted by getSession */\n\tsession: TSession;\n};\n\n/**\n * Conditional auditor context - only present when audit storage is configured\n */\ntype AuditorContext<\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTAuditStorage = undefined,\n> = TAuditStorage extends undefined\n\t? {}\n\t: {\n\t\t\t/**\n\t\t\t * Auditor instance for recording audit events.\n\t\t\t * Only present when audit storage is configured on the endpoint.\n\t\t\t * When a transactional database is used for audit storage,\n\t\t\t * the auditor is pre-configured with the transaction context.\n\t\t\t */\n\t\t\tauditor: Auditor<TAuditAction>;\n\t\t};\n\n/**\n * Conditional database context - only present when database service is configured\n */\ntype DatabaseContext<TDatabase = undefined> = TDatabase extends undefined\n\t? {}\n\t: {\n\t\t\t/**\n\t\t\t * Database instance for this request.\n\t\t\t * When audit storage is configured and uses the same database,\n\t\t\t * this will be the transaction for ACID compliance.\n\t\t\t * Otherwise, it's the raw database connection.\n\t\t\t */\n\t\t\tdb: TDatabase;\n\t\t};\n\n/**\n * The execution context provided to endpoint handlers.\n * Contains all parsed input data, services, logger, headers, cookies, and session.\n *\n * @template Input - The input schemas (body, query, params)\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template TSession - Session data type\n * @template TAuditAction - Audit action types (when auditor is configured)\n * @template TDatabase - Database type (when database service is configured)\n * @template TAuditStorage - Audit storage type (determines if auditor is present)\n */\nexport type EndpointContext<\n\tInput extends EndpointSchemas | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTAuditStorage = undefined,\n> = BaseEndpointContext<TServices, TLogger, TSession> &\n\tInferComposableStandardSchema<Input> &\n\tAuditorContext<TAuditAction, TAuditStorage> &\n\tDatabaseContext<TDatabase>;\n\n/**\n * Handler function type for endpoint implementations.\n *\n * @template TInput - Input schemas for validation\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template OutSchema - Output schema for response validation\n * @template TSession - Session data type\n *\n * @param ctx - The endpoint execution context\n * @param response - Response builder for setting cookies, headers, and status\n * @returns The response data (validated if OutSchema is provided) or ResponseWithMetadata\n *\n * @example\n * ```typescript\n * // Simple response\n * const handler: EndpointHandler<Input, [UserService], Logger, UserSchema> =\n * async ({ params, services }) => {\n * return await services.users.findById(params.id);\n * };\n *\n * // With response builder\n * const handler: EndpointHandler<Input, [UserService], Logger, UserSchema> =\n * async ({ params, services }, response) => {\n * const user = await services.users.findById(params.id);\n * return response.header('X-User-Id', user.id).send(user);\n * };\n * ```\n */\nexport type EndpointHandler<\n\tTInput extends EndpointSchemas | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTSession = unknown,\n\tTDatabase = undefined,\n\tTAuditStorage = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = (\n\tctx: EndpointContext<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTAuditStorage\n\t>,\n\tresponse: ResponseBuilder,\n) => OutSchema extends StandardSchemaV1\n\t?\n\t\t\t| InferStandardSchema<OutSchema>\n\t\t\t| ResponseWithMetadata<InferStandardSchema<OutSchema>>\n\t\t\t| Promise<InferStandardSchema<OutSchema>>\n\t\t\t| Promise<ResponseWithMetadata<InferStandardSchema<OutSchema>>>\n\t:\n\t\t\t| unknown\n\t\t\t| ResponseWithMetadata<unknown>\n\t\t\t| Promise<unknown>\n\t\t\t| Promise<ResponseWithMetadata<unknown>>;\n\n/**\n * HTTP success status codes that can be returned by endpoints.\n */\nexport enum SuccessStatus {\n\t/** Standard response for successful HTTP requests */\n\tOK = 200,\n\t/** Request has been fulfilled and resulted in a new resource being created */\n\tCreated = 201,\n\t/** Request has been accepted for processing, but processing is not complete */\n\tAccepted = 202,\n\t/** Server successfully processed the request but is not returning any content */\n\tNoContent = 204,\n\t/** Server successfully processed the request and is not returning any content, client should reset the document view */\n\tResetContent = 205,\n\t/** Server is delivering only part of the resource due to a range header */\n\tPartialContent = 206,\n}\n\nexport type EndpointOutput<T> =\n\tT extends Endpoint<any, any, any, infer OutSchema, any, any, any, any>\n\t\t? InferStandardSchema<OutSchema>\n\t\t: never;\n\nexport type EndpointEvent<T> =\n\tT extends Endpoint<any, any, any, any, any, any, any, infer TEventPublisher>\n\t\t? ExtractPublisherMessage<TEventPublisher>\n\t\t: never;\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-DdIlpxAd.mjs";
2
- import { Function, FunctionHandler } from "./Function-DN2G6OT5.mjs";
3
- import { Authorizer } from "./Authorizer-gWxYsGEp.mjs";
1
+ import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-Dw-iLd3Y.mjs";
2
+ import { Function, FunctionHandler } from "./Function-DBmU3uGI.mjs";
3
+ import { Authorizer } from "./Authorizer-DCcYOx3h.mjs";
4
4
  import { ComponentCollector, OpenApiSchemaOptions } from "@geekmidas/schema/openapi";
5
5
  import { Service, ServiceRecord } from "@geekmidas/services";
6
6
  import { AuditActor, AuditStorage, AuditableAction, Auditor, ExtractAuditPayload, ExtractAuditType } from "@geekmidas/audit";
@@ -729,4 +729,4 @@ type EndpointOutput<T> = T extends Endpoint<any, any, any, infer OutSchema, any,
729
729
  type EndpointEvent<T> = T extends Endpoint<any, any, any, any, any, any, any, infer TEventPublisher> ? ExtractPublisherMessage<TEventPublisher> : never;
730
730
  //#endregion
731
731
  export { ActorExtractor, AuthorizeContext, AuthorizeFn, ConvertRouteParams, CookieFn, CookieOptions, Endpoint, EndpointAuditorConfig, EndpointContext, EndpointEvent, EndpointHandler, EndpointHeaders, EndpointInput, EndpointOpenApiSchema, EndpointOptions, EndpointOutput, EndpointSchemas, HeaderFn, MappedAudit, MultiHeaderFn, RLS_BYPASS, ResponseBuilder, ResponseMetadata, ResponseWithMetadata, RlsBypass, RlsConfig, RlsContext, RlsContextExtractor, SessionContext, SessionFn, SingleHeaderFn, SuccessStatus };
732
- //# sourceMappingURL=Endpoint-BdwG75G_.d.mts.map
732
+ //# sourceMappingURL=Endpoint-Dlv7nxgj.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Endpoint-Dlv7nxgj.d.mts","names":[],"sources":["../src/endpoints/audit.ts","../src/endpoints/rls.ts","../src/endpoints/Endpoint.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_Construct = require('./Construct-Ba5cMxib.cjs');
3
- const require_Function = require('./Function-DDZb1525.cjs');
2
+ const require_Construct = require('./Construct-BlnyYtJC.cjs');
3
+ const require_Function = require('./Function-iLKrUXuw.cjs');
4
+ const lodash_set = require_chunk.__toESM(require("lodash.set"));
4
5
  const __geekmidas_schema_conversion = require_chunk.__toESM(require("@geekmidas/schema/conversion"));
5
6
  const __geekmidas_schema_openapi = require_chunk.__toESM(require("@geekmidas/schema/openapi"));
6
7
  const lodash_pick = require_chunk.__toESM(require("lodash.pick"));
7
- const lodash_set = require_chunk.__toESM(require("lodash.set"));
8
8
 
9
9
  //#region src/endpoints/Endpoint.ts
10
10
  /**
@@ -368,14 +368,14 @@ var ResponseBuilder = class {
368
368
  return this;
369
369
  }
370
370
  cookie(name, value, options) {
371
- this.metadata.cookies.set(name, {
371
+ this.metadata.cookies?.set(name, {
372
372
  value,
373
373
  options
374
374
  });
375
375
  return this;
376
376
  }
377
377
  deleteCookie(name, options) {
378
- this.metadata.cookies.set(name, {
378
+ this.metadata.cookies?.set(name, {
379
379
  value: "",
380
380
  options: {
381
381
  ...options,
@@ -437,4 +437,4 @@ Object.defineProperty(exports, 'SuccessStatus', {
437
437
  return SuccessStatus;
438
438
  }
439
439
  });
440
- //# sourceMappingURL=Endpoint-BVGZXFyV.cjs.map
440
+ //# sourceMappingURL=Endpoint-DxvnlfXg.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Endpoint-DxvnlfXg.cjs","names":["Function","endpoints: Endpoint<any, any, any, any, any, any>[]","options?: OpenApiSchemaOptions","input: unknown","key: K","body: unknown","status: number","headers: Record<string, string>","key?: string","cookieHeader: string | undefined","name?: string","name: string","value: string","options?: CookieOptions","ctx: EndpointContext<TInput, TServices, TLogger, TSession>","ctx: EndpointContext<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage\n\t\t>","response: ResponseBuilder","obj: any","ConstructType","response: T | ResponseWithMetadata<T>","componentCollector?: ComponentCollector","operation: OpenAPIV3_1.OperationObject","pathParameters: OpenAPIV3_1.ParameterObject[]","queryParameters: OpenAPIV3_1.ParameterObject[]","routeObject: any","key: string","options?: Pick<CookieOptions, 'domain' | 'path'>","code: SuccessStatus","data: T"],"sources":["../src/endpoints/Endpoint.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n\tMappedEvent,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { RateLimitConfig } from '@geekmidas/rate-limit';\nimport type {\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\tconvertSchemaWithComponents,\n\tconvertStandardSchemaToJsonSchema,\n} from '@geekmidas/schema/conversion';\nimport {\n\tbuildOpenApiSchema,\n\ttype ComponentCollector,\n\ttype OpenApiSchemaOptions,\n} from '@geekmidas/schema/openapi';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport pick from 'lodash.pick';\nimport set from 'lodash.set';\nimport type { OpenAPIV3_1 } from 'openapi-types';\nimport { ConstructType } from '../Construct';\nimport { Function, type FunctionHandler } from '../functions';\nimport type { HttpMethod, LowerHttpMethod, RemoveUndefined } from '../types';\nimport type { Authorizer } from './Authorizer';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { RlsConfig } from './rls';\n\n/**\n * Represents an HTTP endpoint that can handle requests with type-safe input/output validation,\n * dependency injection, session management, and authorization.\n *\n * @template TRoute - The route path string with parameter placeholders (e.g., '/users/:id')\n * @template TMethod - The HTTP method (GET, POST, PUT, DELETE, PATCH)\n * @template TInput - The input schema definition for body, query, and path parameters\n * @template OutSchema - The output schema for response validation\n * @template TServices - Array of service dependencies to inject\n * @template TLogger - The logger instance type\n * @template TSession - The session data type\n *\n * @extends Function - Base function construct for handler execution\n *\n * @example\n * ```typescript\n * const endpoint = new Endpoint({\n * route: '/users/:id',\n * method: 'GET',\n * input: { params: userIdSchema },\n * output: userSchema,\n * fn: async ({ params }) => getUserById(params.id)\n * });\n * ```\n */\nexport class Endpoint<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> extends Function<\n\tTInput,\n\tTServices,\n\tTLogger,\n\tOutSchema,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName,\n\tTAuditAction,\n\tFunctionHandler<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTDatabase,\n\t\tTAuditStorage,\n\t\tTAuditAction\n\t>\n> {\n\toperationId?: string;\n\t/** The route path pattern with parameter placeholders */\n\troute: TRoute;\n\t/** The HTTP method for this endpoint */\n\tmethod: TMethod;\n\t/** Optional description for OpenAPI documentation */\n\tdescription?: string;\n\t/** Optional tags for OpenAPI documentation */\n\ttags?: string[];\n\t/** The HTTP success status code to return (default: 200) */\n\tpublic readonly status: SuccessStatus;\n\t/** Default headers to apply to all responses */\n\tpublic readonly defaultHeaders: Record<string, string> = {};\n\t/** Function to extract session data from the request context */\n\tpublic getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>\n\t\t({}) as TSession;\n\t/** Function to determine if the request is authorized */\n\tpublic authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;\n\t/** Optional rate limiting configuration */\n\tpublic rateLimit?: RateLimitConfig;\n\t/** Optional authorizer for this endpoint */\n\tpublic authorizer?: Authorizer;\n\t/** Optional actor extractor for audit records */\n\tpublic actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n\t/** Declarative audit definitions */\n\tpublic audits: MappedAudit<TAuditAction, OutSchema>[] = [];\n\t/** Database service for this endpoint */\n\tpublic declare databaseService?: Service<TDatabaseServiceName, TDatabase>;\n\t/** RLS configuration for this endpoint */\n\tpublic rlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n\t/** Whether to bypass RLS for this endpoint */\n\tpublic rlsBypass?: boolean;\n\t/** The endpoint handler function */\n\tprivate endpointFn!: EndpointHandler<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTDatabase,\n\t\tTAuditStorage,\n\t\tTAuditAction\n\t>;\n\n\t/**\n\t * Builds a complete OpenAPI 3.1 schema from an array of endpoints.\n\t *\n\t * @param endpoints - Array of endpoint instances to document\n\t * @param options - Optional configuration for OpenAPI generation\n\t * @returns OpenAPI 3.1 specification object\n\t *\n\t * @example\n\t * ```typescript\n\t * const schema = await Endpoint.buildOpenApiSchema([\n\t * getUserEndpoint,\n\t * createUserEndpoint\n\t * ], {\n\t * title: 'User API',\n\t * version: '1.0.0'\n\t * });\n\t * ```\n\t */\n\tstatic async buildOpenApiSchema(\n\t\tendpoints: Endpoint<any, any, any, any, any, any>[],\n\t\toptions?: OpenApiSchemaOptions,\n\t) {\n\t\treturn buildOpenApiSchema(endpoints, options);\n\t}\n\n\t/**\n\t * Gets the full path including HTTP method and route.\n\t * @returns Formatted string like 'GET /users/{id}'\n\t */\n\tget fullPath() {\n\t\treturn `${this.method} ${this._path}` as const;\n\t}\n\n\t/**\n\t * Parses and validates input data for a specific input type (body, query, params).\n\t *\n\t * @param input - The raw input data to validate\n\t * @param key - The input type key ('body', 'query', or 'params')\n\t * @returns The validated input data for the specified key\n\t * @throws {UnprocessableEntityError} When validation fails\n\t */\n\tasync parseInput<K extends keyof TInput>(\n\t\tinput: unknown,\n\t\tkey: K,\n\t): Promise<InferComposableStandardSchema<TInput[K]>> {\n\t\tconst schema = this.input?.[key];\n\t\treturn Endpoint.parseSchema(schema as StandardSchemaV1, input) as Promise<\n\t\t\tInferComposableStandardSchema<TInput[K]>\n\t\t>;\n\t}\n\n\t/**\n\t * Parses and validates the request body against the body schema.\n\t *\n\t * @param body - The raw request body to validate\n\t * @returns The validated body data\n\t * @throws {UnprocessableEntityError} When body validation fails\n\t */\n\tasync parseBody(body: unknown): Promise<InferStandardSchema<TInput['body']>> {\n\t\treturn this.parseInput(body, 'body') as Promise<\n\t\t\tInferStandardSchema<TInput['body']>\n\t\t>;\n\t}\n\n\tstatic isSuccessStatus(status: number): boolean {\n\t\treturn status >= 200 && status < 300;\n\t}\n\n\t/**\n\t * Creates a case-insensitive header lookup function from a headers object.\n\t *\n\t * @param headers - Object containing header key-value pairs\n\t * @returns Function to retrieve header values by case-insensitive key, or all headers\n\t *\n\t * @example\n\t * ```typescript\n\t * const headerFn = Endpoint.createHeaders({ 'Content-Type': 'application/json' });\n\t * headerFn('content-type'); // Returns 'application/json'\n\t * headerFn(); // Returns { 'content-type': 'application/json' }\n\t * ```\n\t */\n\tstatic createHeaders(headers: Record<string, string>): HeaderFn {\n\t\tconst headerMap = new Map<string, string>();\n\t\tfor (const [k, v] of Object.entries(headers)) {\n\t\t\tconst key = k.toLowerCase();\n\t\t\theaderMap.set(key, v);\n\t\t}\n\n\t\tfunction get(): Record<string, string>;\n\t\tfunction get(key: string): string | undefined;\n\t\tfunction get(key?: string): string | undefined | Record<string, string> {\n\t\t\tif (key === undefined) {\n\t\t\t\t// Return all headers as plain object\n\t\t\t\treturn Object.fromEntries(headerMap.entries());\n\t\t\t}\n\t\t\treturn headerMap.get(key.toLowerCase());\n\t\t}\n\n\t\treturn get;\n\t}\n\n\t/**\n\t * Parses cookie string and creates a cookie lookup function.\n\t *\n\t * @param cookieHeader - The Cookie header value\n\t * @returns Function to retrieve cookie values by name, or all cookies\n\t *\n\t * @example\n\t * ```typescript\n\t * const cookieFn = Endpoint.createCookies('session=abc123; theme=dark');\n\t * cookieFn('session'); // Returns 'abc123'\n\t * cookieFn(); // Returns { session: 'abc123', theme: 'dark' }\n\t * ```\n\t */\n\tstatic createCookies(cookieHeader: string | undefined): CookieFn {\n\t\tconst cookieMap = new Map<string, string>();\n\n\t\tif (cookieHeader) {\n\t\t\t// Parse cookie string: \"name1=value1; name2=value2\"\n\t\t\tconst cookies = cookieHeader.split(';');\n\t\t\tfor (const cookie of cookies) {\n\t\t\t\tconst [name, ...valueParts] = cookie.trim().split('=');\n\t\t\t\tif (name) {\n\t\t\t\t\tconst value = valueParts.join('='); // Handle values with = in them\n\t\t\t\t\tcookieMap.set(name, decodeURIComponent(value));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction get(): Record<string, string>;\n\t\tfunction get(name: string): string | undefined;\n\t\tfunction get(name?: string): string | undefined | Record<string, string> {\n\t\t\tif (name === undefined) {\n\t\t\t\t// Return all cookies as plain object\n\t\t\t\treturn Object.fromEntries(cookieMap.entries());\n\t\t\t}\n\t\t\treturn cookieMap.get(name);\n\t\t}\n\n\t\treturn get;\n\t}\n\n\t/**\n\t * Formats a cookie as a Set-Cookie header string.\n\t *\n\t * @param name - Cookie name\n\t * @param value - Cookie value\n\t * @param options - Cookie options (httpOnly, secure, sameSite, etc.)\n\t * @returns Formatted Set-Cookie header string\n\t *\n\t * @example\n\t * ```typescript\n\t * const header = Endpoint.formatCookieHeader('session', 'abc123', {\n\t * httpOnly: true,\n\t * secure: true,\n\t * sameSite: 'strict',\n\t * maxAge: 3600\n\t * });\n\t * // Returns: \"session=abc123; Max-Age=3600; HttpOnly; Secure; SameSite=Strict\"\n\t * ```\n\t */\n\tstatic formatCookieHeader(\n\t\tname: string,\n\t\tvalue: string,\n\t\toptions?: CookieOptions,\n\t): string {\n\t\tlet cookie = `${name}=${value}`;\n\n\t\tif (options) {\n\t\t\tif (options.domain) cookie += `; Domain=${options.domain}`;\n\t\t\tif (options.path) cookie += `; Path=${options.path}`;\n\t\t\tif (options.expires)\n\t\t\t\tcookie += `; Expires=${options.expires.toUTCString()}`;\n\t\t\tif (options.maxAge !== undefined) cookie += `; Max-Age=${options.maxAge}`;\n\t\t\tif (options.httpOnly) cookie += '; HttpOnly';\n\t\t\tif (options.secure) cookie += '; Secure';\n\t\t\tif (options.sameSite) {\n\t\t\t\tcookie += `; SameSite=${options.sameSite.charAt(0).toUpperCase() + options.sameSite.slice(1)}`;\n\t\t\t}\n\t\t}\n\n\t\treturn cookie;\n\t}\n\n\t/**\n\t * Extracts and refines input data from the endpoint context.\n\t *\n\t * @param ctx - The endpoint execution context\n\t * @returns Object containing only the input data (body, query, params)\n\t * @internal\n\t */\n\trefineInput(\n\t\tctx: EndpointContext<TInput, TServices, TLogger, TSession>,\n\t): InferComposableStandardSchema<TInput> {\n\t\tconst input = pick(ctx, [\n\t\t\t'body',\n\t\t\t'query',\n\t\t\t'params',\n\t\t]) as InferComposableStandardSchema<TInput>;\n\n\t\treturn input;\n\t}\n\n\thandler = (\n\t\tctx: EndpointContext<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage\n\t\t>,\n\t\tresponse: ResponseBuilder,\n\t): OutSchema extends StandardSchemaV1\n\t\t?\n\t\t\t\t| InferStandardSchema<OutSchema>\n\t\t\t\t| ResponseWithMetadata<InferStandardSchema<OutSchema>>\n\t\t\t\t| Promise<InferStandardSchema<OutSchema>>\n\t\t\t\t| Promise<ResponseWithMetadata<InferStandardSchema<OutSchema>>>\n\t\t:\n\t\t\t\t| any\n\t\t\t\t| ResponseWithMetadata<any>\n\t\t\t\t| Promise<any>\n\t\t\t\t| Promise<ResponseWithMetadata<any>> => {\n\t\t// Apply default headers to response builder\n\t\tfor (const [key, value] of Object.entries(this.defaultHeaders)) {\n\t\t\tresponse.header(key, value);\n\t\t}\n\n\t\t// Build context object, conditionally including auditor and db\n\t\tconst handlerCtx = {\n\t\t\t...this.refineInput(ctx),\n\t\t\tservices: ctx.services,\n\t\t\tlogger: ctx.logger,\n\t\t\theader: ctx.header,\n\t\t\tcookie: ctx.cookie,\n\t\t\tsession: ctx.session,\n\t\t\t// These are conditionally present based on configuration\n\t\t\t...('auditor' in ctx && { auditor: ctx.auditor }),\n\t\t\t...('db' in ctx && { db: ctx.db }),\n\t\t} as EndpointContext<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage\n\t\t>;\n\n\t\treturn this.endpointFn(handlerCtx, response);\n\t};\n\n\t/**\n\t * Type guard to check if an object is an Endpoint instance.\n\t *\n\t * @param obj - The object to check\n\t * @returns True if the object is an Endpoint\n\t */\n\tstatic isEndpoint(obj: any): obj is Endpoint<any, any, any, any> {\n\t\treturn Boolean(\n\t\t\tobj &&\n\t\t\t\t(obj as Function).__IS_FUNCTION__ === true &&\n\t\t\t\tobj.type === ConstructType.Endpoint,\n\t\t);\n\t}\n\n\t/**\n\t * Helper to check if response has metadata\n\t */\n\tstatic hasMetadata<T>(\n\t\tresponse: T | ResponseWithMetadata<T>,\n\t): response is ResponseWithMetadata<T> {\n\t\treturn (\n\t\t\tresponse !== null &&\n\t\t\ttypeof response === 'object' &&\n\t\t\t'data' in response &&\n\t\t\t'metadata' in response\n\t\t);\n\t}\n\n\t/**\n\t * Converts Express-style route params to OpenAPI format.\n\t * @returns Route with ':param' converted to '{param}'\n\t * @internal\n\t */\n\tget _path() {\n\t\treturn this.route.replace(/:(\\w+)/g, '{$1}') as ConvertRouteParams<TRoute>;\n\t}\n\n\t/**\n\t * Generates OpenAPI 3.1 schema for this endpoint.\n\t *\n\t * @returns OpenAPI route definition with operation details\n\t */\n\tasync toOpenApi3Route(\n\t\tcomponentCollector?: ComponentCollector,\n\t): Promise<EndpointOpenApiSchema<TRoute, TMethod>> {\n\t\tconst operation: OpenAPIV3_1.OperationObject = {\n\t\t\toperationId: this.operationId,\n\t\t\t...(this.description && { description: this.description }),\n\t\t\t...(this.tags && this.tags.length > 0 && { tags: this.tags }),\n\t\t\tresponses: {\n\t\t\t\t'200': {\n\t\t\t\t\tdescription: 'Successful response',\n\t\t\t\t} as OpenAPIV3_1.ResponseObject,\n\t\t\t},\n\t\t};\n\n\t\t// Add response schema\n\t\tif (this.outputSchema) {\n\t\t\tconst responseSchema = await convertSchemaWithComponents(\n\t\t\t\tthis.outputSchema,\n\t\t\t\tcomponentCollector,\n\t\t\t);\n\t\t\tif (responseSchema) {\n\t\t\t\tset(\n\t\t\t\t\toperation,\n\t\t\t\t\t['responses', '200', 'content', 'application/json', 'schema'],\n\t\t\t\t\tresponseSchema,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Separate path and query parameters\n\t\tconst pathParameters: OpenAPIV3_1.ParameterObject[] = [];\n\t\tconst queryParameters: OpenAPIV3_1.ParameterObject[] = [];\n\n\t\t// Since the EndpointBuilder doesn't have body/search/params methods yet,\n\t\t// and the input is a composite type, we need to check if input exists\n\t\t// and has the expected shape\n\t\tif (this.input && typeof this.input === 'object') {\n\t\t\t// Add request body for methods that support it\n\t\t\tif (\n\t\t\t\t['POST', 'PUT', 'PATCH'].includes(this.method) &&\n\t\t\t\t'body' in this.input &&\n\t\t\t\tthis.input.body\n\t\t\t) {\n\t\t\t\tconst bodySchema = await convertSchemaWithComponents(\n\t\t\t\t\tthis.input.body as StandardSchemaV1,\n\t\t\t\t\tcomponentCollector,\n\t\t\t\t);\n\t\t\t\tif (bodySchema) {\n\t\t\t\t\tset(operation, ['requestBody'], {\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t'application/json': {\n\t\t\t\t\t\t\t\tschema: bodySchema,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add path parameters\n\t\t\tif ('params' in this.input && this.input.params) {\n\t\t\t\tconst paramsSchema = await convertStandardSchemaToJsonSchema(\n\t\t\t\t\tthis.input.params as StandardSchemaV1,\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tparamsSchema &&\n\t\t\t\t\tparamsSchema.type === 'object' &&\n\t\t\t\t\tparamsSchema.properties\n\t\t\t\t) {\n\t\t\t\t\tfor (const [name, schema] of Object.entries(\n\t\t\t\t\t\tparamsSchema.properties,\n\t\t\t\t\t)) {\n\t\t\t\t\t\tpathParameters.push({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tin: 'path',\n\t\t\t\t\t\t\trequired: paramsSchema.required?.includes(name) ?? true,\n\t\t\t\t\t\t\tschema: schema as any,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add query parameters\n\t\t\tif ('query' in this.input && this.input.query) {\n\t\t\t\tconst querySchema = await convertStandardSchemaToJsonSchema(\n\t\t\t\t\tthis.input.query,\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\tquerySchema &&\n\t\t\t\t\tquerySchema.type === 'object' &&\n\t\t\t\t\tquerySchema.properties\n\t\t\t\t) {\n\t\t\t\t\tfor (const [name, schema] of Object.entries(querySchema.properties)) {\n\t\t\t\t\t\tqueryParameters.push({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tin: 'query',\n\t\t\t\t\t\t\trequired: querySchema.required?.includes(name) ?? false,\n\t\t\t\t\t\t\tschema: schema as any,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Only add query parameters to the operation\n\t\tif (queryParameters.length > 0) {\n\t\t\toperation.parameters = queryParameters;\n\t\t}\n\n\t\t// Build the route object with path parameters at the route level\n\t\tconst routeObject: any = {};\n\t\tif (pathParameters.length > 0) {\n\t\t\trouteObject.parameters = pathParameters;\n\t\t}\n\t\trouteObject[this.method.toLowerCase()] = operation;\n\n\t\treturn {\n\t\t\t[this._path]: routeObject,\n\t\t} as EndpointOpenApiSchema<TRoute, TMethod>;\n\t}\n\n\t/**\n\t * Creates a new Endpoint instance.\n\t *\n\t * @param options - Configuration options for the endpoint\n\t * @param options.fn - The handler function to execute\n\t * @param options.method - HTTP method\n\t * @param options.route - Route path with parameter placeholders\n\t * @param options.description - Optional description for documentation\n\t * @param options.input - Input schemas for validation\n\t * @param options.logger - Logger instance\n\t * @param options.output - Output schema for response validation\n\t * @param options.services - Service dependencies\n\t * @param options.timeout - Execution timeout in milliseconds\n\t * @param options.getSession - Session extraction function\n\t * @param options.authorize - Authorization check function\n\t * @param options.status - Success HTTP status code (default: 200)\n\t * @param options.authorizer - Optional authorizer configuration\n\t */\n\tconstructor({\n\t\tfn,\n\t\tmethod,\n\t\troute,\n\t\tdescription,\n\t\ttags,\n\t\tinput,\n\t\tlogger,\n\t\toutput: outputSchema,\n\t\tservices,\n\t\ttimeout,\n\t\tmemorySize,\n\t\tgetSession,\n\t\tauthorize,\n\t\trateLimit,\n\t\tstatus = SuccessStatus.OK,\n\t\tpublisherService,\n\t\tevents,\n\t\tauthorizer,\n\t\tauditorStorageService,\n\t\tactorExtractor,\n\t\taudits,\n\t\tdatabaseService,\n\t\trlsConfig,\n\t\trlsBypass,\n\t}: EndpointOptions<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>) {\n\t\tsuper(\n\t\t\tfn as unknown as FunctionHandler<TInput, TServices, TLogger, OutSchema>,\n\t\t\ttimeout,\n\t\t\tConstructType.Endpoint,\n\t\t\tinput,\n\t\t\toutputSchema,\n\t\t\tservices,\n\t\t\tlogger,\n\t\t\tpublisherService,\n\t\t\tevents,\n\t\t\tmemorySize,\n\t\t\tauditorStorageService,\n\t\t);\n\n\t\tthis.route = route;\n\t\tthis.method = method;\n\t\tthis.description = description;\n\t\tthis.tags = tags;\n\t\tthis.status = status;\n\t\tthis.endpointFn = fn;\n\n\t\tif (getSession) {\n\t\t\tthis.getSession = getSession;\n\t\t}\n\n\t\tif (authorize) {\n\t\t\tthis.authorize = authorize;\n\t\t}\n\n\t\tif (rateLimit) {\n\t\t\tthis.rateLimit = rateLimit;\n\t\t}\n\n\t\tif (authorizer) {\n\t\t\tthis.authorizer = authorizer;\n\t\t}\n\n\t\tif (actorExtractor) {\n\t\t\tthis.actorExtractor = actorExtractor;\n\t\t}\n\n\t\tif (audits) {\n\t\t\tthis.audits = audits;\n\t\t}\n\n\t\tif (databaseService) {\n\t\t\tthis.databaseService = databaseService;\n\t\t}\n\n\t\tif (rlsConfig) {\n\t\t\tthis.rlsConfig = rlsConfig;\n\t\t}\n\n\t\tif (rlsBypass) {\n\t\t\tthis.rlsBypass = rlsBypass;\n\t\t}\n\t}\n}\n\n/**\n * Defines the input schema structure for an endpoint.\n *\n * @template TBody - Schema for request body validation\n * @template TSearch - Schema for query string validation\n * @template TParams - Schema for URL path parameters validation\n *\n * @example\n * ```typescript\n * type UserInput = EndpointInput<\n * typeof createUserBodySchema,\n * typeof userQuerySchema,\n * typeof userParamsSchema\n * >;\n * ```\n */\nexport type EndpointInput<\n\tTBody extends StandardSchemaV1 | undefined = undefined,\n\tTSearch extends StandardSchemaV1 | undefined = undefined,\n\tTParams extends StandardSchemaV1 | undefined = undefined,\n> = RemoveUndefined<{\n\tbody: TBody;\n\tsearch: TSearch;\n\tparams: TParams;\n}>;\n\n/**\n * Configuration options for creating an Endpoint instance.\n *\n * @template TRoute - The route path string\n * @template TMethod - The HTTP method\n * @template TInput - Input schema definitions\n * @template TOutput - Output schema definition\n * @template TServices - Service dependencies array\n * @template TLogger - Logger type\n * @template TSession - Session data type\n */\nexport interface EndpointOptions<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutput extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> {\n\t/** The route path with parameter placeholders */\n\troute: TRoute;\n\t/** The HTTP method for this endpoint */\n\tmethod: TMethod;\n\t/** The handler function that implements the endpoint logic */\n\tfn: EndpointHandler<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutput,\n\t\tTSession,\n\t\tTDatabase,\n\t\tTAuditStorage,\n\t\tTAuditAction\n\t>;\n\t/** Optional authorization check function */\n\tauthorize: AuthorizeFn<TServices, TLogger, TSession> | undefined;\n\t/** Optional description for documentation */\n\tdescription: string | undefined;\n\t/** Optional tags for OpenAPI documentation */\n\ttags?: string[];\n\t/** Optional execution timeout in milliseconds */\n\ttimeout: number | undefined;\n\t/** Optional memory size in MB for serverless deployments */\n\tmemorySize: number | undefined;\n\t/** Input validation schemas */\n\tinput: TInput | undefined;\n\t/** Output validation schema */\n\toutput: TOutput | undefined;\n\t/** Service dependencies to inject */\n\tservices: TServices;\n\t/** Logger instance */\n\tlogger: TLogger;\n\t/** Optional session extraction function */\n\tgetSession: SessionFn<TServices, TLogger, TSession, TDatabase> | undefined;\n\t/** Optional rate limiting configuration */\n\trateLimit?: RateLimitConfig;\n\t/** Success HTTP status code */\n\tstatus: SuccessStatus | undefined;\n\t/**\n\t * Event publisher service for publishing events from this endpoint\n\t */\n\tpublisherService?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n\tevents?: MappedEvent<TEventPublisher, OutSchema>[];\n\t/** Optional authorizer configuration */\n\tauthorizer?: Authorizer;\n\t/**\n\t * Auditor storage service for persisting audit records from this endpoint\n\t */\n\tauditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>;\n\t/** Optional actor extractor function for audit records */\n\tactorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n\t/** Declarative audit definitions */\n\taudits?: MappedAudit<TAuditAction, OutSchema>[];\n\t/** Database service for this endpoint */\n\tdatabaseService?: Service<TDatabaseServiceName, TDatabase>;\n\t/** RLS configuration for this endpoint */\n\trlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n\t/** Whether to bypass RLS for this endpoint */\n\trlsBypass?: boolean;\n}\n\n/**\n * Defines the possible input schema types for an endpoint.\n * Each property represents a different part of the HTTP request.\n */\nexport type EndpointSchemas = Partial<{\n\t/** Schema for URL path parameters (e.g., /users/:id) */\n\tparams: StandardSchemaV1;\n\t/** Schema for query string parameters */\n\tquery: StandardSchemaV1;\n\t/** Schema for request body (POST, PUT, PATCH) */\n\tbody: StandardSchemaV1;\n}>;\n\nexport type AuthorizeContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n\tsession: TSession;\n};\n/**\n * Function type for endpoint authorization checks.\n *\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template TSession - Session data type\n *\n * @param ctx - Context containing services, logger, headers, and session\n * @returns Boolean indicating if the request is authorized\n *\n * @example\n * ```typescript\n * const authorize: AuthorizeFn = ({ session }) => {\n * return session.userId !== undefined;\n * };\n * ```\n */\nexport type AuthorizeFn<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = (\n\tctx: AuthorizeContext<TServices, TLogger, TSession>,\n) => Promise<boolean> | boolean;\n\n/**\n * Base session context without database\n */\ntype BaseSessionContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n};\n\n/**\n * Conditional database context for session - only present when database service is configured\n */\ntype SessionDatabaseContext<TDatabase = undefined> = TDatabase extends undefined\n\t? {}\n\t: {\n\t\t\t/**\n\t\t\t * Database instance for session extraction.\n\t\t\t * Available when a database service is configured via `.database()`.\n\t\t\t * Useful for looking up user data from the database based on auth tokens.\n\t\t\t */\n\t\t\tdb: TDatabase;\n\t\t};\n\nexport type SessionContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTDatabase = undefined,\n> = BaseSessionContext<TServices, TLogger> & SessionDatabaseContext<TDatabase>;\n/**\n * Function type for extracting session data from a request.\n *\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template TSession - Session data type to extract\n * @template TDatabase - Database type (when database service is configured)\n *\n * @param ctx - Context containing services, logger, headers, and optionally database\n * @returns The extracted session data\n *\n * @example\n * ```typescript\n * // Without database\n * const getSession: SessionFn<Services, Logger, UserSession> = async ({ header, services }) => {\n * const token = header('authorization');\n * return await services.auth.verifyToken(token);\n * };\n *\n * // With database\n * const getSession: SessionFn<Services, Logger, UserSession, Database> = async ({ header, db }) => {\n * const token = header('authorization');\n * const user = await db.selectFrom('users').where('token', '=', token).executeTakeFirst();\n * return { userId: user?.id };\n * };\n * ```\n */\nexport type SessionFn<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTDatabase = undefined,\n> = (\n\tctx: SessionContext<TServices, TLogger, TDatabase>,\n) => Promise<TSession> | TSession;\n\n/**\n * Utility type that converts Express-style route parameters to OpenAPI format.\n * Transforms ':param' syntax to '{param}' syntax.\n *\n * @template T - The route string to convert\n *\n * @example\n * ```typescript\n * type Route1 = ConvertRouteParams<'/users/:id'>; // '/users/{id}'\n * type Route2 = ConvertRouteParams<'/users/:userId/posts/:postId'>; // '/users/{userId}/posts/{postId}'\n * ```\n */\nexport type ConvertRouteParams<T extends string> =\n\tT extends `${infer Start}:${infer Param}/${infer Rest}`\n\t\t? `${Start}{${Param}}/${ConvertRouteParams<Rest>}`\n\t\t: T extends `${infer Start}:${infer Param}`\n\t\t\t? `${Start}{${Param}}`\n\t\t\t: T;\n\n/**\n * Type representing the OpenAPI schema structure for an endpoint.\n *\n * @template TRoute - The route path\n * @template TMethod - The HTTP method\n *\n * @example\n * ```typescript\n * type Schema = EndpointOpenApiSchema<'/users/:id', 'GET'>;\n * // Results in: { '/users/{id}': { get: OperationObject, parameters?: ParameterObject[] } }\n * ```\n */\nexport type EndpointOpenApiSchema<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n> = {\n\t[key in ConvertRouteParams<TRoute>]: {\n\t\t[key in LowerHttpMethod<TMethod>]: OpenAPIV3_1.OperationObject<{}>;\n\t} & {\n\t\tparameters?: OpenAPIV3_1.ParameterObject[];\n\t};\n};\n\nexport type SingleHeaderFn = (key: string) => string | undefined;\nexport type MultiHeaderFn = () => EndpointHeaders;\n/**\n * Type representing HTTP headers as a Map.\n */\nexport type EndpointHeaders = Map<string, string>;\n\n/**\n * Function type for retrieving HTTP header values.\n * Supports two calling patterns:\n * - `header(key)` - Get a single header value (case-insensitive)\n * - `header()` - Get all headers as a plain object\n *\n * @example\n * ```typescript\n * // Get single header\n * const contentType = header('content-type');\n *\n * // Get all headers\n * const allHeaders = header();\n * // { 'content-type': 'application/json', 'host': 'example.com', ... }\n * ```\n */\nexport interface HeaderFn {\n\t(): Record<string, string>;\n\t(key: string): string | undefined;\n}\n\n/**\n * Function type for retrieving cookie values.\n * Supports two calling patterns:\n * - `cookie(name)` - Get a single cookie value\n * - `cookie()` - Get all cookies as a plain object\n *\n * @example\n * ```typescript\n * // Get single cookie\n * const sessionId = cookie('session');\n *\n * // Get all cookies\n * const allCookies = cookie();\n * // { session: 'abc123', theme: 'dark', ... }\n * ```\n */\nexport interface CookieFn {\n\t(): Record<string, string>;\n\t(name: string): string | undefined;\n}\n\n/**\n * Cookie options matching standard Set-Cookie attributes\n */\nexport interface CookieOptions {\n\tdomain?: string;\n\tpath?: string;\n\texpires?: Date;\n\tmaxAge?: number;\n\thttpOnly?: boolean;\n\tsecure?: boolean;\n\tsameSite?: 'strict' | 'lax' | 'none';\n}\n\n/**\n * Response metadata that handlers can set\n */\nexport interface ResponseMetadata {\n\theaders?: Record<string, string>;\n\tcookies?: Map<string, { value: string; options?: CookieOptions }>;\n\tstatus?: SuccessStatus;\n}\n\n/**\n * Return type for handlers that want to set response metadata\n */\nexport interface ResponseWithMetadata<T> {\n\tdata: T;\n\tmetadata: ResponseMetadata;\n}\n\n/**\n * Response builder for fluent API in handlers\n */\nexport class ResponseBuilder {\n\tprivate metadata: ResponseMetadata = {\n\t\theaders: {},\n\t\tcookies: new Map(),\n\t};\n\n\theader(key: string, value: string): this {\n\t\tthis.metadata.headers![key] = value;\n\t\treturn this;\n\t}\n\n\tcookie(name: string, value: string, options?: CookieOptions): this {\n\t\tthis.metadata.cookies?.set(name, { value, options });\n\t\treturn this;\n\t}\n\n\tdeleteCookie(\n\t\tname: string,\n\t\toptions?: Pick<CookieOptions, 'domain' | 'path'>,\n\t): this {\n\t\tthis.metadata.cookies?.set(name, {\n\t\t\tvalue: '',\n\t\t\toptions: { ...options, maxAge: 0, expires: new Date(0) },\n\t\t});\n\t\treturn this;\n\t}\n\n\tstatus(code: SuccessStatus): this {\n\t\tthis.metadata.status = code;\n\t\treturn this;\n\t}\n\n\tsend<T>(data: T): ResponseWithMetadata<T> {\n\t\treturn { data, metadata: this.metadata };\n\t}\n\n\tgetMetadata(): ResponseMetadata {\n\t\treturn this.metadata;\n\t}\n}\n\n/**\n * Base context properties that are always available\n */\ntype BaseEndpointContext<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\t/** Injected service instances */\n\tservices: ServiceRecord<TServices>;\n\t/** Logger instance for this request */\n\tlogger: TLogger;\n\t/** Function to retrieve request headers */\n\theader: HeaderFn;\n\t/** Function to retrieve request cookies */\n\tcookie: CookieFn;\n\t/** Session data extracted by getSession */\n\tsession: TSession;\n};\n\n/**\n * Conditional auditor context - only present when audit storage is configured\n */\ntype AuditorContext<\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTAuditStorage = undefined,\n> = TAuditStorage extends undefined\n\t? {}\n\t: {\n\t\t\t/**\n\t\t\t * Auditor instance for recording audit events.\n\t\t\t * Only present when audit storage is configured on the endpoint.\n\t\t\t * When a transactional database is used for audit storage,\n\t\t\t * the auditor is pre-configured with the transaction context.\n\t\t\t */\n\t\t\tauditor: Auditor<TAuditAction>;\n\t\t};\n\n/**\n * Conditional database context - only present when database service is configured\n */\ntype DatabaseContext<TDatabase = undefined> = TDatabase extends undefined\n\t? {}\n\t: {\n\t\t\t/**\n\t\t\t * Database instance for this request.\n\t\t\t * When audit storage is configured and uses the same database,\n\t\t\t * this will be the transaction for ACID compliance.\n\t\t\t * Otherwise, it's the raw database connection.\n\t\t\t */\n\t\t\tdb: TDatabase;\n\t\t};\n\n/**\n * The execution context provided to endpoint handlers.\n * Contains all parsed input data, services, logger, headers, cookies, and session.\n *\n * @template Input - The input schemas (body, query, params)\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template TSession - Session data type\n * @template TAuditAction - Audit action types (when auditor is configured)\n * @template TDatabase - Database type (when database service is configured)\n * @template TAuditStorage - Audit storage type (determines if auditor is present)\n */\nexport type EndpointContext<\n\tInput extends EndpointSchemas | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTAuditStorage = undefined,\n> = BaseEndpointContext<TServices, TLogger, TSession> &\n\tInferComposableStandardSchema<Input> &\n\tAuditorContext<TAuditAction, TAuditStorage> &\n\tDatabaseContext<TDatabase>;\n\n/**\n * Handler function type for endpoint implementations.\n *\n * @template TInput - Input schemas for validation\n * @template TServices - Available service dependencies\n * @template TLogger - Logger type\n * @template OutSchema - Output schema for response validation\n * @template TSession - Session data type\n *\n * @param ctx - The endpoint execution context\n * @param response - Response builder for setting cookies, headers, and status\n * @returns The response data (validated if OutSchema is provided) or ResponseWithMetadata\n *\n * @example\n * ```typescript\n * // Simple response\n * const handler: EndpointHandler<Input, [UserService], Logger, UserSchema> =\n * async ({ params, services }) => {\n * return await services.users.findById(params.id);\n * };\n *\n * // With response builder\n * const handler: EndpointHandler<Input, [UserService], Logger, UserSchema> =\n * async ({ params, services }, response) => {\n * const user = await services.users.findById(params.id);\n * return response.header('X-User-Id', user.id).send(user);\n * };\n * ```\n */\nexport type EndpointHandler<\n\tTInput extends EndpointSchemas | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTSession = unknown,\n\tTDatabase = undefined,\n\tTAuditStorage = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = (\n\tctx: EndpointContext<\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTAuditStorage\n\t>,\n\tresponse: ResponseBuilder,\n) => OutSchema extends StandardSchemaV1\n\t?\n\t\t\t| InferStandardSchema<OutSchema>\n\t\t\t| ResponseWithMetadata<InferStandardSchema<OutSchema>>\n\t\t\t| Promise<InferStandardSchema<OutSchema>>\n\t\t\t| Promise<ResponseWithMetadata<InferStandardSchema<OutSchema>>>\n\t:\n\t\t\t| unknown\n\t\t\t| ResponseWithMetadata<unknown>\n\t\t\t| Promise<unknown>\n\t\t\t| Promise<ResponseWithMetadata<unknown>>;\n\n/**\n * HTTP success status codes that can be returned by endpoints.\n */\nexport enum SuccessStatus {\n\t/** Standard response for successful HTTP requests */\n\tOK = 200,\n\t/** Request has been fulfilled and resulted in a new resource being created */\n\tCreated = 201,\n\t/** Request has been accepted for processing, but processing is not complete */\n\tAccepted = 202,\n\t/** Server successfully processed the request but is not returning any content */\n\tNoContent = 204,\n\t/** Server successfully processed the request and is not returning any content, client should reset the document view */\n\tResetContent = 205,\n\t/** Server is delivering only part of the resource due to a range header */\n\tPartialContent = 206,\n}\n\nexport type EndpointOutput<T> =\n\tT extends Endpoint<any, any, any, infer OutSchema, any, any, any, any>\n\t\t? InferStandardSchema<OutSchema>\n\t\t: never;\n\nexport type EndpointEvent<T> =\n\tT extends Endpoint<any, any, any, any, any, any, any, infer TEventPublisher>\n\t\t? ExtractPublisherMessage<TEventPublisher>\n\t\t: never;\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_Construct = require('./Construct-Ba5cMxib.cjs');
3
- const require_BaseFunctionBuilder = require('./BaseFunctionBuilder-MYG3C9ug.cjs');
4
- const require_Endpoint = require('./Endpoint-BVGZXFyV.cjs');
5
- const require_Authorizer = require('./Authorizer-C0ge_tc8.cjs');
6
- const require_rls = require('./rls-CmJ7bRsz.cjs');
2
+ const require_Construct = require('./Construct-BlnyYtJC.cjs');
3
+ const require_BaseFunctionBuilder = require('./BaseFunctionBuilder-D7o93EGv.cjs');
4
+ const require_Endpoint = require('./Endpoint-DxvnlfXg.cjs');
5
+ const require_Authorizer = require('./Authorizer-BXxBee2P.cjs');
6
+ const require_rls = require('./rls-BrywnrQb.cjs');
7
7
  const lodash_uniqby = require_chunk.__toESM(require("lodash.uniqby"));
8
8
 
9
9
  //#region src/endpoints/EndpointBuilder.ts
@@ -261,4 +261,4 @@ Object.defineProperty(exports, 'EndpointBuilder', {
261
261
  return EndpointBuilder;
262
262
  }
263
263
  });
264
- //# sourceMappingURL=EndpointBuilder-Cgj1P_ra.cjs.map
264
+ //# sourceMappingURL=EndpointBuilder-40Iz5CjY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndpointBuilder-40Iz5CjY.cjs","names":["BaseFunctionBuilder","route: TRoute","method: TMethod","ConstructType","publisher: Service<TEventPublisherServiceName, TEventPublisher>","storage: Service<TAuditStorageServiceName, TAuditStorage>","service: Service<TDatabaseServiceName, TDatabase>","description: string","status: SuccessStatus","event: TEvent","tags: string[]","memorySize: number","publisher: Service<TName, T>","schema: T","config: RateLimitConfig","name: TAuthorizers[number] | 'none'","services: T","logger: T","storage: Service<TName, T>","extractor: ActorExtractor<TServices, TSession, TLogger>","audits: MappedAudit<TAuditAction, OutSchema>[]","service: Service<TName, T>","config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass","RLS_BYPASS","_schema: any","fn: EndpointHandler<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage,\n\t\t\tTAuditAction\n\t\t>","authorizer: Authorizer | undefined","Endpoint"],"sources":["../src/endpoints/EndpointBuilder.ts"],"sourcesContent":["import type {\n\tAuditableAction,\n\tAuditStorage,\n\tExtractStorageAuditAction,\n} from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { RateLimitConfig } from '@geekmidas/rate-limit';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { BaseFunctionBuilder } from '../functions';\nimport type { HttpMethod } from '../types';\nimport type { Authorizer, SecurityScheme } from './Authorizer';\nimport { getSecurityScheme } from './Authorizer';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type {\n\tAuthorizeFn,\n\tEndpointHandler,\n\tSessionFn,\n\tSuccessStatus,\n} from './Endpoint';\nimport { Endpoint, type EndpointSchemas } from './Endpoint';\nimport type { RlsBypass, RlsConfig } from './rls';\nimport { RLS_BYPASS } from './rls';\n\nexport class EndpointBuilder<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuthorizers extends readonly string[] = readonly string[],\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> extends BaseFunctionBuilder<\n\tTInput,\n\tOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName\n> {\n\tprotected schemas: TInput = {} as TInput;\n\tprotected _description?: string;\n\tprotected _status?: SuccessStatus;\n\tprotected _tags?: string[];\n\tprotected _memorySize?: number;\n\t_getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>\n\t\t({}) as TSession;\n\t_authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;\n\t_rateLimit?: RateLimitConfig;\n\t_availableAuthorizers: Authorizer[] = [];\n\t_authorizerName?: TAuthorizers[number];\n\t_actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n\t_audits: MappedAudit<TAuditAction, OutSchema>[] = [];\n\t_customSecuritySchemes: Record<string, SecurityScheme> = {};\n\t_rlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n\t_rlsBypass?: boolean;\n\n\tconstructor(\n\t\treadonly route: TRoute,\n\t\treadonly method: TMethod,\n\t) {\n\t\tsuper(ConstructType.Endpoint);\n\t}\n\n\t// Internal setter for EndpointFactory to set default publisher\n\t_setPublisher(\n\t\tpublisher: Service<TEventPublisherServiceName, TEventPublisher>,\n\t) {\n\t\tthis._publisher = publisher;\n\t}\n\n\t// Internal setter for EndpointFactory to set default auditor storage\n\t_setAuditorStorage(\n\t\tstorage: Service<TAuditStorageServiceName, TAuditStorage>,\n\t) {\n\t\tthis._auditorStorage = storage;\n\t}\n\n\t// Internal setter for EndpointFactory to set default database service\n\t_setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>) {\n\t\tthis._databaseService = service;\n\t}\n\n\tdescription(description: string): this {\n\t\tthis._description = description;\n\t\treturn this;\n\t}\n\n\tstatus(status: SuccessStatus): this {\n\t\tthis._status = status;\n\t\treturn this;\n\t}\n\n\toverride event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(\n\t\tevent: TEvent,\n\t): this {\n\t\tthis._events.push(event);\n\t\treturn this;\n\t}\n\n\ttags(tags: string[]): this {\n\t\tthis._tags = tags;\n\t\treturn this;\n\t}\n\n\tmemorySize(memorySize: number): this {\n\t\tthis._memorySize = memorySize;\n\t\treturn this;\n\t}\n\n\toverride publisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tT,\n\t\tTName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._publisher = publisher as unknown as Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tT,\n\t\t\tTName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\tbody<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'body'> & { body: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.schemas.body = schema as unknown as T;\n\t\t// @ts-expect-error\n\t\treturn this;\n\t}\n\n\tsearch<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'query'> & { query: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.schemas.query = schema as unknown as T;\n\t\t// @ts-expect-error\n\t\treturn this;\n\t}\n\n\tquery<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'query'> & { query: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\treturn this.search(schema);\n\t}\n\n\tparams<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'params'> & { params: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.schemas.params = schema as unknown as T;\n\t\t// @ts-expect-error\n\t\treturn this;\n\t}\n\n\trateLimit(config: RateLimitConfig): this {\n\t\tthis._rateLimit = config;\n\t\treturn this;\n\t}\n\n\tauthorizer(\n\t\tname: TAuthorizers[number] | 'none',\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\t// Special case: 'none' explicitly marks endpoint as having no authorizer\n\t\tif (name === 'none') {\n\t\t\tthis._authorizerName = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Validate that the authorizer exists in available authorizers\n\t\tconst authorizerExists = this._availableAuthorizers.some(\n\t\t\t(a) => a.name === name,\n\t\t);\n\t\tif (!authorizerExists && this._availableAuthorizers.length > 0) {\n\t\t\tconst available = this._availableAuthorizers\n\t\t\t\t.map((a) => a.name)\n\t\t\t\t.join(', ');\n\t\t\tthrow new Error(\n\t\t\t\t`Authorizer \"${name as string}\" not found in available authorizers: ${available}`,\n\t\t\t);\n\t\t}\n\t\tthis._authorizerName = name;\n\t\treturn this;\n\t}\n\n\tservices<T extends Service[]>(\n\t\tservices: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._services = uniqBy(\n\t\t\t[...this._services, ...services],\n\t\t\t(s) => s.serviceName,\n\t\t) as TServices;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\t[...TServices, ...T],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\tlogger<T extends Logger>(\n\t\tlogger: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._logger = logger as unknown as TLogger;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tT,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\toutput<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.outputSchema = schema as unknown as OutSchema;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tT,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\t/**\n\t * Set the auditor storage service for this endpoint.\n\t * This enables audit functionality and makes `auditor` available in the handler context.\n\t * The audit action type is automatically inferred from the storage's generic parameter.\n\t */\n\toverride auditor<T extends AuditStorage<any>, TName extends string>(\n\t\tstorage: Service<TName, T>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tT,\n\t\tTName,\n\t\tExtractStorageAuditAction<T>,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._auditorStorage = storage as unknown as Service<\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditStorage\n\t\t>;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tT,\n\t\t\tTName,\n\t\t\tExtractStorageAuditAction<T>,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\t/**\n\t * Set the actor extractor function for audit records.\n\t * The actor is extracted from the request context and attached to all audits.\n\t */\n\tactor(\n\t\textractor: ActorExtractor<TServices, TSession, TLogger>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._actorExtractor = extractor;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add declarative audit definitions that are processed after the handler executes.\n\t * Similar to `.event()` for events, but for audits.\n\t *\n\t * @example\n\t * ```typescript\n\t * .audit<AppAuditAction>([\n\t * {\n\t * type: 'user.created',\n\t * payload: (response) => ({ userId: response.id, email: response.email }),\n\t * when: (response) => response.active,\n\t * entityId: (response) => response.id,\n\t * table: 'users',\n\t * },\n\t * ])\n\t * ```\n\t */\n\taudit(audits: MappedAudit<TAuditAction, OutSchema>[]): this {\n\t\tthis._audits = audits;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the database service for this endpoint.\n\t * The database will be available in the handler context as `db`.\n\t * When audit storage is configured and uses the same database,\n\t * `db` will automatically be the transaction for ACID compliance.\n\t *\n\t * @example\n\t * ```typescript\n\t * .database(databaseService)\n\t * .handle(async ({ db }) => {\n\t * // db is the raw database or transaction (when auditor uses same db)\n\t * return await db.selectFrom('users').selectAll().execute();\n\t * })\n\t * ```\n\t */\n\toverride database<T, TName extends string>(\n\t\tservice: Service<TName, T>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tT,\n\t\tTName\n\t> {\n\t\tthis._databaseService = service as unknown as Service<\n\t\t\tTDatabaseServiceName,\n\t\t\tTDatabase\n\t\t>;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tT,\n\t\t\tTName\n\t\t>;\n\t}\n\n\t/**\n\t * Configure RLS (Row-Level Security) context for this endpoint.\n\t * Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Custom RLS config for this endpoint\n\t * .rls({\n\t * extractor: ({ session }) => ({\n\t * user_id: session.userId,\n\t * tenant_id: session.tenantId,\n\t * }),\n\t * prefix: 'app',\n\t * })\n\t *\n\t * // Bypass RLS (for admin endpoints)\n\t * .rls(false)\n\t * ```\n\t */\n\trls(\n\t\tconfig: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass,\n\t): this {\n\t\tif (config === false || config === RLS_BYPASS) {\n\t\t\tthis._rlsBypass = true;\n\t\t\tthis._rlsConfig = undefined;\n\t\t} else {\n\t\t\tthis._rlsConfig = config;\n\t\t\tthis._rlsBypass = false;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Explicitly bypass RLS for this endpoint.\n\t * Useful for admin operations that need unrestricted database access.\n\t *\n\t * @example\n\t * ```typescript\n\t * .rlsBypass()\n\t * .handle(async ({ db }) => {\n\t * // Full access, no RLS filtering\n\t * return db.selectFrom('orders').selectAll().execute();\n\t * })\n\t * ```\n\t */\n\trlsBypass(): this {\n\t\tthis._rlsBypass = true;\n\t\tthis._rlsConfig = undefined;\n\t\treturn this;\n\t}\n\n\t// EndpointBuilder doesn't have a generic input method - it uses body, query, params instead\n\tinput(_schema: any): any {\n\t\tthrow new Error(\n\t\t\t'EndpointBuilder does not support generic input. Use body(), query(), or params() instead.',\n\t\t);\n\t}\n\n\thandle(\n\t\tfn: EndpointHandler<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage,\n\t\t\tTAuditAction\n\t\t>,\n\t): Endpoint<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\t// Find authorizer metadata if name is set\n\t\t// If the authorizer name is set but not in availableAuthorizers, create a simple authorizer object\n\t\tlet authorizer: Authorizer | undefined;\n\t\tif (this._authorizerName) {\n\t\t\tconst existingAuthorizer = this._availableAuthorizers.find(\n\t\t\t\t(a) => a.name === this._authorizerName,\n\t\t\t);\n\n\t\t\tif (existingAuthorizer) {\n\t\t\t\tauthorizer = existingAuthorizer;\n\t\t\t} else {\n\t\t\t\t// Create authorizer with security scheme if available (built-in or custom)\n\t\t\t\tconst securityScheme = getSecurityScheme(\n\t\t\t\t\tthis._authorizerName as string,\n\t\t\t\t\tthis._customSecuritySchemes,\n\t\t\t\t);\n\t\t\t\tauthorizer = {\n\t\t\t\t\tname: this._authorizerName as string,\n\t\t\t\t\tsecurityScheme,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn new Endpoint({\n\t\t\tfn,\n\t\t\tmethod: this.method,\n\t\t\troute: this.route,\n\t\t\tdescription: this._description,\n\t\t\ttags: this._tags,\n\t\t\tinput: this.schemas,\n\t\t\toutput: this.outputSchema,\n\t\t\tservices: this._services,\n\t\t\tlogger: this._logger,\n\t\t\ttimeout: this._timeout,\n\t\t\tmemorySize: this._memorySize,\n\t\t\tauthorize: this._authorize,\n\t\t\tstatus: this._status,\n\t\t\tgetSession: this._getSession,\n\t\t\trateLimit: this._rateLimit,\n\t\t\tpublisherService: this._publisher,\n\t\t\tevents: this._events,\n\t\t\tauthorizer,\n\t\t\tauditorStorageService: this._auditorStorage,\n\t\t\tactorExtractor: this._actorExtractor,\n\t\t\taudits: this._audits,\n\t\t\tdatabaseService: this._databaseService,\n\t\t\trlsConfig: this._rlsConfig,\n\t\t\trlsBypass: this._rlsBypass,\n\t\t});\n\t}\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { ConstructType } from "./Construct-DdyGHuag.mjs";
2
- import { BaseFunctionBuilder } from "./BaseFunctionBuilder-Czi1Jwza.mjs";
3
- import { Endpoint } from "./Endpoint-CuOEswxJ.mjs";
4
- import { getSecurityScheme } from "./Authorizer-r9U3y_ms.mjs";
5
- import { RLS_BYPASS } from "./rls-Bf3FRwto.mjs";
1
+ import { ConstructType } from "./Construct-D5dCvxZ3.mjs";
2
+ import { BaseFunctionBuilder } from "./BaseFunctionBuilder-0qlenb9z.mjs";
3
+ import { Endpoint } from "./Endpoint-BbdNmtlM.mjs";
4
+ import { getSecurityScheme } from "./Authorizer-BgjU8-z6.mjs";
5
+ import { RLS_BYPASS } from "./rls-C0cWOnk4.mjs";
6
6
  import uniqBy from "lodash.uniqby";
7
7
 
8
8
  //#region src/endpoints/EndpointBuilder.ts
@@ -255,4 +255,4 @@ var EndpointBuilder = class extends BaseFunctionBuilder {
255
255
 
256
256
  //#endregion
257
257
  export { EndpointBuilder };
258
- //# sourceMappingURL=EndpointBuilder-DnCB1h1j.mjs.map
258
+ //# sourceMappingURL=EndpointBuilder-BaVvhW9m.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndpointBuilder-BaVvhW9m.mjs","names":["route: TRoute","method: TMethod","publisher: Service<TEventPublisherServiceName, TEventPublisher>","storage: Service<TAuditStorageServiceName, TAuditStorage>","service: Service<TDatabaseServiceName, TDatabase>","description: string","status: SuccessStatus","event: TEvent","tags: string[]","memorySize: number","publisher: Service<TName, T>","schema: T","config: RateLimitConfig","name: TAuthorizers[number] | 'none'","services: T","logger: T","storage: Service<TName, T>","extractor: ActorExtractor<TServices, TSession, TLogger>","audits: MappedAudit<TAuditAction, OutSchema>[]","service: Service<TName, T>","config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass","_schema: any","fn: EndpointHandler<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage,\n\t\t\tTAuditAction\n\t\t>","authorizer: Authorizer | undefined"],"sources":["../src/endpoints/EndpointBuilder.ts"],"sourcesContent":["import type {\n\tAuditableAction,\n\tAuditStorage,\n\tExtractStorageAuditAction,\n} from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { RateLimitConfig } from '@geekmidas/rate-limit';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { BaseFunctionBuilder } from '../functions';\nimport type { HttpMethod } from '../types';\nimport type { Authorizer, SecurityScheme } from './Authorizer';\nimport { getSecurityScheme } from './Authorizer';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type {\n\tAuthorizeFn,\n\tEndpointHandler,\n\tSessionFn,\n\tSuccessStatus,\n} from './Endpoint';\nimport { Endpoint, type EndpointSchemas } from './Endpoint';\nimport type { RlsBypass, RlsConfig } from './rls';\nimport { RLS_BYPASS } from './rls';\n\nexport class EndpointBuilder<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuthorizers extends readonly string[] = readonly string[],\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> extends BaseFunctionBuilder<\n\tTInput,\n\tOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName\n> {\n\tprotected schemas: TInput = {} as TInput;\n\tprotected _description?: string;\n\tprotected _status?: SuccessStatus;\n\tprotected _tags?: string[];\n\tprotected _memorySize?: number;\n\t_getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>\n\t\t({}) as TSession;\n\t_authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;\n\t_rateLimit?: RateLimitConfig;\n\t_availableAuthorizers: Authorizer[] = [];\n\t_authorizerName?: TAuthorizers[number];\n\t_actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n\t_audits: MappedAudit<TAuditAction, OutSchema>[] = [];\n\t_customSecuritySchemes: Record<string, SecurityScheme> = {};\n\t_rlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n\t_rlsBypass?: boolean;\n\n\tconstructor(\n\t\treadonly route: TRoute,\n\t\treadonly method: TMethod,\n\t) {\n\t\tsuper(ConstructType.Endpoint);\n\t}\n\n\t// Internal setter for EndpointFactory to set default publisher\n\t_setPublisher(\n\t\tpublisher: Service<TEventPublisherServiceName, TEventPublisher>,\n\t) {\n\t\tthis._publisher = publisher;\n\t}\n\n\t// Internal setter for EndpointFactory to set default auditor storage\n\t_setAuditorStorage(\n\t\tstorage: Service<TAuditStorageServiceName, TAuditStorage>,\n\t) {\n\t\tthis._auditorStorage = storage;\n\t}\n\n\t// Internal setter for EndpointFactory to set default database service\n\t_setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>) {\n\t\tthis._databaseService = service;\n\t}\n\n\tdescription(description: string): this {\n\t\tthis._description = description;\n\t\treturn this;\n\t}\n\n\tstatus(status: SuccessStatus): this {\n\t\tthis._status = status;\n\t\treturn this;\n\t}\n\n\toverride event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(\n\t\tevent: TEvent,\n\t): this {\n\t\tthis._events.push(event);\n\t\treturn this;\n\t}\n\n\ttags(tags: string[]): this {\n\t\tthis._tags = tags;\n\t\treturn this;\n\t}\n\n\tmemorySize(memorySize: number): this {\n\t\tthis._memorySize = memorySize;\n\t\treturn this;\n\t}\n\n\toverride publisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tT,\n\t\tTName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._publisher = publisher as unknown as Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tT,\n\t\t\tTName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\tbody<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'body'> & { body: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.schemas.body = schema as unknown as T;\n\t\t// @ts-expect-error\n\t\treturn this;\n\t}\n\n\tsearch<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'query'> & { query: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.schemas.query = schema as unknown as T;\n\t\t// @ts-expect-error\n\t\treturn this;\n\t}\n\n\tquery<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'query'> & { query: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\treturn this.search(schema);\n\t}\n\n\tparams<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tOmit<TInput, 'params'> & { params: T },\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.schemas.params = schema as unknown as T;\n\t\t// @ts-expect-error\n\t\treturn this;\n\t}\n\n\trateLimit(config: RateLimitConfig): this {\n\t\tthis._rateLimit = config;\n\t\treturn this;\n\t}\n\n\tauthorizer(\n\t\tname: TAuthorizers[number] | 'none',\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\t// Special case: 'none' explicitly marks endpoint as having no authorizer\n\t\tif (name === 'none') {\n\t\t\tthis._authorizerName = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Validate that the authorizer exists in available authorizers\n\t\tconst authorizerExists = this._availableAuthorizers.some(\n\t\t\t(a) => a.name === name,\n\t\t);\n\t\tif (!authorizerExists && this._availableAuthorizers.length > 0) {\n\t\t\tconst available = this._availableAuthorizers\n\t\t\t\t.map((a) => a.name)\n\t\t\t\t.join(', ');\n\t\t\tthrow new Error(\n\t\t\t\t`Authorizer \"${name as string}\" not found in available authorizers: ${available}`,\n\t\t\t);\n\t\t}\n\t\tthis._authorizerName = name;\n\t\treturn this;\n\t}\n\n\tservices<T extends Service[]>(\n\t\tservices: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._services = uniqBy(\n\t\t\t[...this._services, ...services],\n\t\t\t(s) => s.serviceName,\n\t\t) as TServices;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\t[...TServices, ...T],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\tlogger<T extends Logger>(\n\t\tlogger: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._logger = logger as unknown as TLogger;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tT,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\toutput<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis.outputSchema = schema as unknown as OutSchema;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tT,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\t/**\n\t * Set the auditor storage service for this endpoint.\n\t * This enables audit functionality and makes `auditor` available in the handler context.\n\t * The audit action type is automatically inferred from the storage's generic parameter.\n\t */\n\toverride auditor<T extends AuditStorage<any>, TName extends string>(\n\t\tstorage: Service<TName, T>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tT,\n\t\tTName,\n\t\tExtractStorageAuditAction<T>,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._auditorStorage = storage as unknown as Service<\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditStorage\n\t\t>;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tT,\n\t\t\tTName,\n\t\t\tExtractStorageAuditAction<T>,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>;\n\t}\n\n\t/**\n\t * Set the actor extractor function for audit records.\n\t * The actor is extracted from the request context and attached to all audits.\n\t */\n\tactor(\n\t\textractor: ActorExtractor<TServices, TSession, TLogger>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\tthis._actorExtractor = extractor;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add declarative audit definitions that are processed after the handler executes.\n\t * Similar to `.event()` for events, but for audits.\n\t *\n\t * @example\n\t * ```typescript\n\t * .audit<AppAuditAction>([\n\t * {\n\t * type: 'user.created',\n\t * payload: (response) => ({ userId: response.id, email: response.email }),\n\t * when: (response) => response.active,\n\t * entityId: (response) => response.id,\n\t * table: 'users',\n\t * },\n\t * ])\n\t * ```\n\t */\n\taudit(audits: MappedAudit<TAuditAction, OutSchema>[]): this {\n\t\tthis._audits = audits;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the database service for this endpoint.\n\t * The database will be available in the handler context as `db`.\n\t * When audit storage is configured and uses the same database,\n\t * `db` will automatically be the transaction for ACID compliance.\n\t *\n\t * @example\n\t * ```typescript\n\t * .database(databaseService)\n\t * .handle(async ({ db }) => {\n\t * // db is the raw database or transaction (when auditor uses same db)\n\t * return await db.selectFrom('users').selectAll().execute();\n\t * })\n\t * ```\n\t */\n\toverride database<T, TName extends string>(\n\t\tservice: Service<TName, T>,\n\t): EndpointBuilder<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuthorizers,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tT,\n\t\tTName\n\t> {\n\t\tthis._databaseService = service as unknown as Service<\n\t\t\tTDatabaseServiceName,\n\t\t\tTDatabase\n\t\t>;\n\n\t\treturn this as unknown as EndpointBuilder<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuthorizers,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tT,\n\t\t\tTName\n\t\t>;\n\t}\n\n\t/**\n\t * Configure RLS (Row-Level Security) context for this endpoint.\n\t * Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Custom RLS config for this endpoint\n\t * .rls({\n\t * extractor: ({ session }) => ({\n\t * user_id: session.userId,\n\t * tenant_id: session.tenantId,\n\t * }),\n\t * prefix: 'app',\n\t * })\n\t *\n\t * // Bypass RLS (for admin endpoints)\n\t * .rls(false)\n\t * ```\n\t */\n\trls(\n\t\tconfig: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass,\n\t): this {\n\t\tif (config === false || config === RLS_BYPASS) {\n\t\t\tthis._rlsBypass = true;\n\t\t\tthis._rlsConfig = undefined;\n\t\t} else {\n\t\t\tthis._rlsConfig = config;\n\t\t\tthis._rlsBypass = false;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Explicitly bypass RLS for this endpoint.\n\t * Useful for admin operations that need unrestricted database access.\n\t *\n\t * @example\n\t * ```typescript\n\t * .rlsBypass()\n\t * .handle(async ({ db }) => {\n\t * // Full access, no RLS filtering\n\t * return db.selectFrom('orders').selectAll().execute();\n\t * })\n\t * ```\n\t */\n\trlsBypass(): this {\n\t\tthis._rlsBypass = true;\n\t\tthis._rlsConfig = undefined;\n\t\treturn this;\n\t}\n\n\t// EndpointBuilder doesn't have a generic input method - it uses body, query, params instead\n\tinput(_schema: any): any {\n\t\tthrow new Error(\n\t\t\t'EndpointBuilder does not support generic input. Use body(), query(), or params() instead.',\n\t\t);\n\t}\n\n\thandle(\n\t\tfn: EndpointHandler<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTSession,\n\t\t\tTDatabase,\n\t\t\tTAuditStorage,\n\t\t\tTAuditAction\n\t\t>,\n\t): Endpoint<\n\t\tTRoute,\n\t\tTMethod,\n\t\tTInput,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t> {\n\t\t// Find authorizer metadata if name is set\n\t\t// If the authorizer name is set but not in availableAuthorizers, create a simple authorizer object\n\t\tlet authorizer: Authorizer | undefined;\n\t\tif (this._authorizerName) {\n\t\t\tconst existingAuthorizer = this._availableAuthorizers.find(\n\t\t\t\t(a) => a.name === this._authorizerName,\n\t\t\t);\n\n\t\t\tif (existingAuthorizer) {\n\t\t\t\tauthorizer = existingAuthorizer;\n\t\t\t} else {\n\t\t\t\t// Create authorizer with security scheme if available (built-in or custom)\n\t\t\t\tconst securityScheme = getSecurityScheme(\n\t\t\t\t\tthis._authorizerName as string,\n\t\t\t\t\tthis._customSecuritySchemes,\n\t\t\t\t);\n\t\t\t\tauthorizer = {\n\t\t\t\t\tname: this._authorizerName as string,\n\t\t\t\t\tsecurityScheme,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn new Endpoint({\n\t\t\tfn,\n\t\t\tmethod: this.method,\n\t\t\troute: this.route,\n\t\t\tdescription: this._description,\n\t\t\ttags: this._tags,\n\t\t\tinput: this.schemas,\n\t\t\toutput: this.outputSchema,\n\t\t\tservices: this._services,\n\t\t\tlogger: this._logger,\n\t\t\ttimeout: this._timeout,\n\t\t\tmemorySize: this._memorySize,\n\t\t\tauthorize: this._authorize,\n\t\t\tstatus: this._status,\n\t\t\tgetSession: this._getSession,\n\t\t\trateLimit: this._rateLimit,\n\t\t\tpublisherService: this._publisher,\n\t\t\tevents: this._events,\n\t\t\tauthorizer,\n\t\t\tauditorStorageService: this._auditorStorage,\n\t\t\tactorExtractor: this._actorExtractor,\n\t\t\taudits: this._audits,\n\t\t\tdatabaseService: this._databaseService,\n\t\t\trlsConfig: this._rlsConfig,\n\t\t\trlsBypass: this._rlsBypass,\n\t\t});\n\t}\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { HttpMethod } from "./types-B5H3piDg.cjs";
2
2
  import { BaseFunctionBuilder } from "./BaseFunctionBuilder-BAtutR6q.cjs";
3
- import { Authorizer, SecurityScheme } from "./Authorizer-B-btowNd.cjs";
4
- import { ActorExtractor, AuthorizeFn, Endpoint, EndpointHandler, EndpointSchemas, MappedAudit, RlsBypass, RlsConfig, SessionFn, SuccessStatus } from "./Endpoint-BPv9_-m_.cjs";
3
+ import { Authorizer, SecurityScheme } from "./Authorizer-DWtwC8we.cjs";
4
+ import { ActorExtractor, AuthorizeFn, Endpoint, EndpointHandler, EndpointSchemas, MappedAudit, RlsBypass, RlsConfig, SessionFn, SuccessStatus } from "./Endpoint-BOlbY5iq.cjs";
5
5
  import { AuditStorage, AuditableAction, ExtractStorageAuditAction } from "@geekmidas/audit";
6
6
  import { EventPublisher, MappedEvent } from "@geekmidas/events";
7
7
  import { Logger } from "@geekmidas/logger";
@@ -142,4 +142,4 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
142
142
 
143
143
  //#endregion
144
144
  export { EndpointBuilder };
145
- //# sourceMappingURL=EndpointBuilder-DIy_m1bu.d.cts.map
145
+ //# sourceMappingURL=EndpointBuilder-CFfWWjUa.d.cts.map