@geekmidas/constructs 0.3.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/{AWSLambdaFunction-C54a1doJ.mjs → AWSLambdaFunction-BMTaCrG9.mjs} +6 -6
  2. package/dist/AWSLambdaFunction-BMTaCrG9.mjs.map +1 -0
  3. package/dist/{AWSLambdaFunction-BdebRMUh.d.mts → AWSLambdaFunction-BfLF5vNa.d.cts} +6 -6
  4. package/dist/AWSLambdaFunction-BfLF5vNa.d.cts.map +1 -0
  5. package/dist/{AWSLambdaFunction-EPGY4s7i.cjs → AWSLambdaFunction-C1gRqLO7.cjs} +6 -6
  6. package/dist/AWSLambdaFunction-C1gRqLO7.cjs.map +1 -0
  7. package/dist/{AWSLambdaFunction-D0tEOTXQ.d.cts → AWSLambdaFunction-K94K8JU2.d.mts} +6 -6
  8. package/dist/AWSLambdaFunction-K94K8JU2.d.mts.map +1 -0
  9. package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts} +2 -2
  10. package/dist/AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts.map +1 -0
  11. package/dist/{AWSLambdaSubscriberAdaptor-BLfO612H.mjs → AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs} +3 -3
  12. package/dist/AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs.map +1 -0
  13. package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs} +3 -3
  14. package/dist/AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map +1 -0
  15. package/dist/{AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts} +2 -2
  16. package/dist/AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs → AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs} +56 -14
  18. package/dist/AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs.map +1 -0
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts → AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts} +51 -5
  20. package/dist/AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts.map +1 -0
  21. package/dist/{AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs → AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs} +55 -13
  22. package/dist/AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs.map +1 -0
  23. package/dist/{AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts → AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts} +52 -6
  24. package/dist/AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts.map +1 -0
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs → AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs} +4 -4
  26. package/dist/AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs.map +1 -0
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts → AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts} +5 -5
  28. package/dist/AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts.map +1 -0
  29. package/dist/{AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts → AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts} +4 -4
  30. package/dist/AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts.map +1 -0
  31. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs → AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs} +4 -4
  32. package/dist/AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs.map +1 -0
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts → AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts} +4 -6
  34. package/dist/AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts.map +1 -0
  35. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs → AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs} +4 -4
  36. package/dist/AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs.map +1 -0
  37. package/dist/{AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs → AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs} +4 -4
  38. package/dist/AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs.map +1 -0
  39. package/dist/{AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts → AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts} +5 -7
  40. package/dist/AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts.map +1 -0
  41. package/dist/{Authorizer-C0ge_tc8.cjs → Authorizer-BXxBee2P.cjs} +1 -1
  42. package/dist/Authorizer-BXxBee2P.cjs.map +1 -0
  43. package/dist/{Authorizer-r9U3y_ms.mjs → Authorizer-BgjU8-z6.mjs} +1 -1
  44. package/dist/Authorizer-BgjU8-z6.mjs.map +1 -0
  45. package/dist/{Authorizer-gWxYsGEp.d.mts → Authorizer-DCcYOx3h.d.mts} +1 -1
  46. package/dist/Authorizer-DCcYOx3h.d.mts.map +1 -0
  47. package/dist/{Authorizer-B-btowNd.d.cts → Authorizer-DWtwC8we.d.cts} +1 -1
  48. package/dist/Authorizer-DWtwC8we.d.cts.map +1 -0
  49. package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts → BaseFunctionBuilder-BqZCqIeU.d.mts} +3 -3
  50. package/dist/BaseFunctionBuilder-BqZCqIeU.d.mts.map +1 -0
  51. package/dist/{BaseFunctionBuilder-DRY419e7.d.mts → BaseFunctionBuilder-CcK691ni.d.cts} +3 -3
  52. package/dist/BaseFunctionBuilder-CcK691ni.d.cts.map +1 -0
  53. package/dist/{BaseFunctionBuilder-Czi1Jwza.mjs → BaseFunctionBuilder-Dsqe6pnn.mjs} +2 -2
  54. package/dist/BaseFunctionBuilder-Dsqe6pnn.mjs.map +1 -0
  55. package/dist/{BaseFunctionBuilder-MYG3C9ug.cjs → BaseFunctionBuilder-Z0XwrKB5.cjs} +2 -2
  56. package/dist/BaseFunctionBuilder-Z0XwrKB5.cjs.map +1 -0
  57. package/dist/Construct-BNDLJJfD.mjs +150 -0
  58. package/dist/Construct-BNDLJJfD.mjs.map +1 -0
  59. package/dist/{Construct-Ba5cMxib.cjs → Construct-CPrCF8NK.cjs} +93 -9
  60. package/dist/Construct-CPrCF8NK.cjs.map +1 -0
  61. package/dist/{Construct-C4rPE67v.d.cts → Construct-Dl0l2d8d.d.cts} +30 -4
  62. package/dist/Construct-Dl0l2d8d.d.cts.map +1 -0
  63. package/dist/{Construct-XrijZFFh.d.mts → Construct-E8QPyHh4.d.mts} +30 -4
  64. package/dist/Construct-E8QPyHh4.d.mts.map +1 -0
  65. package/dist/Construct.cjs +4 -2
  66. package/dist/Construct.d.cts +2 -2
  67. package/dist/Construct.d.mts +2 -2
  68. package/dist/Construct.mjs +2 -2
  69. package/dist/{Cron-CGF4YAfM.cjs → Cron-BmPNTLla.cjs} +3 -3
  70. package/dist/Cron-BmPNTLla.cjs.map +1 -0
  71. package/dist/{Cron-BxhGs5up.mjs → Cron-BpJONaFv.mjs} +3 -3
  72. package/dist/Cron-BpJONaFv.mjs.map +1 -0
  73. package/dist/{Cron-bDLcTvV5.d.cts → Cron-CnmLLh3E.d.mts} +3 -3
  74. package/dist/Cron-CnmLLh3E.d.mts.map +1 -0
  75. package/dist/{Cron-cdjlSKNp.d.mts → Cron-DufAeHry.d.cts} +3 -3
  76. package/dist/Cron-DufAeHry.d.cts.map +1 -0
  77. package/dist/{CronBuilder-d2jh-IB2.mjs → CronBuilder-02HSIHJr.mjs} +4 -4
  78. package/dist/CronBuilder-02HSIHJr.mjs.map +1 -0
  79. package/dist/{CronBuilder-CcxKRtVP.cjs → CronBuilder-DC2zUS8a.cjs} +4 -4
  80. package/dist/CronBuilder-DC2zUS8a.cjs.map +1 -0
  81. package/dist/{CronBuilder-BC4m5-p1.d.mts → CronBuilder-anUSbMxb.d.mts} +4 -4
  82. package/dist/CronBuilder-anUSbMxb.d.mts.map +1 -0
  83. package/dist/{CronBuilder-DKVXyE0Q.d.cts → CronBuilder-fyqf_X8n.d.cts} +4 -4
  84. package/dist/CronBuilder-fyqf_X8n.d.cts.map +1 -0
  85. package/dist/{Endpoint-BVGZXFyV.cjs → Endpoint-BCWVbi8l.cjs} +6 -6
  86. package/dist/Endpoint-BCWVbi8l.cjs.map +1 -0
  87. package/dist/{Endpoint-BPv9_-m_.d.cts → Endpoint-BlcHiGNx.d.cts} +3 -3
  88. package/dist/Endpoint-BlcHiGNx.d.cts.map +1 -0
  89. package/dist/{Endpoint-BdwG75G_.d.mts → Endpoint-DEHuy46S.d.mts} +4 -4
  90. package/dist/Endpoint-DEHuy46S.d.mts.map +1 -0
  91. package/dist/{Endpoint-CuOEswxJ.mjs → Endpoint-ygxv2Ia6.mjs} +6 -6
  92. package/dist/Endpoint-ygxv2Ia6.mjs.map +1 -0
  93. package/dist/{EndpointBuilder-DIy_m1bu.d.cts → EndpointBuilder-DPLAUHqg.d.cts} +4 -4
  94. package/dist/EndpointBuilder-DPLAUHqg.d.cts.map +1 -0
  95. package/dist/{EndpointBuilder-B3az942t.d.mts → EndpointBuilder-DaeCeneF.d.mts} +5 -5
  96. package/dist/EndpointBuilder-DaeCeneF.d.mts.map +1 -0
  97. package/dist/{EndpointBuilder-Cgj1P_ra.cjs → EndpointBuilder-J5D67Y6a.cjs} +6 -6
  98. package/dist/EndpointBuilder-J5D67Y6a.cjs.map +1 -0
  99. package/dist/{EndpointBuilder-DnCB1h1j.mjs → EndpointBuilder-tn4zqoyw.mjs} +6 -6
  100. package/dist/EndpointBuilder-tn4zqoyw.mjs.map +1 -0
  101. package/dist/{EndpointFactory-CbdxPCIH.mjs → EndpointFactory-CIUZTTAF.mjs} +7 -7
  102. package/dist/EndpointFactory-CIUZTTAF.mjs.map +1 -0
  103. package/dist/{EndpointFactory-CyPbm3AD.d.cts → EndpointFactory-CiKcb5PX.d.cts} +4 -4
  104. package/dist/EndpointFactory-CiKcb5PX.d.cts.map +1 -0
  105. package/dist/{EndpointFactory-C-0nE6Jg.d.mts → EndpointFactory-DufM0t2z.d.mts} +4 -4
  106. package/dist/EndpointFactory-DufM0t2z.d.mts.map +1 -0
  107. package/dist/{EndpointFactory-CYj6BYok.cjs → EndpointFactory-d5uwWFkK.cjs} +7 -7
  108. package/dist/EndpointFactory-d5uwWFkK.cjs.map +1 -0
  109. package/dist/{Function-DDZb1525.cjs → Function-2qWSZqYB.cjs} +3 -3
  110. package/dist/Function-2qWSZqYB.cjs.map +1 -0
  111. package/dist/{Function-Cf7f_kCz.d.cts → Function-CbEohg13.d.cts} +3 -3
  112. package/dist/Function-CbEohg13.d.cts.map +1 -0
  113. package/dist/{Function-BVHqIDp9.mjs → Function-CdF1HmFu.mjs} +3 -3
  114. package/dist/Function-CdF1HmFu.mjs.map +1 -0
  115. package/dist/{Function-DN2G6OT5.d.mts → Function-EjIOLxlh.d.mts} +3 -3
  116. package/dist/Function-EjIOLxlh.d.mts.map +1 -0
  117. package/dist/{FunctionBuilder-DswJ-9sD.cjs → FunctionBuilder-B-pbgm09.cjs} +4 -4
  118. package/dist/FunctionBuilder-B-pbgm09.cjs.map +1 -0
  119. package/dist/{FunctionBuilder-CJBzzXL3.d.cts → FunctionBuilder-CX3ooNdq.d.cts} +4 -4
  120. package/dist/FunctionBuilder-CX3ooNdq.d.cts.map +1 -0
  121. package/dist/{FunctionBuilder-Cxx8D2na.d.mts → FunctionBuilder-D11ytDyy.d.mts} +4 -4
  122. package/dist/FunctionBuilder-D11ytDyy.d.mts.map +1 -0
  123. package/dist/{FunctionBuilder-CrDYgfiI.mjs → FunctionBuilder-DaWVthAJ.mjs} +4 -4
  124. package/dist/FunctionBuilder-DaWVthAJ.mjs.map +1 -0
  125. package/dist/{FunctionExecutionWrapper-DF260Aaj.d.mts → FunctionExecutionWrapper-BJcRjH9Z.d.cts} +5 -5
  126. package/dist/FunctionExecutionWrapper-BJcRjH9Z.d.cts.map +1 -0
  127. package/dist/{FunctionExecutionWrapper-BYI2bGTL.cjs → FunctionExecutionWrapper-C6ChBNHs.cjs} +3 -3
  128. package/dist/FunctionExecutionWrapper-C6ChBNHs.cjs.map +1 -0
  129. package/dist/{FunctionExecutionWrapper-Qy8bmgFR.d.cts → FunctionExecutionWrapper-D3RNjGIR.d.mts} +5 -5
  130. package/dist/FunctionExecutionWrapper-D3RNjGIR.d.mts.map +1 -0
  131. package/dist/{FunctionExecutionWrapper-CLDh7Z2_.mjs → FunctionExecutionWrapper-Dj3pmXaN.mjs} +3 -3
  132. package/dist/FunctionExecutionWrapper-Dj3pmXaN.mjs.map +1 -0
  133. package/dist/{HonoEndpointAdaptor-BaPlUhz0.d.mts → HonoEndpointAdaptor-CKP6nrG2.d.mts} +11 -6
  134. package/dist/HonoEndpointAdaptor-CKP6nrG2.d.mts.map +1 -0
  135. package/dist/HonoEndpointAdaptor-Cc8Rnp9G.mjs +251 -0
  136. package/dist/HonoEndpointAdaptor-Cc8Rnp9G.mjs.map +1 -0
  137. package/dist/{HonoEndpointAdaptor-YcRHYALH.d.cts → HonoEndpointAdaptor-hrrvyfw9.d.cts} +10 -5
  138. package/dist/HonoEndpointAdaptor-hrrvyfw9.d.cts.map +1 -0
  139. package/dist/HonoEndpointAdaptor-xGnDZa3a.cjs +257 -0
  140. package/dist/HonoEndpointAdaptor-xGnDZa3a.cjs.map +1 -0
  141. package/dist/{Subscriber-COYMSevD.d.cts → Subscriber-BBcIOkhW.d.cts} +2 -2
  142. package/dist/Subscriber-BBcIOkhW.d.cts.map +1 -0
  143. package/dist/{Subscriber-ikctpU3I.d.mts → Subscriber-BpTAXvbM.d.mts} +2 -2
  144. package/dist/Subscriber-BpTAXvbM.d.mts.map +1 -0
  145. package/dist/{Subscriber-BiHjVXtM.cjs → Subscriber-CL4iYm01.cjs} +2 -2
  146. package/dist/Subscriber-CL4iYm01.cjs.map +1 -0
  147. package/dist/{Subscriber-BmPf9GFb.mjs → Subscriber-CZ8Smwd2.mjs} +2 -2
  148. package/dist/Subscriber-CZ8Smwd2.mjs.map +1 -0
  149. package/dist/{SubscriberBuilder-DJPEeYDJ.mjs → SubscriberBuilder-CxQg3TTm.mjs} +2 -2
  150. package/dist/SubscriberBuilder-CxQg3TTm.mjs.map +1 -0
  151. package/dist/{SubscriberBuilder-Cp1C-xtT.cjs → SubscriberBuilder-D0OS3hd7.cjs} +2 -2
  152. package/dist/SubscriberBuilder-D0OS3hd7.cjs.map +1 -0
  153. package/dist/{SubscriberBuilder-D_9zzllj.d.mts → SubscriberBuilder-D7IgufwB.d.cts} +3 -3
  154. package/dist/SubscriberBuilder-D7IgufwB.d.cts.map +1 -0
  155. package/dist/{SubscriberBuilder-ivHAGIVi.d.cts → SubscriberBuilder-DOFBbWLt.d.mts} +3 -3
  156. package/dist/SubscriberBuilder-DOFBbWLt.d.mts.map +1 -0
  157. package/dist/{TestEndpointAdaptor-DB7bREhS.d.mts → TestEndpointAdaptor-BnJusjf7.d.mts} +4 -4
  158. package/dist/TestEndpointAdaptor-BnJusjf7.d.mts.map +1 -0
  159. package/dist/TestEndpointAdaptor-CPL8ru6q.mjs +170 -0
  160. package/dist/TestEndpointAdaptor-CPL8ru6q.mjs.map +1 -0
  161. package/dist/TestEndpointAdaptor-Ca4K26_d.cjs +176 -0
  162. package/dist/TestEndpointAdaptor-Ca4K26_d.cjs.map +1 -0
  163. package/dist/{TestEndpointAdaptor-C10xBI--.d.cts → TestEndpointAdaptor-EPPTjntv.d.cts} +3 -3
  164. package/dist/TestEndpointAdaptor-EPPTjntv.d.cts.map +1 -0
  165. package/dist/adaptors/aws.cjs +12 -12
  166. package/dist/adaptors/aws.d.cts +15 -14
  167. package/dist/adaptors/aws.d.mts +16 -15
  168. package/dist/adaptors/aws.mjs +12 -12
  169. package/dist/adaptors/hono.cjs +10 -9
  170. package/dist/adaptors/hono.d.cts +8 -8
  171. package/dist/adaptors/hono.d.mts +9 -9
  172. package/dist/adaptors/hono.mjs +10 -9
  173. package/dist/adaptors/testing.cjs +8 -7
  174. package/dist/adaptors/testing.d.cts +8 -8
  175. package/dist/adaptors/testing.d.mts +9 -9
  176. package/dist/adaptors/testing.mjs +8 -7
  177. package/dist/crons/Cron.cjs +6 -6
  178. package/dist/crons/Cron.d.cts +6 -6
  179. package/dist/crons/Cron.d.mts +6 -6
  180. package/dist/crons/Cron.mjs +6 -6
  181. package/dist/crons/CronBuilder.cjs +7 -7
  182. package/dist/crons/CronBuilder.d.cts +7 -7
  183. package/dist/crons/CronBuilder.d.mts +7 -7
  184. package/dist/crons/CronBuilder.mjs +7 -7
  185. package/dist/crons/index.cjs +7 -7
  186. package/dist/crons/index.cjs.map +1 -1
  187. package/dist/crons/index.d.cts +11 -11
  188. package/dist/crons/index.d.mts +7 -7
  189. package/dist/crons/index.mjs +7 -7
  190. package/dist/crons/index.mjs.map +1 -1
  191. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  192. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +10 -9
  193. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +11 -10
  194. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  195. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  196. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +10 -9
  197. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +11 -10
  198. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  199. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  200. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +11 -10
  201. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +12 -11
  202. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  203. package/dist/endpoints/Authorizer.cjs +1 -1
  204. package/dist/endpoints/Authorizer.d.cts +1 -1
  205. package/dist/endpoints/Authorizer.d.mts +1 -1
  206. package/dist/endpoints/Authorizer.mjs +1 -1
  207. package/dist/endpoints/Endpoint.cjs +6 -6
  208. package/dist/endpoints/Endpoint.d.cts +7 -7
  209. package/dist/endpoints/Endpoint.d.mts +8 -8
  210. package/dist/endpoints/Endpoint.mjs +6 -6
  211. package/dist/endpoints/EndpointBuilder.cjs +9 -9
  212. package/dist/endpoints/EndpointBuilder.d.cts +8 -8
  213. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  214. package/dist/endpoints/EndpointBuilder.mjs +9 -9
  215. package/dist/endpoints/EndpointFactory.cjs +10 -10
  216. package/dist/endpoints/EndpointFactory.d.cts +9 -9
  217. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  218. package/dist/endpoints/EndpointFactory.mjs +10 -10
  219. package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
  220. package/dist/endpoints/HonoEndpointAdaptor.d.cts +8 -8
  221. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  222. package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
  223. package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
  224. package/dist/endpoints/TestEndpointAdaptor.d.cts +8 -8
  225. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  226. package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
  227. package/dist/endpoints/audit.d.cts +7 -7
  228. package/dist/endpoints/audit.d.mts +8 -8
  229. package/dist/endpoints/helpers.cjs +7 -7
  230. package/dist/endpoints/helpers.d.cts +7 -7
  231. package/dist/endpoints/helpers.d.cts.map +1 -1
  232. package/dist/endpoints/helpers.d.mts +8 -8
  233. package/dist/endpoints/helpers.d.mts.map +1 -1
  234. package/dist/endpoints/helpers.mjs +7 -7
  235. package/dist/endpoints/index.cjs +20 -10
  236. package/dist/endpoints/index.cjs.map +1 -1
  237. package/dist/endpoints/index.d.cts +14 -12
  238. package/dist/endpoints/index.d.cts.map +1 -1
  239. package/dist/endpoints/index.d.mts +15 -13
  240. package/dist/endpoints/index.d.mts.map +1 -1
  241. package/dist/endpoints/index.mjs +13 -11
  242. package/dist/endpoints/index.mjs.map +1 -1
  243. package/dist/endpoints/lazyAccessors.cjs +10 -0
  244. package/dist/endpoints/lazyAccessors.d.cts +10 -0
  245. package/dist/endpoints/lazyAccessors.d.mts +10 -0
  246. package/dist/endpoints/lazyAccessors.mjs +3 -0
  247. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  248. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  249. package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
  250. package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
  251. package/dist/endpoints/processAudits.d.cts +7 -7
  252. package/dist/endpoints/processAudits.d.cts.map +1 -1
  253. package/dist/endpoints/processAudits.d.mts +8 -8
  254. package/dist/endpoints/processAudits.d.mts.map +1 -1
  255. package/dist/endpoints/rls.cjs +1 -1
  256. package/dist/endpoints/rls.d.cts +7 -7
  257. package/dist/endpoints/rls.d.mts +8 -8
  258. package/dist/endpoints/rls.mjs +1 -1
  259. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  260. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  261. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  262. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  263. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  264. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  265. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  266. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  267. package/dist/functions/Function.cjs +2 -2
  268. package/dist/functions/Function.d.cts +2 -2
  269. package/dist/functions/Function.d.mts +2 -2
  270. package/dist/functions/Function.mjs +2 -2
  271. package/dist/functions/FunctionBuilder.cjs +4 -4
  272. package/dist/functions/FunctionBuilder.d.cts +4 -4
  273. package/dist/functions/FunctionBuilder.d.mts +4 -4
  274. package/dist/functions/FunctionBuilder.mjs +4 -4
  275. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  276. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  277. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  278. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  279. package/dist/functions/TestFunctionAdaptor.cjs +7 -7
  280. package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
  281. package/dist/functions/TestFunctionAdaptor.d.cts +3 -3
  282. package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
  283. package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
  284. package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
  285. package/dist/functions/TestFunctionAdaptor.mjs +7 -7
  286. package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
  287. package/dist/functions/index.cjs +5 -5
  288. package/dist/functions/index.d.cts +5 -5
  289. package/dist/functions/index.d.mts +5 -5
  290. package/dist/functions/index.mjs +5 -5
  291. package/dist/{functions-fTid0RMK.cjs → functions-CUEv5NC3.cjs} +2 -2
  292. package/dist/functions-CUEv5NC3.cjs.map +1 -0
  293. package/dist/functions-DOYBrb7n.mjs +8 -0
  294. package/dist/functions-DOYBrb7n.mjs.map +1 -0
  295. package/dist/{helpers-ByRTDO_m.mjs → helpers-Dl1eszfi.mjs} +2 -2
  296. package/dist/helpers-Dl1eszfi.mjs.map +1 -0
  297. package/dist/{helpers-BcP1tXAi.cjs → helpers-QMdfdnvU.cjs} +2 -2
  298. package/dist/helpers-QMdfdnvU.cjs.map +1 -0
  299. package/dist/{index-BWzGIj06.d.mts → index-BrGtMlpJ.d.cts} +2 -2
  300. package/dist/index-BrGtMlpJ.d.cts.map +1 -0
  301. package/dist/index-Dn4py3Db.d.mts +12 -0
  302. package/dist/index-Dn4py3Db.d.mts.map +1 -0
  303. package/dist/index.cjs +4 -2
  304. package/dist/index.d.cts +3 -2
  305. package/dist/index.d.mts +4 -3
  306. package/dist/index.mjs +2 -2
  307. package/dist/lazyAccessors-B-Jgkg2o.mjs +175 -0
  308. package/dist/lazyAccessors-B-Jgkg2o.mjs.map +1 -0
  309. package/dist/lazyAccessors-B8Hhras9.cjs +223 -0
  310. package/dist/lazyAccessors-B8Hhras9.cjs.map +1 -0
  311. package/dist/lazyAccessors-BFAj2-S4.d.mts +49 -0
  312. package/dist/lazyAccessors-BFAj2-S4.d.mts.map +1 -0
  313. package/dist/lazyAccessors-knaNZuTN.d.cts +49 -0
  314. package/dist/lazyAccessors-knaNZuTN.d.cts.map +1 -0
  315. package/dist/{parseHonoQuery-CZC5_97v.cjs → parseHonoQuery-D4MhxTRc.cjs} +1 -1
  316. package/dist/parseHonoQuery-D4MhxTRc.cjs.map +1 -0
  317. package/dist/{parseHonoQuery-DDgIkTO4.mjs → parseHonoQuery-DpK3sGPc.mjs} +1 -1
  318. package/dist/parseHonoQuery-DpK3sGPc.mjs.map +1 -0
  319. package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -1
  320. package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -1
  321. package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
  322. package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
  323. package/dist/publisher-BXG9YiRi.d.mts +16 -0
  324. package/dist/publisher-BXG9YiRi.d.mts.map +1 -0
  325. package/dist/publisher-Bw4770Hi.mjs.map +1 -1
  326. package/dist/publisher-D9ngDXg3.d.cts +16 -0
  327. package/dist/publisher-D9ngDXg3.d.cts.map +1 -0
  328. package/dist/publisher-lFQleddL.cjs.map +1 -1
  329. package/dist/publisher.d.cts +3 -16
  330. package/dist/publisher.d.mts +3 -16
  331. package/dist/{rls-CmJ7bRsz.cjs → rls-BrywnrQb.cjs} +1 -1
  332. package/dist/{rls-CmJ7bRsz.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
  333. package/dist/{rls-Bf3FRwto.mjs → rls-C0cWOnk4.mjs} +1 -1
  334. package/dist/{rls-Bf3FRwto.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
  335. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  336. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  337. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  338. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  339. package/dist/subscribers/Subscriber.cjs +2 -2
  340. package/dist/subscribers/Subscriber.d.cts +2 -2
  341. package/dist/subscribers/Subscriber.d.mts +2 -2
  342. package/dist/subscribers/Subscriber.mjs +2 -2
  343. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  344. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  345. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  346. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  347. package/dist/subscribers/index.cjs +3 -3
  348. package/dist/subscribers/index.cjs.map +1 -1
  349. package/dist/subscribers/index.d.cts +5 -5
  350. package/dist/subscribers/index.d.cts.map +1 -1
  351. package/dist/subscribers/index.d.mts +5 -5
  352. package/dist/subscribers/index.d.mts.map +1 -1
  353. package/dist/subscribers/index.mjs +3 -3
  354. package/dist/subscribers/index.mjs.map +1 -1
  355. package/dist/telemetry-BTaiRqPo.d.cts +95 -0
  356. package/dist/telemetry-BTaiRqPo.d.cts.map +1 -0
  357. package/dist/telemetry-yAHf5yDs.d.mts +95 -0
  358. package/dist/telemetry-yAHf5yDs.d.mts.map +1 -0
  359. package/dist/telemetry.cjs +0 -0
  360. package/dist/telemetry.d.cts +2 -0
  361. package/dist/telemetry.d.mts +2 -0
  362. package/dist/telemetry.mjs +0 -0
  363. package/dist/types-B5H3piDg.d.cts.map +1 -1
  364. package/dist/{types-DdIlpxAd.d.mts → types-Dw-iLd3Y.d.mts} +1 -1
  365. package/dist/types-Dw-iLd3Y.d.mts.map +1 -0
  366. package/dist/types.d.mts +1 -1
  367. package/package.json +19 -18
  368. package/src/Construct.ts +189 -94
  369. package/src/__benchmarks__/build-time-optimization.bench.ts +274 -0
  370. package/src/__benchmarks__/endpoint.bench.ts +375 -375
  371. package/src/__benchmarks__/fixtures.ts +241 -0
  372. package/src/__benchmarks__/hono-adaptor.bench.ts +533 -0
  373. package/src/__benchmarks__/hono-server.bench.ts +206 -206
  374. package/src/__benchmarks__/response-builder.bench.ts +428 -0
  375. package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +319 -0
  376. package/src/__benchmarks__/strategies/strategy-c-middleware.ts +530 -0
  377. package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +567 -0
  378. package/src/__tests__/Construct.environment.spec.ts +572 -351
  379. package/src/__tests__/publisher.setting.spec.ts +496 -499
  380. package/src/__tests__/publisher.spec.ts +440 -442
  381. package/src/crons/Cron.ts +117 -117
  382. package/src/crons/CronBuilder.ts +237 -238
  383. package/src/crons/__tests__/Cron.spec.ts +448 -448
  384. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +214 -214
  385. package/src/crons/index.ts +4 -4
  386. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +571 -463
  387. package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +86 -86
  388. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +85 -81
  389. package/src/endpoints/Authorizer.ts +100 -100
  390. package/src/endpoints/Endpoint.ts +921 -937
  391. package/src/endpoints/EndpointBuilder.ts +703 -703
  392. package/src/endpoints/EndpointFactory.ts +1054 -1056
  393. package/src/endpoints/HonoEndpointAdaptor.ts +621 -548
  394. package/src/endpoints/TestEndpointAdaptor.ts +372 -353
  395. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +499 -0
  396. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +541 -542
  397. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +1172 -1174
  398. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +599 -599
  399. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +710 -710
  400. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +280 -280
  401. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +924 -730
  402. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +307 -0
  403. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +408 -408
  404. package/src/endpoints/__tests__/Authorizer.spec.ts +286 -0
  405. package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +162 -162
  406. package/src/endpoints/__tests__/Endpoint.headers.spec.ts +182 -182
  407. package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +158 -159
  408. package/src/endpoints/__tests__/Endpoint.spec.ts +819 -822
  409. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +427 -427
  410. package/src/endpoints/__tests__/EndpointBuilder.spec.ts +478 -478
  411. package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +426 -426
  412. package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +501 -501
  413. package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +177 -177
  414. package/src/endpoints/__tests__/EndpointFactory.spec.ts +471 -471
  415. package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +143 -143
  416. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +663 -663
  417. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +608 -608
  418. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +561 -561
  419. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1036 -1036
  420. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +278 -278
  421. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1093 -1093
  422. package/src/endpoints/__tests__/ResponseBuilder.spec.ts +230 -230
  423. package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +569 -569
  424. package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +841 -841
  425. package/src/endpoints/__tests__/endpoint-types.test.ts +68 -68
  426. package/src/endpoints/__tests__/helpers.spec.ts +37 -0
  427. package/src/endpoints/__tests__/lazyAccessors.spec.ts +330 -0
  428. package/src/endpoints/__tests__/processAudits.spec.ts +631 -0
  429. package/src/endpoints/audit.ts +51 -51
  430. package/src/endpoints/helpers.ts +34 -35
  431. package/src/endpoints/index.ts +33 -23
  432. package/src/endpoints/lazyAccessors.ts +241 -0
  433. package/src/endpoints/parseHonoQuery.ts +41 -41
  434. package/src/endpoints/parseQueryParams.ts +36 -36
  435. package/src/endpoints/processAudits.ts +269 -269
  436. package/src/endpoints/rls.ts +16 -16
  437. package/src/functions/AWSLambdaFunction.ts +294 -295
  438. package/src/functions/BaseFunctionBuilder.ts +185 -185
  439. package/src/functions/Function.ts +190 -190
  440. package/src/functions/FunctionBuilder.ts +353 -353
  441. package/src/functions/FunctionExecutionWrapper.ts +199 -200
  442. package/src/functions/TestFunctionAdaptor.ts +191 -191
  443. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +424 -424
  444. package/src/functions/__tests__/Function.audits.spec.ts +364 -364
  445. package/src/functions/__tests__/Function.spec.ts +453 -454
  446. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +179 -179
  447. package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +369 -369
  448. package/src/functions/index.ts +6 -4
  449. package/src/index.ts +18 -9
  450. package/src/publisher.ts +71 -72
  451. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +244 -248
  452. package/src/subscribers/Subscriber.ts +82 -84
  453. package/src/subscribers/SubscriberBuilder.ts +129 -129
  454. package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +589 -589
  455. package/src/subscribers/__tests__/Subscriber.spec.ts +402 -404
  456. package/src/subscribers/index.ts +1 -0
  457. package/src/telemetry.ts +103 -0
  458. package/src/types.ts +7 -7
  459. package/test.ts +58 -59
  460. package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +0 -1
  461. package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +0 -1
  462. package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +0 -1
  463. package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +0 -1
  464. package/dist/AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map +0 -1
  465. package/dist/AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map +0 -1
  466. package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +0 -1
  467. package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +0 -1
  468. package/dist/AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map +0 -1
  469. package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +0 -1
  470. package/dist/AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map +0 -1
  471. package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +0 -1
  472. package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +0 -1
  473. package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +0 -1
  474. package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +0 -1
  475. package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +0 -1
  476. package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +0 -1
  477. package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +0 -1
  478. package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +0 -1
  479. package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +0 -1
  480. package/dist/Authorizer-B-btowNd.d.cts.map +0 -1
  481. package/dist/Authorizer-C0ge_tc8.cjs.map +0 -1
  482. package/dist/Authorizer-gWxYsGEp.d.mts.map +0 -1
  483. package/dist/Authorizer-r9U3y_ms.mjs.map +0 -1
  484. package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +0 -1
  485. package/dist/BaseFunctionBuilder-Czi1Jwza.mjs.map +0 -1
  486. package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +0 -1
  487. package/dist/BaseFunctionBuilder-MYG3C9ug.cjs.map +0 -1
  488. package/dist/Construct-Ba5cMxib.cjs.map +0 -1
  489. package/dist/Construct-C4rPE67v.d.cts.map +0 -1
  490. package/dist/Construct-DdyGHuag.mjs +0 -78
  491. package/dist/Construct-DdyGHuag.mjs.map +0 -1
  492. package/dist/Construct-XrijZFFh.d.mts.map +0 -1
  493. package/dist/Cron-BxhGs5up.mjs.map +0 -1
  494. package/dist/Cron-CGF4YAfM.cjs.map +0 -1
  495. package/dist/Cron-bDLcTvV5.d.cts.map +0 -1
  496. package/dist/Cron-cdjlSKNp.d.mts.map +0 -1
  497. package/dist/CronBuilder-BC4m5-p1.d.mts.map +0 -1
  498. package/dist/CronBuilder-CcxKRtVP.cjs.map +0 -1
  499. package/dist/CronBuilder-DKVXyE0Q.d.cts.map +0 -1
  500. package/dist/CronBuilder-d2jh-IB2.mjs.map +0 -1
  501. package/dist/Endpoint-BPv9_-m_.d.cts.map +0 -1
  502. package/dist/Endpoint-BVGZXFyV.cjs.map +0 -1
  503. package/dist/Endpoint-BdwG75G_.d.mts.map +0 -1
  504. package/dist/Endpoint-CuOEswxJ.mjs.map +0 -1
  505. package/dist/EndpointBuilder-B3az942t.d.mts.map +0 -1
  506. package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +0 -1
  507. package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +0 -1
  508. package/dist/EndpointBuilder-DnCB1h1j.mjs.map +0 -1
  509. package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +0 -1
  510. package/dist/EndpointFactory-CYj6BYok.cjs.map +0 -1
  511. package/dist/EndpointFactory-CbdxPCIH.mjs.map +0 -1
  512. package/dist/EndpointFactory-CyPbm3AD.d.cts.map +0 -1
  513. package/dist/Function-BVHqIDp9.mjs.map +0 -1
  514. package/dist/Function-Cf7f_kCz.d.cts.map +0 -1
  515. package/dist/Function-DDZb1525.cjs.map +0 -1
  516. package/dist/Function-DN2G6OT5.d.mts.map +0 -1
  517. package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +0 -1
  518. package/dist/FunctionBuilder-CrDYgfiI.mjs.map +0 -1
  519. package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +0 -1
  520. package/dist/FunctionBuilder-DswJ-9sD.cjs.map +0 -1
  521. package/dist/FunctionExecutionWrapper-BYI2bGTL.cjs.map +0 -1
  522. package/dist/FunctionExecutionWrapper-CLDh7Z2_.mjs.map +0 -1
  523. package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +0 -1
  524. package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +0 -1
  525. package/dist/HonoEndpointAdaptor-BaPlUhz0.d.mts.map +0 -1
  526. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
  527. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
  528. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
  529. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.map +0 -1
  530. package/dist/HonoEndpointAdaptor-YcRHYALH.d.cts.map +0 -1
  531. package/dist/Subscriber-BiHjVXtM.cjs.map +0 -1
  532. package/dist/Subscriber-BmPf9GFb.mjs.map +0 -1
  533. package/dist/Subscriber-COYMSevD.d.cts.map +0 -1
  534. package/dist/Subscriber-ikctpU3I.d.mts.map +0 -1
  535. package/dist/SubscriberBuilder-Cp1C-xtT.cjs.map +0 -1
  536. package/dist/SubscriberBuilder-DJPEeYDJ.mjs.map +0 -1
  537. package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +0 -1
  538. package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +0 -1
  539. package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
  540. package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +0 -1
  541. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs +0 -160
  542. package/dist/TestEndpointAdaptor-DJgik2Wj.mjs.map +0 -1
  543. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs +0 -166
  544. package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs.map +0 -1
  545. package/dist/functions-C6EK1xL6.mjs +0 -8
  546. package/dist/functions-C6EK1xL6.mjs.map +0 -1
  547. package/dist/functions-fTid0RMK.cjs.map +0 -1
  548. package/dist/helpers-BcP1tXAi.cjs.map +0 -1
  549. package/dist/helpers-ByRTDO_m.mjs.map +0 -1
  550. package/dist/index-BWzGIj06.d.mts.map +0 -1
  551. package/dist/index-DmFozqLd.d.cts +0 -12
  552. package/dist/index-DmFozqLd.d.cts.map +0 -1
  553. package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
  554. package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
  555. package/dist/publisher.d.cts.map +0 -1
  556. package/dist/publisher.d.mts.map +0 -1
  557. package/dist/types-DdIlpxAd.d.mts.map +0 -1
@@ -1,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();