@geekmidas/constructs 0.3.1 → 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 (549) 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-Bqm6SEuP.d.cts → HonoEndpointAdaptor-Dkkemmbo.d.cts} +9 -4
  135. package/dist/HonoEndpointAdaptor-Dkkemmbo.d.cts.map +1 -0
  136. package/dist/{HonoEndpointAdaptor-CRe-ij5f.d.mts → HonoEndpointAdaptor-HukjdF6M.d.mts} +10 -5
  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 +5 -5
  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 +10 -8
  235. package/dist/endpoints/index.d.cts.map +1 -1
  236. package/dist/endpoints/index.d.mts +13 -11
  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-SI4V0XwK.d.cts → index-CgAQHr3f.d.mts} +2 -2
  296. package/dist/index-CgAQHr3f.d.mts.map +1 -0
  297. package/dist/{index-BWzGIj06.d.mts → index-D0fp_IK1.d.cts} +2 -2
  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 +2 -2
  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 +373 -354
  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-Bqm6SEuP.d.cts.map +0 -1
  519. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
  520. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
  521. package/dist/HonoEndpointAdaptor-CRe-ij5f.d.mts.map +0 -1
  522. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
  523. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.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-BXTofAKc.mjs +0 -163
  533. package/dist/TestEndpointAdaptor-BXTofAKc.mjs.map +0 -1
  534. package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
  535. package/dist/TestEndpointAdaptor-D9IwhIYg.cjs +0 -169
  536. package/dist/TestEndpointAdaptor-D9IwhIYg.cjs.map +0 -1
  537. package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.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-SI4V0XwK.d.cts.map +0 -1
  545. package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
  546. package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
  547. package/dist/publisher.d.cts.map +0 -1
  548. package/dist/publisher.d.mts.map +0 -1
  549. package/dist/types-DdIlpxAd.d.mts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import type {
2
- AuditStorage,
3
- AuditableAction,
4
- ExtractStorageAuditAction,
2
+ AuditableAction,
3
+ AuditStorage,
4
+ ExtractStorageAuditAction,
5
5
  } from '@geekmidas/audit';
6
6
  import type { EventPublisher, MappedEvent } from '@geekmidas/events';
7
7
  import type { Logger } from '@geekmidas/logger';
@@ -10,13 +10,13 @@ import type { Service } from '@geekmidas/services';
10
10
  import uniqBy from 'lodash.uniqby';
11
11
  import type { HttpMethod } from '../types';
12
12
  import type {
13
- Authorizer,
14
- BuiltInSecuritySchemeId,
15
- SecurityScheme,
13
+ Authorizer,
14
+ BuiltInSecuritySchemeId,
15
+ SecurityScheme,
16
16
  } from './Authorizer';
17
+ import type { ActorExtractor } from './audit';
17
18
  import type { AuthorizeFn, SessionFn } from './Endpoint';
18
19
  import { EndpointBuilder } from './EndpointBuilder';
19
- import type { ActorExtractor } from './audit';
20
20
  import type { RlsConfig } from './rls';
21
21
 
22
22
  // Re-export SecurityScheme to make the type portable in declaration files
@@ -25,1107 +25,1105 @@ export type { SecurityScheme } from './Authorizer';
25
25
  const DEFAULT_LOGGER = new ConsoleLogger() as any;
26
26
 
27
27
  export class EndpointFactory<
28
- TServices extends Service[] = [],
29
- TBasePath extends string = '',
30
- TLogger extends Logger = Logger,
31
- TSession = unknown,
32
- TEventPublisher extends EventPublisher<any> | undefined = undefined,
33
- TEventPublisherServiceName extends string = string,
34
- TAuthorizers extends readonly string[] = readonly string[],
35
- TAuditStorage extends AuditStorage<any> | undefined = undefined,
36
- TAuditStorageServiceName extends string = string,
37
- TAuditAction extends AuditableAction<
38
- string,
39
- unknown
40
- > = ExtractStorageAuditAction<NonNullable<TAuditStorage>>,
41
- TDatabase = undefined,
42
- TDatabaseServiceName extends string = string,
43
- TSecuritySchemes extends Record<string, SecurityScheme> = Record<
44
- string,
45
- SecurityScheme
46
- >,
47
- TRlsConfig extends
48
- | RlsConfig<TServices, TSession, TLogger>
49
- | undefined = undefined,
28
+ TServices extends Service[] = [],
29
+ TBasePath extends string = '',
30
+ TLogger extends Logger = Logger,
31
+ TSession = unknown,
32
+ TEventPublisher extends EventPublisher<any> | undefined = undefined,
33
+ TEventPublisherServiceName extends string = string,
34
+ TAuthorizers extends readonly string[] = readonly string[],
35
+ TAuditStorage extends AuditStorage<any> | undefined = undefined,
36
+ TAuditStorageServiceName extends string = string,
37
+ TAuditAction extends AuditableAction<
38
+ string,
39
+ unknown
40
+ > = ExtractStorageAuditAction<NonNullable<TAuditStorage>>,
41
+ TDatabase = undefined,
42
+ TDatabaseServiceName extends string = string,
43
+ TSecuritySchemes extends Record<string, SecurityScheme> = Record<
44
+ string,
45
+ SecurityScheme
46
+ >,
47
+ TRlsConfig extends
48
+ | RlsConfig<TServices, TSession, TLogger>
49
+ | undefined = undefined,
50
50
  > {
51
- // @ts-ignore
52
- private defaultServices: TServices;
53
- private basePath: TBasePath = '' as TBasePath;
54
- private defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;
55
- private defaultEventPublisher:
56
- | Service<TEventPublisherServiceName, TEventPublisher>
57
- | undefined;
58
- private defaultSessionExtractor?: SessionFn<
59
- TServices,
60
- TLogger,
61
- TSession,
62
- TDatabase
63
- >;
64
- private defaultLogger: TLogger = DEFAULT_LOGGER;
65
- private availableAuthorizers: Authorizer[] = [];
66
- private defaultAuthorizerName?: TAuthorizers[number];
67
- private defaultAuditorStorage:
68
- | Service<TAuditStorageServiceName, TAuditStorage>
69
- | undefined;
70
- private defaultDatabaseService:
71
- | Service<TDatabaseServiceName, TDatabase>
72
- | undefined;
73
- private defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
74
- private customSecuritySchemes: TSecuritySchemes = {} as TSecuritySchemes;
75
- private defaultRlsConfig?: TRlsConfig;
51
+ private defaultServices: TServices = [] as unknown as TServices;
52
+ private basePath: TBasePath = '' as TBasePath;
53
+ private defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;
54
+ private defaultEventPublisher:
55
+ | Service<TEventPublisherServiceName, TEventPublisher>
56
+ | undefined;
57
+ private defaultSessionExtractor?: SessionFn<
58
+ TServices,
59
+ TLogger,
60
+ TSession,
61
+ TDatabase
62
+ >;
63
+ private defaultLogger: TLogger = DEFAULT_LOGGER;
64
+ private availableAuthorizers: Authorizer[] = [];
65
+ private defaultAuthorizerName?: TAuthorizers[number];
66
+ private defaultAuditorStorage:
67
+ | Service<TAuditStorageServiceName, TAuditStorage>
68
+ | undefined;
69
+ private defaultDatabaseService:
70
+ | Service<TDatabaseServiceName, TDatabase>
71
+ | undefined;
72
+ private defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
73
+ private customSecuritySchemes: TSecuritySchemes = {} as TSecuritySchemes;
74
+ private defaultRlsConfig?: TRlsConfig;
76
75
 
77
- constructor({
78
- basePath,
79
- defaultAuthorizeFn,
80
- defaultLogger,
81
- defaultSessionExtractor,
82
- // @ts-ignore
83
- defaultServices = [] as TServices,
84
- defaultEventPublisher,
85
- availableAuthorizers = [],
86
- defaultAuthorizerName,
87
- defaultAuditorStorage,
88
- defaultDatabaseService,
89
- defaultActorExtractor,
90
- customSecuritySchemes = {} as TSecuritySchemes,
91
- defaultRlsConfig,
92
- }: EndpointFactoryOptions<
93
- TServices,
94
- TBasePath,
95
- TLogger,
96
- TSession,
97
- TEventPublisher,
98
- TEventPublisherServiceName,
99
- TAuthorizers,
100
- TAuditStorage,
101
- TAuditStorageServiceName,
102
- TDatabase,
103
- TDatabaseServiceName,
104
- TSecuritySchemes,
105
- TRlsConfig
106
- > = {}) {
107
- // Initialize default services
108
- this.defaultServices = uniqBy(
109
- defaultServices,
110
- (s) => s.serviceName,
111
- ) as TServices;
76
+ constructor({
77
+ basePath,
78
+ defaultAuthorizeFn,
79
+ defaultLogger,
80
+ defaultSessionExtractor,
81
+ // @ts-expect-error
82
+ defaultServices = [] as TServices,
83
+ defaultEventPublisher,
84
+ availableAuthorizers = [],
85
+ defaultAuthorizerName,
86
+ defaultAuditorStorage,
87
+ defaultDatabaseService,
88
+ defaultActorExtractor,
89
+ customSecuritySchemes = {} as TSecuritySchemes,
90
+ defaultRlsConfig,
91
+ }: EndpointFactoryOptions<
92
+ TServices,
93
+ TBasePath,
94
+ TLogger,
95
+ TSession,
96
+ TEventPublisher,
97
+ TEventPublisherServiceName,
98
+ TAuthorizers,
99
+ TAuditStorage,
100
+ TAuditStorageServiceName,
101
+ TDatabase,
102
+ TDatabaseServiceName,
103
+ TSecuritySchemes,
104
+ TRlsConfig
105
+ > = {}) {
106
+ // Initialize default services
107
+ this.defaultServices = uniqBy(
108
+ defaultServices,
109
+ (s) => s.serviceName,
110
+ ) as TServices;
112
111
 
113
- this.basePath = basePath || ('' as TBasePath);
114
- this.defaultAuthorizeFn = defaultAuthorizeFn;
115
- this.defaultLogger = defaultLogger || (DEFAULT_LOGGER as TLogger);
116
- this.defaultSessionExtractor = defaultSessionExtractor;
117
- this.defaultEventPublisher = defaultEventPublisher;
118
- this.availableAuthorizers = availableAuthorizers;
119
- this.defaultAuthorizerName = defaultAuthorizerName;
120
- this.defaultAuditorStorage = defaultAuditorStorage;
121
- this.defaultDatabaseService = defaultDatabaseService;
122
- this.defaultActorExtractor = defaultActorExtractor;
123
- this.customSecuritySchemes = customSecuritySchemes;
124
- this.defaultRlsConfig = defaultRlsConfig;
125
- }
112
+ this.basePath = basePath || ('' as TBasePath);
113
+ this.defaultAuthorizeFn = defaultAuthorizeFn;
114
+ this.defaultLogger = defaultLogger || (DEFAULT_LOGGER as TLogger);
115
+ this.defaultSessionExtractor = defaultSessionExtractor;
116
+ this.defaultEventPublisher = defaultEventPublisher;
117
+ this.availableAuthorizers = availableAuthorizers;
118
+ this.defaultAuthorizerName = defaultAuthorizerName;
119
+ this.defaultAuditorStorage = defaultAuditorStorage;
120
+ this.defaultDatabaseService = defaultDatabaseService;
121
+ this.defaultActorExtractor = defaultActorExtractor;
122
+ this.customSecuritySchemes = customSecuritySchemes;
123
+ this.defaultRlsConfig = defaultRlsConfig;
124
+ }
126
125
 
127
- static joinPaths<TBasePath extends string, P extends string>(
128
- path: P,
129
- basePath: TBasePath = '' as TBasePath,
130
- ): JoinPaths<TBasePath, P> {
131
- // Handle empty cases
132
- if (!basePath && !path) return '/' as JoinPaths<TBasePath, P>;
133
- if (!basePath)
134
- return (path.startsWith('/') ? path : '/' + path) as JoinPaths<
135
- TBasePath,
136
- P
137
- >;
138
- if (!path)
139
- return (
140
- basePath.startsWith('/') ? basePath : '/' + basePath
141
- ) as JoinPaths<TBasePath, P>;
126
+ static joinPaths<TBasePath extends string, P extends string>(
127
+ path: P,
128
+ basePath: TBasePath = '' as TBasePath,
129
+ ): JoinPaths<TBasePath, P> {
130
+ // Handle empty cases
131
+ if (!basePath && !path) return '/' as JoinPaths<TBasePath, P>;
132
+ if (!basePath)
133
+ return (path.startsWith('/') ? path : `/${path}`) as JoinPaths<
134
+ TBasePath,
135
+ P
136
+ >;
137
+ if (!path)
138
+ return (
139
+ basePath.startsWith('/') ? basePath : `/${basePath}`
140
+ ) as JoinPaths<TBasePath, P>;
142
141
 
143
- const base = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
144
- const segment = path.startsWith('/') ? path : '/' + path;
142
+ const base = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
143
+ const segment = path.startsWith('/') ? path : `/${path}`;
145
144
 
146
- let result = base + segment;
145
+ let result = base + segment;
147
146
 
148
- // Ensure leading slash
149
- if (!result.startsWith('/')) {
150
- result = '/' + result;
151
- }
147
+ // Ensure leading slash
148
+ if (!result.startsWith('/')) {
149
+ result = `/${result}`;
150
+ }
152
151
 
153
- // Normalize multiple slashes (except in the middle of the path where they might be intentional)
154
- result = result.replace(/^\/+/g, '/');
152
+ // Normalize multiple slashes (except in the middle of the path where they might be intentional)
153
+ result = result.replace(/^\/+/g, '/');
155
154
 
156
- // Remove trailing slash unless it's the root path "/"
157
- if (result.length > 1 && result.endsWith('/')) {
158
- result = result.slice(0, -1);
159
- }
155
+ // Remove trailing slash unless it's the root path "/"
156
+ if (result.length > 1 && result.endsWith('/')) {
157
+ result = result.slice(0, -1);
158
+ }
160
159
 
161
- return result as JoinPaths<TBasePath, P>;
162
- }
160
+ return result as JoinPaths<TBasePath, P>;
161
+ }
163
162
 
164
- // Configure available authorizers
165
- authorizers<const T extends readonly string[]>(
166
- authorizers: T,
167
- ): EndpointFactory<
168
- TServices,
169
- TBasePath,
170
- TLogger,
171
- TSession,
172
- TEventPublisher,
173
- TEventPublisherServiceName,
174
- T,
175
- TAuditStorage,
176
- TAuditStorageServiceName,
177
- TAuditAction,
178
- TDatabase,
179
- TDatabaseServiceName,
180
- TSecuritySchemes,
181
- TRlsConfig
182
- > {
183
- const authorizerConfigs = authorizers.map((name) => ({
184
- name,
185
- }));
186
- return new EndpointFactory<
187
- TServices,
188
- TBasePath,
189
- TLogger,
190
- TSession,
191
- TEventPublisher,
192
- TEventPublisherServiceName,
193
- T,
194
- TAuditStorage,
195
- TAuditStorageServiceName,
196
- TAuditAction,
197
- TDatabase,
198
- TDatabaseServiceName,
199
- TSecuritySchemes,
200
- TRlsConfig
201
- >({
202
- defaultServices: this.defaultServices,
203
- basePath: this.basePath,
204
- defaultAuthorizeFn: this.defaultAuthorizeFn,
205
- defaultLogger: this.defaultLogger,
206
- defaultSessionExtractor: this.defaultSessionExtractor,
207
- defaultEventPublisher: this.defaultEventPublisher,
208
- availableAuthorizers: authorizerConfigs,
209
- defaultAuthorizerName: this.defaultAuthorizerName,
210
- defaultAuditorStorage: this.defaultAuditorStorage,
211
- defaultDatabaseService: this.defaultDatabaseService,
212
- defaultActorExtractor: this.defaultActorExtractor,
213
- customSecuritySchemes: this.customSecuritySchemes,
214
- defaultRlsConfig: this.defaultRlsConfig,
215
- });
216
- }
163
+ // Configure available authorizers
164
+ authorizers<const T extends readonly string[]>(
165
+ authorizers: T,
166
+ ): EndpointFactory<
167
+ TServices,
168
+ TBasePath,
169
+ TLogger,
170
+ TSession,
171
+ TEventPublisher,
172
+ TEventPublisherServiceName,
173
+ T,
174
+ TAuditStorage,
175
+ TAuditStorageServiceName,
176
+ TAuditAction,
177
+ TDatabase,
178
+ TDatabaseServiceName,
179
+ TSecuritySchemes,
180
+ TRlsConfig
181
+ > {
182
+ const authorizerConfigs = authorizers.map((name) => ({
183
+ name,
184
+ }));
185
+ return new EndpointFactory<
186
+ TServices,
187
+ TBasePath,
188
+ TLogger,
189
+ TSession,
190
+ TEventPublisher,
191
+ TEventPublisherServiceName,
192
+ T,
193
+ TAuditStorage,
194
+ TAuditStorageServiceName,
195
+ TAuditAction,
196
+ TDatabase,
197
+ TDatabaseServiceName,
198
+ TSecuritySchemes,
199
+ TRlsConfig
200
+ >({
201
+ defaultServices: this.defaultServices,
202
+ basePath: this.basePath,
203
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
204
+ defaultLogger: this.defaultLogger,
205
+ defaultSessionExtractor: this.defaultSessionExtractor,
206
+ defaultEventPublisher: this.defaultEventPublisher,
207
+ availableAuthorizers: authorizerConfigs,
208
+ defaultAuthorizerName: this.defaultAuthorizerName,
209
+ defaultAuditorStorage: this.defaultAuditorStorage,
210
+ defaultDatabaseService: this.defaultDatabaseService,
211
+ defaultActorExtractor: this.defaultActorExtractor,
212
+ customSecuritySchemes: this.customSecuritySchemes,
213
+ defaultRlsConfig: this.defaultRlsConfig,
214
+ });
215
+ }
217
216
 
218
- /**
219
- * Define custom security schemes for this factory.
220
- * These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).
221
- *
222
- * @example
223
- * ```typescript
224
- * const router = e.securitySchemes({
225
- * awsIamSigV4: {
226
- * type: 'apiKey',
227
- * in: 'header',
228
- * name: 'Authorization',
229
- * 'x-amazon-apigateway-authtype': 'awsSigv4',
230
- * },
231
- * });
232
- * ```
233
- */
234
- securitySchemes<T extends Record<string, SecurityScheme>>(
235
- schemes: T,
236
- ): EndpointFactory<
237
- TServices,
238
- TBasePath,
239
- TLogger,
240
- TSession,
241
- TEventPublisher,
242
- TEventPublisherServiceName,
243
- TAuthorizers,
244
- TAuditStorage,
245
- TAuditStorageServiceName,
246
- TAuditAction,
247
- TDatabase,
248
- TDatabaseServiceName,
249
- TSecuritySchemes & T,
250
- TRlsConfig
251
- > {
252
- return new EndpointFactory<
253
- TServices,
254
- TBasePath,
255
- TLogger,
256
- TSession,
257
- TEventPublisher,
258
- TEventPublisherServiceName,
259
- TAuthorizers,
260
- TAuditStorage,
261
- TAuditStorageServiceName,
262
- TAuditAction,
263
- TDatabase,
264
- TDatabaseServiceName,
265
- TSecuritySchemes & T,
266
- TRlsConfig
267
- >({
268
- defaultServices: this.defaultServices,
269
- basePath: this.basePath,
270
- defaultAuthorizeFn: this.defaultAuthorizeFn,
271
- defaultLogger: this.defaultLogger,
272
- defaultSessionExtractor: this.defaultSessionExtractor,
273
- defaultEventPublisher: this.defaultEventPublisher,
274
- availableAuthorizers: this.availableAuthorizers,
275
- defaultAuthorizerName: this.defaultAuthorizerName,
276
- defaultAuditorStorage: this.defaultAuditorStorage,
277
- defaultDatabaseService: this.defaultDatabaseService,
278
- defaultActorExtractor: this.defaultActorExtractor,
279
- customSecuritySchemes: {
280
- ...this.customSecuritySchemes,
281
- ...schemes,
282
- } as TSecuritySchemes & T,
283
- defaultRlsConfig: this.defaultRlsConfig,
284
- });
285
- }
217
+ /**
218
+ * Define custom security schemes for this factory.
219
+ * These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * const router = e.securitySchemes({
224
+ * awsIamSigV4: {
225
+ * type: 'apiKey',
226
+ * in: 'header',
227
+ * name: 'Authorization',
228
+ * 'x-amazon-apigateway-authtype': 'awsSigv4',
229
+ * },
230
+ * });
231
+ * ```
232
+ */
233
+ securitySchemes<T extends Record<string, SecurityScheme>>(
234
+ schemes: T,
235
+ ): EndpointFactory<
236
+ TServices,
237
+ TBasePath,
238
+ TLogger,
239
+ TSession,
240
+ TEventPublisher,
241
+ TEventPublisherServiceName,
242
+ TAuthorizers,
243
+ TAuditStorage,
244
+ TAuditStorageServiceName,
245
+ TAuditAction,
246
+ TDatabase,
247
+ TDatabaseServiceName,
248
+ TSecuritySchemes & T,
249
+ TRlsConfig
250
+ > {
251
+ return new EndpointFactory<
252
+ TServices,
253
+ TBasePath,
254
+ TLogger,
255
+ TSession,
256
+ TEventPublisher,
257
+ TEventPublisherServiceName,
258
+ TAuthorizers,
259
+ TAuditStorage,
260
+ TAuditStorageServiceName,
261
+ TAuditAction,
262
+ TDatabase,
263
+ TDatabaseServiceName,
264
+ TSecuritySchemes & T,
265
+ TRlsConfig
266
+ >({
267
+ defaultServices: this.defaultServices,
268
+ basePath: this.basePath,
269
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
270
+ defaultLogger: this.defaultLogger,
271
+ defaultSessionExtractor: this.defaultSessionExtractor,
272
+ defaultEventPublisher: this.defaultEventPublisher,
273
+ availableAuthorizers: this.availableAuthorizers,
274
+ defaultAuthorizerName: this.defaultAuthorizerName,
275
+ defaultAuditorStorage: this.defaultAuditorStorage,
276
+ defaultDatabaseService: this.defaultDatabaseService,
277
+ defaultActorExtractor: this.defaultActorExtractor,
278
+ customSecuritySchemes: {
279
+ ...this.customSecuritySchemes,
280
+ ...schemes,
281
+ } as TSecuritySchemes & T,
282
+ defaultRlsConfig: this.defaultRlsConfig,
283
+ });
284
+ }
286
285
 
287
- /**
288
- * Set the default authorizer for all endpoints created from this factory.
289
- * Individual endpoints can override this by calling `.authorizer()` on the builder.
290
- * Use `'none'` to explicitly disable authorization for all endpoints.
291
- *
292
- * Accepts:
293
- * - Built-in security scheme names: 'jwt', 'bearer', 'apiKey', 'oauth2', 'oidc'
294
- * - Custom security scheme names defined via `.securitySchemes()`
295
- * - 'none' to disable authorization
296
- */
297
- authorizer(
298
- name:
299
- | BuiltInSecuritySchemeId
300
- | keyof TSecuritySchemes
301
- | TAuthorizers[number]
302
- | 'none',
303
- ): EndpointFactory<
304
- TServices,
305
- TBasePath,
306
- TLogger,
307
- TSession,
308
- TEventPublisher,
309
- TEventPublisherServiceName,
310
- TAuthorizers,
311
- TAuditStorage,
312
- TAuditStorageServiceName,
313
- TAuditAction,
314
- TDatabase,
315
- TDatabaseServiceName,
316
- TSecuritySchemes,
317
- TRlsConfig
318
- > {
319
- // Validate that the authorizer exists in available authorizers (if authorizers() was called)
320
- if (name !== 'none' && this.availableAuthorizers.length > 0) {
321
- const authorizerExists = this.availableAuthorizers.some(
322
- (a) => a.name === name,
323
- );
324
- if (!authorizerExists) {
325
- const available = this.availableAuthorizers
326
- .map((a) => a.name)
327
- .join(', ');
328
- throw new Error(
329
- `Authorizer "${name as string}" not found in available authorizers: ${available}`,
330
- );
331
- }
332
- }
286
+ /**
287
+ * Set the default authorizer for all endpoints created from this factory.
288
+ * Individual endpoints can override this by calling `.authorizer()` on the builder.
289
+ * Use `'none'` to explicitly disable authorization for all endpoints.
290
+ *
291
+ * Accepts:
292
+ * - Built-in security scheme names: 'jwt', 'bearer', 'apiKey', 'oauth2', 'oidc'
293
+ * - Custom security scheme names defined via `.securitySchemes()`
294
+ * - 'none' to disable authorization
295
+ */
296
+ authorizer(
297
+ name:
298
+ | BuiltInSecuritySchemeId
299
+ | keyof TSecuritySchemes
300
+ | TAuthorizers[number]
301
+ | 'none',
302
+ ): EndpointFactory<
303
+ TServices,
304
+ TBasePath,
305
+ TLogger,
306
+ TSession,
307
+ TEventPublisher,
308
+ TEventPublisherServiceName,
309
+ TAuthorizers,
310
+ TAuditStorage,
311
+ TAuditStorageServiceName,
312
+ TAuditAction,
313
+ TDatabase,
314
+ TDatabaseServiceName,
315
+ TSecuritySchemes,
316
+ TRlsConfig
317
+ > {
318
+ // Validate that the authorizer exists in available authorizers (if authorizers() was called)
319
+ if (name !== 'none' && this.availableAuthorizers.length > 0) {
320
+ const authorizerExists = this.availableAuthorizers.some(
321
+ (a) => a.name === name,
322
+ );
323
+ if (!authorizerExists) {
324
+ const available = this.availableAuthorizers
325
+ .map((a) => a.name)
326
+ .join(', ');
327
+ throw new Error(
328
+ `Authorizer "${name as string}" not found in available authorizers: ${available}`,
329
+ );
330
+ }
331
+ }
333
332
 
334
- return new EndpointFactory<
335
- TServices,
336
- TBasePath,
337
- TLogger,
338
- TSession,
339
- TEventPublisher,
340
- TEventPublisherServiceName,
341
- TAuthorizers,
342
- TAuditStorage,
343
- TAuditStorageServiceName,
344
- TAuditAction,
345
- TDatabase,
346
- TDatabaseServiceName,
347
- TSecuritySchemes,
348
- TRlsConfig
349
- >({
350
- defaultServices: this.defaultServices,
351
- basePath: this.basePath,
352
- defaultAuthorizeFn: this.defaultAuthorizeFn,
353
- defaultLogger: this.defaultLogger,
354
- defaultSessionExtractor: this.defaultSessionExtractor,
355
- defaultEventPublisher: this.defaultEventPublisher,
356
- availableAuthorizers: this.availableAuthorizers,
357
- defaultAuthorizerName:
358
- name === 'none' ? undefined : (name as TAuthorizers[number]),
359
- defaultAuditorStorage: this.defaultAuditorStorage,
360
- defaultDatabaseService: this.defaultDatabaseService,
361
- defaultActorExtractor: this.defaultActorExtractor,
362
- customSecuritySchemes: this.customSecuritySchemes,
363
- defaultRlsConfig: this.defaultRlsConfig,
364
- });
365
- }
333
+ return new EndpointFactory<
334
+ TServices,
335
+ TBasePath,
336
+ TLogger,
337
+ TSession,
338
+ TEventPublisher,
339
+ TEventPublisherServiceName,
340
+ TAuthorizers,
341
+ TAuditStorage,
342
+ TAuditStorageServiceName,
343
+ TAuditAction,
344
+ TDatabase,
345
+ TDatabaseServiceName,
346
+ TSecuritySchemes,
347
+ TRlsConfig
348
+ >({
349
+ defaultServices: this.defaultServices,
350
+ basePath: this.basePath,
351
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
352
+ defaultLogger: this.defaultLogger,
353
+ defaultSessionExtractor: this.defaultSessionExtractor,
354
+ defaultEventPublisher: this.defaultEventPublisher,
355
+ availableAuthorizers: this.availableAuthorizers,
356
+ defaultAuthorizerName:
357
+ name === 'none' ? undefined : (name as TAuthorizers[number]),
358
+ defaultAuditorStorage: this.defaultAuditorStorage,
359
+ defaultDatabaseService: this.defaultDatabaseService,
360
+ defaultActorExtractor: this.defaultActorExtractor,
361
+ customSecuritySchemes: this.customSecuritySchemes,
362
+ defaultRlsConfig: this.defaultRlsConfig,
363
+ });
364
+ }
366
365
 
367
- // Create a sub-router with a path prefix
368
- route<TPath extends string>(
369
- path: TPath,
370
- ): EndpointFactory<
371
- TServices,
372
- JoinPaths<TBasePath, TPath>,
373
- TLogger,
374
- TSession,
375
- TEventPublisher,
376
- TEventPublisherServiceName,
377
- TAuthorizers,
378
- TAuditStorage,
379
- TAuditStorageServiceName,
380
- TAuditAction,
381
- TDatabase,
382
- TDatabaseServiceName,
383
- TSecuritySchemes,
384
- TRlsConfig
385
- > {
386
- const newBasePath = EndpointFactory.joinPaths(path, this.basePath);
387
- return new EndpointFactory<
388
- TServices,
389
- JoinPaths<TBasePath, TPath>,
390
- TLogger,
391
- TSession,
392
- TEventPublisher,
393
- TEventPublisherServiceName,
394
- TAuthorizers,
395
- TAuditStorage,
396
- TAuditStorageServiceName,
397
- TAuditAction,
398
- TDatabase,
399
- TDatabaseServiceName,
400
- TSecuritySchemes,
401
- TRlsConfig
402
- >({
403
- defaultServices: this.defaultServices,
404
- basePath: newBasePath,
405
- defaultAuthorizeFn: this.defaultAuthorizeFn,
406
- defaultLogger: this.defaultLogger,
407
- defaultSessionExtractor: this.defaultSessionExtractor,
408
- defaultEventPublisher: this.defaultEventPublisher,
409
- availableAuthorizers: this.availableAuthorizers,
410
- defaultAuthorizerName: this.defaultAuthorizerName,
411
- defaultAuditorStorage: this.defaultAuditorStorage,
412
- defaultDatabaseService: this.defaultDatabaseService,
413
- defaultActorExtractor: this.defaultActorExtractor,
414
- customSecuritySchemes: this.customSecuritySchemes,
415
- defaultRlsConfig: this.defaultRlsConfig,
416
- });
417
- }
366
+ // Create a sub-router with a path prefix
367
+ route<TPath extends string>(
368
+ path: TPath,
369
+ ): EndpointFactory<
370
+ TServices,
371
+ JoinPaths<TBasePath, TPath>,
372
+ TLogger,
373
+ TSession,
374
+ TEventPublisher,
375
+ TEventPublisherServiceName,
376
+ TAuthorizers,
377
+ TAuditStorage,
378
+ TAuditStorageServiceName,
379
+ TAuditAction,
380
+ TDatabase,
381
+ TDatabaseServiceName,
382
+ TSecuritySchemes,
383
+ TRlsConfig
384
+ > {
385
+ const newBasePath = EndpointFactory.joinPaths(path, this.basePath);
386
+ return new EndpointFactory<
387
+ TServices,
388
+ JoinPaths<TBasePath, TPath>,
389
+ TLogger,
390
+ TSession,
391
+ TEventPublisher,
392
+ TEventPublisherServiceName,
393
+ TAuthorizers,
394
+ TAuditStorage,
395
+ TAuditStorageServiceName,
396
+ TAuditAction,
397
+ TDatabase,
398
+ TDatabaseServiceName,
399
+ TSecuritySchemes,
400
+ TRlsConfig
401
+ >({
402
+ defaultServices: this.defaultServices,
403
+ basePath: newBasePath,
404
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
405
+ defaultLogger: this.defaultLogger,
406
+ defaultSessionExtractor: this.defaultSessionExtractor,
407
+ defaultEventPublisher: this.defaultEventPublisher,
408
+ availableAuthorizers: this.availableAuthorizers,
409
+ defaultAuthorizerName: this.defaultAuthorizerName,
410
+ defaultAuditorStorage: this.defaultAuditorStorage,
411
+ defaultDatabaseService: this.defaultDatabaseService,
412
+ defaultActorExtractor: this.defaultActorExtractor,
413
+ customSecuritySchemes: this.customSecuritySchemes,
414
+ defaultRlsConfig: this.defaultRlsConfig,
415
+ });
416
+ }
418
417
 
419
- // Create a new factory with authorization
420
- authorize(
421
- fn: AuthorizeFn<TServices, TLogger, TSession>,
422
- ): EndpointFactory<
423
- TServices,
424
- TBasePath,
425
- TLogger,
426
- TSession,
427
- TEventPublisher,
428
- TEventPublisherServiceName,
429
- TAuthorizers,
430
- TAuditStorage,
431
- TAuditStorageServiceName,
432
- TAuditAction,
433
- TDatabase,
434
- TDatabaseServiceName,
435
- TSecuritySchemes,
436
- TRlsConfig
437
- > {
438
- return new EndpointFactory<
439
- TServices,
440
- TBasePath,
441
- TLogger,
442
- TSession,
443
- TEventPublisher,
444
- TEventPublisherServiceName,
445
- TAuthorizers,
446
- TAuditStorage,
447
- TAuditStorageServiceName,
448
- TAuditAction,
449
- TDatabase,
450
- TDatabaseServiceName,
451
- TSecuritySchemes,
452
- TRlsConfig
453
- >({
454
- defaultServices: this.defaultServices,
455
- basePath: this.basePath,
456
- defaultAuthorizeFn: fn,
457
- defaultLogger: this.defaultLogger,
458
- defaultSessionExtractor: this.defaultSessionExtractor,
459
- defaultEventPublisher: this.defaultEventPublisher,
460
- availableAuthorizers: this.availableAuthorizers,
461
- defaultAuthorizerName: this.defaultAuthorizerName,
462
- defaultAuditorStorage: this.defaultAuditorStorage,
463
- defaultDatabaseService: this.defaultDatabaseService,
464
- defaultActorExtractor: this.defaultActorExtractor,
465
- customSecuritySchemes: this.customSecuritySchemes,
466
- defaultRlsConfig: this.defaultRlsConfig,
467
- });
468
- }
418
+ // Create a new factory with authorization
419
+ authorize(
420
+ fn: AuthorizeFn<TServices, TLogger, TSession>,
421
+ ): EndpointFactory<
422
+ TServices,
423
+ TBasePath,
424
+ TLogger,
425
+ TSession,
426
+ TEventPublisher,
427
+ TEventPublisherServiceName,
428
+ TAuthorizers,
429
+ TAuditStorage,
430
+ TAuditStorageServiceName,
431
+ TAuditAction,
432
+ TDatabase,
433
+ TDatabaseServiceName,
434
+ TSecuritySchemes,
435
+ TRlsConfig
436
+ > {
437
+ return new EndpointFactory<
438
+ TServices,
439
+ TBasePath,
440
+ TLogger,
441
+ TSession,
442
+ TEventPublisher,
443
+ TEventPublisherServiceName,
444
+ TAuthorizers,
445
+ TAuditStorage,
446
+ TAuditStorageServiceName,
447
+ TAuditAction,
448
+ TDatabase,
449
+ TDatabaseServiceName,
450
+ TSecuritySchemes,
451
+ TRlsConfig
452
+ >({
453
+ defaultServices: this.defaultServices,
454
+ basePath: this.basePath,
455
+ defaultAuthorizeFn: fn,
456
+ defaultLogger: this.defaultLogger,
457
+ defaultSessionExtractor: this.defaultSessionExtractor,
458
+ defaultEventPublisher: this.defaultEventPublisher,
459
+ availableAuthorizers: this.availableAuthorizers,
460
+ defaultAuthorizerName: this.defaultAuthorizerName,
461
+ defaultAuditorStorage: this.defaultAuditorStorage,
462
+ defaultDatabaseService: this.defaultDatabaseService,
463
+ defaultActorExtractor: this.defaultActorExtractor,
464
+ customSecuritySchemes: this.customSecuritySchemes,
465
+ defaultRlsConfig: this.defaultRlsConfig,
466
+ });
467
+ }
469
468
 
470
- // Create a new factory with services
471
- services<S extends Service[]>(
472
- services: S,
473
- ): EndpointFactory<
474
- [...S, ...TServices],
475
- TBasePath,
476
- TLogger,
477
- TSession,
478
- TEventPublisher,
479
- TEventPublisherServiceName,
480
- TAuthorizers,
481
- TAuditStorage,
482
- TAuditStorageServiceName,
483
- TAuditAction,
484
- TDatabase,
485
- TDatabaseServiceName,
486
- TSecuritySchemes,
487
- undefined // Reset RLS config when services change - user should call .rls() after .services()
488
- > {
489
- return new EndpointFactory<
490
- [...S, ...TServices],
491
- TBasePath,
492
- TLogger,
493
- TSession,
494
- TEventPublisher,
495
- TEventPublisherServiceName,
496
- TAuthorizers,
497
- TAuditStorage,
498
- TAuditStorageServiceName,
499
- TAuditAction,
500
- TDatabase,
501
- TDatabaseServiceName,
502
- TSecuritySchemes,
503
- undefined
504
- >({
505
- defaultServices: [...services, ...this.defaultServices],
506
- basePath: this.basePath,
507
- defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<
508
- [...S, ...TServices],
509
- TLogger,
510
- TSession
511
- >,
512
- defaultLogger: this.defaultLogger,
513
- defaultSessionExtractor: this.defaultSessionExtractor as unknown as
514
- | SessionFn<[...S, ...TServices], TLogger, TSession, TDatabase>
515
- | undefined,
516
- defaultEventPublisher: this.defaultEventPublisher,
517
- availableAuthorizers: this.availableAuthorizers,
518
- defaultAuthorizerName: this.defaultAuthorizerName,
519
- defaultAuditorStorage: this.defaultAuditorStorage,
520
- defaultDatabaseService: this.defaultDatabaseService,
521
- defaultActorExtractor: this.defaultActorExtractor as unknown as
522
- | ActorExtractor<[...S, ...TServices], TSession, TLogger>
523
- | undefined,
524
- customSecuritySchemes: this.customSecuritySchemes,
525
- // Reset RLS config when services change since it depends on TServices
526
- defaultRlsConfig: undefined,
527
- });
528
- }
469
+ // Create a new factory with services
470
+ services<S extends Service[]>(
471
+ services: S,
472
+ ): EndpointFactory<
473
+ [...S, ...TServices],
474
+ TBasePath,
475
+ TLogger,
476
+ TSession,
477
+ TEventPublisher,
478
+ TEventPublisherServiceName,
479
+ TAuthorizers,
480
+ TAuditStorage,
481
+ TAuditStorageServiceName,
482
+ TAuditAction,
483
+ TDatabase,
484
+ TDatabaseServiceName,
485
+ TSecuritySchemes,
486
+ undefined // Reset RLS config when services change - user should call .rls() after .services()
487
+ > {
488
+ return new EndpointFactory<
489
+ [...S, ...TServices],
490
+ TBasePath,
491
+ TLogger,
492
+ TSession,
493
+ TEventPublisher,
494
+ TEventPublisherServiceName,
495
+ TAuthorizers,
496
+ TAuditStorage,
497
+ TAuditStorageServiceName,
498
+ TAuditAction,
499
+ TDatabase,
500
+ TDatabaseServiceName,
501
+ TSecuritySchemes,
502
+ undefined
503
+ >({
504
+ defaultServices: [...services, ...this.defaultServices],
505
+ basePath: this.basePath,
506
+ defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<
507
+ [...S, ...TServices],
508
+ TLogger,
509
+ TSession
510
+ >,
511
+ defaultLogger: this.defaultLogger,
512
+ defaultSessionExtractor: this.defaultSessionExtractor as unknown as
513
+ | SessionFn<[...S, ...TServices], TLogger, TSession, TDatabase>
514
+ | undefined,
515
+ defaultEventPublisher: this.defaultEventPublisher,
516
+ availableAuthorizers: this.availableAuthorizers,
517
+ defaultAuthorizerName: this.defaultAuthorizerName,
518
+ defaultAuditorStorage: this.defaultAuditorStorage,
519
+ defaultDatabaseService: this.defaultDatabaseService,
520
+ defaultActorExtractor: this.defaultActorExtractor as unknown as
521
+ | ActorExtractor<[...S, ...TServices], TSession, TLogger>
522
+ | undefined,
523
+ customSecuritySchemes: this.customSecuritySchemes,
524
+ // Reset RLS config when services change since it depends on TServices
525
+ defaultRlsConfig: undefined,
526
+ });
527
+ }
529
528
 
530
- logger<L extends Logger>(
531
- logger: L,
532
- ): EndpointFactory<
533
- TServices,
534
- TBasePath,
535
- L,
536
- TSession,
537
- TEventPublisher,
538
- TEventPublisherServiceName,
539
- TAuthorizers,
540
- TAuditStorage,
541
- TAuditStorageServiceName,
542
- TAuditAction,
543
- TDatabase,
544
- TDatabaseServiceName,
545
- TSecuritySchemes,
546
- undefined // Reset RLS config when logger type changes - user should call .rls() after .logger()
547
- > {
548
- return new EndpointFactory<
549
- TServices,
550
- TBasePath,
551
- L,
552
- TSession,
553
- TEventPublisher,
554
- TEventPublisherServiceName,
555
- TAuthorizers,
556
- TAuditStorage,
557
- TAuditStorageServiceName,
558
- TAuditAction,
559
- TDatabase,
560
- TDatabaseServiceName,
561
- TSecuritySchemes,
562
- undefined
563
- >({
564
- defaultServices: this.defaultServices,
565
- basePath: this.basePath,
566
- defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<
567
- TServices,
568
- L,
569
- TSession
570
- >,
571
- defaultLogger: logger,
572
- defaultSessionExtractor: this
573
- .defaultSessionExtractor as unknown as SessionFn<
574
- TServices,
575
- L,
576
- TSession
577
- >,
578
- defaultEventPublisher: this.defaultEventPublisher,
579
- availableAuthorizers: this.availableAuthorizers,
580
- defaultAuthorizerName: this.defaultAuthorizerName,
581
- defaultAuditorStorage: this.defaultAuditorStorage,
582
- defaultDatabaseService: this.defaultDatabaseService,
583
- defaultActorExtractor: this
584
- .defaultActorExtractor as unknown as ActorExtractor<
585
- TServices,
586
- TSession,
587
- L
588
- >,
589
- customSecuritySchemes: this.customSecuritySchemes,
590
- // Reset RLS config when logger type changes since it depends on TLogger
591
- defaultRlsConfig: undefined,
592
- });
593
- }
529
+ logger<L extends Logger>(
530
+ logger: L,
531
+ ): EndpointFactory<
532
+ TServices,
533
+ TBasePath,
534
+ L,
535
+ TSession,
536
+ TEventPublisher,
537
+ TEventPublisherServiceName,
538
+ TAuthorizers,
539
+ TAuditStorage,
540
+ TAuditStorageServiceName,
541
+ TAuditAction,
542
+ TDatabase,
543
+ TDatabaseServiceName,
544
+ TSecuritySchemes,
545
+ undefined // Reset RLS config when logger type changes - user should call .rls() after .logger()
546
+ > {
547
+ return new EndpointFactory<
548
+ TServices,
549
+ TBasePath,
550
+ L,
551
+ TSession,
552
+ TEventPublisher,
553
+ TEventPublisherServiceName,
554
+ TAuthorizers,
555
+ TAuditStorage,
556
+ TAuditStorageServiceName,
557
+ TAuditAction,
558
+ TDatabase,
559
+ TDatabaseServiceName,
560
+ TSecuritySchemes,
561
+ undefined
562
+ >({
563
+ defaultServices: this.defaultServices,
564
+ basePath: this.basePath,
565
+ defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<
566
+ TServices,
567
+ L,
568
+ TSession
569
+ >,
570
+ defaultLogger: logger,
571
+ defaultSessionExtractor: this
572
+ .defaultSessionExtractor as unknown as SessionFn<
573
+ TServices,
574
+ L,
575
+ TSession
576
+ >,
577
+ defaultEventPublisher: this.defaultEventPublisher,
578
+ availableAuthorizers: this.availableAuthorizers,
579
+ defaultAuthorizerName: this.defaultAuthorizerName,
580
+ defaultAuditorStorage: this.defaultAuditorStorage,
581
+ defaultDatabaseService: this.defaultDatabaseService,
582
+ defaultActorExtractor: this
583
+ .defaultActorExtractor as unknown as ActorExtractor<
584
+ TServices,
585
+ TSession,
586
+ L
587
+ >,
588
+ customSecuritySchemes: this.customSecuritySchemes,
589
+ // Reset RLS config when logger type changes since it depends on TLogger
590
+ defaultRlsConfig: undefined,
591
+ });
592
+ }
594
593
 
595
- publisher<
596
- T extends EventPublisher<any>,
597
- TServiceName extends string = string,
598
- >(
599
- publisher: Service<TServiceName, T>,
600
- ): EndpointFactory<
601
- TServices,
602
- TBasePath,
603
- TLogger,
604
- TSession,
605
- T,
606
- TServiceName,
607
- TAuthorizers,
608
- TAuditStorage,
609
- TAuditStorageServiceName,
610
- TAuditAction,
611
- TDatabase,
612
- TDatabaseServiceName,
613
- TSecuritySchemes,
614
- TRlsConfig
615
- > {
616
- return new EndpointFactory<
617
- TServices,
618
- TBasePath,
619
- TLogger,
620
- TSession,
621
- T,
622
- TServiceName,
623
- TAuthorizers,
624
- TAuditStorage,
625
- TAuditStorageServiceName,
626
- TAuditAction,
627
- TDatabase,
628
- TDatabaseServiceName,
629
- TSecuritySchemes,
630
- TRlsConfig
631
- >({
632
- defaultServices: this.defaultServices,
633
- basePath: this.basePath,
634
- defaultAuthorizeFn: this.defaultAuthorizeFn,
635
- defaultLogger: this.defaultLogger,
636
- defaultSessionExtractor: this.defaultSessionExtractor,
637
- defaultEventPublisher: publisher,
638
- availableAuthorizers: this.availableAuthorizers,
639
- defaultAuthorizerName: this.defaultAuthorizerName,
640
- defaultAuditorStorage: this.defaultAuditorStorage,
641
- defaultDatabaseService: this.defaultDatabaseService,
642
- defaultActorExtractor: this.defaultActorExtractor,
643
- customSecuritySchemes: this.customSecuritySchemes,
644
- defaultRlsConfig: this.defaultRlsConfig,
645
- });
646
- }
594
+ publisher<
595
+ T extends EventPublisher<any>,
596
+ TServiceName extends string = string,
597
+ >(
598
+ publisher: Service<TServiceName, T>,
599
+ ): EndpointFactory<
600
+ TServices,
601
+ TBasePath,
602
+ TLogger,
603
+ TSession,
604
+ T,
605
+ TServiceName,
606
+ TAuthorizers,
607
+ TAuditStorage,
608
+ TAuditStorageServiceName,
609
+ TAuditAction,
610
+ TDatabase,
611
+ TDatabaseServiceName,
612
+ TSecuritySchemes,
613
+ TRlsConfig
614
+ > {
615
+ return new EndpointFactory<
616
+ TServices,
617
+ TBasePath,
618
+ TLogger,
619
+ TSession,
620
+ T,
621
+ TServiceName,
622
+ TAuthorizers,
623
+ TAuditStorage,
624
+ TAuditStorageServiceName,
625
+ TAuditAction,
626
+ TDatabase,
627
+ TDatabaseServiceName,
628
+ TSecuritySchemes,
629
+ TRlsConfig
630
+ >({
631
+ defaultServices: this.defaultServices,
632
+ basePath: this.basePath,
633
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
634
+ defaultLogger: this.defaultLogger,
635
+ defaultSessionExtractor: this.defaultSessionExtractor,
636
+ defaultEventPublisher: publisher,
637
+ availableAuthorizers: this.availableAuthorizers,
638
+ defaultAuthorizerName: this.defaultAuthorizerName,
639
+ defaultAuditorStorage: this.defaultAuditorStorage,
640
+ defaultDatabaseService: this.defaultDatabaseService,
641
+ defaultActorExtractor: this.defaultActorExtractor,
642
+ customSecuritySchemes: this.customSecuritySchemes,
643
+ defaultRlsConfig: this.defaultRlsConfig,
644
+ });
645
+ }
647
646
 
648
- session<T>(
649
- session: SessionFn<TServices, TLogger, T, TDatabase>,
650
- ): EndpointFactory<
651
- TServices,
652
- TBasePath,
653
- TLogger,
654
- T,
655
- TEventPublisher,
656
- TEventPublisherServiceName,
657
- TAuthorizers,
658
- TAuditStorage,
659
- TAuditStorageServiceName,
660
- TAuditAction,
661
- TDatabase,
662
- TDatabaseServiceName,
663
- TSecuritySchemes,
664
- undefined // Reset RLS config when session type changes - user should call .rls() after .session()
665
- > {
666
- return new EndpointFactory<
667
- TServices,
668
- TBasePath,
669
- TLogger,
670
- T,
671
- TEventPublisher,
672
- TEventPublisherServiceName,
673
- TAuthorizers,
674
- TAuditStorage,
675
- TAuditStorageServiceName,
676
- TAuditAction,
677
- TDatabase,
678
- TDatabaseServiceName,
679
- TSecuritySchemes,
680
- undefined
681
- >({
682
- defaultServices: this.defaultServices,
683
- basePath: this.basePath,
684
- defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<
685
- TServices,
686
- TLogger,
687
- T
688
- >,
689
- defaultLogger: this.defaultLogger,
690
- defaultSessionExtractor: session,
691
- defaultEventPublisher: this.defaultEventPublisher,
692
- availableAuthorizers: this.availableAuthorizers,
693
- defaultAuthorizerName: this.defaultAuthorizerName,
694
- defaultAuditorStorage: this.defaultAuditorStorage,
695
- defaultDatabaseService: this.defaultDatabaseService,
696
- defaultActorExtractor: this
697
- .defaultActorExtractor as unknown as ActorExtractor<
698
- TServices,
699
- T,
700
- TLogger
701
- >,
702
- customSecuritySchemes: this.customSecuritySchemes,
703
- // Reset RLS config when session type changes since it depends on TSession
704
- defaultRlsConfig: undefined,
705
- });
706
- }
647
+ session<T>(
648
+ session: SessionFn<TServices, TLogger, T, TDatabase>,
649
+ ): EndpointFactory<
650
+ TServices,
651
+ TBasePath,
652
+ TLogger,
653
+ T,
654
+ TEventPublisher,
655
+ TEventPublisherServiceName,
656
+ TAuthorizers,
657
+ TAuditStorage,
658
+ TAuditStorageServiceName,
659
+ TAuditAction,
660
+ TDatabase,
661
+ TDatabaseServiceName,
662
+ TSecuritySchemes,
663
+ undefined // Reset RLS config when session type changes - user should call .rls() after .session()
664
+ > {
665
+ return new EndpointFactory<
666
+ TServices,
667
+ TBasePath,
668
+ TLogger,
669
+ T,
670
+ TEventPublisher,
671
+ TEventPublisherServiceName,
672
+ TAuthorizers,
673
+ TAuditStorage,
674
+ TAuditStorageServiceName,
675
+ TAuditAction,
676
+ TDatabase,
677
+ TDatabaseServiceName,
678
+ TSecuritySchemes,
679
+ undefined
680
+ >({
681
+ defaultServices: this.defaultServices,
682
+ basePath: this.basePath,
683
+ defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<
684
+ TServices,
685
+ TLogger,
686
+ T
687
+ >,
688
+ defaultLogger: this.defaultLogger,
689
+ defaultSessionExtractor: session,
690
+ defaultEventPublisher: this.defaultEventPublisher,
691
+ availableAuthorizers: this.availableAuthorizers,
692
+ defaultAuthorizerName: this.defaultAuthorizerName,
693
+ defaultAuditorStorage: this.defaultAuditorStorage,
694
+ defaultDatabaseService: this.defaultDatabaseService,
695
+ defaultActorExtractor: this
696
+ .defaultActorExtractor as unknown as ActorExtractor<
697
+ TServices,
698
+ T,
699
+ TLogger
700
+ >,
701
+ customSecuritySchemes: this.customSecuritySchemes,
702
+ // Reset RLS config when session type changes since it depends on TSession
703
+ defaultRlsConfig: undefined,
704
+ });
705
+ }
707
706
 
708
- /**
709
- * Set the database service for endpoints created from this factory.
710
- * The database will be available in handler context as `db`.
711
- */
712
- database<T, TName extends string>(
713
- service: Service<TName, T>,
714
- ): EndpointFactory<
715
- TServices,
716
- TBasePath,
717
- TLogger,
718
- TSession,
719
- TEventPublisher,
720
- TEventPublisherServiceName,
721
- TAuthorizers,
722
- TAuditStorage,
723
- TAuditStorageServiceName,
724
- TAuditAction,
725
- T,
726
- TName,
727
- TSecuritySchemes,
728
- TRlsConfig
729
- > {
730
- return new EndpointFactory<
731
- TServices,
732
- TBasePath,
733
- TLogger,
734
- TSession,
735
- TEventPublisher,
736
- TEventPublisherServiceName,
737
- TAuthorizers,
738
- TAuditStorage,
739
- TAuditStorageServiceName,
740
- TAuditAction,
741
- T,
742
- TName,
743
- TSecuritySchemes,
744
- TRlsConfig
745
- >({
746
- defaultServices: this.defaultServices,
747
- basePath: this.basePath,
748
- defaultAuthorizeFn: this.defaultAuthorizeFn,
749
- defaultLogger: this.defaultLogger,
750
- // Reset session extractor when database changes - user should call .session() after .database()
751
- // to get proper type inference for the new database type
752
- defaultSessionExtractor: this.defaultSessionExtractor as unknown as
753
- | SessionFn<TServices, TLogger, TSession, T>
754
- | undefined,
755
- defaultEventPublisher: this.defaultEventPublisher,
756
- availableAuthorizers: this.availableAuthorizers,
757
- defaultAuthorizerName: this.defaultAuthorizerName,
758
- defaultAuditorStorage: this.defaultAuditorStorage,
759
- defaultDatabaseService: service,
760
- customSecuritySchemes: this.customSecuritySchemes,
761
- defaultRlsConfig: this.defaultRlsConfig,
762
- });
763
- }
707
+ /**
708
+ * Set the database service for endpoints created from this factory.
709
+ * The database will be available in handler context as `db`.
710
+ */
711
+ database<T, TName extends string>(
712
+ service: Service<TName, T>,
713
+ ): EndpointFactory<
714
+ TServices,
715
+ TBasePath,
716
+ TLogger,
717
+ TSession,
718
+ TEventPublisher,
719
+ TEventPublisherServiceName,
720
+ TAuthorizers,
721
+ TAuditStorage,
722
+ TAuditStorageServiceName,
723
+ TAuditAction,
724
+ T,
725
+ TName,
726
+ TSecuritySchemes,
727
+ TRlsConfig
728
+ > {
729
+ return new EndpointFactory<
730
+ TServices,
731
+ TBasePath,
732
+ TLogger,
733
+ TSession,
734
+ TEventPublisher,
735
+ TEventPublisherServiceName,
736
+ TAuthorizers,
737
+ TAuditStorage,
738
+ TAuditStorageServiceName,
739
+ TAuditAction,
740
+ T,
741
+ TName,
742
+ TSecuritySchemes,
743
+ TRlsConfig
744
+ >({
745
+ defaultServices: this.defaultServices,
746
+ basePath: this.basePath,
747
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
748
+ defaultLogger: this.defaultLogger,
749
+ // Reset session extractor when database changes - user should call .session() after .database()
750
+ // to get proper type inference for the new database type
751
+ defaultSessionExtractor: this.defaultSessionExtractor as unknown as
752
+ | SessionFn<TServices, TLogger, TSession, T>
753
+ | undefined,
754
+ defaultEventPublisher: this.defaultEventPublisher,
755
+ availableAuthorizers: this.availableAuthorizers,
756
+ defaultAuthorizerName: this.defaultAuthorizerName,
757
+ defaultAuditorStorage: this.defaultAuditorStorage,
758
+ defaultDatabaseService: service,
759
+ customSecuritySchemes: this.customSecuritySchemes,
760
+ defaultRlsConfig: this.defaultRlsConfig,
761
+ });
762
+ }
764
763
 
765
- /**
766
- * Set the auditor storage service for endpoints created from this factory.
767
- * This enables audit functionality and makes `auditor` available in handler context.
768
- * The audit action type is automatically inferred from the storage's generic parameter.
769
- */
770
- auditor<T extends AuditStorage<any>, TName extends string>(
771
- storage: Service<TName, T>,
772
- ): EndpointFactory<
773
- TServices,
774
- TBasePath,
775
- TLogger,
776
- TSession,
777
- TEventPublisher,
778
- TEventPublisherServiceName,
779
- TAuthorizers,
780
- T,
781
- TName,
782
- ExtractStorageAuditAction<T>,
783
- TDatabase,
784
- TDatabaseServiceName,
785
- TSecuritySchemes,
786
- TRlsConfig
787
- > {
788
- return new EndpointFactory<
789
- TServices,
790
- TBasePath,
791
- TLogger,
792
- TSession,
793
- TEventPublisher,
794
- TEventPublisherServiceName,
795
- TAuthorizers,
796
- T,
797
- TName,
798
- ExtractStorageAuditAction<T>,
799
- TDatabase,
800
- TDatabaseServiceName,
801
- TSecuritySchemes,
802
- TRlsConfig
803
- >({
804
- defaultServices: this.defaultServices,
805
- basePath: this.basePath,
806
- defaultAuthorizeFn: this.defaultAuthorizeFn,
807
- defaultLogger: this.defaultLogger,
808
- defaultSessionExtractor: this.defaultSessionExtractor,
809
- defaultEventPublisher: this.defaultEventPublisher,
810
- availableAuthorizers: this.availableAuthorizers,
811
- defaultAuthorizerName: this.defaultAuthorizerName,
812
- defaultAuditorStorage: storage,
813
- defaultDatabaseService: this.defaultDatabaseService,
814
- defaultActorExtractor: this
815
- .defaultActorExtractor as unknown as ActorExtractor<
816
- TServices,
817
- TSession,
818
- TLogger
819
- >,
820
- customSecuritySchemes: this.customSecuritySchemes,
821
- defaultRlsConfig: this.defaultRlsConfig,
822
- });
823
- }
764
+ /**
765
+ * Set the auditor storage service for endpoints created from this factory.
766
+ * This enables audit functionality and makes `auditor` available in handler context.
767
+ * The audit action type is automatically inferred from the storage's generic parameter.
768
+ */
769
+ auditor<T extends AuditStorage<any>, TName extends string>(
770
+ storage: Service<TName, T>,
771
+ ): EndpointFactory<
772
+ TServices,
773
+ TBasePath,
774
+ TLogger,
775
+ TSession,
776
+ TEventPublisher,
777
+ TEventPublisherServiceName,
778
+ TAuthorizers,
779
+ T,
780
+ TName,
781
+ ExtractStorageAuditAction<T>,
782
+ TDatabase,
783
+ TDatabaseServiceName,
784
+ TSecuritySchemes,
785
+ TRlsConfig
786
+ > {
787
+ return new EndpointFactory<
788
+ TServices,
789
+ TBasePath,
790
+ TLogger,
791
+ TSession,
792
+ TEventPublisher,
793
+ TEventPublisherServiceName,
794
+ TAuthorizers,
795
+ T,
796
+ TName,
797
+ ExtractStorageAuditAction<T>,
798
+ TDatabase,
799
+ TDatabaseServiceName,
800
+ TSecuritySchemes,
801
+ TRlsConfig
802
+ >({
803
+ defaultServices: this.defaultServices,
804
+ basePath: this.basePath,
805
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
806
+ defaultLogger: this.defaultLogger,
807
+ defaultSessionExtractor: this.defaultSessionExtractor,
808
+ defaultEventPublisher: this.defaultEventPublisher,
809
+ availableAuthorizers: this.availableAuthorizers,
810
+ defaultAuthorizerName: this.defaultAuthorizerName,
811
+ defaultAuditorStorage: storage,
812
+ defaultDatabaseService: this.defaultDatabaseService,
813
+ defaultActorExtractor: this
814
+ .defaultActorExtractor as unknown as ActorExtractor<
815
+ TServices,
816
+ TSession,
817
+ TLogger
818
+ >,
819
+ customSecuritySchemes: this.customSecuritySchemes,
820
+ defaultRlsConfig: this.defaultRlsConfig,
821
+ });
822
+ }
824
823
 
825
- /**
826
- * Set the actor extractor function for endpoints created from this factory.
827
- * The actor is extracted from the request context and attached to all audits.
828
- */
829
- actor(
830
- extractor: ActorExtractor<TServices, TSession, TLogger>,
831
- ): EndpointFactory<
832
- TServices,
833
- TBasePath,
834
- TLogger,
835
- TSession,
836
- TEventPublisher,
837
- TEventPublisherServiceName,
838
- TAuthorizers,
839
- TAuditStorage,
840
- TAuditStorageServiceName,
841
- TAuditAction,
842
- TDatabase,
843
- TDatabaseServiceName,
844
- TSecuritySchemes,
845
- TRlsConfig
846
- > {
847
- return new EndpointFactory<
848
- TServices,
849
- TBasePath,
850
- TLogger,
851
- TSession,
852
- TEventPublisher,
853
- TEventPublisherServiceName,
854
- TAuthorizers,
855
- TAuditStorage,
856
- TAuditStorageServiceName,
857
- TAuditAction,
858
- TDatabase,
859
- TDatabaseServiceName,
860
- TSecuritySchemes,
861
- TRlsConfig
862
- >({
863
- defaultServices: this.defaultServices,
864
- basePath: this.basePath,
865
- defaultAuthorizeFn: this.defaultAuthorizeFn,
866
- defaultLogger: this.defaultLogger,
867
- defaultSessionExtractor: this.defaultSessionExtractor,
868
- defaultEventPublisher: this.defaultEventPublisher,
869
- availableAuthorizers: this.availableAuthorizers,
870
- defaultAuthorizerName: this.defaultAuthorizerName,
871
- defaultAuditorStorage: this.defaultAuditorStorage,
872
- defaultDatabaseService: this.defaultDatabaseService,
873
- defaultActorExtractor: extractor,
874
- customSecuritySchemes: this.customSecuritySchemes,
875
- defaultRlsConfig: this.defaultRlsConfig,
876
- });
877
- }
824
+ /**
825
+ * Set the actor extractor function for endpoints created from this factory.
826
+ * The actor is extracted from the request context and attached to all audits.
827
+ */
828
+ actor(
829
+ extractor: ActorExtractor<TServices, TSession, TLogger>,
830
+ ): EndpointFactory<
831
+ TServices,
832
+ TBasePath,
833
+ TLogger,
834
+ TSession,
835
+ TEventPublisher,
836
+ TEventPublisherServiceName,
837
+ TAuthorizers,
838
+ TAuditStorage,
839
+ TAuditStorageServiceName,
840
+ TAuditAction,
841
+ TDatabase,
842
+ TDatabaseServiceName,
843
+ TSecuritySchemes,
844
+ TRlsConfig
845
+ > {
846
+ return new EndpointFactory<
847
+ TServices,
848
+ TBasePath,
849
+ TLogger,
850
+ TSession,
851
+ TEventPublisher,
852
+ TEventPublisherServiceName,
853
+ TAuthorizers,
854
+ TAuditStorage,
855
+ TAuditStorageServiceName,
856
+ TAuditAction,
857
+ TDatabase,
858
+ TDatabaseServiceName,
859
+ TSecuritySchemes,
860
+ TRlsConfig
861
+ >({
862
+ defaultServices: this.defaultServices,
863
+ basePath: this.basePath,
864
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
865
+ defaultLogger: this.defaultLogger,
866
+ defaultSessionExtractor: this.defaultSessionExtractor,
867
+ defaultEventPublisher: this.defaultEventPublisher,
868
+ availableAuthorizers: this.availableAuthorizers,
869
+ defaultAuthorizerName: this.defaultAuthorizerName,
870
+ defaultAuditorStorage: this.defaultAuditorStorage,
871
+ defaultDatabaseService: this.defaultDatabaseService,
872
+ defaultActorExtractor: extractor,
873
+ customSecuritySchemes: this.customSecuritySchemes,
874
+ defaultRlsConfig: this.defaultRlsConfig,
875
+ });
876
+ }
878
877
 
879
- /**
880
- * Set the RLS (Row-Level Security) configuration for endpoints created from this factory.
881
- * This enables automatic PostgreSQL session variable setting for RLS policies.
882
- *
883
- * @example
884
- * ```typescript
885
- * const api = new EndpointFactory()
886
- * .database(databaseService)
887
- * .session(extractSession)
888
- * .rls({
889
- * extractor: ({ session }) => ({
890
- * user_id: session.userId,
891
- * tenant_id: session.tenantId,
892
- * }),
893
- * prefix: 'app',
894
- * });
895
- * ```
896
- */
897
- rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(
898
- config: TConfig,
899
- ): EndpointFactory<
900
- TServices,
901
- TBasePath,
902
- TLogger,
903
- TSession,
904
- TEventPublisher,
905
- TEventPublisherServiceName,
906
- TAuthorizers,
907
- TAuditStorage,
908
- TAuditStorageServiceName,
909
- TAuditAction,
910
- TDatabase,
911
- TDatabaseServiceName,
912
- TSecuritySchemes,
913
- TConfig
914
- > {
915
- return new EndpointFactory<
916
- TServices,
917
- TBasePath,
918
- TLogger,
919
- TSession,
920
- TEventPublisher,
921
- TEventPublisherServiceName,
922
- TAuthorizers,
923
- TAuditStorage,
924
- TAuditStorageServiceName,
925
- TAuditAction,
926
- TDatabase,
927
- TDatabaseServiceName,
928
- TSecuritySchemes,
929
- TConfig
930
- >({
931
- defaultServices: this.defaultServices,
932
- basePath: this.basePath,
933
- defaultAuthorizeFn: this.defaultAuthorizeFn,
934
- defaultLogger: this.defaultLogger,
935
- defaultSessionExtractor: this.defaultSessionExtractor,
936
- defaultEventPublisher: this.defaultEventPublisher,
937
- availableAuthorizers: this.availableAuthorizers,
938
- defaultAuthorizerName: this.defaultAuthorizerName,
939
- defaultAuditorStorage: this.defaultAuditorStorage,
940
- defaultDatabaseService: this.defaultDatabaseService,
941
- defaultActorExtractor: this.defaultActorExtractor,
942
- customSecuritySchemes: this.customSecuritySchemes,
943
- defaultRlsConfig: config,
944
- });
945
- }
878
+ /**
879
+ * Set the RLS (Row-Level Security) configuration for endpoints created from this factory.
880
+ * This enables automatic PostgreSQL session variable setting for RLS policies.
881
+ *
882
+ * @example
883
+ * ```typescript
884
+ * const api = new EndpointFactory()
885
+ * .database(databaseService)
886
+ * .session(extractSession)
887
+ * .rls({
888
+ * extractor: ({ session }) => ({
889
+ * user_id: session.userId,
890
+ * tenant_id: session.tenantId,
891
+ * }),
892
+ * prefix: 'app',
893
+ * });
894
+ * ```
895
+ */
896
+ rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(
897
+ config: TConfig,
898
+ ): EndpointFactory<
899
+ TServices,
900
+ TBasePath,
901
+ TLogger,
902
+ TSession,
903
+ TEventPublisher,
904
+ TEventPublisherServiceName,
905
+ TAuthorizers,
906
+ TAuditStorage,
907
+ TAuditStorageServiceName,
908
+ TAuditAction,
909
+ TDatabase,
910
+ TDatabaseServiceName,
911
+ TSecuritySchemes,
912
+ TConfig
913
+ > {
914
+ return new EndpointFactory<
915
+ TServices,
916
+ TBasePath,
917
+ TLogger,
918
+ TSession,
919
+ TEventPublisher,
920
+ TEventPublisherServiceName,
921
+ TAuthorizers,
922
+ TAuditStorage,
923
+ TAuditStorageServiceName,
924
+ TAuditAction,
925
+ TDatabase,
926
+ TDatabaseServiceName,
927
+ TSecuritySchemes,
928
+ TConfig
929
+ >({
930
+ defaultServices: this.defaultServices,
931
+ basePath: this.basePath,
932
+ defaultAuthorizeFn: this.defaultAuthorizeFn,
933
+ defaultLogger: this.defaultLogger,
934
+ defaultSessionExtractor: this.defaultSessionExtractor,
935
+ defaultEventPublisher: this.defaultEventPublisher,
936
+ availableAuthorizers: this.availableAuthorizers,
937
+ defaultAuthorizerName: this.defaultAuthorizerName,
938
+ defaultAuditorStorage: this.defaultAuditorStorage,
939
+ defaultDatabaseService: this.defaultDatabaseService,
940
+ defaultActorExtractor: this.defaultActorExtractor,
941
+ customSecuritySchemes: this.customSecuritySchemes,
942
+ defaultRlsConfig: config,
943
+ });
944
+ }
946
945
 
947
- private createBuilder<TMethod extends HttpMethod, TPath extends string>(
948
- method: TMethod,
949
- path: TPath,
950
- ): EndpointBuilder<
951
- JoinPaths<TBasePath, TPath>,
952
- TMethod,
953
- {},
954
- TServices,
955
- TLogger,
956
- undefined,
957
- TSession,
958
- TEventPublisher,
959
- TEventPublisherServiceName,
960
- TAuthorizers,
961
- TAuditStorage,
962
- TAuditStorageServiceName,
963
- TAuditAction,
964
- TDatabase,
965
- TDatabaseServiceName
966
- > {
967
- const fullPath = EndpointFactory.joinPaths(path, this.basePath);
968
- const builder = new EndpointBuilder<
969
- JoinPaths<TBasePath, TPath>,
970
- TMethod,
971
- {},
972
- TServices,
973
- TLogger,
974
- undefined,
975
- TSession,
976
- TEventPublisher,
977
- TEventPublisherServiceName,
978
- TAuthorizers,
979
- TAuditStorage,
980
- TAuditStorageServiceName,
981
- TAuditAction,
982
- TDatabase,
983
- TDatabaseServiceName
984
- >(fullPath, method);
946
+ private createBuilder<TMethod extends HttpMethod, TPath extends string>(
947
+ method: TMethod,
948
+ path: TPath,
949
+ ): EndpointBuilder<
950
+ JoinPaths<TBasePath, TPath>,
951
+ TMethod,
952
+ {},
953
+ TServices,
954
+ TLogger,
955
+ undefined,
956
+ TSession,
957
+ TEventPublisher,
958
+ TEventPublisherServiceName,
959
+ TAuthorizers,
960
+ TAuditStorage,
961
+ TAuditStorageServiceName,
962
+ TAuditAction,
963
+ TDatabase,
964
+ TDatabaseServiceName
965
+ > {
966
+ const fullPath = EndpointFactory.joinPaths(path, this.basePath);
967
+ const builder = new EndpointBuilder<
968
+ JoinPaths<TBasePath, TPath>,
969
+ TMethod,
970
+ {},
971
+ TServices,
972
+ TLogger,
973
+ undefined,
974
+ TSession,
975
+ TEventPublisher,
976
+ TEventPublisherServiceName,
977
+ TAuthorizers,
978
+ TAuditStorage,
979
+ TAuditStorageServiceName,
980
+ TAuditAction,
981
+ TDatabase,
982
+ TDatabaseServiceName
983
+ >(fullPath, method);
985
984
 
986
- if (this.defaultAuthorizeFn) {
987
- // @ts-ignore
988
- builder._authorize = this.defaultAuthorizeFn;
989
- }
990
- if (this.defaultServices.length) {
991
- // Create a copy to avoid sharing references between builders
992
- builder._services = [...this.defaultServices] as TServices;
993
- }
985
+ if (this.defaultAuthorizeFn) {
986
+ builder._authorize = this.defaultAuthorizeFn;
987
+ }
988
+ if (this.defaultServices.length) {
989
+ // Create a copy to avoid sharing references between builders
990
+ builder._services = [...this.defaultServices] as TServices;
991
+ }
994
992
 
995
- if (this.defaultLogger) {
996
- builder._logger = this.defaultLogger as TLogger;
997
- }
993
+ if (this.defaultLogger) {
994
+ builder._logger = this.defaultLogger as TLogger;
995
+ }
998
996
 
999
- if (this.defaultSessionExtractor) {
1000
- builder._getSession = this.defaultSessionExtractor as SessionFn<
1001
- TServices,
1002
- TLogger,
1003
- TSession
1004
- >;
1005
- }
997
+ if (this.defaultSessionExtractor) {
998
+ builder._getSession = this.defaultSessionExtractor as SessionFn<
999
+ TServices,
1000
+ TLogger,
1001
+ TSession
1002
+ >;
1003
+ }
1006
1004
 
1007
- if (this.defaultEventPublisher) {
1008
- builder._setPublisher(this.defaultEventPublisher);
1009
- }
1005
+ if (this.defaultEventPublisher) {
1006
+ builder._setPublisher(this.defaultEventPublisher);
1007
+ }
1010
1008
 
1011
- // Set available authorizers and default
1012
- builder._availableAuthorizers = this.availableAuthorizers;
1013
- if (this.defaultAuthorizerName) {
1014
- builder._authorizerName = this.defaultAuthorizerName;
1015
- }
1009
+ // Set available authorizers and default
1010
+ builder._availableAuthorizers = this.availableAuthorizers;
1011
+ if (this.defaultAuthorizerName) {
1012
+ builder._authorizerName = this.defaultAuthorizerName;
1013
+ }
1016
1014
 
1017
- // Set auditor storage if configured
1018
- if (this.defaultAuditorStorage) {
1019
- builder._setAuditorStorage(this.defaultAuditorStorage as any);
1020
- }
1015
+ // Set auditor storage if configured
1016
+ if (this.defaultAuditorStorage) {
1017
+ builder._setAuditorStorage(this.defaultAuditorStorage as any);
1018
+ }
1021
1019
 
1022
- // Set database service if configured
1023
- if (this.defaultDatabaseService) {
1024
- builder._setDatabaseService(this.defaultDatabaseService as any);
1025
- }
1020
+ // Set database service if configured
1021
+ if (this.defaultDatabaseService) {
1022
+ builder._setDatabaseService(this.defaultDatabaseService as any);
1023
+ }
1026
1024
 
1027
- // Set actor extractor if configured
1028
- if (this.defaultActorExtractor) {
1029
- builder._actorExtractor = this.defaultActorExtractor;
1030
- }
1025
+ // Set actor extractor if configured
1026
+ if (this.defaultActorExtractor) {
1027
+ builder._actorExtractor = this.defaultActorExtractor;
1028
+ }
1031
1029
 
1032
- // Set custom security schemes
1033
- builder._customSecuritySchemes = this.customSecuritySchemes;
1030
+ // Set custom security schemes
1031
+ builder._customSecuritySchemes = this.customSecuritySchemes;
1034
1032
 
1035
- // Set RLS config if configured
1036
- if (this.defaultRlsConfig) {
1037
- builder._rlsConfig = this.defaultRlsConfig as any;
1038
- }
1033
+ // Set RLS config if configured
1034
+ if (this.defaultRlsConfig) {
1035
+ builder._rlsConfig = this.defaultRlsConfig as any;
1036
+ }
1039
1037
 
1040
- return builder;
1041
- }
1038
+ return builder;
1039
+ }
1042
1040
 
1043
- post<TPath extends string>(path: TPath) {
1044
- return this.createBuilder('POST', path);
1045
- }
1041
+ post<TPath extends string>(path: TPath) {
1042
+ return this.createBuilder('POST', path);
1043
+ }
1046
1044
 
1047
- get<TPath extends string>(path: TPath) {
1048
- return this.createBuilder('GET', path);
1049
- }
1045
+ get<TPath extends string>(path: TPath) {
1046
+ return this.createBuilder('GET', path);
1047
+ }
1050
1048
 
1051
- put<TPath extends string>(path: TPath) {
1052
- return this.createBuilder('PUT', path);
1053
- }
1049
+ put<TPath extends string>(path: TPath) {
1050
+ return this.createBuilder('PUT', path);
1051
+ }
1054
1052
 
1055
- delete<TPath extends string>(path: TPath) {
1056
- return this.createBuilder('DELETE', path);
1057
- }
1053
+ delete<TPath extends string>(path: TPath) {
1054
+ return this.createBuilder('DELETE', path);
1055
+ }
1058
1056
 
1059
- patch<TPath extends string>(path: TPath) {
1060
- return this.createBuilder('PATCH', path);
1061
- }
1057
+ patch<TPath extends string>(path: TPath) {
1058
+ return this.createBuilder('PATCH', path);
1059
+ }
1062
1060
 
1063
- options<TPath extends string>(path: TPath) {
1064
- return this.createBuilder('OPTIONS', path);
1065
- }
1061
+ options<TPath extends string>(path: TPath) {
1062
+ return this.createBuilder('OPTIONS', path);
1063
+ }
1066
1064
  }
1067
1065
 
1068
1066
  export type RemoveTrailingSlash<T extends string> = T extends `${infer Rest}/`
1069
- ? Rest extends ''
1070
- ? T // Keep "/" as is
1071
- : Rest
1072
- : T;
1067
+ ? Rest extends ''
1068
+ ? T // Keep "/" as is
1069
+ : Rest
1070
+ : T;
1073
1071
 
1074
1072
  export type JoinPaths<
1075
- TBasePath extends string,
1076
- TPath extends string,
1073
+ TBasePath extends string,
1074
+ TPath extends string,
1077
1075
  > = RemoveTrailingSlash<
1078
- TBasePath extends ''
1079
- ? TPath
1080
- : TPath extends ''
1081
- ? TBasePath
1082
- : TBasePath extends '/'
1083
- ? TPath extends `/${string}`
1084
- ? TPath
1085
- : `/${TPath}`
1086
- : TBasePath extends `${infer Base}/`
1087
- ? TPath extends `/${infer Rest}`
1088
- ? `${Base}/${Rest}`
1089
- : `${Base}/${TPath}`
1090
- : TPath extends `/${infer Rest}`
1091
- ? `${TBasePath}/${Rest}`
1092
- : `${TBasePath}/${TPath}`
1076
+ TBasePath extends ''
1077
+ ? TPath
1078
+ : TPath extends ''
1079
+ ? TBasePath
1080
+ : TBasePath extends '/'
1081
+ ? TPath extends `/${string}`
1082
+ ? TPath
1083
+ : `/${TPath}`
1084
+ : TBasePath extends `${infer Base}/`
1085
+ ? TPath extends `/${infer Rest}`
1086
+ ? `${Base}/${Rest}`
1087
+ : `${Base}/${TPath}`
1088
+ : TPath extends `/${infer Rest}`
1089
+ ? `${TBasePath}/${Rest}`
1090
+ : `${TBasePath}/${TPath}`
1093
1091
  >;
1094
1092
 
1095
1093
  export interface EndpointFactoryOptions<
1096
- TServices extends Service[] = [],
1097
- TBasePath extends string = '',
1098
- TLogger extends Logger = Logger,
1099
- TSession = unknown,
1100
- TEventPublisher extends EventPublisher<any> | undefined = undefined,
1101
- TEventPublisherServiceName extends string = string,
1102
- TAuthorizers extends readonly string[] = readonly string[],
1103
- TAuditStorage extends AuditStorage | undefined = undefined,
1104
- TAuditStorageServiceName extends string = string,
1105
- TDatabase = undefined,
1106
- TDatabaseServiceName extends string = string,
1107
- TSecuritySchemes extends Record<string, SecurityScheme> = Record<
1108
- string,
1109
- SecurityScheme
1110
- >,
1111
- TRlsConfig extends
1112
- | RlsConfig<TServices, TSession, TLogger>
1113
- | undefined = undefined,
1094
+ TServices extends Service[] = [],
1095
+ TBasePath extends string = '',
1096
+ TLogger extends Logger = Logger,
1097
+ TSession = unknown,
1098
+ TEventPublisher extends EventPublisher<any> | undefined = undefined,
1099
+ TEventPublisherServiceName extends string = string,
1100
+ TAuthorizers extends readonly string[] = readonly string[],
1101
+ TAuditStorage extends AuditStorage | undefined = undefined,
1102
+ TAuditStorageServiceName extends string = string,
1103
+ TDatabase = undefined,
1104
+ TDatabaseServiceName extends string = string,
1105
+ TSecuritySchemes extends Record<string, SecurityScheme> = Record<
1106
+ string,
1107
+ SecurityScheme
1108
+ >,
1109
+ TRlsConfig extends
1110
+ | RlsConfig<TServices, TSession, TLogger>
1111
+ | undefined = undefined,
1114
1112
  > {
1115
- defaultServices?: TServices;
1116
- basePath?: TBasePath;
1117
- defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;
1118
- defaultLogger?: TLogger;
1119
- defaultSessionExtractor?: SessionFn<TServices, TLogger, TSession, TDatabase>;
1120
- defaultEventPublisher?: Service<TEventPublisherServiceName, TEventPublisher>;
1121
- defaultEvents?: MappedEvent<TEventPublisher, undefined>[];
1122
- availableAuthorizers?: Authorizer[];
1123
- defaultAuthorizerName?: TAuthorizers[number];
1124
- defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;
1125
- defaultDatabaseService?: Service<TDatabaseServiceName, TDatabase>;
1126
- defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
1127
- customSecuritySchemes?: TSecuritySchemes;
1128
- defaultRlsConfig?: TRlsConfig;
1113
+ defaultServices?: TServices;
1114
+ basePath?: TBasePath;
1115
+ defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;
1116
+ defaultLogger?: TLogger;
1117
+ defaultSessionExtractor?: SessionFn<TServices, TLogger, TSession, TDatabase>;
1118
+ defaultEventPublisher?: Service<TEventPublisherServiceName, TEventPublisher>;
1119
+ defaultEvents?: MappedEvent<TEventPublisher, undefined>[];
1120
+ availableAuthorizers?: Authorizer[];
1121
+ defaultAuthorizerName?: TAuthorizers[number];
1122
+ defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;
1123
+ defaultDatabaseService?: Service<TDatabaseServiceName, TDatabase>;
1124
+ defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
1125
+ customSecuritySchemes?: TSecuritySchemes;
1126
+ defaultRlsConfig?: TRlsConfig;
1129
1127
  }
1130
1128
 
1131
1129
  export const e = new EndpointFactory();