@geekmidas/constructs 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/dist/{AWSLambdaFunction-EPGY4s7i.cjs → AWSLambdaFunction-Ba1DcsW2.cjs} +6 -6
  2. package/dist/AWSLambdaFunction-Ba1DcsW2.cjs.map +1 -0
  3. package/dist/{AWSLambdaFunction-BdebRMUh.d.mts → AWSLambdaFunction-CKe73Qr0.d.cts} +6 -6
  4. package/dist/AWSLambdaFunction-CKe73Qr0.d.cts.map +1 -0
  5. package/dist/{AWSLambdaFunction-D0tEOTXQ.d.cts → AWSLambdaFunction-CuG3HNZx.d.mts} +6 -6
  6. package/dist/AWSLambdaFunction-CuG3HNZx.d.mts.map +1 -0
  7. package/dist/{AWSLambdaFunction-C54a1doJ.mjs → AWSLambdaFunction-DnMm4xvz.mjs} +6 -6
  8. package/dist/AWSLambdaFunction-DnMm4xvz.mjs.map +1 -0
  9. package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts} +4 -4
  10. package/dist/AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map +1 -0
  11. package/dist/{AWSLambdaSubscriberAdaptor-BLfO612H.mjs → AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs} +3 -3
  12. package/dist/AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs.map +1 -0
  13. package/dist/{AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts} +4 -4
  14. package/dist/AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map +1 -0
  15. package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs} +3 -3
  16. package/dist/AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs → AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs} +56 -14
  18. package/dist/AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map +1 -0
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs → AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs} +55 -13
  20. package/dist/AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map +1 -0
  21. package/dist/{AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts → AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts} +52 -6
  22. package/dist/AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map +1 -0
  23. package/dist/{AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts → AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts} +51 -5
  24. package/dist/AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map +1 -0
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts → AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts} +4 -4
  26. package/dist/AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map +1 -0
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs → AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs} +4 -4
  28. package/dist/AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map +1 -0
  29. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs → AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs} +4 -4
  30. package/dist/AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map +1 -0
  31. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts → AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts} +5 -5
  32. package/dist/AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map +1 -0
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs → AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs} +4 -4
  34. package/dist/AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map +1 -0
  35. package/dist/{AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs → AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs} +4 -4
  36. package/dist/AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map +1 -0
  37. package/dist/{AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts → AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts} +4 -6
  38. package/dist/AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map +1 -0
  39. package/dist/{AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts → AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts} +5 -7
  40. package/dist/AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts.map +1 -0
  41. package/dist/{Authorizer-C0ge_tc8.cjs → Authorizer-BXxBee2P.cjs} +1 -1
  42. package/dist/Authorizer-BXxBee2P.cjs.map +1 -0
  43. package/dist/{Authorizer-r9U3y_ms.mjs → Authorizer-BgjU8-z6.mjs} +1 -1
  44. package/dist/Authorizer-BgjU8-z6.mjs.map +1 -0
  45. package/dist/{Authorizer-gWxYsGEp.d.mts → Authorizer-DCcYOx3h.d.mts} +1 -1
  46. package/dist/Authorizer-DCcYOx3h.d.mts.map +1 -0
  47. package/dist/{Authorizer-B-btowNd.d.cts → Authorizer-DWtwC8we.d.cts} +1 -1
  48. package/dist/Authorizer-DWtwC8we.d.cts.map +1 -0
  49. package/dist/{BaseFunctionBuilder-Czi1Jwza.mjs → BaseFunctionBuilder-0qlenb9z.mjs} +2 -2
  50. package/dist/BaseFunctionBuilder-0qlenb9z.mjs.map +1 -0
  51. package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +1 -1
  52. package/dist/{BaseFunctionBuilder-DRY419e7.d.mts → BaseFunctionBuilder-CDfDWWAQ.d.mts} +2 -2
  53. package/dist/BaseFunctionBuilder-CDfDWWAQ.d.mts.map +1 -0
  54. package/dist/{BaseFunctionBuilder-MYG3C9ug.cjs → BaseFunctionBuilder-D7o93EGv.cjs} +2 -2
  55. package/dist/BaseFunctionBuilder-D7o93EGv.cjs.map +1 -0
  56. package/dist/{Construct-Ba5cMxib.cjs → Construct-BlnyYtJC.cjs} +31 -2
  57. package/dist/Construct-BlnyYtJC.cjs.map +1 -0
  58. package/dist/Construct-C4rPE67v.d.cts.map +1 -1
  59. package/dist/{Construct-DdyGHuag.mjs → Construct-D5dCvxZ3.mjs} +31 -2
  60. package/dist/Construct-D5dCvxZ3.mjs.map +1 -0
  61. package/dist/{Construct-XrijZFFh.d.mts → Construct-dZiwVo0q.d.mts} +1 -1
  62. package/dist/Construct-dZiwVo0q.d.mts.map +1 -0
  63. package/dist/Construct.cjs +1 -1
  64. package/dist/Construct.d.mts +1 -1
  65. package/dist/Construct.mjs +1 -1
  66. package/dist/{Cron-bDLcTvV5.d.cts → Cron-B6FnTu7k.d.cts} +2 -2
  67. package/dist/Cron-B6FnTu7k.d.cts.map +1 -0
  68. package/dist/{Cron-CGF4YAfM.cjs → Cron-BAPQetlC.cjs} +3 -3
  69. package/dist/Cron-BAPQetlC.cjs.map +1 -0
  70. package/dist/{Cron-BxhGs5up.mjs → Cron-CAk_ddH8.mjs} +3 -3
  71. package/dist/Cron-CAk_ddH8.mjs.map +1 -0
  72. package/dist/{Cron-cdjlSKNp.d.mts → Cron-D3bEljxQ.d.mts} +2 -2
  73. package/dist/Cron-D3bEljxQ.d.mts.map +1 -0
  74. package/dist/{CronBuilder-DKVXyE0Q.d.cts → CronBuilder-CA8euP0z.d.cts} +4 -4
  75. package/dist/CronBuilder-CA8euP0z.d.cts.map +1 -0
  76. package/dist/{CronBuilder-BC4m5-p1.d.mts → CronBuilder-DvdiKzhq.d.mts} +4 -4
  77. package/dist/CronBuilder-DvdiKzhq.d.mts.map +1 -0
  78. package/dist/{CronBuilder-CcxKRtVP.cjs → CronBuilder-DxXA5ymv.cjs} +4 -4
  79. package/dist/CronBuilder-DxXA5ymv.cjs.map +1 -0
  80. package/dist/{CronBuilder-d2jh-IB2.mjs → CronBuilder-e8TaHPYm.mjs} +4 -4
  81. package/dist/CronBuilder-e8TaHPYm.mjs.map +1 -0
  82. package/dist/{Endpoint-BPv9_-m_.d.cts → Endpoint-BOlbY5iq.d.cts} +3 -3
  83. package/dist/Endpoint-BOlbY5iq.d.cts.map +1 -0
  84. package/dist/{Endpoint-CuOEswxJ.mjs → Endpoint-BbdNmtlM.mjs} +6 -6
  85. package/dist/Endpoint-BbdNmtlM.mjs.map +1 -0
  86. package/dist/{Endpoint-BdwG75G_.d.mts → Endpoint-Dlv7nxgj.d.mts} +4 -4
  87. package/dist/Endpoint-Dlv7nxgj.d.mts.map +1 -0
  88. package/dist/{Endpoint-BVGZXFyV.cjs → Endpoint-DxvnlfXg.cjs} +6 -6
  89. package/dist/Endpoint-DxvnlfXg.cjs.map +1 -0
  90. package/dist/{EndpointBuilder-Cgj1P_ra.cjs → EndpointBuilder-40Iz5CjY.cjs} +6 -6
  91. package/dist/EndpointBuilder-40Iz5CjY.cjs.map +1 -0
  92. package/dist/{EndpointBuilder-DnCB1h1j.mjs → EndpointBuilder-BaVvhW9m.mjs} +6 -6
  93. package/dist/EndpointBuilder-BaVvhW9m.mjs.map +1 -0
  94. package/dist/{EndpointBuilder-DIy_m1bu.d.cts → EndpointBuilder-CFfWWjUa.d.cts} +3 -3
  95. package/dist/EndpointBuilder-CFfWWjUa.d.cts.map +1 -0
  96. package/dist/{EndpointBuilder-B3az942t.d.mts → EndpointBuilder-T_K2NLWw.d.mts} +5 -5
  97. package/dist/EndpointBuilder-T_K2NLWw.d.mts.map +1 -0
  98. package/dist/{EndpointFactory-CyPbm3AD.d.cts → EndpointFactory-ChzBVEM9.d.cts} +4 -4
  99. package/dist/EndpointFactory-ChzBVEM9.d.cts.map +1 -0
  100. package/dist/{EndpointFactory-CbdxPCIH.mjs → EndpointFactory-DfNjSgVG.mjs} +7 -7
  101. package/dist/EndpointFactory-DfNjSgVG.mjs.map +1 -0
  102. package/dist/{EndpointFactory-C-0nE6Jg.d.mts → EndpointFactory-GAL_tuPf.d.mts} +4 -4
  103. package/dist/EndpointFactory-GAL_tuPf.d.mts.map +1 -0
  104. package/dist/{EndpointFactory-CYj6BYok.cjs → EndpointFactory-r6jxPvQ8.cjs} +7 -7
  105. package/dist/EndpointFactory-r6jxPvQ8.cjs.map +1 -0
  106. package/dist/{Function-BVHqIDp9.mjs → Function-D8tBamM3.mjs} +3 -3
  107. package/dist/Function-D8tBamM3.mjs.map +1 -0
  108. package/dist/{Function-DN2G6OT5.d.mts → Function-DBmU3uGI.d.mts} +3 -3
  109. package/dist/Function-DBmU3uGI.d.mts.map +1 -0
  110. package/dist/{Function-Cf7f_kCz.d.cts → Function-PNW4HdNE.d.cts} +2 -2
  111. package/dist/Function-PNW4HdNE.d.cts.map +1 -0
  112. package/dist/{Function-DDZb1525.cjs → Function-iLKrUXuw.cjs} +3 -3
  113. package/dist/Function-iLKrUXuw.cjs.map +1 -0
  114. package/dist/{FunctionBuilder-DswJ-9sD.cjs → FunctionBuilder-BEpPgeho.cjs} +4 -4
  115. package/dist/FunctionBuilder-BEpPgeho.cjs.map +1 -0
  116. package/dist/{FunctionBuilder-Cxx8D2na.d.mts → FunctionBuilder-Bv4H2I1a.d.mts} +4 -4
  117. package/dist/FunctionBuilder-Bv4H2I1a.d.mts.map +1 -0
  118. package/dist/{FunctionBuilder-CrDYgfiI.mjs → FunctionBuilder-BwNF99AB.mjs} +4 -4
  119. package/dist/FunctionBuilder-BwNF99AB.mjs.map +1 -0
  120. package/dist/{FunctionBuilder-CJBzzXL3.d.cts → FunctionBuilder-DCqXIHaq.d.cts} +2 -2
  121. package/dist/FunctionBuilder-DCqXIHaq.d.cts.map +1 -0
  122. package/dist/{FunctionExecutionWrapper-CLDh7Z2_.mjs → FunctionExecutionWrapper-B__HE_B-.mjs} +3 -3
  123. package/dist/FunctionExecutionWrapper-B__HE_B-.mjs.map +1 -0
  124. package/dist/{FunctionExecutionWrapper-DF260Aaj.d.mts → FunctionExecutionWrapper-BclgIztn.d.cts} +5 -5
  125. package/dist/FunctionExecutionWrapper-BclgIztn.d.cts.map +1 -0
  126. package/dist/{FunctionExecutionWrapper-BYI2bGTL.cjs → FunctionExecutionWrapper-BjF6t9Hb.cjs} +3 -3
  127. package/dist/FunctionExecutionWrapper-BjF6t9Hb.cjs.map +1 -0
  128. package/dist/{FunctionExecutionWrapper-Qy8bmgFR.d.cts → FunctionExecutionWrapper-Dq21c6vt.d.mts} +5 -5
  129. package/dist/FunctionExecutionWrapper-Dq21c6vt.d.mts.map +1 -0
  130. package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs +251 -0
  131. package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs.map +1 -0
  132. package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs +257 -0
  133. package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs.map +1 -0
  134. package/dist/{HonoEndpointAdaptor-Bqm6SEuP.d.cts → HonoEndpointAdaptor-Dkkemmbo.d.cts} +9 -4
  135. package/dist/HonoEndpointAdaptor-Dkkemmbo.d.cts.map +1 -0
  136. package/dist/{HonoEndpointAdaptor-CRe-ij5f.d.mts → HonoEndpointAdaptor-HukjdF6M.d.mts} +10 -5
  137. package/dist/HonoEndpointAdaptor-HukjdF6M.d.mts.map +1 -0
  138. package/dist/{Subscriber-COYMSevD.d.cts → Subscriber--zUjZDR6.d.cts} +1 -1
  139. package/dist/Subscriber--zUjZDR6.d.cts.map +1 -0
  140. package/dist/{Subscriber-ikctpU3I.d.mts → Subscriber-0Ac7cXID.d.mts} +2 -2
  141. package/dist/Subscriber-0Ac7cXID.d.mts.map +1 -0
  142. package/dist/{Subscriber-BmPf9GFb.mjs → Subscriber-BgZ8T-O2.mjs} +2 -2
  143. package/dist/Subscriber-BgZ8T-O2.mjs.map +1 -0
  144. package/dist/{Subscriber-BiHjVXtM.cjs → Subscriber-CoFmHMIM.cjs} +2 -2
  145. package/dist/Subscriber-CoFmHMIM.cjs.map +1 -0
  146. package/dist/{SubscriberBuilder-D_9zzllj.d.mts → SubscriberBuilder-D8cmUHee.d.mts} +2 -2
  147. package/dist/SubscriberBuilder-D8cmUHee.d.mts.map +1 -0
  148. package/dist/{SubscriberBuilder-DJPEeYDJ.mjs → SubscriberBuilder-DWXWZBPo.mjs} +2 -2
  149. package/dist/SubscriberBuilder-DWXWZBPo.mjs.map +1 -0
  150. package/dist/{SubscriberBuilder-ivHAGIVi.d.cts → SubscriberBuilder-DciTqb-7.d.cts} +2 -2
  151. package/dist/SubscriberBuilder-DciTqb-7.d.cts.map +1 -0
  152. package/dist/{SubscriberBuilder-Cp1C-xtT.cjs → SubscriberBuilder-JlxhyqGp.cjs} +2 -2
  153. package/dist/SubscriberBuilder-JlxhyqGp.cjs.map +1 -0
  154. package/dist/{TestEndpointAdaptor-DB7bREhS.d.mts → TestEndpointAdaptor-Boijwbmz.d.mts} +4 -4
  155. package/dist/TestEndpointAdaptor-Boijwbmz.d.mts.map +1 -0
  156. package/dist/{TestEndpointAdaptor-C10xBI--.d.cts → TestEndpointAdaptor-DdwpRyNh.d.cts} +3 -3
  157. package/dist/TestEndpointAdaptor-DdwpRyNh.d.cts.map +1 -0
  158. package/dist/TestEndpointAdaptor-Dk75ExxE.cjs +176 -0
  159. package/dist/TestEndpointAdaptor-Dk75ExxE.cjs.map +1 -0
  160. package/dist/TestEndpointAdaptor-OiA2JLDp.mjs +170 -0
  161. package/dist/TestEndpointAdaptor-OiA2JLDp.mjs.map +1 -0
  162. package/dist/adaptors/aws.cjs +12 -12
  163. package/dist/adaptors/aws.d.cts +13 -12
  164. package/dist/adaptors/aws.d.mts +16 -15
  165. package/dist/adaptors/aws.mjs +12 -12
  166. package/dist/adaptors/hono.cjs +10 -9
  167. package/dist/adaptors/hono.d.cts +6 -6
  168. package/dist/adaptors/hono.d.mts +9 -9
  169. package/dist/adaptors/hono.mjs +10 -9
  170. package/dist/adaptors/testing.cjs +8 -7
  171. package/dist/adaptors/testing.d.cts +6 -6
  172. package/dist/adaptors/testing.d.mts +9 -9
  173. package/dist/adaptors/testing.mjs +8 -7
  174. package/dist/crons/Cron.cjs +6 -6
  175. package/dist/crons/Cron.d.cts +4 -4
  176. package/dist/crons/Cron.d.mts +6 -6
  177. package/dist/crons/Cron.mjs +6 -6
  178. package/dist/crons/CronBuilder.cjs +7 -7
  179. package/dist/crons/CronBuilder.d.cts +5 -5
  180. package/dist/crons/CronBuilder.d.mts +7 -7
  181. package/dist/crons/CronBuilder.mjs +7 -7
  182. package/dist/crons/index.cjs +7 -7
  183. package/dist/crons/index.cjs.map +1 -1
  184. package/dist/crons/index.d.cts +5 -5
  185. package/dist/crons/index.d.mts +7 -7
  186. package/dist/crons/index.mjs +7 -7
  187. package/dist/crons/index.mjs.map +1 -1
  188. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  189. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -7
  190. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +11 -10
  191. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  192. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  193. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -7
  194. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +11 -10
  195. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  196. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  197. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -8
  198. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +12 -11
  199. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  200. package/dist/endpoints/Authorizer.cjs +1 -1
  201. package/dist/endpoints/Authorizer.d.cts +1 -1
  202. package/dist/endpoints/Authorizer.d.mts +1 -1
  203. package/dist/endpoints/Authorizer.mjs +1 -1
  204. package/dist/endpoints/Endpoint.cjs +6 -6
  205. package/dist/endpoints/Endpoint.d.cts +5 -5
  206. package/dist/endpoints/Endpoint.d.mts +8 -8
  207. package/dist/endpoints/Endpoint.mjs +6 -6
  208. package/dist/endpoints/EndpointBuilder.cjs +9 -9
  209. package/dist/endpoints/EndpointBuilder.d.cts +6 -6
  210. package/dist/endpoints/EndpointBuilder.d.mts +9 -9
  211. package/dist/endpoints/EndpointBuilder.mjs +9 -9
  212. package/dist/endpoints/EndpointFactory.cjs +10 -10
  213. package/dist/endpoints/EndpointFactory.d.cts +7 -7
  214. package/dist/endpoints/EndpointFactory.d.mts +10 -10
  215. package/dist/endpoints/EndpointFactory.mjs +10 -10
  216. package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
  217. package/dist/endpoints/HonoEndpointAdaptor.d.cts +6 -6
  218. package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
  219. package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
  220. package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
  221. package/dist/endpoints/TestEndpointAdaptor.d.cts +6 -6
  222. package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
  223. package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
  224. package/dist/endpoints/audit.d.cts +5 -5
  225. package/dist/endpoints/audit.d.mts +8 -8
  226. package/dist/endpoints/helpers.cjs +7 -7
  227. package/dist/endpoints/helpers.d.cts +5 -5
  228. package/dist/endpoints/helpers.d.cts.map +1 -1
  229. package/dist/endpoints/helpers.d.mts +8 -8
  230. package/dist/endpoints/helpers.d.mts.map +1 -1
  231. package/dist/endpoints/helpers.mjs +7 -7
  232. package/dist/endpoints/index.cjs +20 -10
  233. package/dist/endpoints/index.cjs.map +1 -1
  234. package/dist/endpoints/index.d.cts +10 -8
  235. package/dist/endpoints/index.d.cts.map +1 -1
  236. package/dist/endpoints/index.d.mts +13 -11
  237. package/dist/endpoints/index.d.mts.map +1 -1
  238. package/dist/endpoints/index.mjs +13 -11
  239. package/dist/endpoints/index.mjs.map +1 -1
  240. package/dist/endpoints/lazyAccessors.cjs +10 -0
  241. package/dist/endpoints/lazyAccessors.d.cts +10 -0
  242. package/dist/endpoints/lazyAccessors.d.mts +10 -0
  243. package/dist/endpoints/lazyAccessors.mjs +3 -0
  244. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  245. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  246. package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
  247. package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
  248. package/dist/endpoints/processAudits.d.cts +5 -5
  249. package/dist/endpoints/processAudits.d.cts.map +1 -1
  250. package/dist/endpoints/processAudits.d.mts +8 -8
  251. package/dist/endpoints/processAudits.d.mts.map +1 -1
  252. package/dist/endpoints/rls.cjs +1 -1
  253. package/dist/endpoints/rls.d.cts +5 -5
  254. package/dist/endpoints/rls.d.mts +8 -8
  255. package/dist/endpoints/rls.mjs +1 -1
  256. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  257. package/dist/functions/AWSLambdaFunction.d.cts +3 -3
  258. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  259. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  260. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  261. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  262. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  263. package/dist/functions/Function.cjs +2 -2
  264. package/dist/functions/Function.d.cts +1 -1
  265. package/dist/functions/Function.d.mts +2 -2
  266. package/dist/functions/Function.mjs +2 -2
  267. package/dist/functions/FunctionBuilder.cjs +4 -4
  268. package/dist/functions/FunctionBuilder.d.cts +2 -2
  269. package/dist/functions/FunctionBuilder.d.mts +4 -4
  270. package/dist/functions/FunctionBuilder.mjs +4 -4
  271. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  272. package/dist/functions/FunctionExecutionWrapper.d.cts +2 -2
  273. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  274. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  275. package/dist/functions/TestFunctionAdaptor.cjs +7 -7
  276. package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
  277. package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
  278. package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
  279. package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
  280. package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
  281. package/dist/functions/TestFunctionAdaptor.mjs +7 -7
  282. package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
  283. package/dist/functions/index.cjs +5 -5
  284. package/dist/functions/index.d.cts +3 -3
  285. package/dist/functions/index.d.mts +5 -5
  286. package/dist/functions/index.mjs +5 -5
  287. package/dist/{functions-fTid0RMK.cjs → functions-BkKXVeHm.cjs} +2 -2
  288. package/dist/functions-BkKXVeHm.cjs.map +1 -0
  289. package/dist/functions-C3A1vMRW.mjs +8 -0
  290. package/dist/functions-C3A1vMRW.mjs.map +1 -0
  291. package/dist/{helpers-BcP1tXAi.cjs → helpers-BelEzV4U.cjs} +2 -2
  292. package/dist/helpers-BelEzV4U.cjs.map +1 -0
  293. package/dist/{helpers-ByRTDO_m.mjs → helpers-DgsMFMUV.mjs} +2 -2
  294. package/dist/helpers-DgsMFMUV.mjs.map +1 -0
  295. package/dist/{index-SI4V0XwK.d.cts → index-CgAQHr3f.d.mts} +2 -2
  296. package/dist/index-CgAQHr3f.d.mts.map +1 -0
  297. package/dist/{index-BWzGIj06.d.mts → index-D0fp_IK1.d.cts} +2 -2
  298. package/dist/index-D0fp_IK1.d.cts.map +1 -0
  299. package/dist/index.cjs +1 -1
  300. package/dist/index.d.cts +2 -1
  301. package/dist/index.d.mts +4 -3
  302. package/dist/index.mjs +1 -1
  303. package/dist/lazyAccessors-B-Jgkg2o.mjs +175 -0
  304. package/dist/lazyAccessors-B-Jgkg2o.mjs.map +1 -0
  305. package/dist/lazyAccessors-B2ILzU-j.d.mts +49 -0
  306. package/dist/lazyAccessors-B2ILzU-j.d.mts.map +1 -0
  307. package/dist/lazyAccessors-B8Hhras9.cjs +223 -0
  308. package/dist/lazyAccessors-B8Hhras9.cjs.map +1 -0
  309. package/dist/lazyAccessors-Bcpi06ed.d.cts +49 -0
  310. package/dist/lazyAccessors-Bcpi06ed.d.cts.map +1 -0
  311. package/dist/{parseHonoQuery-CZC5_97v.cjs → parseHonoQuery-D4MhxTRc.cjs} +1 -1
  312. package/dist/parseHonoQuery-D4MhxTRc.cjs.map +1 -0
  313. package/dist/{parseHonoQuery-DDgIkTO4.mjs → parseHonoQuery-DpK3sGPc.mjs} +1 -1
  314. package/dist/parseHonoQuery-DpK3sGPc.mjs.map +1 -0
  315. package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -1
  316. package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -1
  317. package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
  318. package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
  319. package/dist/publisher-Bw4770Hi.mjs.map +1 -1
  320. package/dist/publisher-C4BhHB5I.d.cts +16 -0
  321. package/dist/publisher-C4BhHB5I.d.cts.map +1 -0
  322. package/dist/publisher-NE-GnXL8.d.mts +16 -0
  323. package/dist/publisher-NE-GnXL8.d.mts.map +1 -0
  324. package/dist/publisher-lFQleddL.cjs.map +1 -1
  325. package/dist/publisher.d.cts +3 -16
  326. package/dist/publisher.d.mts +3 -16
  327. package/dist/{rls-CmJ7bRsz.cjs → rls-BrywnrQb.cjs} +1 -1
  328. package/dist/{rls-CmJ7bRsz.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
  329. package/dist/{rls-Bf3FRwto.mjs → rls-C0cWOnk4.mjs} +1 -1
  330. package/dist/{rls-Bf3FRwto.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
  331. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  332. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +2 -2
  333. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  334. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  335. package/dist/subscribers/Subscriber.cjs +2 -2
  336. package/dist/subscribers/Subscriber.d.cts +1 -1
  337. package/dist/subscribers/Subscriber.d.mts +2 -2
  338. package/dist/subscribers/Subscriber.mjs +2 -2
  339. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  340. package/dist/subscribers/SubscriberBuilder.d.cts +2 -2
  341. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  342. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  343. package/dist/subscribers/index.cjs +3 -3
  344. package/dist/subscribers/index.cjs.map +1 -1
  345. package/dist/subscribers/index.d.cts +2 -2
  346. package/dist/subscribers/index.d.cts.map +1 -1
  347. package/dist/subscribers/index.d.mts +3 -3
  348. package/dist/subscribers/index.d.mts.map +1 -1
  349. package/dist/subscribers/index.mjs +3 -3
  350. package/dist/subscribers/index.mjs.map +1 -1
  351. package/dist/telemetry-BTaiRqPo.d.cts +95 -0
  352. package/dist/telemetry-BTaiRqPo.d.cts.map +1 -0
  353. package/dist/telemetry-yAHf5yDs.d.mts +95 -0
  354. package/dist/telemetry-yAHf5yDs.d.mts.map +1 -0
  355. package/dist/telemetry.cjs +0 -0
  356. package/dist/telemetry.d.cts +2 -0
  357. package/dist/telemetry.d.mts +2 -0
  358. package/dist/telemetry.mjs +0 -0
  359. package/dist/types-B5H3piDg.d.cts.map +1 -1
  360. package/dist/{types-DdIlpxAd.d.mts → types-Dw-iLd3Y.d.mts} +1 -1
  361. package/dist/types-Dw-iLd3Y.d.mts.map +1 -0
  362. package/dist/types.d.mts +1 -1
  363. package/package.json +18 -18
  364. package/src/Construct.ts +117 -86
  365. package/src/__benchmarks__/build-time-optimization.bench.ts +274 -0
  366. package/src/__benchmarks__/endpoint.bench.ts +375 -375
  367. package/src/__benchmarks__/fixtures.ts +241 -0
  368. package/src/__benchmarks__/hono-adaptor.bench.ts +533 -0
  369. package/src/__benchmarks__/hono-server.bench.ts +206 -206
  370. package/src/__benchmarks__/response-builder.bench.ts +428 -0
  371. package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +319 -0
  372. package/src/__benchmarks__/strategies/strategy-c-middleware.ts +530 -0
  373. package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +567 -0
  374. package/src/__tests__/Construct.environment.spec.ts +349 -350
  375. package/src/__tests__/publisher.setting.spec.ts +496 -499
  376. package/src/__tests__/publisher.spec.ts +440 -442
  377. package/src/crons/Cron.ts +117 -117
  378. package/src/crons/CronBuilder.ts +237 -238
  379. package/src/crons/__tests__/Cron.spec.ts +448 -448
  380. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +214 -214
  381. package/src/crons/index.ts +4 -4
  382. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +571 -463
  383. package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +86 -86
  384. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +85 -81
  385. package/src/endpoints/Authorizer.ts +100 -100
  386. package/src/endpoints/Endpoint.ts +921 -937
  387. package/src/endpoints/EndpointBuilder.ts +703 -703
  388. package/src/endpoints/EndpointFactory.ts +1054 -1056
  389. package/src/endpoints/HonoEndpointAdaptor.ts +621 -548
  390. package/src/endpoints/TestEndpointAdaptor.ts +373 -354
  391. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +499 -0
  392. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +541 -542
  393. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +1172 -1174
  394. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +599 -599
  395. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +710 -710
  396. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +280 -280
  397. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +924 -730
  398. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +307 -0
  399. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +408 -408
  400. package/src/endpoints/__tests__/Authorizer.spec.ts +286 -0
  401. package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +162 -162
  402. package/src/endpoints/__tests__/Endpoint.headers.spec.ts +182 -182
  403. package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +158 -159
  404. package/src/endpoints/__tests__/Endpoint.spec.ts +819 -822
  405. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +427 -427
  406. package/src/endpoints/__tests__/EndpointBuilder.spec.ts +478 -478
  407. package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +426 -426
  408. package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +501 -501
  409. package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +177 -177
  410. package/src/endpoints/__tests__/EndpointFactory.spec.ts +471 -471
  411. package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +143 -143
  412. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +663 -663
  413. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +608 -608
  414. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +561 -561
  415. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1036 -1036
  416. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +278 -278
  417. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1093 -1093
  418. package/src/endpoints/__tests__/ResponseBuilder.spec.ts +230 -230
  419. package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +569 -569
  420. package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +841 -841
  421. package/src/endpoints/__tests__/endpoint-types.test.ts +68 -68
  422. package/src/endpoints/__tests__/helpers.spec.ts +37 -0
  423. package/src/endpoints/__tests__/lazyAccessors.spec.ts +330 -0
  424. package/src/endpoints/__tests__/processAudits.spec.ts +631 -0
  425. package/src/endpoints/audit.ts +51 -51
  426. package/src/endpoints/helpers.ts +34 -35
  427. package/src/endpoints/index.ts +33 -23
  428. package/src/endpoints/lazyAccessors.ts +241 -0
  429. package/src/endpoints/parseHonoQuery.ts +41 -41
  430. package/src/endpoints/parseQueryParams.ts +36 -36
  431. package/src/endpoints/processAudits.ts +269 -269
  432. package/src/endpoints/rls.ts +16 -16
  433. package/src/functions/AWSLambdaFunction.ts +294 -295
  434. package/src/functions/BaseFunctionBuilder.ts +185 -185
  435. package/src/functions/Function.ts +190 -190
  436. package/src/functions/FunctionBuilder.ts +353 -353
  437. package/src/functions/FunctionExecutionWrapper.ts +199 -200
  438. package/src/functions/TestFunctionAdaptor.ts +191 -191
  439. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +424 -424
  440. package/src/functions/__tests__/Function.audits.spec.ts +364 -364
  441. package/src/functions/__tests__/Function.spec.ts +453 -454
  442. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +179 -179
  443. package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +369 -369
  444. package/src/functions/index.ts +6 -4
  445. package/src/index.ts +13 -9
  446. package/src/publisher.ts +71 -72
  447. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +244 -248
  448. package/src/subscribers/Subscriber.ts +82 -84
  449. package/src/subscribers/SubscriberBuilder.ts +129 -129
  450. package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +589 -589
  451. package/src/subscribers/__tests__/Subscriber.spec.ts +402 -404
  452. package/src/subscribers/index.ts +1 -0
  453. package/src/telemetry.ts +103 -0
  454. package/src/types.ts +7 -7
  455. package/test.ts +58 -59
  456. package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +0 -1
  457. package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +0 -1
  458. package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +0 -1
  459. package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +0 -1
  460. package/dist/AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map +0 -1
  461. package/dist/AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map +0 -1
  462. package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +0 -1
  463. package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +0 -1
  464. package/dist/AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map +0 -1
  465. package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +0 -1
  466. package/dist/AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map +0 -1
  467. package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +0 -1
  468. package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +0 -1
  469. package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +0 -1
  470. package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +0 -1
  471. package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +0 -1
  472. package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +0 -1
  473. package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +0 -1
  474. package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +0 -1
  475. package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +0 -1
  476. package/dist/Authorizer-B-btowNd.d.cts.map +0 -1
  477. package/dist/Authorizer-C0ge_tc8.cjs.map +0 -1
  478. package/dist/Authorizer-gWxYsGEp.d.mts.map +0 -1
  479. package/dist/Authorizer-r9U3y_ms.mjs.map +0 -1
  480. package/dist/BaseFunctionBuilder-Czi1Jwza.mjs.map +0 -1
  481. package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +0 -1
  482. package/dist/BaseFunctionBuilder-MYG3C9ug.cjs.map +0 -1
  483. package/dist/Construct-Ba5cMxib.cjs.map +0 -1
  484. package/dist/Construct-DdyGHuag.mjs.map +0 -1
  485. package/dist/Construct-XrijZFFh.d.mts.map +0 -1
  486. package/dist/Cron-BxhGs5up.mjs.map +0 -1
  487. package/dist/Cron-CGF4YAfM.cjs.map +0 -1
  488. package/dist/Cron-bDLcTvV5.d.cts.map +0 -1
  489. package/dist/Cron-cdjlSKNp.d.mts.map +0 -1
  490. package/dist/CronBuilder-BC4m5-p1.d.mts.map +0 -1
  491. package/dist/CronBuilder-CcxKRtVP.cjs.map +0 -1
  492. package/dist/CronBuilder-DKVXyE0Q.d.cts.map +0 -1
  493. package/dist/CronBuilder-d2jh-IB2.mjs.map +0 -1
  494. package/dist/Endpoint-BPv9_-m_.d.cts.map +0 -1
  495. package/dist/Endpoint-BVGZXFyV.cjs.map +0 -1
  496. package/dist/Endpoint-BdwG75G_.d.mts.map +0 -1
  497. package/dist/Endpoint-CuOEswxJ.mjs.map +0 -1
  498. package/dist/EndpointBuilder-B3az942t.d.mts.map +0 -1
  499. package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +0 -1
  500. package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +0 -1
  501. package/dist/EndpointBuilder-DnCB1h1j.mjs.map +0 -1
  502. package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +0 -1
  503. package/dist/EndpointFactory-CYj6BYok.cjs.map +0 -1
  504. package/dist/EndpointFactory-CbdxPCIH.mjs.map +0 -1
  505. package/dist/EndpointFactory-CyPbm3AD.d.cts.map +0 -1
  506. package/dist/Function-BVHqIDp9.mjs.map +0 -1
  507. package/dist/Function-Cf7f_kCz.d.cts.map +0 -1
  508. package/dist/Function-DDZb1525.cjs.map +0 -1
  509. package/dist/Function-DN2G6OT5.d.mts.map +0 -1
  510. package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +0 -1
  511. package/dist/FunctionBuilder-CrDYgfiI.mjs.map +0 -1
  512. package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +0 -1
  513. package/dist/FunctionBuilder-DswJ-9sD.cjs.map +0 -1
  514. package/dist/FunctionExecutionWrapper-BYI2bGTL.cjs.map +0 -1
  515. package/dist/FunctionExecutionWrapper-CLDh7Z2_.mjs.map +0 -1
  516. package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +0 -1
  517. package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +0 -1
  518. package/dist/HonoEndpointAdaptor-Bqm6SEuP.d.cts.map +0 -1
  519. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
  520. package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
  521. package/dist/HonoEndpointAdaptor-CRe-ij5f.d.mts.map +0 -1
  522. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
  523. package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.map +0 -1
  524. package/dist/Subscriber-BiHjVXtM.cjs.map +0 -1
  525. package/dist/Subscriber-BmPf9GFb.mjs.map +0 -1
  526. package/dist/Subscriber-COYMSevD.d.cts.map +0 -1
  527. package/dist/Subscriber-ikctpU3I.d.mts.map +0 -1
  528. package/dist/SubscriberBuilder-Cp1C-xtT.cjs.map +0 -1
  529. package/dist/SubscriberBuilder-DJPEeYDJ.mjs.map +0 -1
  530. package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +0 -1
  531. package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +0 -1
  532. package/dist/TestEndpointAdaptor-BXTofAKc.mjs +0 -163
  533. package/dist/TestEndpointAdaptor-BXTofAKc.mjs.map +0 -1
  534. package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
  535. package/dist/TestEndpointAdaptor-D9IwhIYg.cjs +0 -169
  536. package/dist/TestEndpointAdaptor-D9IwhIYg.cjs.map +0 -1
  537. package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +0 -1
  538. package/dist/functions-C6EK1xL6.mjs +0 -8
  539. package/dist/functions-C6EK1xL6.mjs.map +0 -1
  540. package/dist/functions-fTid0RMK.cjs.map +0 -1
  541. package/dist/helpers-BcP1tXAi.cjs.map +0 -1
  542. package/dist/helpers-ByRTDO_m.mjs.map +0 -1
  543. package/dist/index-BWzGIj06.d.mts.map +0 -1
  544. package/dist/index-SI4V0XwK.d.cts.map +0 -1
  545. package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
  546. package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
  547. package/dist/publisher.d.cts.map +0 -1
  548. package/dist/publisher.d.mts.map +0 -1
  549. package/dist/types-DdIlpxAd.d.mts.map +0 -1
@@ -5,505 +5,505 @@ import { z } from 'zod';
5
5
  import { EndpointFactory } from '../EndpointFactory';
6
6
 
7
7
  describe('EndpointFactory', () => {
8
- const mockLogger: Logger = {
9
- debug: vi.fn(),
10
- info: vi.fn(),
11
- warn: vi.fn(),
12
- error: vi.fn(),
13
- fatal: vi.fn(),
14
- trace: vi.fn(),
15
- child: vi.fn(() => mockLogger),
16
- };
17
-
18
- describe('database', () => {
19
- const DatabaseService = {
20
- serviceName: 'database' as const,
21
- async register() {
22
- return {
23
- query: vi.fn().mockResolvedValue([]),
24
- insertInto: vi.fn(),
25
- selectFrom: vi.fn(),
26
- };
27
- },
28
- };
29
-
30
- it('should create a factory with database service', () => {
31
- const factory = new EndpointFactory();
32
- const factoryWithDb = factory.database(DatabaseService);
33
-
34
- expect(factoryWithDb).toBeInstanceOf(EndpointFactory);
35
- expect(factoryWithDb).not.toBe(factory);
36
- });
37
-
38
- it('should pass database service to created endpoints', () => {
39
- const factory = new EndpointFactory()
40
- .logger(mockLogger)
41
- .database(DatabaseService);
42
-
43
- const endpoint = factory
44
- .get('/test')
45
- .handle(async () => ({ success: true }));
46
-
47
- expect(endpoint.databaseService).toBe(DatabaseService);
48
- });
49
-
50
- it('should preserve database service through factory chains', () => {
51
- const factory = new EndpointFactory()
52
- .database(DatabaseService)
53
- .logger(mockLogger)
54
- .route('/api');
55
-
56
- const endpoint = factory
57
- .get('/users')
58
- .handle(async () => ({ users: [] }));
59
-
60
- expect(endpoint.databaseService).toBe(DatabaseService);
61
- expect(endpoint.route).toBe('/api/users');
62
- });
63
-
64
- it('should preserve database service with services()', () => {
65
- const OtherService = {
66
- serviceName: 'other' as const,
67
- async register() {
68
- return {};
69
- },
70
- };
71
-
72
- const factory = new EndpointFactory()
73
- .database(DatabaseService)
74
- .services([OtherService]);
75
-
76
- const endpoint = factory
77
- .get('/test')
78
- .handle(async () => ({ success: true }));
79
-
80
- expect(endpoint.databaseService).toBe(DatabaseService);
81
- expect(endpoint.services).toContainEqual(OtherService);
82
- });
83
-
84
- it('should allow endpoints to override database service', () => {
85
- const AlternativeDatabase = {
86
- serviceName: 'altDatabase' as const,
87
- async register() {
88
- return { query: vi.fn() };
89
- },
90
- };
91
-
92
- const factory = new EndpointFactory()
93
- .logger(mockLogger)
94
- .database(DatabaseService);
95
-
96
- const endpoint = factory
97
- .get('/test')
98
- .database(AlternativeDatabase)
99
- .handle(async () => ({ success: true }));
100
-
101
- expect(endpoint.databaseService).toBe(AlternativeDatabase);
102
- });
103
-
104
- it('should work with authorization and session', () => {
105
- const authFn = async () => true;
106
- const sessionFn = async () => ({ userId: '123' });
107
-
108
- const factory = new EndpointFactory()
109
- .database(DatabaseService)
110
- .authorize(authFn)
111
- .session(sessionFn);
112
-
113
- const endpoint = factory
114
- .get('/test')
115
- .handle(async () => ({ success: true }));
116
-
117
- expect(endpoint.databaseService).toBe(DatabaseService);
118
- expect(endpoint.authorize).toBe(authFn);
119
- expect(endpoint.getSession).toBe(sessionFn);
120
- });
121
- });
122
-
123
- describe('auditor', () => {
124
- const mockAuditStorage: AuditStorage = {
125
- write: vi.fn().mockResolvedValue(undefined),
126
- query: vi.fn().mockResolvedValue([]),
127
- count: vi.fn().mockResolvedValue(0),
128
- };
129
-
130
- const AuditStorageService = {
131
- serviceName: 'auditStorage' as const,
132
- async register() {
133
- return mockAuditStorage;
134
- },
135
- };
136
-
137
- it('should create a factory with auditor storage', () => {
138
- const factory = new EndpointFactory();
139
- const factoryWithAuditor = factory.auditor(AuditStorageService);
140
-
141
- expect(factoryWithAuditor).toBeInstanceOf(EndpointFactory);
142
- expect(factoryWithAuditor).not.toBe(factory);
143
- });
144
-
145
- it('should pass auditor storage to created endpoints', () => {
146
- const factory = new EndpointFactory()
147
- .logger(mockLogger)
148
- .auditor(AuditStorageService);
149
-
150
- const endpoint = factory
151
- .get('/test')
152
- .handle(async () => ({ success: true }));
153
-
154
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
155
- });
156
-
157
- it('should preserve auditor storage through factory chains', () => {
158
- const factory = new EndpointFactory()
159
- .auditor(AuditStorageService)
160
- .logger(mockLogger)
161
- .route('/api');
162
-
163
- const endpoint = factory
164
- .get('/users')
165
- .handle(async () => ({ users: [] }));
166
-
167
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
168
- expect(endpoint.route).toBe('/api/users');
169
- });
170
-
171
- it('should preserve auditor storage with services()', () => {
172
- const OtherService = {
173
- serviceName: 'other' as const,
174
- async register() {
175
- return {};
176
- },
177
- };
178
-
179
- const factory = new EndpointFactory()
180
- .auditor(AuditStorageService)
181
- .services([OtherService]);
182
-
183
- const endpoint = factory
184
- .get('/test')
185
- .handle(async () => ({ success: true }));
186
-
187
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
188
- expect(endpoint.services).toContainEqual(OtherService);
189
- });
190
-
191
- it('should allow endpoints to override auditor storage', () => {
192
- const AlternativeAuditStorage = {
193
- serviceName: 'altAuditStorage' as const,
194
- async register(): Promise<AuditStorage> {
195
- return {
196
- write: vi.fn(),
197
- query: vi.fn().mockResolvedValue([]),
198
- count: vi.fn().mockResolvedValue(0),
199
- };
200
- },
201
- };
202
-
203
- const factory = new EndpointFactory()
204
- .logger(mockLogger)
205
- .auditor(AuditStorageService);
206
-
207
- const endpoint = factory
208
- .get('/test')
209
- .auditor(AlternativeAuditStorage)
210
- .handle(async () => ({ success: true }));
211
-
212
- expect(endpoint.auditorStorageService).toBe(AlternativeAuditStorage);
213
- });
214
-
215
- it('should work with authorization and session', () => {
216
- const authFn = async () => true;
217
- const sessionFn = async () => ({ userId: '123' });
218
-
219
- const factory = new EndpointFactory()
220
- .auditor(AuditStorageService)
221
- .authorize(authFn)
222
- .session(sessionFn);
223
-
224
- const endpoint = factory
225
- .get('/test')
226
- .handle(async () => ({ success: true }));
227
-
228
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
229
- expect(endpoint.authorize).toBe(authFn);
230
- expect(endpoint.getSession).toBe(sessionFn);
231
- });
232
- });
233
-
234
- describe('database and auditor together', () => {
235
- const DatabaseService = {
236
- serviceName: 'database' as const,
237
- async register() {
238
- return { query: vi.fn() };
239
- },
240
- };
241
-
242
- const mockAuditStorage: AuditStorage = {
243
- write: vi.fn().mockResolvedValue(undefined),
244
- query: vi.fn().mockResolvedValue([]),
245
- count: vi.fn().mockResolvedValue(0),
246
- };
247
-
248
- const AuditStorageService = {
249
- serviceName: 'auditStorage' as const,
250
- async register() {
251
- return mockAuditStorage;
252
- },
253
- };
254
-
255
- it('should allow both database and auditor to be configured', () => {
256
- const factory = new EndpointFactory()
257
- .logger(mockLogger)
258
- .database(DatabaseService)
259
- .auditor(AuditStorageService);
260
-
261
- const endpoint = factory
262
- .get('/test')
263
- .handle(async () => ({ success: true }));
264
-
265
- expect(endpoint.databaseService).toBe(DatabaseService);
266
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
267
- });
268
-
269
- it('should preserve both through route chains', () => {
270
- const factory = new EndpointFactory()
271
- .database(DatabaseService)
272
- .auditor(AuditStorageService)
273
- .route('/api')
274
- .route('/v1');
275
-
276
- const endpoint = factory
277
- .post('/users')
278
- .body(z.object({ name: z.string() }))
279
- .handle(async () => ({ id: '123' }));
280
-
281
- expect(endpoint.databaseService).toBe(DatabaseService);
282
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
283
- expect(endpoint.route).toBe('/api/v1/users');
284
- });
285
-
286
- it('should work with all factory configuration options', () => {
287
- const authFn = async () => true;
288
- const sessionFn = async () => ({ userId: '123' });
289
-
290
- const OtherService = {
291
- serviceName: 'other' as const,
292
- async register() {
293
- return {};
294
- },
295
- };
296
-
297
- const factory = new EndpointFactory()
298
- .logger(mockLogger)
299
- .services([OtherService])
300
- .database(DatabaseService)
301
- .auditor(AuditStorageService)
302
- .authorize(authFn)
303
- .session(sessionFn)
304
- .route('/api');
305
-
306
- const endpoint = factory
307
- .post('/users')
308
- .body(z.object({ name: z.string() }))
309
- .output(z.object({ id: z.string() }))
310
- .handle(async () => ({ id: '123' }));
311
-
312
- expect(endpoint.databaseService).toBe(DatabaseService);
313
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
314
- expect(endpoint.authorize).toBe(authFn);
315
- expect(endpoint.getSession).toBe(sessionFn);
316
- expect(endpoint.services).toContainEqual(OtherService);
317
- expect(endpoint.route).toBe('/api/users');
318
- });
319
-
320
- it('should allow per-endpoint overrides of both', () => {
321
- const AltDatabase = {
322
- serviceName: 'altDb' as const,
323
- async register() {
324
- return { query: vi.fn() };
325
- },
326
- };
327
-
328
- const AltAuditStorage = {
329
- serviceName: 'altAudit' as const,
330
- async register(): Promise<AuditStorage> {
331
- return {
332
- write: vi.fn(),
333
- query: vi.fn().mockResolvedValue([]),
334
- count: vi.fn().mockResolvedValue(0),
335
- };
336
- },
337
- };
338
-
339
- const factory = new EndpointFactory()
340
- .database(DatabaseService)
341
- .auditor(AuditStorageService);
342
-
343
- const endpoint = factory
344
- .get('/test')
345
- .database(AltDatabase)
346
- .auditor(AltAuditStorage)
347
- .handle(async () => ({ success: true }));
348
-
349
- expect(endpoint.databaseService).toBe(AltDatabase);
350
- expect(endpoint.auditorStorageService).toBe(AltAuditStorage);
351
- });
352
- });
353
-
354
- describe('actor', () => {
355
- it('should create a factory with actor extractor', () => {
356
- const actorExtractor = () => ({ id: '123', type: 'user' as const });
357
- const factory = new EndpointFactory();
358
- const factoryWithActor = factory.actor(actorExtractor);
359
-
360
- expect(factoryWithActor).toBeInstanceOf(EndpointFactory);
361
- expect(factoryWithActor).not.toBe(factory);
362
- });
363
-
364
- it('should pass actor extractor to created endpoints', () => {
365
- const actorExtractor = () => ({ id: '123', type: 'user' as const });
366
- const factory = new EndpointFactory()
367
- .logger(mockLogger)
368
- .actor(actorExtractor);
369
-
370
- const endpoint = factory
371
- .get('/test')
372
- .handle(async () => ({ success: true }));
373
-
374
- expect(endpoint.actorExtractor).toBe(actorExtractor);
375
- });
376
-
377
- it('should preserve actor extractor through factory chains', () => {
378
- const actorExtractor = () => ({ id: '123', type: 'user' as const });
379
- const factory = new EndpointFactory()
380
- .actor(actorExtractor)
381
- .logger(mockLogger)
382
- .route('/api');
383
-
384
- const endpoint = factory
385
- .get('/users')
386
- .handle(async () => ({ users: [] }));
387
-
388
- expect(endpoint.actorExtractor).toBe(actorExtractor);
389
- expect(endpoint.route).toBe('/api/users');
390
- });
391
-
392
- it('should allow endpoints to override actor extractor', () => {
393
- const factoryActor = () => ({ id: 'factory', type: 'system' as const });
394
- const endpointActor = () => ({ id: 'endpoint', type: 'user' as const });
395
-
396
- const factory = new EndpointFactory()
397
- .logger(mockLogger)
398
- .actor(factoryActor);
399
-
400
- const endpoint = factory
401
- .get('/test')
402
- .actor(endpointActor)
403
- .handle(async () => ({ success: true }));
404
-
405
- expect(endpoint.actorExtractor).toBe(endpointActor);
406
- });
407
-
408
- it('should work with auditor and database', () => {
409
- const actorExtractor = ({ session }: any) => ({
410
- id: session.userId,
411
- type: 'user' as const,
412
- });
413
-
414
- const mockAuditStorage: AuditStorage = {
415
- write: vi.fn().mockResolvedValue(undefined),
416
- query: vi.fn().mockResolvedValue([]),
417
- count: vi.fn().mockResolvedValue(0),
418
- };
419
-
420
- const AuditStorageService = {
421
- serviceName: 'auditStorage' as const,
422
- async register() {
423
- return mockAuditStorage;
424
- },
425
- };
426
-
427
- const DatabaseService = {
428
- serviceName: 'database' as const,
429
- async register() {
430
- return { query: vi.fn() };
431
- },
432
- };
433
-
434
- const factory = new EndpointFactory()
435
- .logger(mockLogger)
436
- .database(DatabaseService)
437
- .auditor(AuditStorageService)
438
- .actor(actorExtractor);
439
-
440
- const endpoint = factory
441
- .get('/test')
442
- .handle(async () => ({ success: true }));
443
-
444
- expect(endpoint.actorExtractor).toBe(actorExtractor);
445
- expect(endpoint.databaseService).toBe(DatabaseService);
446
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
447
- });
448
- });
449
-
450
- describe('constructor options with database and auditor', () => {
451
- const DatabaseService = {
452
- serviceName: 'database' as const,
453
- async register() {
454
- return { query: vi.fn() };
455
- },
456
- };
457
-
458
- const mockAuditStorage: AuditStorage = {
459
- write: vi.fn().mockResolvedValue(undefined),
460
- query: vi.fn().mockResolvedValue([]),
461
- count: vi.fn().mockResolvedValue(0),
462
- };
463
-
464
- const AuditStorageService = {
465
- serviceName: 'auditStorage' as const,
466
- async register() {
467
- return mockAuditStorage;
468
- },
469
- };
470
-
471
- it('should accept database and auditor in constructor options', () => {
472
- const factory = new EndpointFactory({
473
- defaultDatabaseService: DatabaseService,
474
- defaultAuditorStorage: AuditStorageService,
475
- });
476
-
477
- const endpoint = factory
478
- .get('/test')
479
- .handle(async () => ({ success: true }));
480
-
481
- expect(endpoint.databaseService).toBe(DatabaseService);
482
- expect(endpoint.auditorStorageService).toBe(AuditStorageService);
483
- });
484
-
485
- it('should merge constructor options with method calls', () => {
486
- const AltAuditStorage = {
487
- serviceName: 'altAudit' as const,
488
- async register(): Promise<AuditStorage> {
489
- return {
490
- write: vi.fn(),
491
- query: vi.fn().mockResolvedValue([]),
492
- count: vi.fn().mockResolvedValue(0),
493
- };
494
- },
495
- };
496
-
497
- const factory = new EndpointFactory({
498
- defaultDatabaseService: DatabaseService,
499
- }).auditor(AltAuditStorage);
500
-
501
- const endpoint = factory
502
- .get('/test')
503
- .handle(async () => ({ success: true }));
504
-
505
- expect(endpoint.databaseService).toBe(DatabaseService);
506
- expect(endpoint.auditorStorageService).toBe(AltAuditStorage);
507
- });
508
- });
8
+ const mockLogger: Logger = {
9
+ debug: vi.fn(),
10
+ info: vi.fn(),
11
+ warn: vi.fn(),
12
+ error: vi.fn(),
13
+ fatal: vi.fn(),
14
+ trace: vi.fn(),
15
+ child: vi.fn(() => mockLogger),
16
+ };
17
+
18
+ describe('database', () => {
19
+ const DatabaseService = {
20
+ serviceName: 'database' as const,
21
+ async register() {
22
+ return {
23
+ query: vi.fn().mockResolvedValue([]),
24
+ insertInto: vi.fn(),
25
+ selectFrom: vi.fn(),
26
+ };
27
+ },
28
+ };
29
+
30
+ it('should create a factory with database service', () => {
31
+ const factory = new EndpointFactory();
32
+ const factoryWithDb = factory.database(DatabaseService);
33
+
34
+ expect(factoryWithDb).toBeInstanceOf(EndpointFactory);
35
+ expect(factoryWithDb).not.toBe(factory);
36
+ });
37
+
38
+ it('should pass database service to created endpoints', () => {
39
+ const factory = new EndpointFactory()
40
+ .logger(mockLogger)
41
+ .database(DatabaseService);
42
+
43
+ const endpoint = factory
44
+ .get('/test')
45
+ .handle(async () => ({ success: true }));
46
+
47
+ expect(endpoint.databaseService).toBe(DatabaseService);
48
+ });
49
+
50
+ it('should preserve database service through factory chains', () => {
51
+ const factory = new EndpointFactory()
52
+ .database(DatabaseService)
53
+ .logger(mockLogger)
54
+ .route('/api');
55
+
56
+ const endpoint = factory
57
+ .get('/users')
58
+ .handle(async () => ({ users: [] }));
59
+
60
+ expect(endpoint.databaseService).toBe(DatabaseService);
61
+ expect(endpoint.route).toBe('/api/users');
62
+ });
63
+
64
+ it('should preserve database service with services()', () => {
65
+ const OtherService = {
66
+ serviceName: 'other' as const,
67
+ async register() {
68
+ return {};
69
+ },
70
+ };
71
+
72
+ const factory = new EndpointFactory()
73
+ .database(DatabaseService)
74
+ .services([OtherService]);
75
+
76
+ const endpoint = factory
77
+ .get('/test')
78
+ .handle(async () => ({ success: true }));
79
+
80
+ expect(endpoint.databaseService).toBe(DatabaseService);
81
+ expect(endpoint.services).toContainEqual(OtherService);
82
+ });
83
+
84
+ it('should allow endpoints to override database service', () => {
85
+ const AlternativeDatabase = {
86
+ serviceName: 'altDatabase' as const,
87
+ async register() {
88
+ return { query: vi.fn() };
89
+ },
90
+ };
91
+
92
+ const factory = new EndpointFactory()
93
+ .logger(mockLogger)
94
+ .database(DatabaseService);
95
+
96
+ const endpoint = factory
97
+ .get('/test')
98
+ .database(AlternativeDatabase)
99
+ .handle(async () => ({ success: true }));
100
+
101
+ expect(endpoint.databaseService).toBe(AlternativeDatabase);
102
+ });
103
+
104
+ it('should work with authorization and session', () => {
105
+ const authFn = async () => true;
106
+ const sessionFn = async () => ({ userId: '123' });
107
+
108
+ const factory = new EndpointFactory()
109
+ .database(DatabaseService)
110
+ .authorize(authFn)
111
+ .session(sessionFn);
112
+
113
+ const endpoint = factory
114
+ .get('/test')
115
+ .handle(async () => ({ success: true }));
116
+
117
+ expect(endpoint.databaseService).toBe(DatabaseService);
118
+ expect(endpoint.authorize).toBe(authFn);
119
+ expect(endpoint.getSession).toBe(sessionFn);
120
+ });
121
+ });
122
+
123
+ describe('auditor', () => {
124
+ const mockAuditStorage: AuditStorage = {
125
+ write: vi.fn().mockResolvedValue(undefined),
126
+ query: vi.fn().mockResolvedValue([]),
127
+ count: vi.fn().mockResolvedValue(0),
128
+ };
129
+
130
+ const AuditStorageService = {
131
+ serviceName: 'auditStorage' as const,
132
+ async register() {
133
+ return mockAuditStorage;
134
+ },
135
+ };
136
+
137
+ it('should create a factory with auditor storage', () => {
138
+ const factory = new EndpointFactory();
139
+ const factoryWithAuditor = factory.auditor(AuditStorageService);
140
+
141
+ expect(factoryWithAuditor).toBeInstanceOf(EndpointFactory);
142
+ expect(factoryWithAuditor).not.toBe(factory);
143
+ });
144
+
145
+ it('should pass auditor storage to created endpoints', () => {
146
+ const factory = new EndpointFactory()
147
+ .logger(mockLogger)
148
+ .auditor(AuditStorageService);
149
+
150
+ const endpoint = factory
151
+ .get('/test')
152
+ .handle(async () => ({ success: true }));
153
+
154
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
155
+ });
156
+
157
+ it('should preserve auditor storage through factory chains', () => {
158
+ const factory = new EndpointFactory()
159
+ .auditor(AuditStorageService)
160
+ .logger(mockLogger)
161
+ .route('/api');
162
+
163
+ const endpoint = factory
164
+ .get('/users')
165
+ .handle(async () => ({ users: [] }));
166
+
167
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
168
+ expect(endpoint.route).toBe('/api/users');
169
+ });
170
+
171
+ it('should preserve auditor storage with services()', () => {
172
+ const OtherService = {
173
+ serviceName: 'other' as const,
174
+ async register() {
175
+ return {};
176
+ },
177
+ };
178
+
179
+ const factory = new EndpointFactory()
180
+ .auditor(AuditStorageService)
181
+ .services([OtherService]);
182
+
183
+ const endpoint = factory
184
+ .get('/test')
185
+ .handle(async () => ({ success: true }));
186
+
187
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
188
+ expect(endpoint.services).toContainEqual(OtherService);
189
+ });
190
+
191
+ it('should allow endpoints to override auditor storage', () => {
192
+ const AlternativeAuditStorage = {
193
+ serviceName: 'altAuditStorage' as const,
194
+ async register(): Promise<AuditStorage> {
195
+ return {
196
+ write: vi.fn(),
197
+ query: vi.fn().mockResolvedValue([]),
198
+ count: vi.fn().mockResolvedValue(0),
199
+ };
200
+ },
201
+ };
202
+
203
+ const factory = new EndpointFactory()
204
+ .logger(mockLogger)
205
+ .auditor(AuditStorageService);
206
+
207
+ const endpoint = factory
208
+ .get('/test')
209
+ .auditor(AlternativeAuditStorage)
210
+ .handle(async () => ({ success: true }));
211
+
212
+ expect(endpoint.auditorStorageService).toBe(AlternativeAuditStorage);
213
+ });
214
+
215
+ it('should work with authorization and session', () => {
216
+ const authFn = async () => true;
217
+ const sessionFn = async () => ({ userId: '123' });
218
+
219
+ const factory = new EndpointFactory()
220
+ .auditor(AuditStorageService)
221
+ .authorize(authFn)
222
+ .session(sessionFn);
223
+
224
+ const endpoint = factory
225
+ .get('/test')
226
+ .handle(async () => ({ success: true }));
227
+
228
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
229
+ expect(endpoint.authorize).toBe(authFn);
230
+ expect(endpoint.getSession).toBe(sessionFn);
231
+ });
232
+ });
233
+
234
+ describe('database and auditor together', () => {
235
+ const DatabaseService = {
236
+ serviceName: 'database' as const,
237
+ async register() {
238
+ return { query: vi.fn() };
239
+ },
240
+ };
241
+
242
+ const mockAuditStorage: AuditStorage = {
243
+ write: vi.fn().mockResolvedValue(undefined),
244
+ query: vi.fn().mockResolvedValue([]),
245
+ count: vi.fn().mockResolvedValue(0),
246
+ };
247
+
248
+ const AuditStorageService = {
249
+ serviceName: 'auditStorage' as const,
250
+ async register() {
251
+ return mockAuditStorage;
252
+ },
253
+ };
254
+
255
+ it('should allow both database and auditor to be configured', () => {
256
+ const factory = new EndpointFactory()
257
+ .logger(mockLogger)
258
+ .database(DatabaseService)
259
+ .auditor(AuditStorageService);
260
+
261
+ const endpoint = factory
262
+ .get('/test')
263
+ .handle(async () => ({ success: true }));
264
+
265
+ expect(endpoint.databaseService).toBe(DatabaseService);
266
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
267
+ });
268
+
269
+ it('should preserve both through route chains', () => {
270
+ const factory = new EndpointFactory()
271
+ .database(DatabaseService)
272
+ .auditor(AuditStorageService)
273
+ .route('/api')
274
+ .route('/v1');
275
+
276
+ const endpoint = factory
277
+ .post('/users')
278
+ .body(z.object({ name: z.string() }))
279
+ .handle(async () => ({ id: '123' }));
280
+
281
+ expect(endpoint.databaseService).toBe(DatabaseService);
282
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
283
+ expect(endpoint.route).toBe('/api/v1/users');
284
+ });
285
+
286
+ it('should work with all factory configuration options', () => {
287
+ const authFn = async () => true;
288
+ const sessionFn = async () => ({ userId: '123' });
289
+
290
+ const OtherService = {
291
+ serviceName: 'other' as const,
292
+ async register() {
293
+ return {};
294
+ },
295
+ };
296
+
297
+ const factory = new EndpointFactory()
298
+ .logger(mockLogger)
299
+ .services([OtherService])
300
+ .database(DatabaseService)
301
+ .auditor(AuditStorageService)
302
+ .authorize(authFn)
303
+ .session(sessionFn)
304
+ .route('/api');
305
+
306
+ const endpoint = factory
307
+ .post('/users')
308
+ .body(z.object({ name: z.string() }))
309
+ .output(z.object({ id: z.string() }))
310
+ .handle(async () => ({ id: '123' }));
311
+
312
+ expect(endpoint.databaseService).toBe(DatabaseService);
313
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
314
+ expect(endpoint.authorize).toBe(authFn);
315
+ expect(endpoint.getSession).toBe(sessionFn);
316
+ expect(endpoint.services).toContainEqual(OtherService);
317
+ expect(endpoint.route).toBe('/api/users');
318
+ });
319
+
320
+ it('should allow per-endpoint overrides of both', () => {
321
+ const AltDatabase = {
322
+ serviceName: 'altDb' as const,
323
+ async register() {
324
+ return { query: vi.fn() };
325
+ },
326
+ };
327
+
328
+ const AltAuditStorage = {
329
+ serviceName: 'altAudit' as const,
330
+ async register(): Promise<AuditStorage> {
331
+ return {
332
+ write: vi.fn(),
333
+ query: vi.fn().mockResolvedValue([]),
334
+ count: vi.fn().mockResolvedValue(0),
335
+ };
336
+ },
337
+ };
338
+
339
+ const factory = new EndpointFactory()
340
+ .database(DatabaseService)
341
+ .auditor(AuditStorageService);
342
+
343
+ const endpoint = factory
344
+ .get('/test')
345
+ .database(AltDatabase)
346
+ .auditor(AltAuditStorage)
347
+ .handle(async () => ({ success: true }));
348
+
349
+ expect(endpoint.databaseService).toBe(AltDatabase);
350
+ expect(endpoint.auditorStorageService).toBe(AltAuditStorage);
351
+ });
352
+ });
353
+
354
+ describe('actor', () => {
355
+ it('should create a factory with actor extractor', () => {
356
+ const actorExtractor = () => ({ id: '123', type: 'user' as const });
357
+ const factory = new EndpointFactory();
358
+ const factoryWithActor = factory.actor(actorExtractor);
359
+
360
+ expect(factoryWithActor).toBeInstanceOf(EndpointFactory);
361
+ expect(factoryWithActor).not.toBe(factory);
362
+ });
363
+
364
+ it('should pass actor extractor to created endpoints', () => {
365
+ const actorExtractor = () => ({ id: '123', type: 'user' as const });
366
+ const factory = new EndpointFactory()
367
+ .logger(mockLogger)
368
+ .actor(actorExtractor);
369
+
370
+ const endpoint = factory
371
+ .get('/test')
372
+ .handle(async () => ({ success: true }));
373
+
374
+ expect(endpoint.actorExtractor).toBe(actorExtractor);
375
+ });
376
+
377
+ it('should preserve actor extractor through factory chains', () => {
378
+ const actorExtractor = () => ({ id: '123', type: 'user' as const });
379
+ const factory = new EndpointFactory()
380
+ .actor(actorExtractor)
381
+ .logger(mockLogger)
382
+ .route('/api');
383
+
384
+ const endpoint = factory
385
+ .get('/users')
386
+ .handle(async () => ({ users: [] }));
387
+
388
+ expect(endpoint.actorExtractor).toBe(actorExtractor);
389
+ expect(endpoint.route).toBe('/api/users');
390
+ });
391
+
392
+ it('should allow endpoints to override actor extractor', () => {
393
+ const factoryActor = () => ({ id: 'factory', type: 'system' as const });
394
+ const endpointActor = () => ({ id: 'endpoint', type: 'user' as const });
395
+
396
+ const factory = new EndpointFactory()
397
+ .logger(mockLogger)
398
+ .actor(factoryActor);
399
+
400
+ const endpoint = factory
401
+ .get('/test')
402
+ .actor(endpointActor)
403
+ .handle(async () => ({ success: true }));
404
+
405
+ expect(endpoint.actorExtractor).toBe(endpointActor);
406
+ });
407
+
408
+ it('should work with auditor and database', () => {
409
+ const actorExtractor = ({ session }: any) => ({
410
+ id: session.userId,
411
+ type: 'user' as const,
412
+ });
413
+
414
+ const mockAuditStorage: AuditStorage = {
415
+ write: vi.fn().mockResolvedValue(undefined),
416
+ query: vi.fn().mockResolvedValue([]),
417
+ count: vi.fn().mockResolvedValue(0),
418
+ };
419
+
420
+ const AuditStorageService = {
421
+ serviceName: 'auditStorage' as const,
422
+ async register() {
423
+ return mockAuditStorage;
424
+ },
425
+ };
426
+
427
+ const DatabaseService = {
428
+ serviceName: 'database' as const,
429
+ async register() {
430
+ return { query: vi.fn() };
431
+ },
432
+ };
433
+
434
+ const factory = new EndpointFactory()
435
+ .logger(mockLogger)
436
+ .database(DatabaseService)
437
+ .auditor(AuditStorageService)
438
+ .actor(actorExtractor);
439
+
440
+ const endpoint = factory
441
+ .get('/test')
442
+ .handle(async () => ({ success: true }));
443
+
444
+ expect(endpoint.actorExtractor).toBe(actorExtractor);
445
+ expect(endpoint.databaseService).toBe(DatabaseService);
446
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
447
+ });
448
+ });
449
+
450
+ describe('constructor options with database and auditor', () => {
451
+ const DatabaseService = {
452
+ serviceName: 'database' as const,
453
+ async register() {
454
+ return { query: vi.fn() };
455
+ },
456
+ };
457
+
458
+ const mockAuditStorage: AuditStorage = {
459
+ write: vi.fn().mockResolvedValue(undefined),
460
+ query: vi.fn().mockResolvedValue([]),
461
+ count: vi.fn().mockResolvedValue(0),
462
+ };
463
+
464
+ const AuditStorageService = {
465
+ serviceName: 'auditStorage' as const,
466
+ async register() {
467
+ return mockAuditStorage;
468
+ },
469
+ };
470
+
471
+ it('should accept database and auditor in constructor options', () => {
472
+ const factory = new EndpointFactory({
473
+ defaultDatabaseService: DatabaseService,
474
+ defaultAuditorStorage: AuditStorageService,
475
+ });
476
+
477
+ const endpoint = factory
478
+ .get('/test')
479
+ .handle(async () => ({ success: true }));
480
+
481
+ expect(endpoint.databaseService).toBe(DatabaseService);
482
+ expect(endpoint.auditorStorageService).toBe(AuditStorageService);
483
+ });
484
+
485
+ it('should merge constructor options with method calls', () => {
486
+ const AltAuditStorage = {
487
+ serviceName: 'altAudit' as const,
488
+ async register(): Promise<AuditStorage> {
489
+ return {
490
+ write: vi.fn(),
491
+ query: vi.fn().mockResolvedValue([]),
492
+ count: vi.fn().mockResolvedValue(0),
493
+ };
494
+ },
495
+ };
496
+
497
+ const factory = new EndpointFactory({
498
+ defaultDatabaseService: DatabaseService,
499
+ }).auditor(AltAuditStorage);
500
+
501
+ const endpoint = factory
502
+ .get('/test')
503
+ .handle(async () => ({ success: true }));
504
+
505
+ expect(endpoint.databaseService).toBe(DatabaseService);
506
+ expect(endpoint.auditorStorageService).toBe(AltAuditStorage);
507
+ });
508
+ });
509
509
  });