@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
@@ -7,482 +7,482 @@ import { Endpoint } from '../Endpoint';
7
7
  import { EndpointBuilder } from '../EndpointBuilder';
8
8
 
9
9
  describe('EndpointBuilder', () => {
10
- describe('constructor', () => {
11
- it('should create builder with route and method', () => {
12
- const builder = new EndpointBuilder('/users', 'GET');
13
-
14
- expect(builder.route).toBe('/users');
15
- expect(builder.method).toBe('GET');
16
- });
17
-
18
- it('should initialize with FunctionType.Endpoint', () => {
19
- const builder = new EndpointBuilder('/users', 'POST');
20
-
21
- // Access protected member through inheritance
22
- expect((builder as any).type).toBe(ConstructType.Endpoint);
23
- });
24
- });
25
-
26
- describe('description', () => {
27
- it('should set endpoint description', () => {
28
- const builder = new EndpointBuilder('/users', 'GET');
29
- const result = builder.description('Get all users');
30
-
31
- expect(result).toBe(builder); // Should return this for chaining
32
- expect((builder as any)._description).toBe('Get all users');
33
- });
34
-
35
- it('should pass description to endpoint', () => {
36
- const endpoint = new EndpointBuilder('/users', 'GET')
37
- .description('Get all users')
38
- .handle(async () => []);
39
-
40
- expect(endpoint.description).toBe('Get all users');
41
- });
42
- });
43
-
44
- describe('status', () => {
45
- it('should set success status code', () => {
46
- const builder = new EndpointBuilder('/users', 'POST');
47
- const result = builder.status(201);
48
-
49
- expect(result).toBe(builder); // Should return this for chaining
50
- expect((builder as any)._status).toBe(201);
51
- });
52
-
53
- it('should pass status to endpoint', () => {
54
- const endpoint = new EndpointBuilder('/users', 'POST')
55
- .status(201)
56
- .handle(async () => ({ id: '123' }));
57
-
58
- expect(endpoint.status).toBe(201);
59
- });
60
-
61
- it('should accept different success status codes', () => {
62
- const statuses = [200, 201, 202, 204] as const;
63
-
64
- statuses.forEach((status) => {
65
- const endpoint = new EndpointBuilder('/test', 'POST')
66
- .status(status)
67
- .handle(async () => ({}));
68
-
69
- expect(endpoint.status).toBe(status);
70
- });
71
- });
72
- });
73
-
74
- describe('services', () => {
75
- const TestService = {
76
- serviceName: 'TestService' as const,
77
- async register() {
78
- return { getData: () => 'test data' };
79
- },
80
- };
81
-
82
- const AnotherService = {
83
- serviceName: 'AnotherService' as const,
84
- async register() {
85
- return { process: (input: string) => input.toUpperCase() };
86
- },
87
- };
88
-
89
- it('should add services to builder', () => {
90
- const builder = new EndpointBuilder('/users', 'GET').services([
91
- TestService,
92
- AnotherService,
93
- ]);
94
-
95
- expect((builder as any)._services).toEqual([TestService, AnotherService]);
96
- });
97
-
98
- it('should allow chaining multiple service calls', () => {
99
- const builder = new EndpointBuilder('/users', 'GET')
100
- .services([TestService])
101
- .services([AnotherService]);
102
-
103
- expect((builder as any)._services).toEqual([TestService, AnotherService]);
104
- });
105
-
106
- it('should pass services to endpoint', () => {
107
- const endpoint = new EndpointBuilder('/users', 'GET')
108
- .services([TestService, AnotherService])
109
- .handle(async ({ services }) => ({
110
- test: await services.TestService.getData(),
111
- another: await services.AnotherService.process('hello'),
112
- }));
113
-
114
- expect(endpoint.services).toEqual([TestService, AnotherService]);
115
- });
116
-
117
- it('should maintain type safety with services', () => {
118
- const builder = new EndpointBuilder('/test', 'POST').services([
119
- TestService,
120
- ]);
121
-
122
- // This should compile and provide type-safe access
123
- const endpoint = builder.handle(async ({ services }) => ({
124
- result: await services.TestService.getData(),
125
- }));
126
-
127
- expect(endpoint.services).toEqual([TestService]);
128
- });
129
- });
130
-
131
- describe('output', () => {
132
- it('should set output schema', () => {
133
- const schema = z.object({ id: z.string(), name: z.string() });
134
- const builder = new EndpointBuilder('/users', 'GET').output(schema);
135
-
136
- expect((builder as any).outputSchema).toBe(schema);
137
- });
138
-
139
- it('should pass output schema to endpoint', () => {
140
- const schema = z.object({ success: z.boolean() });
141
- const endpoint = new EndpointBuilder('/test', 'POST')
142
- .output(schema)
143
- .handle(async () => ({ success: true }));
144
-
145
- expect(endpoint.outputSchema).toBe(schema);
146
- });
147
-
148
- it('should work with different schema libraries', () => {
149
- // Mock a different schema library
150
- const customSchema = {
151
- '~standard': {
152
- vendor: 'custom',
153
- version: 1,
154
- },
155
- '~vendor': {
156
- validate: vi.fn(),
157
- },
158
- };
159
-
160
- const endpoint = new EndpointBuilder('/test', 'GET')
161
- .output(customSchema as any)
162
- .handle(async () => ({}));
163
-
164
- expect(endpoint.outputSchema).toBe(customSchema);
165
- });
166
- });
167
-
168
- describe('body', () => {
169
- it('should set body schema', () => {
170
- const schema = z.object({ username: z.string(), password: z.string() });
171
- const builder = new EndpointBuilder('/login', 'POST').body(schema);
172
-
173
- expect((builder as any).schemas.body).toBe(schema);
174
- });
175
-
176
- it('should pass body schema to endpoint', () => {
177
- const schema = z.object({ data: z.string() });
178
- const endpoint = new EndpointBuilder('/test', 'POST')
179
- .body(schema)
180
- .handle(async ({ body }) => ({ received: body.data }));
181
-
182
- expect(endpoint.input?.body).toBe(schema);
183
- });
184
-
185
- it('should allow chaining with other methods', () => {
186
- const bodySchema = z.object({ name: z.string() });
187
- const outputSchema = z.object({ id: z.string() });
188
-
189
- const endpoint = new EndpointBuilder('/users', 'POST')
190
- .body(bodySchema)
191
- .output(outputSchema)
192
- .status(201)
193
- .handle(async () => ({ id: '123' }));
194
-
195
- expect(endpoint.input?.body).toBe(bodySchema);
196
- expect(endpoint.outputSchema).toBe(outputSchema);
197
- expect(endpoint.status).toBe(201);
198
- });
199
- });
200
-
201
- describe('search/query', () => {
202
- it('should set query schema using search method', () => {
203
- const schema = z.object({ page: z.number(), limit: z.number() });
204
- const builder = new EndpointBuilder('/users', 'GET').search(schema);
205
-
206
- expect((builder as any).schemas.query).toBe(schema);
207
- });
208
-
209
- it('should set query schema using query method', () => {
210
- const schema = z.object({ filter: z.string() });
211
- const builder = new EndpointBuilder('/users', 'GET').query(schema);
212
-
213
- expect((builder as any).schemas.query).toBe(schema);
214
- });
215
-
216
- it('query should call search internally', () => {
217
- const schema = z.object({ sort: z.string() });
218
- const searchSpy = vi.spyOn(EndpointBuilder.prototype, 'search');
219
-
220
- new EndpointBuilder('/users', 'GET').query(schema);
221
-
222
- expect(searchSpy).toHaveBeenCalledWith(schema);
223
- searchSpy.mockRestore();
224
- });
225
-
226
- it('should pass query schema to endpoint', () => {
227
- const schema = z.object({ search: z.string().optional() });
228
- const endpoint = new EndpointBuilder('/search', 'GET')
229
- .query(schema)
230
- .handle(async ({ query }) => ({
231
- results: query.search ? ['result1'] : [],
232
- }));
233
-
234
- expect(endpoint.input?.query).toBe(schema);
235
- });
236
- });
237
-
238
- describe('params', () => {
239
- it('should set params schema', () => {
240
- const schema = z.object({ id: z.string(), subId: z.string() });
241
- const builder = new EndpointBuilder(
242
- '/users/:id/items/:subId',
243
- 'GET',
244
- ).params(schema);
245
-
246
- expect((builder as any).schemas.params).toBe(schema);
247
- });
248
-
249
- it('should pass params schema to endpoint', () => {
250
- const schema = z.object({ userId: z.string() });
251
- const endpoint = new EndpointBuilder('/users/:userId', 'GET')
252
- .params(schema)
253
- .handle(async ({ params }) => ({ userId: params.userId }));
254
-
255
- expect(endpoint.input?.params).toBe(schema);
256
- });
257
-
258
- it('should work with complex route patterns', () => {
259
- const schema = z.object({
260
- orgId: z.string(),
261
- projectId: z.string(),
262
- taskId: z.string(),
263
- });
264
-
265
- const endpoint = new EndpointBuilder(
266
- '/orgs/:orgId/projects/:projectId/tasks/:taskId',
267
- 'PUT',
268
- )
269
- .params(schema)
270
- .handle(async ({ params }) => ({ ...params }));
271
-
272
- expect(endpoint.input?.params).toBe(schema);
273
- });
274
- });
275
-
276
- describe('handle', () => {
277
- it('should create an Endpoint instance', () => {
278
- const endpoint = new EndpointBuilder('/test', 'GET').handle(
279
- async () => ({}),
280
- );
281
-
282
- expect(endpoint).toBeInstanceOf(Endpoint);
283
- });
284
-
285
- it('should pass all configurations to endpoint', () => {
286
- const bodySchema = z.object({ data: z.string() });
287
- const querySchema = z.object({ filter: z.string() });
288
- const paramsSchema = z.object({ id: z.string() });
289
- const outputSchema = z.object({ result: z.string() });
290
-
291
- const Service = {
292
- serviceName: 'Service' as const,
293
- async register() {
294
- return {};
295
- },
296
- };
297
-
298
- const logger: Logger = new ConsoleLogger();
299
- const authFn = async () => true;
300
- const sessionFn = async () => ({ userId: '123' });
301
- const handler = async () => ({ result: 'success' });
302
-
303
- const builder = new EndpointBuilder('/items/:id', 'POST')
304
- .body(bodySchema)
305
- .query(querySchema)
306
- .params(paramsSchema)
307
- .output(outputSchema)
308
- .services([Service])
309
- .status(201)
310
- .description('Test endpoint');
311
-
312
- // Set protected properties
313
- (builder as any)._logger = logger;
314
- (builder as any)._authorize = authFn;
315
- (builder as any)._getSession = sessionFn;
316
- (builder as any)._timeout = 5000;
317
-
318
- const endpoint = builder.handle(handler);
319
-
320
- // Verify all properties are passed correctly
321
- expect(endpoint.route).toBe('/items/:id');
322
- expect(endpoint.method).toBe('POST');
323
- expect(endpoint.description).toBe('Test endpoint');
324
- expect(endpoint.input?.body).toBe(bodySchema);
325
- expect(endpoint.input?.query).toBe(querySchema);
326
- expect(endpoint.input?.params).toBe(paramsSchema);
327
- expect(endpoint.outputSchema).toBe(outputSchema);
328
- expect(endpoint.services).toEqual([Service]);
329
- expect(endpoint.logger).toBe(logger);
330
- expect(endpoint.status).toBe(201);
331
- expect(endpoint.authorize).toBe(authFn);
332
- expect(endpoint.getSession).toBe(sessionFn);
333
- expect(endpoint.timeout).toBe(5000);
334
- });
335
-
336
- it('should handle async handlers', async () => {
337
- const endpoint = new EndpointBuilder('/async', 'GET').handle(async () => {
338
- await new Promise((resolve) => setTimeout(resolve, 10));
339
- return { delayed: true };
340
- });
341
-
342
- expect(endpoint).toBeInstanceOf(Endpoint);
343
- });
344
-
345
- it('should maintain type safety through the chain', () => {
346
- const endpoint = new EndpointBuilder('/typed', 'POST')
347
- .body(z.object({ input: z.number() }))
348
- .output(z.object({ doubled: z.number() }))
349
- .handle(async ({ body }) => ({
350
- doubled: body.input * 2,
351
- }));
352
-
353
- expect(endpoint.route).toBe('/typed');
354
- expect(endpoint.method).toBe('POST');
355
- });
356
- });
357
-
358
- describe('inherited authorization and session', () => {
359
- it('should have default authorization that returns true', () => {
360
- const builder = new EndpointBuilder('/test', 'GET');
361
- const defaultAuth = (builder as any)._authorize;
362
-
363
- expect(defaultAuth()).toBe(true);
364
- });
365
-
366
- it('should have default session that returns empty object', () => {
367
- const builder = new EndpointBuilder('/test', 'GET');
368
- const defaultSession = (builder as any)._getSession;
369
-
370
- expect(defaultSession()).toEqual({});
371
- });
372
-
373
- it('should allow setting custom authorization', () => {
374
- const customAuth = async () => false;
375
- const builder = new EndpointBuilder('/test', 'GET');
376
- (builder as any)._authorize = customAuth;
377
-
378
- const endpoint = builder.handle(async () => ({}));
379
- expect(endpoint.authorize).toBe(customAuth);
380
- });
381
-
382
- it('should allow setting custom session extractor', () => {
383
- const customSession = async () => ({ userId: '123', role: 'admin' });
384
- const builder = new EndpointBuilder('/test', 'GET');
385
- (builder as any)._getSession = customSession;
386
-
387
- const endpoint = builder.handle(async () => ({}));
388
- expect(endpoint.getSession).toBe(customSession);
389
- });
390
- });
391
-
392
- describe('method chaining', () => {
393
- it('should support fluent interface pattern', () => {
394
- const endpoint = new EndpointBuilder('/users', 'POST')
395
- .description('Create a new user')
396
- .status(201)
397
- .body(z.object({ name: z.string(), email: z.string().email() }))
398
- .output(z.object({ id: z.string(), created: z.boolean() }))
399
- .handle(async () => ({
400
- id: '123',
401
- created: true,
402
- }));
403
-
404
- expect(endpoint.description).toBe('Create a new user');
405
- expect(endpoint.status).toBe(201);
406
- expect(endpoint.input?.body).toBeDefined();
407
- expect(endpoint.outputSchema).toBeDefined();
408
- });
409
-
410
- it('should maintain builder type through chains', () => {
411
- const builder1 = new EndpointBuilder('/test', 'GET');
412
- const builder2 = builder1.description('Test');
413
- const builder3 = builder2.status(200);
414
-
415
- expect(builder1).toBe(builder2);
416
- expect(builder2).toBe(builder3);
417
- });
418
- });
419
-
420
- describe('edge cases', () => {
421
- it('should handle empty route', () => {
422
- const endpoint = new EndpointBuilder('', 'GET').handle(async () => ({}));
423
- expect(endpoint.route).toBe('');
424
- });
425
-
426
- it('should handle root route', () => {
427
- const endpoint = new EndpointBuilder('/', 'GET').handle(async () => ({}));
428
- expect(endpoint.route).toBe('/');
429
- });
430
-
431
- it('should handle routes with special characters', () => {
432
- const endpoint = new EndpointBuilder(
433
- '/users/:id/items/:item-id',
434
- 'GET',
435
- ).handle(async () => ({}));
436
- expect(endpoint.route).toBe('/users/:id/items/:item-id');
437
- });
438
-
439
- it('should handle all HTTP methods', () => {
440
- const methods = [
441
- 'GET',
442
- 'POST',
443
- 'PUT',
444
- 'DELETE',
445
- 'PATCH',
446
- 'OPTIONS',
447
- ] as const;
448
-
449
- methods.forEach((method) => {
450
- const endpoint = new EndpointBuilder('/test', method).handle(
451
- async () => ({}),
452
- );
453
- expect(endpoint.method).toBe(method);
454
- });
455
- });
456
-
457
- it('should handle undefined schemas', () => {
458
- const endpoint = new EndpointBuilder('/test', 'GET').handle(
459
- async () => ({}),
460
- );
461
-
462
- expect(endpoint.input || {}).toEqual({});
463
- expect(endpoint.outputSchema).toBeUndefined();
464
- });
465
-
466
- it('should handle complex nested schemas', () => {
467
- const complexSchema = z.object({
468
- user: z.object({
469
- profile: z.object({
470
- name: z.string(),
471
- settings: z.array(
472
- z.object({
473
- key: z.string(),
474
- value: z.unknown(),
475
- }),
476
- ),
477
- }),
478
- }),
479
- });
480
-
481
- const endpoint = new EndpointBuilder('/complex', 'POST')
482
- .body(complexSchema)
483
- .handle(async ({ body }) => ({ received: body }));
484
-
485
- expect(endpoint.input?.body).toBe(complexSchema);
486
- });
487
- });
10
+ describe('constructor', () => {
11
+ it('should create builder with route and method', () => {
12
+ const builder = new EndpointBuilder('/users', 'GET');
13
+
14
+ expect(builder.route).toBe('/users');
15
+ expect(builder.method).toBe('GET');
16
+ });
17
+
18
+ it('should initialize with FunctionType.Endpoint', () => {
19
+ const builder = new EndpointBuilder('/users', 'POST');
20
+
21
+ // Access protected member through inheritance
22
+ expect((builder as any).type).toBe(ConstructType.Endpoint);
23
+ });
24
+ });
25
+
26
+ describe('description', () => {
27
+ it('should set endpoint description', () => {
28
+ const builder = new EndpointBuilder('/users', 'GET');
29
+ const result = builder.description('Get all users');
30
+
31
+ expect(result).toBe(builder); // Should return this for chaining
32
+ expect((builder as any)._description).toBe('Get all users');
33
+ });
34
+
35
+ it('should pass description to endpoint', () => {
36
+ const endpoint = new EndpointBuilder('/users', 'GET')
37
+ .description('Get all users')
38
+ .handle(async () => []);
39
+
40
+ expect(endpoint.description).toBe('Get all users');
41
+ });
42
+ });
43
+
44
+ describe('status', () => {
45
+ it('should set success status code', () => {
46
+ const builder = new EndpointBuilder('/users', 'POST');
47
+ const result = builder.status(201);
48
+
49
+ expect(result).toBe(builder); // Should return this for chaining
50
+ expect((builder as any)._status).toBe(201);
51
+ });
52
+
53
+ it('should pass status to endpoint', () => {
54
+ const endpoint = new EndpointBuilder('/users', 'POST')
55
+ .status(201)
56
+ .handle(async () => ({ id: '123' }));
57
+
58
+ expect(endpoint.status).toBe(201);
59
+ });
60
+
61
+ it('should accept different success status codes', () => {
62
+ const statuses = [200, 201, 202, 204] as const;
63
+
64
+ statuses.forEach((status) => {
65
+ const endpoint = new EndpointBuilder('/test', 'POST')
66
+ .status(status)
67
+ .handle(async () => ({}));
68
+
69
+ expect(endpoint.status).toBe(status);
70
+ });
71
+ });
72
+ });
73
+
74
+ describe('services', () => {
75
+ const TestService = {
76
+ serviceName: 'TestService' as const,
77
+ async register() {
78
+ return { getData: () => 'test data' };
79
+ },
80
+ };
81
+
82
+ const AnotherService = {
83
+ serviceName: 'AnotherService' as const,
84
+ async register() {
85
+ return { process: (input: string) => input.toUpperCase() };
86
+ },
87
+ };
88
+
89
+ it('should add services to builder', () => {
90
+ const builder = new EndpointBuilder('/users', 'GET').services([
91
+ TestService,
92
+ AnotherService,
93
+ ]);
94
+
95
+ expect((builder as any)._services).toEqual([TestService, AnotherService]);
96
+ });
97
+
98
+ it('should allow chaining multiple service calls', () => {
99
+ const builder = new EndpointBuilder('/users', 'GET')
100
+ .services([TestService])
101
+ .services([AnotherService]);
102
+
103
+ expect((builder as any)._services).toEqual([TestService, AnotherService]);
104
+ });
105
+
106
+ it('should pass services to endpoint', () => {
107
+ const endpoint = new EndpointBuilder('/users', 'GET')
108
+ .services([TestService, AnotherService])
109
+ .handle(async ({ services }) => ({
110
+ test: await services.TestService.getData(),
111
+ another: await services.AnotherService.process('hello'),
112
+ }));
113
+
114
+ expect(endpoint.services).toEqual([TestService, AnotherService]);
115
+ });
116
+
117
+ it('should maintain type safety with services', () => {
118
+ const builder = new EndpointBuilder('/test', 'POST').services([
119
+ TestService,
120
+ ]);
121
+
122
+ // This should compile and provide type-safe access
123
+ const endpoint = builder.handle(async ({ services }) => ({
124
+ result: await services.TestService.getData(),
125
+ }));
126
+
127
+ expect(endpoint.services).toEqual([TestService]);
128
+ });
129
+ });
130
+
131
+ describe('output', () => {
132
+ it('should set output schema', () => {
133
+ const schema = z.object({ id: z.string(), name: z.string() });
134
+ const builder = new EndpointBuilder('/users', 'GET').output(schema);
135
+
136
+ expect((builder as any).outputSchema).toBe(schema);
137
+ });
138
+
139
+ it('should pass output schema to endpoint', () => {
140
+ const schema = z.object({ success: z.boolean() });
141
+ const endpoint = new EndpointBuilder('/test', 'POST')
142
+ .output(schema)
143
+ .handle(async () => ({ success: true }));
144
+
145
+ expect(endpoint.outputSchema).toBe(schema);
146
+ });
147
+
148
+ it('should work with different schema libraries', () => {
149
+ // Mock a different schema library
150
+ const customSchema = {
151
+ '~standard': {
152
+ vendor: 'custom',
153
+ version: 1,
154
+ },
155
+ '~vendor': {
156
+ validate: vi.fn(),
157
+ },
158
+ };
159
+
160
+ const endpoint = new EndpointBuilder('/test', 'GET')
161
+ .output(customSchema as any)
162
+ .handle(async () => ({}));
163
+
164
+ expect(endpoint.outputSchema).toBe(customSchema);
165
+ });
166
+ });
167
+
168
+ describe('body', () => {
169
+ it('should set body schema', () => {
170
+ const schema = z.object({ username: z.string(), password: z.string() });
171
+ const builder = new EndpointBuilder('/login', 'POST').body(schema);
172
+
173
+ expect((builder as any).schemas.body).toBe(schema);
174
+ });
175
+
176
+ it('should pass body schema to endpoint', () => {
177
+ const schema = z.object({ data: z.string() });
178
+ const endpoint = new EndpointBuilder('/test', 'POST')
179
+ .body(schema)
180
+ .handle(async ({ body }) => ({ received: body.data }));
181
+
182
+ expect(endpoint.input?.body).toBe(schema);
183
+ });
184
+
185
+ it('should allow chaining with other methods', () => {
186
+ const bodySchema = z.object({ name: z.string() });
187
+ const outputSchema = z.object({ id: z.string() });
188
+
189
+ const endpoint = new EndpointBuilder('/users', 'POST')
190
+ .body(bodySchema)
191
+ .output(outputSchema)
192
+ .status(201)
193
+ .handle(async () => ({ id: '123' }));
194
+
195
+ expect(endpoint.input?.body).toBe(bodySchema);
196
+ expect(endpoint.outputSchema).toBe(outputSchema);
197
+ expect(endpoint.status).toBe(201);
198
+ });
199
+ });
200
+
201
+ describe('search/query', () => {
202
+ it('should set query schema using search method', () => {
203
+ const schema = z.object({ page: z.number(), limit: z.number() });
204
+ const builder = new EndpointBuilder('/users', 'GET').search(schema);
205
+
206
+ expect((builder as any).schemas.query).toBe(schema);
207
+ });
208
+
209
+ it('should set query schema using query method', () => {
210
+ const schema = z.object({ filter: z.string() });
211
+ const builder = new EndpointBuilder('/users', 'GET').query(schema);
212
+
213
+ expect((builder as any).schemas.query).toBe(schema);
214
+ });
215
+
216
+ it('query should call search internally', () => {
217
+ const schema = z.object({ sort: z.string() });
218
+ const searchSpy = vi.spyOn(EndpointBuilder.prototype, 'search');
219
+
220
+ new EndpointBuilder('/users', 'GET').query(schema);
221
+
222
+ expect(searchSpy).toHaveBeenCalledWith(schema);
223
+ searchSpy.mockRestore();
224
+ });
225
+
226
+ it('should pass query schema to endpoint', () => {
227
+ const schema = z.object({ search: z.string().optional() });
228
+ const endpoint = new EndpointBuilder('/search', 'GET')
229
+ .query(schema)
230
+ .handle(async ({ query }) => ({
231
+ results: query.search ? ['result1'] : [],
232
+ }));
233
+
234
+ expect(endpoint.input?.query).toBe(schema);
235
+ });
236
+ });
237
+
238
+ describe('params', () => {
239
+ it('should set params schema', () => {
240
+ const schema = z.object({ id: z.string(), subId: z.string() });
241
+ const builder = new EndpointBuilder(
242
+ '/users/:id/items/:subId',
243
+ 'GET',
244
+ ).params(schema);
245
+
246
+ expect((builder as any).schemas.params).toBe(schema);
247
+ });
248
+
249
+ it('should pass params schema to endpoint', () => {
250
+ const schema = z.object({ userId: z.string() });
251
+ const endpoint = new EndpointBuilder('/users/:userId', 'GET')
252
+ .params(schema)
253
+ .handle(async ({ params }) => ({ userId: params.userId }));
254
+
255
+ expect(endpoint.input?.params).toBe(schema);
256
+ });
257
+
258
+ it('should work with complex route patterns', () => {
259
+ const schema = z.object({
260
+ orgId: z.string(),
261
+ projectId: z.string(),
262
+ taskId: z.string(),
263
+ });
264
+
265
+ const endpoint = new EndpointBuilder(
266
+ '/orgs/:orgId/projects/:projectId/tasks/:taskId',
267
+ 'PUT',
268
+ )
269
+ .params(schema)
270
+ .handle(async ({ params }) => ({ ...params }));
271
+
272
+ expect(endpoint.input?.params).toBe(schema);
273
+ });
274
+ });
275
+
276
+ describe('handle', () => {
277
+ it('should create an Endpoint instance', () => {
278
+ const endpoint = new EndpointBuilder('/test', 'GET').handle(
279
+ async () => ({}),
280
+ );
281
+
282
+ expect(endpoint).toBeInstanceOf(Endpoint);
283
+ });
284
+
285
+ it('should pass all configurations to endpoint', () => {
286
+ const bodySchema = z.object({ data: z.string() });
287
+ const querySchema = z.object({ filter: z.string() });
288
+ const paramsSchema = z.object({ id: z.string() });
289
+ const outputSchema = z.object({ result: z.string() });
290
+
291
+ const Service = {
292
+ serviceName: 'Service' as const,
293
+ async register() {
294
+ return {};
295
+ },
296
+ };
297
+
298
+ const logger: Logger = new ConsoleLogger();
299
+ const authFn = async () => true;
300
+ const sessionFn = async () => ({ userId: '123' });
301
+ const handler = async () => ({ result: 'success' });
302
+
303
+ const builder = new EndpointBuilder('/items/:id', 'POST')
304
+ .body(bodySchema)
305
+ .query(querySchema)
306
+ .params(paramsSchema)
307
+ .output(outputSchema)
308
+ .services([Service])
309
+ .status(201)
310
+ .description('Test endpoint');
311
+
312
+ // Set protected properties
313
+ (builder as any)._logger = logger;
314
+ (builder as any)._authorize = authFn;
315
+ (builder as any)._getSession = sessionFn;
316
+ (builder as any)._timeout = 5000;
317
+
318
+ const endpoint = builder.handle(handler);
319
+
320
+ // Verify all properties are passed correctly
321
+ expect(endpoint.route).toBe('/items/:id');
322
+ expect(endpoint.method).toBe('POST');
323
+ expect(endpoint.description).toBe('Test endpoint');
324
+ expect(endpoint.input?.body).toBe(bodySchema);
325
+ expect(endpoint.input?.query).toBe(querySchema);
326
+ expect(endpoint.input?.params).toBe(paramsSchema);
327
+ expect(endpoint.outputSchema).toBe(outputSchema);
328
+ expect(endpoint.services).toEqual([Service]);
329
+ expect(endpoint.logger).toBe(logger);
330
+ expect(endpoint.status).toBe(201);
331
+ expect(endpoint.authorize).toBe(authFn);
332
+ expect(endpoint.getSession).toBe(sessionFn);
333
+ expect(endpoint.timeout).toBe(5000);
334
+ });
335
+
336
+ it('should handle async handlers', async () => {
337
+ const endpoint = new EndpointBuilder('/async', 'GET').handle(async () => {
338
+ await new Promise((resolve) => setTimeout(resolve, 10));
339
+ return { delayed: true };
340
+ });
341
+
342
+ expect(endpoint).toBeInstanceOf(Endpoint);
343
+ });
344
+
345
+ it('should maintain type safety through the chain', () => {
346
+ const endpoint = new EndpointBuilder('/typed', 'POST')
347
+ .body(z.object({ input: z.number() }))
348
+ .output(z.object({ doubled: z.number() }))
349
+ .handle(async ({ body }) => ({
350
+ doubled: body.input * 2,
351
+ }));
352
+
353
+ expect(endpoint.route).toBe('/typed');
354
+ expect(endpoint.method).toBe('POST');
355
+ });
356
+ });
357
+
358
+ describe('inherited authorization and session', () => {
359
+ it('should have default authorization that returns true', () => {
360
+ const builder = new EndpointBuilder('/test', 'GET');
361
+ const defaultAuth = (builder as any)._authorize;
362
+
363
+ expect(defaultAuth()).toBe(true);
364
+ });
365
+
366
+ it('should have default session that returns empty object', () => {
367
+ const builder = new EndpointBuilder('/test', 'GET');
368
+ const defaultSession = (builder as any)._getSession;
369
+
370
+ expect(defaultSession()).toEqual({});
371
+ });
372
+
373
+ it('should allow setting custom authorization', () => {
374
+ const customAuth = async () => false;
375
+ const builder = new EndpointBuilder('/test', 'GET');
376
+ (builder as any)._authorize = customAuth;
377
+
378
+ const endpoint = builder.handle(async () => ({}));
379
+ expect(endpoint.authorize).toBe(customAuth);
380
+ });
381
+
382
+ it('should allow setting custom session extractor', () => {
383
+ const customSession = async () => ({ userId: '123', role: 'admin' });
384
+ const builder = new EndpointBuilder('/test', 'GET');
385
+ (builder as any)._getSession = customSession;
386
+
387
+ const endpoint = builder.handle(async () => ({}));
388
+ expect(endpoint.getSession).toBe(customSession);
389
+ });
390
+ });
391
+
392
+ describe('method chaining', () => {
393
+ it('should support fluent interface pattern', () => {
394
+ const endpoint = new EndpointBuilder('/users', 'POST')
395
+ .description('Create a new user')
396
+ .status(201)
397
+ .body(z.object({ name: z.string(), email: z.string().email() }))
398
+ .output(z.object({ id: z.string(), created: z.boolean() }))
399
+ .handle(async () => ({
400
+ id: '123',
401
+ created: true,
402
+ }));
403
+
404
+ expect(endpoint.description).toBe('Create a new user');
405
+ expect(endpoint.status).toBe(201);
406
+ expect(endpoint.input?.body).toBeDefined();
407
+ expect(endpoint.outputSchema).toBeDefined();
408
+ });
409
+
410
+ it('should maintain builder type through chains', () => {
411
+ const builder1 = new EndpointBuilder('/test', 'GET');
412
+ const builder2 = builder1.description('Test');
413
+ const builder3 = builder2.status(200);
414
+
415
+ expect(builder1).toBe(builder2);
416
+ expect(builder2).toBe(builder3);
417
+ });
418
+ });
419
+
420
+ describe('edge cases', () => {
421
+ it('should handle empty route', () => {
422
+ const endpoint = new EndpointBuilder('', 'GET').handle(async () => ({}));
423
+ expect(endpoint.route).toBe('');
424
+ });
425
+
426
+ it('should handle root route', () => {
427
+ const endpoint = new EndpointBuilder('/', 'GET').handle(async () => ({}));
428
+ expect(endpoint.route).toBe('/');
429
+ });
430
+
431
+ it('should handle routes with special characters', () => {
432
+ const endpoint = new EndpointBuilder(
433
+ '/users/:id/items/:item-id',
434
+ 'GET',
435
+ ).handle(async () => ({}));
436
+ expect(endpoint.route).toBe('/users/:id/items/:item-id');
437
+ });
438
+
439
+ it('should handle all HTTP methods', () => {
440
+ const methods = [
441
+ 'GET',
442
+ 'POST',
443
+ 'PUT',
444
+ 'DELETE',
445
+ 'PATCH',
446
+ 'OPTIONS',
447
+ ] as const;
448
+
449
+ methods.forEach((method) => {
450
+ const endpoint = new EndpointBuilder('/test', method).handle(
451
+ async () => ({}),
452
+ );
453
+ expect(endpoint.method).toBe(method);
454
+ });
455
+ });
456
+
457
+ it('should handle undefined schemas', () => {
458
+ const endpoint = new EndpointBuilder('/test', 'GET').handle(
459
+ async () => ({}),
460
+ );
461
+
462
+ expect(endpoint.input || {}).toEqual({});
463
+ expect(endpoint.outputSchema).toBeUndefined();
464
+ });
465
+
466
+ it('should handle complex nested schemas', () => {
467
+ const complexSchema = z.object({
468
+ user: z.object({
469
+ profile: z.object({
470
+ name: z.string(),
471
+ settings: z.array(
472
+ z.object({
473
+ key: z.string(),
474
+ value: z.unknown(),
475
+ }),
476
+ ),
477
+ }),
478
+ }),
479
+ });
480
+
481
+ const endpoint = new EndpointBuilder('/complex', 'POST')
482
+ .body(complexSchema)
483
+ .handle(async ({ body }) => ({ received: body }));
484
+
485
+ expect(endpoint.input?.body).toBe(complexSchema);
486
+ });
487
+ });
488
488
  });