@geekmidas/constructs 0.5.0 → 0.7.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 (332) hide show
  1. package/dist/{AWSLambdaFunction-DnMm4xvz.mjs → AWSLambdaFunction-BVBaBcHU.mjs} +3 -3
  2. package/dist/{AWSLambdaFunction-DnMm4xvz.mjs.map → AWSLambdaFunction-BVBaBcHU.mjs.map} +1 -1
  3. package/dist/{AWSLambdaFunction-Ba1DcsW2.cjs → AWSLambdaFunction-BXg9HBxq.cjs} +3 -3
  4. package/dist/{AWSLambdaFunction-Ba1DcsW2.cjs.map → AWSLambdaFunction-BXg9HBxq.cjs.map} +1 -1
  5. package/dist/{AWSLambdaFunction-CuG3HNZx.d.mts → AWSLambdaFunction-DMgUylUL.d.cts} +5 -5
  6. package/dist/{AWSLambdaFunction-CuG3HNZx.d.mts.map → AWSLambdaFunction-DMgUylUL.d.cts.map} +1 -1
  7. package/dist/{AWSLambdaFunction-CKe73Qr0.d.cts → AWSLambdaFunction-e4LKEbs8.d.mts} +5 -5
  8. package/dist/{AWSLambdaFunction-CKe73Qr0.d.cts.map → AWSLambdaFunction-e4LKEbs8.d.mts.map} +1 -1
  9. package/dist/{AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts → AWSLambdaSubscriberAdaptor-DqRzr-L5.d.mts} +2 -2
  10. package/dist/{AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map → AWSLambdaSubscriberAdaptor-DqRzr-L5.d.mts.map} +1 -1
  11. package/dist/{AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts → AWSLambdaSubscriberAdaptor-JRDrHRcw.d.cts} +2 -2
  12. package/dist/{AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map → AWSLambdaSubscriberAdaptor-JRDrHRcw.d.cts.map} +1 -1
  13. package/dist/{AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs → AmazonApiGatewayEndpointAdaptor-BEDf8_Tl.cjs} +3 -3
  14. package/dist/AmazonApiGatewayEndpointAdaptor-BEDf8_Tl.cjs.map +1 -0
  15. package/dist/{AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs → AmazonApiGatewayEndpointAdaptor-B_Lstu10.mjs} +3 -3
  16. package/dist/AmazonApiGatewayEndpointAdaptor-B_Lstu10.mjs.map +1 -0
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts → AmazonApiGatewayEndpointAdaptor-CwvTP1Fc.d.cts} +2 -2
  18. package/dist/{AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map → AmazonApiGatewayEndpointAdaptor-CwvTP1Fc.d.cts.map} +1 -1
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts → AmazonApiGatewayEndpointAdaptor-fOijCaAu.d.mts} +2 -2
  20. package/dist/{AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map → AmazonApiGatewayEndpointAdaptor-fOijCaAu.d.mts.map} +1 -1
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs → AmazonApiGatewayV1EndpointAdaptor-BRxRkgtQ.mjs} +2 -2
  22. package/dist/{AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map → AmazonApiGatewayV1EndpointAdaptor-BRxRkgtQ.mjs.map} +1 -1
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs → AmazonApiGatewayV1EndpointAdaptor-BtYuuWpT.cjs} +2 -2
  24. package/dist/{AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map → AmazonApiGatewayV1EndpointAdaptor-BtYuuWpT.cjs.map} +1 -1
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts → AmazonApiGatewayV1EndpointAdaptor-C30E2cvp.d.cts} +3 -3
  26. package/dist/{AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map → AmazonApiGatewayV1EndpointAdaptor-C30E2cvp.d.cts.map} +1 -1
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts → AmazonApiGatewayV1EndpointAdaptor-DFMTK33h.d.mts} +3 -3
  28. package/dist/{AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map → AmazonApiGatewayV1EndpointAdaptor-DFMTK33h.d.mts.map} +1 -1
  29. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs → AmazonApiGatewayV2EndpointAdaptor-CHsF3XLW.mjs} +2 -2
  30. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map → AmazonApiGatewayV2EndpointAdaptor-CHsF3XLW.mjs.map} +1 -1
  31. package/dist/{AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts → AmazonApiGatewayV2EndpointAdaptor-CItFK1v6.d.mts} +3 -3
  32. package/dist/{AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts.map → AmazonApiGatewayV2EndpointAdaptor-CItFK1v6.d.mts.map} +1 -1
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs → AmazonApiGatewayV2EndpointAdaptor-DGA-9XTS.cjs} +2 -2
  34. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DGA-9XTS.cjs.map} +1 -1
  35. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts → AmazonApiGatewayV2EndpointAdaptor-Dadjyzv1.d.cts} +3 -3
  36. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map → AmazonApiGatewayV2EndpointAdaptor-Dadjyzv1.d.cts.map} +1 -1
  37. package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts → BaseFunctionBuilder-BvxwyzYE.d.mts} +3 -3
  38. package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts.map → BaseFunctionBuilder-BvxwyzYE.d.mts.map} +1 -1
  39. package/dist/{BaseFunctionBuilder-D7o93EGv.cjs → BaseFunctionBuilder-D2eLZ4eD.cjs} +2 -2
  40. package/dist/{BaseFunctionBuilder-D7o93EGv.cjs.map → BaseFunctionBuilder-D2eLZ4eD.cjs.map} +1 -1
  41. package/dist/{BaseFunctionBuilder-CDfDWWAQ.d.mts → BaseFunctionBuilder-L5zHzBJ2.d.cts} +3 -3
  42. package/dist/{BaseFunctionBuilder-CDfDWWAQ.d.mts.map → BaseFunctionBuilder-L5zHzBJ2.d.cts.map} +1 -1
  43. package/dist/{BaseFunctionBuilder-0qlenb9z.mjs → BaseFunctionBuilder-yIM62QAr.mjs} +2 -2
  44. package/dist/{BaseFunctionBuilder-0qlenb9z.mjs.map → BaseFunctionBuilder-yIM62QAr.mjs.map} +1 -1
  45. package/dist/{Construct-C4rPE67v.d.cts → Construct-BwwtHYDJ.d.cts} +27 -4
  46. package/dist/Construct-BwwtHYDJ.d.cts.map +1 -0
  47. package/dist/{Construct-BlnyYtJC.cjs → Construct-C5Oko4YC.cjs} +45 -12
  48. package/dist/Construct-C5Oko4YC.cjs.map +1 -0
  49. package/dist/{Construct-D5dCvxZ3.mjs → Construct-CAVc_gyw.mjs} +35 -14
  50. package/dist/Construct-CAVc_gyw.mjs.map +1 -0
  51. package/dist/{Construct-dZiwVo0q.d.mts → Construct-DXbQxP4z.d.mts} +27 -4
  52. package/dist/Construct-DXbQxP4z.d.mts.map +1 -0
  53. package/dist/Construct.cjs +4 -2
  54. package/dist/Construct.d.cts +2 -2
  55. package/dist/Construct.d.mts +2 -2
  56. package/dist/Construct.mjs +2 -2
  57. package/dist/{Cron-B6FnTu7k.d.cts → Cron-CY0EwfwE.d.mts} +3 -3
  58. package/dist/{Cron-B6FnTu7k.d.cts.map → Cron-CY0EwfwE.d.mts.map} +1 -1
  59. package/dist/{Cron-BAPQetlC.cjs → Cron-D6wJcyXC.cjs} +3 -3
  60. package/dist/{Cron-BAPQetlC.cjs.map → Cron-D6wJcyXC.cjs.map} +1 -1
  61. package/dist/{Cron-CAk_ddH8.mjs → Cron-GhhpemQm.mjs} +3 -3
  62. package/dist/{Cron-CAk_ddH8.mjs.map → Cron-GhhpemQm.mjs.map} +1 -1
  63. package/dist/{Cron-D3bEljxQ.d.mts → Cron-cwBxY9gM.d.cts} +3 -3
  64. package/dist/{Cron-D3bEljxQ.d.mts.map → Cron-cwBxY9gM.d.cts.map} +1 -1
  65. package/dist/{CronBuilder-DxXA5ymv.cjs → CronBuilder-BpYxvqmC.cjs} +4 -4
  66. package/dist/{CronBuilder-DxXA5ymv.cjs.map → CronBuilder-BpYxvqmC.cjs.map} +1 -1
  67. package/dist/{CronBuilder-CA8euP0z.d.cts → CronBuilder-Ct1HJlXO.d.cts} +4 -4
  68. package/dist/{CronBuilder-CA8euP0z.d.cts.map → CronBuilder-Ct1HJlXO.d.cts.map} +1 -1
  69. package/dist/{CronBuilder-e8TaHPYm.mjs → CronBuilder-G-Jim-32.mjs} +4 -4
  70. package/dist/{CronBuilder-e8TaHPYm.mjs.map → CronBuilder-G-Jim-32.mjs.map} +1 -1
  71. package/dist/{CronBuilder-DvdiKzhq.d.mts → CronBuilder-leh74vzf.d.mts} +4 -4
  72. package/dist/{CronBuilder-DvdiKzhq.d.mts.map → CronBuilder-leh74vzf.d.mts.map} +1 -1
  73. package/dist/{Endpoint-DxvnlfXg.cjs → Endpoint-0ueQu3sb.cjs} +3 -3
  74. package/dist/{Endpoint-DxvnlfXg.cjs.map → Endpoint-0ueQu3sb.cjs.map} +1 -1
  75. package/dist/{Endpoint-BOlbY5iq.d.cts → Endpoint-D3PbUsFI.d.cts} +2 -2
  76. package/dist/{Endpoint-Dlv7nxgj.d.mts.map → Endpoint-D3PbUsFI.d.cts.map} +1 -1
  77. package/dist/{Endpoint-BbdNmtlM.mjs → Endpoint-DWqfgcrY.mjs} +3 -3
  78. package/dist/{Endpoint-BbdNmtlM.mjs.map → Endpoint-DWqfgcrY.mjs.map} +1 -1
  79. package/dist/{Endpoint-Dlv7nxgj.d.mts → Endpoint-DrmzJ83e.d.mts} +2 -2
  80. package/dist/{Endpoint-BOlbY5iq.d.cts.map → Endpoint-DrmzJ83e.d.mts.map} +1 -1
  81. package/dist/{EndpointBuilder-BaVvhW9m.mjs → EndpointBuilder-AnXrzD5x.mjs} +4 -4
  82. package/dist/{EndpointBuilder-BaVvhW9m.mjs.map → EndpointBuilder-AnXrzD5x.mjs.map} +1 -1
  83. package/dist/{EndpointBuilder-40Iz5CjY.cjs → EndpointBuilder-D78r9OdH.cjs} +4 -4
  84. package/dist/{EndpointBuilder-40Iz5CjY.cjs.map → EndpointBuilder-D78r9OdH.cjs.map} +1 -1
  85. package/dist/{EndpointBuilder-T_K2NLWw.d.mts → EndpointBuilder-DAEoFAl8.d.mts} +3 -3
  86. package/dist/{EndpointBuilder-T_K2NLWw.d.mts.map → EndpointBuilder-DAEoFAl8.d.mts.map} +1 -1
  87. package/dist/{EndpointBuilder-CFfWWjUa.d.cts → EndpointBuilder-DGsP8jY0.d.cts} +3 -3
  88. package/dist/{EndpointBuilder-CFfWWjUa.d.cts.map → EndpointBuilder-DGsP8jY0.d.cts.map} +1 -1
  89. package/dist/{EndpointFactory-GAL_tuPf.d.mts → EndpointFactory-1X3rUfuX.d.mts} +3 -3
  90. package/dist/{EndpointFactory-ChzBVEM9.d.cts.map → EndpointFactory-1X3rUfuX.d.mts.map} +1 -1
  91. package/dist/{EndpointFactory-ChzBVEM9.d.cts → EndpointFactory-Cp-hAaTZ.d.cts} +3 -3
  92. package/dist/{EndpointFactory-GAL_tuPf.d.mts.map → EndpointFactory-Cp-hAaTZ.d.cts.map} +1 -1
  93. package/dist/{EndpointFactory-DfNjSgVG.mjs → EndpointFactory-DM7M-dXl.mjs} +2 -2
  94. package/dist/{EndpointFactory-DfNjSgVG.mjs.map → EndpointFactory-DM7M-dXl.mjs.map} +1 -1
  95. package/dist/{EndpointFactory-r6jxPvQ8.cjs → EndpointFactory-JAAwZkm1.cjs} +2 -2
  96. package/dist/{EndpointFactory-r6jxPvQ8.cjs.map → EndpointFactory-JAAwZkm1.cjs.map} +1 -1
  97. package/dist/{Function-iLKrUXuw.cjs → Function-Bm4qoiYy.cjs} +2 -2
  98. package/dist/{Function-iLKrUXuw.cjs.map → Function-Bm4qoiYy.cjs.map} +1 -1
  99. package/dist/{Function-DBmU3uGI.d.mts → Function-Bp_qUzVD.d.mts} +2 -2
  100. package/dist/{Function-DBmU3uGI.d.mts.map → Function-Bp_qUzVD.d.mts.map} +1 -1
  101. package/dist/{Function-PNW4HdNE.d.cts → Function-CSZRFdGO.d.cts} +2 -2
  102. package/dist/{Function-PNW4HdNE.d.cts.map → Function-CSZRFdGO.d.cts.map} +1 -1
  103. package/dist/{Function-D8tBamM3.mjs → Function-Cwl9ca-X.mjs} +2 -2
  104. package/dist/{Function-D8tBamM3.mjs.map → Function-Cwl9ca-X.mjs.map} +1 -1
  105. package/dist/{FunctionBuilder-BEpPgeho.cjs → FunctionBuilder-BECHLaPA.cjs} +4 -4
  106. package/dist/{FunctionBuilder-BEpPgeho.cjs.map → FunctionBuilder-BECHLaPA.cjs.map} +1 -1
  107. package/dist/{FunctionBuilder-BwNF99AB.mjs → FunctionBuilder-BuAHk66R.mjs} +4 -4
  108. package/dist/{FunctionBuilder-BwNF99AB.mjs.map → FunctionBuilder-BuAHk66R.mjs.map} +1 -1
  109. package/dist/{FunctionBuilder-Bv4H2I1a.d.mts → FunctionBuilder-CpV7F8QK.d.cts} +5 -5
  110. package/dist/{FunctionBuilder-Bv4H2I1a.d.mts.map → FunctionBuilder-CpV7F8QK.d.cts.map} +1 -1
  111. package/dist/{FunctionBuilder-DCqXIHaq.d.cts → FunctionBuilder-Cz4yHrx0.d.mts} +5 -5
  112. package/dist/{FunctionBuilder-DCqXIHaq.d.cts.map → FunctionBuilder-Cz4yHrx0.d.mts.map} +1 -1
  113. package/dist/{FunctionExecutionWrapper-B__HE_B-.mjs → FunctionExecutionWrapper-B1ZQxtED.mjs} +2 -2
  114. package/dist/{FunctionExecutionWrapper-B__HE_B-.mjs.map → FunctionExecutionWrapper-B1ZQxtED.mjs.map} +1 -1
  115. package/dist/{FunctionExecutionWrapper-BjF6t9Hb.cjs → FunctionExecutionWrapper-B5PRZRNk.cjs} +2 -2
  116. package/dist/{FunctionExecutionWrapper-BjF6t9Hb.cjs.map → FunctionExecutionWrapper-B5PRZRNk.cjs.map} +1 -1
  117. package/dist/{FunctionExecutionWrapper-BclgIztn.d.cts → FunctionExecutionWrapper-Bt6_rd-W.d.mts} +4 -4
  118. package/dist/{FunctionExecutionWrapper-BclgIztn.d.cts.map → FunctionExecutionWrapper-Bt6_rd-W.d.mts.map} +1 -1
  119. package/dist/{FunctionExecutionWrapper-Dq21c6vt.d.mts → FunctionExecutionWrapper-DWGwZAXI.d.cts} +4 -4
  120. package/dist/{FunctionExecutionWrapper-Dq21c6vt.d.mts.map → FunctionExecutionWrapper-DWGwZAXI.d.cts.map} +1 -1
  121. package/dist/{HonoEndpointAdaptor-DiQH0eTb.cjs → HonoEndpointAdaptor-CyBoddKN.cjs} +3 -3
  122. package/dist/HonoEndpointAdaptor-CyBoddKN.cjs.map +1 -0
  123. package/dist/{HonoEndpointAdaptor-C_ym_Sbr.mjs → HonoEndpointAdaptor-D1U_80Ly.mjs} +3 -3
  124. package/dist/HonoEndpointAdaptor-D1U_80Ly.mjs.map +1 -0
  125. package/dist/{HonoEndpointAdaptor-Dkkemmbo.d.cts → HonoEndpointAdaptor-D8wm9wxr.d.cts} +8 -8
  126. package/dist/HonoEndpointAdaptor-D8wm9wxr.d.cts.map +1 -0
  127. package/dist/{HonoEndpointAdaptor-HukjdF6M.d.mts → HonoEndpointAdaptor-o9kpq82r.d.mts} +8 -8
  128. package/dist/HonoEndpointAdaptor-o9kpq82r.d.mts.map +1 -0
  129. package/dist/{Subscriber--zUjZDR6.d.cts → Subscriber-BtS4KnZY.d.mts} +3 -3
  130. package/dist/{Subscriber--zUjZDR6.d.cts.map → Subscriber-BtS4KnZY.d.mts.map} +1 -1
  131. package/dist/{Subscriber-0Ac7cXID.d.mts → Subscriber-CZUFuLrv.d.cts} +3 -3
  132. package/dist/{Subscriber-0Ac7cXID.d.mts.map → Subscriber-CZUFuLrv.d.cts.map} +1 -1
  133. package/dist/{Subscriber-CoFmHMIM.cjs → Subscriber-Dch2_sA6.cjs} +2 -2
  134. package/dist/{Subscriber-CoFmHMIM.cjs.map → Subscriber-Dch2_sA6.cjs.map} +1 -1
  135. package/dist/{Subscriber-BgZ8T-O2.mjs → Subscriber-DzWR7J0h.mjs} +2 -2
  136. package/dist/{Subscriber-BgZ8T-O2.mjs.map → Subscriber-DzWR7J0h.mjs.map} +1 -1
  137. package/dist/{SubscriberBuilder-JlxhyqGp.cjs → SubscriberBuilder-89waFhqt.cjs} +2 -2
  138. package/dist/{SubscriberBuilder-JlxhyqGp.cjs.map → SubscriberBuilder-89waFhqt.cjs.map} +1 -1
  139. package/dist/{SubscriberBuilder-D8cmUHee.d.mts → SubscriberBuilder-BeHyDFDH.d.mts} +2 -2
  140. package/dist/{SubscriberBuilder-D8cmUHee.d.mts.map → SubscriberBuilder-BeHyDFDH.d.mts.map} +1 -1
  141. package/dist/{SubscriberBuilder-DWXWZBPo.mjs → SubscriberBuilder-C-2L2FCF.mjs} +2 -2
  142. package/dist/{SubscriberBuilder-DWXWZBPo.mjs.map → SubscriberBuilder-C-2L2FCF.mjs.map} +1 -1
  143. package/dist/{SubscriberBuilder-DciTqb-7.d.cts → SubscriberBuilder-cu4kH95n.d.cts} +2 -2
  144. package/dist/{SubscriberBuilder-DciTqb-7.d.cts.map → SubscriberBuilder-cu4kH95n.d.cts.map} +1 -1
  145. package/dist/{TestEndpointAdaptor-OiA2JLDp.mjs → TestEndpointAdaptor-CAroN3El.mjs} +2 -2
  146. package/dist/TestEndpointAdaptor-CAroN3El.mjs.map +1 -0
  147. package/dist/{TestEndpointAdaptor-DdwpRyNh.d.cts → TestEndpointAdaptor-CXaatEAn.d.cts} +3 -3
  148. package/dist/{TestEndpointAdaptor-Boijwbmz.d.mts.map → TestEndpointAdaptor-CXaatEAn.d.cts.map} +1 -1
  149. package/dist/{TestEndpointAdaptor-Boijwbmz.d.mts → TestEndpointAdaptor-DVjds7Cc.d.mts} +3 -3
  150. package/dist/{TestEndpointAdaptor-DdwpRyNh.d.cts.map → TestEndpointAdaptor-DVjds7Cc.d.mts.map} +1 -1
  151. package/dist/{TestEndpointAdaptor-Dk75ExxE.cjs → TestEndpointAdaptor-D_FklTXe.cjs} +2 -2
  152. package/dist/TestEndpointAdaptor-D_FklTXe.cjs.map +1 -0
  153. package/dist/adaptors/aws.cjs +11 -11
  154. package/dist/adaptors/aws.d.cts +13 -13
  155. package/dist/adaptors/aws.d.mts +13 -13
  156. package/dist/adaptors/aws.mjs +11 -11
  157. package/dist/adaptors/hono.cjs +8 -8
  158. package/dist/adaptors/hono.d.cts +7 -7
  159. package/dist/adaptors/hono.d.mts +7 -7
  160. package/dist/adaptors/hono.mjs +8 -8
  161. package/dist/adaptors/testing.cjs +7 -7
  162. package/dist/adaptors/testing.d.cts +7 -7
  163. package/dist/adaptors/testing.d.mts +7 -7
  164. package/dist/adaptors/testing.mjs +7 -7
  165. package/dist/crons/Cron.cjs +6 -6
  166. package/dist/crons/Cron.d.cts +6 -6
  167. package/dist/crons/Cron.d.mts +6 -6
  168. package/dist/crons/Cron.mjs +6 -6
  169. package/dist/crons/CronBuilder.cjs +7 -7
  170. package/dist/crons/CronBuilder.d.cts +7 -7
  171. package/dist/crons/CronBuilder.d.mts +7 -7
  172. package/dist/crons/CronBuilder.mjs +7 -7
  173. package/dist/crons/index.cjs +7 -7
  174. package/dist/crons/index.d.cts +11 -11
  175. package/dist/crons/index.d.cts.map +1 -1
  176. package/dist/crons/index.d.mts +11 -11
  177. package/dist/crons/index.mjs +7 -7
  178. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  179. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +7 -7
  180. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +7 -7
  181. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  182. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  183. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -8
  184. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +8 -8
  185. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  186. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  187. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +8 -8
  188. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +8 -8
  189. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  190. package/dist/endpoints/Endpoint.cjs +6 -6
  191. package/dist/endpoints/Endpoint.d.cts +6 -6
  192. package/dist/endpoints/Endpoint.d.mts +6 -6
  193. package/dist/endpoints/Endpoint.mjs +6 -6
  194. package/dist/endpoints/EndpointBuilder.cjs +7 -7
  195. package/dist/endpoints/EndpointBuilder.d.cts +7 -7
  196. package/dist/endpoints/EndpointBuilder.d.mts +7 -7
  197. package/dist/endpoints/EndpointBuilder.mjs +7 -7
  198. package/dist/endpoints/EndpointFactory.cjs +8 -8
  199. package/dist/endpoints/EndpointFactory.d.cts +8 -8
  200. package/dist/endpoints/EndpointFactory.d.mts +8 -8
  201. package/dist/endpoints/EndpointFactory.mjs +8 -8
  202. package/dist/endpoints/HonoEndpointAdaptor.cjs +8 -8
  203. package/dist/endpoints/HonoEndpointAdaptor.d.cts +7 -7
  204. package/dist/endpoints/HonoEndpointAdaptor.d.mts +7 -7
  205. package/dist/endpoints/HonoEndpointAdaptor.mjs +8 -8
  206. package/dist/endpoints/TestEndpointAdaptor.cjs +7 -7
  207. package/dist/endpoints/TestEndpointAdaptor.d.cts +7 -7
  208. package/dist/endpoints/TestEndpointAdaptor.d.mts +7 -7
  209. package/dist/endpoints/TestEndpointAdaptor.mjs +7 -7
  210. package/dist/endpoints/audit.d.cts +6 -6
  211. package/dist/endpoints/audit.d.mts +6 -6
  212. package/dist/endpoints/helpers.cjs +7 -7
  213. package/dist/endpoints/helpers.d.cts +6 -6
  214. package/dist/endpoints/helpers.d.mts +6 -6
  215. package/dist/endpoints/helpers.mjs +7 -7
  216. package/dist/endpoints/index.cjs +8 -8
  217. package/dist/endpoints/index.d.cts +12 -12
  218. package/dist/endpoints/index.d.mts +12 -12
  219. package/dist/endpoints/index.mjs +8 -8
  220. package/dist/endpoints/lazyAccessors.d.cts +7 -7
  221. package/dist/endpoints/lazyAccessors.d.mts +7 -7
  222. package/dist/endpoints/processAudits.d.cts +8 -8
  223. package/dist/endpoints/processAudits.d.cts.map +1 -1
  224. package/dist/endpoints/processAudits.d.mts +8 -8
  225. package/dist/endpoints/processAudits.d.mts.map +1 -1
  226. package/dist/endpoints/rls.d.cts +6 -6
  227. package/dist/endpoints/rls.d.mts +6 -6
  228. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  229. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  230. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  231. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  232. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  233. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  234. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  235. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  236. package/dist/functions/Function.cjs +2 -2
  237. package/dist/functions/Function.d.cts +2 -2
  238. package/dist/functions/Function.d.mts +2 -2
  239. package/dist/functions/Function.mjs +2 -2
  240. package/dist/functions/FunctionBuilder.cjs +4 -4
  241. package/dist/functions/FunctionBuilder.d.cts +4 -4
  242. package/dist/functions/FunctionBuilder.d.mts +4 -4
  243. package/dist/functions/FunctionBuilder.mjs +4 -4
  244. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  245. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  246. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  247. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  248. package/dist/functions/TestFunctionAdaptor.cjs +4 -4
  249. package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
  250. package/dist/functions/TestFunctionAdaptor.d.cts +3 -3
  251. package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
  252. package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
  253. package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
  254. package/dist/functions/TestFunctionAdaptor.mjs +4 -4
  255. package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
  256. package/dist/functions/index.cjs +5 -5
  257. package/dist/functions/index.d.cts +5 -5
  258. package/dist/functions/index.d.mts +5 -5
  259. package/dist/functions/index.mjs +5 -5
  260. package/dist/functions-CbtExODi.mjs +8 -0
  261. package/dist/{functions-C3A1vMRW.mjs.map → functions-CbtExODi.mjs.map} +1 -1
  262. package/dist/{functions-BkKXVeHm.cjs → functions-HB7qwhT0.cjs} +2 -2
  263. package/dist/{functions-BkKXVeHm.cjs.map → functions-HB7qwhT0.cjs.map} +1 -1
  264. package/dist/{helpers-DgsMFMUV.mjs → helpers-BWtV9zA4.mjs} +2 -2
  265. package/dist/{helpers-DgsMFMUV.mjs.map → helpers-BWtV9zA4.mjs.map} +1 -1
  266. package/dist/{helpers-BelEzV4U.cjs → helpers-CaNXi9c2.cjs} +2 -2
  267. package/dist/{helpers-BelEzV4U.cjs.map → helpers-CaNXi9c2.cjs.map} +1 -1
  268. package/dist/index-BEqSUHHX.d.mts +12 -0
  269. package/dist/{index-CgAQHr3f.d.mts.map → index-BEqSUHHX.d.mts.map} +1 -1
  270. package/dist/index-CQca-Mgc.d.cts +12 -0
  271. package/dist/{index-D0fp_IK1.d.cts.map → index-CQca-Mgc.d.cts.map} +1 -1
  272. package/dist/index.cjs +4 -2
  273. package/dist/index.d.cts +2 -2
  274. package/dist/index.d.mts +2 -2
  275. package/dist/index.mjs +2 -2
  276. package/dist/{lazyAccessors-B2ILzU-j.d.mts → lazyAccessors-CTNhEuul.d.mts} +2 -2
  277. package/dist/{lazyAccessors-B2ILzU-j.d.mts.map → lazyAccessors-CTNhEuul.d.mts.map} +1 -1
  278. package/dist/{lazyAccessors-Bcpi06ed.d.cts → lazyAccessors-CpWTbouI.d.cts} +2 -2
  279. package/dist/{lazyAccessors-Bcpi06ed.d.cts.map → lazyAccessors-CpWTbouI.d.cts.map} +1 -1
  280. package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
  281. package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
  282. package/dist/publisher-Bw4770Hi.mjs.map +1 -1
  283. package/dist/{publisher-C4BhHB5I.d.cts → publisher-DHEq5OHs.d.mts} +5 -5
  284. package/dist/publisher-DHEq5OHs.d.mts.map +1 -0
  285. package/dist/{publisher-NE-GnXL8.d.mts → publisher-DbiPyseG.d.cts} +5 -5
  286. package/dist/publisher-DbiPyseG.d.cts.map +1 -0
  287. package/dist/publisher-lFQleddL.cjs.map +1 -1
  288. package/dist/publisher.d.cts +2 -2
  289. package/dist/publisher.d.mts +2 -2
  290. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  291. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  292. package/dist/subscribers/Subscriber.cjs +2 -2
  293. package/dist/subscribers/Subscriber.d.cts +2 -2
  294. package/dist/subscribers/Subscriber.d.mts +2 -2
  295. package/dist/subscribers/Subscriber.mjs +2 -2
  296. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  297. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  298. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  299. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  300. package/dist/subscribers/index.cjs +3 -3
  301. package/dist/subscribers/index.d.cts +5 -5
  302. package/dist/subscribers/index.d.cts.map +1 -1
  303. package/dist/subscribers/index.d.mts +3 -3
  304. package/dist/subscribers/index.mjs +3 -3
  305. package/package.json +11 -10
  306. package/src/Construct.ts +52 -17
  307. package/src/__tests__/Construct.environment.spec.ts +231 -9
  308. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +5 -4
  309. package/src/endpoints/HonoEndpointAdaptor.ts +4 -4
  310. package/src/endpoints/TestEndpointAdaptor.ts +3 -4
  311. package/src/endpoints/processAudits.ts +2 -2
  312. package/src/functions/TestFunctionAdaptor.ts +3 -4
  313. package/src/index.ts +6 -1
  314. package/src/publisher.ts +2 -2
  315. package/tsconfig.tsbuildinfo +1 -0
  316. package/dist/AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map +0 -1
  317. package/dist/AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map +0 -1
  318. package/dist/Construct-BlnyYtJC.cjs.map +0 -1
  319. package/dist/Construct-C4rPE67v.d.cts.map +0 -1
  320. package/dist/Construct-D5dCvxZ3.mjs.map +0 -1
  321. package/dist/Construct-dZiwVo0q.d.mts.map +0 -1
  322. package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs.map +0 -1
  323. package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs.map +0 -1
  324. package/dist/HonoEndpointAdaptor-Dkkemmbo.d.cts.map +0 -1
  325. package/dist/HonoEndpointAdaptor-HukjdF6M.d.mts.map +0 -1
  326. package/dist/TestEndpointAdaptor-Dk75ExxE.cjs.map +0 -1
  327. package/dist/TestEndpointAdaptor-OiA2JLDp.mjs.map +0 -1
  328. package/dist/functions-C3A1vMRW.mjs +0 -8
  329. package/dist/index-CgAQHr3f.d.mts +0 -12
  330. package/dist/index-D0fp_IK1.d.cts +0 -12
  331. package/dist/publisher-C4BhHB5I.d.cts.map +0 -1
  332. package/dist/publisher-NE-GnXL8.d.mts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"publisher-lFQleddL.cjs","names":["logger: Logger","serviceDiscovery: ServiceDiscovery<any, any>","ev: MappedEvent<T, OutSchema>[]","response: InferStandardSchema<OutSchema>","publisherService: TPublisherService","events: MappedEvent<T, OutSchema>[]","construct: Construct<\n\t\tLogger,\n\t\tTServiceName,\n\t\tT,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTAuditStorageServiceName,\n\t\tTAuditStorage\n\t>"],"sources":["../src/publisher.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Construct } from './Construct';\n\nexport async function publishEvents<\n\tT extends EventPublisher<any> | undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServiceName extends string = string,\n\tTPublisherService extends Service<TServiceName, T> | undefined = undefined,\n>(\n\tlogger: Logger,\n\tserviceDiscovery: ServiceDiscovery<any, any>,\n\tev: MappedEvent<T, OutSchema>[] = [],\n\tresponse: InferStandardSchema<OutSchema>,\n\tpublisherService: TPublisherService,\n) {\n\ttry {\n\t\tif (!ev?.length) {\n\t\t\tlogger.debug('No events to publish');\n\t\t\treturn;\n\t\t}\n\t\tif (!publisherService) {\n\t\t\tlogger.warn('No publisher service available');\n\t\t\treturn;\n\t\t}\n\n\t\tconst services = await serviceDiscovery.register([publisherService]);\n\n\t\tconst publisher = services[\n\t\t\tpublisherService.serviceName\n\t\t] as EventPublisher<any>;\n\n\t\tconst events: MappedEvent<T, OutSchema>[] = [];\n\n\t\tfor (const { when, payload, type, ...e } of ev) {\n\t\t\tlogger.debug({ event: type }, 'Processing event');\n\t\t\tconst resolvedPayload = await payload(response);\n\t\t\tconst event = {\n\t\t\t\t...e,\n\t\t\t\ttype,\n\t\t\t\tpayload: resolvedPayload,\n\t\t\t};\n\n\t\t\tif (!when || when(response as any)) {\n\t\t\t\tevents.push(event);\n\t\t\t}\n\t\t}\n\n\t\tif (events.length) {\n\t\t\tlogger.debug({ eventCount: ev.length }, 'Publishing events');\n\n\t\t\tawait publisher.publish(events).catch((err) => {\n\t\t\t\tlogger.error(err, 'Failed to publish events');\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as any, 'Something went wrong publishing events');\n\t}\n}\n\nexport async function publishConstructEvents<\n\tT extends EventPublisher<any> | undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServiceName extends string = string,\n\tTServices extends Service[] = [],\n\tTAuditStorageServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n>(\n\tconstruct: Construct<\n\t\tLogger,\n\t\tTServiceName,\n\t\tT,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTAuditStorageServiceName,\n\t\tTAuditStorage\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any, any>,\n\tlogger: Logger = construct.logger,\n) {\n\treturn publishEvents(\n\t\tlogger,\n\t\tserviceDiscovery,\n\t\tconstruct.events,\n\t\tresponse,\n\t\tconstruct.publisherService,\n\t);\n}\n"],"mappings":";;AAQA,eAAsB,cAMrBA,QACAC,kBACAC,KAAkC,CAAE,GACpCC,UACAC,kBACC;AACD,KAAI;AACH,OAAK,IAAI,QAAQ;AAChB,UAAO,MAAM,uBAAuB;AACpC;EACA;AACD,OAAK,kBAAkB;AACtB,UAAO,KAAK,iCAAiC;AAC7C;EACA;EAED,MAAM,WAAW,MAAM,iBAAiB,SAAS,CAAC,gBAAiB,EAAC;EAEpE,MAAM,YAAY,SACjB,iBAAiB;EAGlB,MAAMC,SAAsC,CAAE;AAE9C,OAAK,MAAM,EAAE,MAAM,SAAS,KAAM,GAAG,GAAG,IAAI,IAAI;AAC/C,UAAO,MAAM,EAAE,OAAO,KAAM,GAAE,mBAAmB;GACjD,MAAM,kBAAkB,MAAM,QAAQ,SAAS;GAC/C,MAAM,QAAQ;IACb,GAAG;IACH;IACA,SAAS;GACT;AAED,QAAK,QAAQ,KAAK,SAAgB,CACjC,QAAO,KAAK,MAAM;EAEnB;AAED,MAAI,OAAO,QAAQ;AAClB,UAAO,MAAM,EAAE,YAAY,GAAG,OAAQ,GAAE,oBAAoB;AAE5D,SAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9C,WAAO,MAAM,KAAK,2BAA2B;GAC7C,EAAC;EACF;CACD,SAAQ,OAAO;AACf,SAAO,MAAM,OAAc,yCAAyC;CACpE;AACD;AAED,eAAsB,uBAQrBC,WASAH,UACAF,kBACAD,SAAiB,UAAU,QAC1B;AACD,QAAO,cACN,QACA,kBACA,UAAU,QACV,UACA,UAAU,iBACV;AACD"}
1
+ {"version":3,"file":"publisher-lFQleddL.cjs","names":["logger: Logger","serviceDiscovery: ServiceDiscovery<any>","ev: MappedEvent<T, OutSchema>[]","response: InferStandardSchema<OutSchema>","publisherService: TPublisherService","events: MappedEvent<T, OutSchema>[]","construct: Construct<\n\t\tLogger,\n\t\tTServiceName,\n\t\tT,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTAuditStorageServiceName,\n\t\tTAuditStorage\n\t>"],"sources":["../src/publisher.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Construct } from './Construct';\n\nexport async function publishEvents<\n\tT extends EventPublisher<any> | undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServiceName extends string = string,\n\tTPublisherService extends Service<TServiceName, T> | undefined = undefined,\n>(\n\tlogger: Logger,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tev: MappedEvent<T, OutSchema>[] = [],\n\tresponse: InferStandardSchema<OutSchema>,\n\tpublisherService: TPublisherService,\n) {\n\ttry {\n\t\tif (!ev?.length) {\n\t\t\tlogger.debug('No events to publish');\n\t\t\treturn;\n\t\t}\n\t\tif (!publisherService) {\n\t\t\tlogger.warn('No publisher service available');\n\t\t\treturn;\n\t\t}\n\n\t\tconst services = await serviceDiscovery.register([publisherService]);\n\n\t\tconst publisher = services[\n\t\t\tpublisherService.serviceName\n\t\t] as EventPublisher<any>;\n\n\t\tconst events: MappedEvent<T, OutSchema>[] = [];\n\n\t\tfor (const { when, payload, type, ...e } of ev) {\n\t\t\tlogger.debug({ event: type }, 'Processing event');\n\t\t\tconst resolvedPayload = await payload(response);\n\t\t\tconst event = {\n\t\t\t\t...e,\n\t\t\t\ttype,\n\t\t\t\tpayload: resolvedPayload,\n\t\t\t};\n\n\t\t\tif (!when || when(response as any)) {\n\t\t\t\tevents.push(event);\n\t\t\t}\n\t\t}\n\n\t\tif (events.length) {\n\t\t\tlogger.debug({ eventCount: ev.length }, 'Publishing events');\n\n\t\t\tawait publisher.publish(events).catch((err) => {\n\t\t\t\tlogger.error(err, 'Failed to publish events');\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as any, 'Something went wrong publishing events');\n\t}\n}\n\nexport async function publishConstructEvents<\n\tT extends EventPublisher<any> | undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServiceName extends string = string,\n\tTServices extends Service[] = [],\n\tTAuditStorageServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n>(\n\tconstruct: Construct<\n\t\tLogger,\n\t\tTServiceName,\n\t\tT,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTAuditStorageServiceName,\n\t\tTAuditStorage\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tlogger: Logger = construct.logger,\n) {\n\treturn publishEvents(\n\t\tlogger,\n\t\tserviceDiscovery,\n\t\tconstruct.events,\n\t\tresponse,\n\t\tconstruct.publisherService,\n\t);\n}\n"],"mappings":";;AAQA,eAAsB,cAMrBA,QACAC,kBACAC,KAAkC,CAAE,GACpCC,UACAC,kBACC;AACD,KAAI;AACH,OAAK,IAAI,QAAQ;AAChB,UAAO,MAAM,uBAAuB;AACpC;EACA;AACD,OAAK,kBAAkB;AACtB,UAAO,KAAK,iCAAiC;AAC7C;EACA;EAED,MAAM,WAAW,MAAM,iBAAiB,SAAS,CAAC,gBAAiB,EAAC;EAEpE,MAAM,YAAY,SACjB,iBAAiB;EAGlB,MAAMC,SAAsC,CAAE;AAE9C,OAAK,MAAM,EAAE,MAAM,SAAS,KAAM,GAAG,GAAG,IAAI,IAAI;AAC/C,UAAO,MAAM,EAAE,OAAO,KAAM,GAAE,mBAAmB;GACjD,MAAM,kBAAkB,MAAM,QAAQ,SAAS;GAC/C,MAAM,QAAQ;IACb,GAAG;IACH;IACA,SAAS;GACT;AAED,QAAK,QAAQ,KAAK,SAAgB,CACjC,QAAO,KAAK,MAAM;EAEnB;AAED,MAAI,OAAO,QAAQ;AAClB,UAAO,MAAM,EAAE,YAAY,GAAG,OAAQ,GAAE,oBAAoB;AAE5D,SAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9C,WAAO,MAAM,KAAK,2BAA2B;GAC7C,EAAC;EACF;CACD,SAAQ,OAAO;AACf,SAAO,MAAM,OAAc,yCAAyC;CACpE;AACD;AAED,eAAsB,uBAQrBC,WASAH,UACAF,kBACAD,SAAiB,UAAU,QAC1B;AACD,QAAO,cACN,QACA,kBACA,UAAU,QACV,UACA,UAAU,iBACV;AACD"}
@@ -1,3 +1,3 @@
1
- import "./Construct-C4rPE67v.cjs";
2
- import { publishConstructEvents, publishEvents } from "./publisher-C4BhHB5I.cjs";
1
+ import "./Construct-BwwtHYDJ.cjs";
2
+ import { publishConstructEvents, publishEvents } from "./publisher-DbiPyseG.cjs";
3
3
  export { publishConstructEvents, publishEvents };
@@ -1,3 +1,3 @@
1
- import "./Construct-dZiwVo0q.mjs";
2
- import { publishConstructEvents, publishEvents } from "./publisher-NE-GnXL8.mjs";
1
+ import "./Construct-DXbQxP4z.mjs";
2
+ import { publishConstructEvents, publishEvents } from "./publisher-DHEq5OHs.mjs";
3
3
  export { publishConstructEvents, publishEvents };
@@ -1,4 +1,4 @@
1
- import "../Construct-C4rPE67v.cjs";
2
- import "../Subscriber--zUjZDR6.cjs";
3
- import { AWSLambdaHandler, AWSLambdaSubscriber } from "../AWSLambdaSubscriberAdaptor-BEqQ96VJ.cjs";
1
+ import "../Construct-BwwtHYDJ.cjs";
2
+ import "../Subscriber-CZUFuLrv.cjs";
3
+ import { AWSLambdaHandler, AWSLambdaSubscriber } from "../AWSLambdaSubscriberAdaptor-JRDrHRcw.cjs";
4
4
  export { AWSLambdaHandler, AWSLambdaSubscriber };
@@ -1,4 +1,4 @@
1
- import "../Construct-dZiwVo0q.mjs";
2
- import "../Subscriber-0Ac7cXID.mjs";
3
- import { AWSLambdaHandler, AWSLambdaSubscriber } from "../AWSLambdaSubscriberAdaptor-B4HH-WuQ.mjs";
1
+ import "../Construct-DXbQxP4z.mjs";
2
+ import "../Subscriber-BtS4KnZY.mjs";
3
+ import { AWSLambdaHandler, AWSLambdaSubscriber } from "../AWSLambdaSubscriberAdaptor-DqRzr-L5.mjs";
4
4
  export { AWSLambdaHandler, AWSLambdaSubscriber };
@@ -1,4 +1,4 @@
1
- require('../Construct-BlnyYtJC.cjs');
2
- const require_Subscriber = require('../Subscriber-CoFmHMIM.cjs');
1
+ require('../Construct-C5Oko4YC.cjs');
2
+ const require_Subscriber = require('../Subscriber-Dch2_sA6.cjs');
3
3
 
4
4
  exports.Subscriber = require_Subscriber.Subscriber;
@@ -1,3 +1,3 @@
1
- import "../Construct-C4rPE67v.cjs";
2
- import { Subscriber, SubscriberContext, SubscriberHandler } from "../Subscriber--zUjZDR6.cjs";
1
+ import "../Construct-BwwtHYDJ.cjs";
2
+ import { Subscriber, SubscriberContext, SubscriberHandler } from "../Subscriber-CZUFuLrv.cjs";
3
3
  export { Subscriber, SubscriberContext, SubscriberHandler };
@@ -1,3 +1,3 @@
1
- import "../Construct-dZiwVo0q.mjs";
2
- import { Subscriber, SubscriberContext, SubscriberHandler } from "../Subscriber-0Ac7cXID.mjs";
1
+ import "../Construct-DXbQxP4z.mjs";
2
+ import { Subscriber, SubscriberContext, SubscriberHandler } from "../Subscriber-BtS4KnZY.mjs";
3
3
  export { Subscriber, SubscriberContext, SubscriberHandler };
@@ -1,4 +1,4 @@
1
- import "../Construct-D5dCvxZ3.mjs";
2
- import { Subscriber } from "../Subscriber-BgZ8T-O2.mjs";
1
+ import "../Construct-CAVc_gyw.mjs";
2
+ import { Subscriber } from "../Subscriber-DzWR7J0h.mjs";
3
3
 
4
4
  export { Subscriber };
@@ -1,5 +1,5 @@
1
- require('../Construct-BlnyYtJC.cjs');
2
- require('../Subscriber-CoFmHMIM.cjs');
3
- const require_SubscriberBuilder = require('../SubscriberBuilder-JlxhyqGp.cjs');
1
+ require('../Construct-C5Oko4YC.cjs');
2
+ require('../Subscriber-Dch2_sA6.cjs');
3
+ const require_SubscriberBuilder = require('../SubscriberBuilder-89waFhqt.cjs');
4
4
 
5
5
  exports.SubscriberBuilder = require_SubscriberBuilder.SubscriberBuilder;
@@ -1,4 +1,4 @@
1
- import "../Construct-C4rPE67v.cjs";
2
- import "../Subscriber--zUjZDR6.cjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-DciTqb-7.cjs";
1
+ import "../Construct-BwwtHYDJ.cjs";
2
+ import "../Subscriber-CZUFuLrv.cjs";
3
+ import { SubscriberBuilder } from "../SubscriberBuilder-cu4kH95n.cjs";
4
4
  export { SubscriberBuilder };
@@ -1,4 +1,4 @@
1
- import "../Construct-dZiwVo0q.mjs";
2
- import "../Subscriber-0Ac7cXID.mjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-D8cmUHee.mjs";
1
+ import "../Construct-DXbQxP4z.mjs";
2
+ import "../Subscriber-BtS4KnZY.mjs";
3
+ import { SubscriberBuilder } from "../SubscriberBuilder-BeHyDFDH.mjs";
4
4
  export { SubscriberBuilder };
@@ -1,5 +1,5 @@
1
- import "../Construct-D5dCvxZ3.mjs";
2
- import "../Subscriber-BgZ8T-O2.mjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-DWXWZBPo.mjs";
1
+ import "../Construct-CAVc_gyw.mjs";
2
+ import "../Subscriber-DzWR7J0h.mjs";
3
+ import { SubscriberBuilder } from "../SubscriberBuilder-C-2L2FCF.mjs";
4
4
 
5
5
  export { SubscriberBuilder };
@@ -1,6 +1,6 @@
1
- require('../Construct-BlnyYtJC.cjs');
2
- const require_Subscriber = require('../Subscriber-CoFmHMIM.cjs');
3
- const require_SubscriberBuilder = require('../SubscriberBuilder-JlxhyqGp.cjs');
1
+ require('../Construct-C5Oko4YC.cjs');
2
+ const require_Subscriber = require('../Subscriber-Dch2_sA6.cjs');
3
+ const require_SubscriberBuilder = require('../SubscriberBuilder-89waFhqt.cjs');
4
4
 
5
5
  //#region src/subscribers/index.ts
6
6
  const s = new require_SubscriberBuilder.SubscriberBuilder();
@@ -1,10 +1,10 @@
1
- import "../Construct-C4rPE67v.cjs";
2
- import { Subscriber } from "../Subscriber--zUjZDR6.cjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-DciTqb-7.cjs";
4
- import * as _geekmidas_logger10 from "@geekmidas/logger";
1
+ import "../Construct-BwwtHYDJ.cjs";
2
+ import { Subscriber } from "../Subscriber-CZUFuLrv.cjs";
3
+ import { SubscriberBuilder } from "../SubscriberBuilder-cu4kH95n.cjs";
4
+ import * as _geekmidas_logger2 from "@geekmidas/logger";
5
5
 
6
6
  //#region src/subscribers/index.d.ts
7
- declare const s: SubscriberBuilder<[], _geekmidas_logger10.Logger, undefined, undefined, string, []>;
7
+ declare const s: SubscriberBuilder<[], _geekmidas_logger2.Logger, undefined, undefined, string, []>;
8
8
  //# sourceMappingURL=index.d.ts.map
9
9
 
10
10
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,mBAAA,CAA1B,MAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,kBAAA,CAA1B,MAAA"}
@@ -1,6 +1,6 @@
1
- import "../Construct-dZiwVo0q.mjs";
2
- import { Subscriber } from "../Subscriber-0Ac7cXID.mjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-D8cmUHee.mjs";
1
+ import "../Construct-DXbQxP4z.mjs";
2
+ import { Subscriber } from "../Subscriber-BtS4KnZY.mjs";
3
+ import { SubscriberBuilder } from "../SubscriberBuilder-BeHyDFDH.mjs";
4
4
  import * as _geekmidas_logger10 from "@geekmidas/logger";
5
5
 
6
6
  //#region src/subscribers/index.d.ts
@@ -1,6 +1,6 @@
1
- import "../Construct-D5dCvxZ3.mjs";
2
- import { Subscriber } from "../Subscriber-BgZ8T-O2.mjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-DWXWZBPo.mjs";
1
+ import "../Construct-CAVc_gyw.mjs";
2
+ import { Subscriber } from "../Subscriber-DzWR7J0h.mjs";
3
+ import { SubscriberBuilder } from "../SubscriberBuilder-C-2L2FCF.mjs";
4
4
 
5
5
  //#region src/subscribers/index.ts
6
6
  const s = new SubscriberBuilder();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekmidas/constructs",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -74,20 +74,21 @@
74
74
  "@types/lodash.set": "~4.3.9",
75
75
  "@types/lodash.uniqby": "~4.7.9",
76
76
  "@types/pg": "~8.15.6",
77
+ "better-auth": "~1.4.12",
77
78
  "kysely": "~0.28.8",
78
79
  "pg": "~8.16.3",
79
80
  "zod": "~4.1.13",
80
81
  "@geekmidas/audit": "^0.2.0",
81
82
  "@geekmidas/cache": "^0.2.0",
82
- "@geekmidas/errors": "^0.1.0",
83
- "@geekmidas/envkit": "^0.3.0",
84
- "@geekmidas/db": "^0.3.0",
85
83
  "@geekmidas/events": "^0.2.0",
86
84
  "@geekmidas/logger": "^0.4.0",
85
+ "@geekmidas/envkit": "^0.6.0",
86
+ "@geekmidas/rate-limit": "^0.3.0",
87
+ "@geekmidas/db": "^0.3.0",
88
+ "@geekmidas/errors": "^0.1.0",
87
89
  "@geekmidas/schema": "^0.1.0",
88
90
  "@geekmidas/services": "^0.2.0",
89
- "@geekmidas/testkit": "^0.6.0",
90
- "@geekmidas/rate-limit": "^0.3.0"
91
+ "@geekmidas/testkit": "^0.6.0"
91
92
  },
92
93
  "peerDependencies": {
93
94
  "@middy/core": ">=6.3.1",
@@ -96,13 +97,13 @@
96
97
  "@geekmidas/audit": "^0.2.0",
97
98
  "@geekmidas/cache": "^0.2.0",
98
99
  "@geekmidas/db": "^0.3.0",
99
- "@geekmidas/envkit": "^0.3.0",
100
- "@geekmidas/events": "^0.2.0",
101
- "@geekmidas/rate-limit": "^0.3.0",
102
100
  "@geekmidas/errors": "^0.1.0",
101
+ "@geekmidas/envkit": "^0.6.0",
103
102
  "@geekmidas/logger": "^0.4.0",
103
+ "@geekmidas/rate-limit": "^0.3.0",
104
+ "@geekmidas/services": "^0.2.0",
104
105
  "@geekmidas/schema": "^0.1.0",
105
- "@geekmidas/services": "^0.2.0"
106
+ "@geekmidas/events": "^0.2.0"
106
107
  },
107
108
  "peerDependenciesMeta": {
108
109
  "@geekmidas/audit": {
package/src/Construct.ts CHANGED
@@ -1,5 +1,9 @@
1
1
  import type { AuditStorage } from '@geekmidas/audit';
2
- import { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';
2
+ import {
3
+ SnifferEnvironmentParser,
4
+ type SniffResult,
5
+ sniffWithFireAndForget,
6
+ } from '@geekmidas/envkit/sniffer';
3
7
  import type { EventPublisher, MappedEvent } from '@geekmidas/events';
4
8
  import type { Logger } from '@geekmidas/logger';
5
9
  import type { Service, ServiceContext } from '@geekmidas/services';
@@ -100,26 +104,29 @@ export abstract class Construct<
100
104
  continue;
101
105
  }
102
106
 
103
- // Sniff the service for env vars
104
- const sniffer = new SnifferEnvironmentParser();
105
- try {
106
- const result = service.register({
107
- envParser: sniffer as any,
108
- context: snifferContext,
109
- });
107
+ // Use sniffService to properly handle all error scenarios
108
+ const result = await sniffService(service);
110
109
 
111
- // Await if it's a Promise (async services)
112
- if (result && typeof result === 'object' && 'then' in result) {
113
- await Promise.resolve(result);
114
- }
115
- } catch {
116
- // Service registration may fail but env vars are still tracked
110
+ // Log any issues for debugging
111
+ if (result.error) {
112
+ this.logger.warn(
113
+ { error: result.error.message, service: service.serviceName },
114
+ 'Service threw error during env sniffing (env vars still captured)',
115
+ );
116
+ }
117
+ if (result.unhandledRejections.length > 0) {
118
+ this.logger.warn(
119
+ {
120
+ errors: result.unhandledRejections.map((e) => e.message),
121
+ service: service.serviceName,
122
+ },
123
+ 'Fire-and-forget rejections during env sniffing (suppressed)',
124
+ );
117
125
  }
118
126
 
119
127
  // Cache and collect the env vars
120
- const serviceEnvVars = sniffer.getEnvironmentVariables();
121
- serviceEnvCache.set(service, serviceEnvVars);
122
- serviceEnvVars.forEach((v) => envVars.add(v));
128
+ serviceEnvCache.set(service, result.envVars);
129
+ result.envVars.forEach((v) => envVars.add(v));
123
130
  }
124
131
 
125
132
  return Array.from(envVars).sort();
@@ -140,3 +147,31 @@ export enum ConstructType {
140
147
  Function = 'dev.geekmidas.function.function',
141
148
  Subscriber = 'dev.geekmidas.function.subscriber',
142
149
  }
150
+
151
+ /**
152
+ * Utility to test sniffing a service for environment variables.
153
+ * Useful for debugging services that throw errors during sniffing.
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * import { sniffService } from '@geekmidas/constructs';
158
+ * import { authService } from './services/AuthService';
159
+ *
160
+ * const result = await sniffService(authService);
161
+ * console.log('Env vars:', result.envVars);
162
+ * console.log('Error:', result.error);
163
+ * ```
164
+ */
165
+ export async function sniffService(service: Service): Promise<SniffResult> {
166
+ const sniffer = new SnifferEnvironmentParser();
167
+
168
+ return sniffWithFireAndForget(sniffer, () =>
169
+ service.register({
170
+ envParser: sniffer as any,
171
+ context: snifferContext,
172
+ }),
173
+ );
174
+ }
175
+
176
+ // Export for testing
177
+ export { snifferContext };
@@ -1,7 +1,8 @@
1
- import type { PublishableMessage } from '@geekmidas/events';
1
+ import type { EventPublisher, PublishableMessage } from '@geekmidas/events';
2
2
  import type { Service, ServiceRegisterOptions } from '@geekmidas/services';
3
3
  import { describe, expect, it } from 'vitest';
4
4
  import { z } from 'zod/v4';
5
+ import { sniffService } from '../Construct';
5
6
  import { c } from '../crons';
6
7
  import { e } from '../endpoints';
7
8
  import { f } from '../functions';
@@ -240,23 +241,37 @@ describe('Construct environment getter', () => {
240
241
  | PublishableMessage<'user.created', { userId: string }>
241
242
  | PublishableMessage<'user.updated', { userId: string }>;
242
243
 
244
+ class UserEventPublisher implements EventPublisher<UserEvents> {
245
+ async publish(_events: UserEvents[]): Promise<void> {}
246
+ }
247
+
248
+ const eventPublisherService: Service<'events', UserEventPublisher> = {
249
+ serviceName: 'events' as const,
250
+ register() {
251
+ return new UserEventPublisher();
252
+ },
253
+ };
254
+
243
255
  const notificationService = {
244
256
  serviceName: 'notification' as const,
245
257
  register({ envParser }) {
246
- return envParser.create((get) => ({
247
- apiKey: get('NOTIFICATION_API_KEY').string(),
248
- endpoint: get('NOTIFICATION_ENDPOINT')
249
- .string()
250
- .url()
251
- .default('https://api.example.com/notify'),
252
- }));
258
+ return envParser
259
+ .create((get) => ({
260
+ apiKey: get('NOTIFICATION_API_KEY').string(),
261
+ endpoint: get('NOTIFICATION_ENDPOINT')
262
+ .string()
263
+ .url()
264
+ .default('https://api.example.com/notify'),
265
+ }))
266
+ .parse();
253
267
  },
254
268
  } satisfies Service<'notification', any>;
255
269
 
256
270
  const subscriber = s
271
+ .publisher(eventPublisherService)
257
272
  .services([notificationService])
258
273
  .subscribe('user.created')
259
- .handle(async ({ events }) => {
274
+ .handle(async () => {
260
275
  // Handle user created events
261
276
  });
262
277
 
@@ -355,5 +370,212 @@ describe('Construct environment getter', () => {
355
370
  'JSON_CONFIG',
356
371
  ]);
357
372
  });
373
+
374
+ it('should handle services that throw synchronous errors during registration', async () => {
375
+ const throwingService = {
376
+ serviceName: 'throwing' as const,
377
+ register({ envParser }) {
378
+ const config = envParser
379
+ .create((get) => ({
380
+ url: get('SERVICE_URL').string(),
381
+ }))
382
+ .parse();
383
+
384
+ // Simulate a library that validates config immediately
385
+ // Sniffer returns '' for strings, so this will throw
386
+ if (!config.url || config.url === '') {
387
+ throw new Error('Invalid URL provided');
388
+ }
389
+
390
+ return { url: config.url };
391
+ },
392
+ } satisfies Service<'throwing', any>;
393
+
394
+ // Verify env vars are captured even when service throws
395
+ const result = await sniffService(throwingService);
396
+ expect(result.envVars).toEqual(['SERVICE_URL']);
397
+ expect(result.error).toBeDefined();
398
+ expect(result.error?.message).toBe('Invalid URL provided');
399
+
400
+ // Also verify it works in a construct context with multiple services
401
+ const workingService = {
402
+ serviceName: 'working' as const,
403
+ register({ envParser }) {
404
+ return envParser
405
+ .create((get) => ({
406
+ key: get('API_KEY').string(),
407
+ }))
408
+ .parse();
409
+ },
410
+ } satisfies Service<'working', any>;
411
+
412
+ const fn = f
413
+ .services([throwingService, workingService])
414
+ .handle(async () => ({ success: true }));
415
+
416
+ const envVars = await fn.getEnvironment();
417
+ expect(envVars).toEqual(['API_KEY', 'SERVICE_URL']);
418
+ });
419
+
420
+ it('should handle services that return rejecting promises', async () => {
421
+ const asyncThrowingService = {
422
+ serviceName: 'asyncThrowing' as const,
423
+ async register({ envParser }) {
424
+ const config = envParser
425
+ .create((get) => ({
426
+ secret: get('AUTH_SECRET').string(),
427
+ frontendUrl: get('FRONTEND_URL').string(),
428
+ }))
429
+ .parse();
430
+
431
+ // Simulate an async library that validates config
432
+ await Promise.resolve();
433
+ if (!config.frontendUrl) {
434
+ throw new Error('Frontend URL is required');
435
+ }
436
+
437
+ return { config };
438
+ },
439
+ } satisfies Service<'asyncThrowing', any>;
440
+
441
+ // Verify env vars are captured even when service rejects
442
+ const result = await sniffService(asyncThrowingService);
443
+ expect(result.envVars).toEqual(['AUTH_SECRET', 'FRONTEND_URL']);
444
+ expect(result.error).toBeDefined();
445
+ expect(result.error?.message).toBe('Frontend URL is required');
446
+
447
+ // Also verify via construct
448
+ const fn = f
449
+ .services([asyncThrowingService])
450
+ .handle(async () => ({ success: true }));
451
+
452
+ const envVars = await fn.getEnvironment();
453
+ expect(envVars).toEqual(['AUTH_SECRET', 'FRONTEND_URL']);
454
+ });
455
+
456
+ it('should handle services that create fire-and-forget rejecting promises (BetterAuth scenario)', async () => {
457
+ // This test uses the REAL better-auth library to verify that
458
+ // the sniffer gracefully handles libraries that create internal
459
+ // fire-and-forget promises which reject on invalid config
460
+ const { betterAuth } = await import('better-auth');
461
+
462
+ const betterAuthService = {
463
+ serviceName: 'auth' as const,
464
+ register({ envParser }) {
465
+ const config = envParser
466
+ .create((get) => ({
467
+ secret: get('BETTER_AUTH_SECRET').string(),
468
+ baseURL: get('BETTER_AUTH_URL').string(),
469
+ trustedOrigins: get('BETTER_AUTH_TRUSTED_ORIGINS').string(),
470
+ }))
471
+ .parse();
472
+
473
+ // When sniffer runs, config values are empty strings
474
+ // BetterAuth will create fire-and-forget promises that reject
475
+ // when it tries to validate trustedOrigins with new URL('')
476
+ const auth = betterAuth({
477
+ secret: config.secret,
478
+ baseURL: config.baseURL,
479
+ trustedOrigins: config.trustedOrigins
480
+ ? config.trustedOrigins.split(',')
481
+ : [],
482
+ database: {
483
+ // Use memory adapter to avoid DB setup
484
+ type: 'sqlite',
485
+ url: ':memory:',
486
+ },
487
+ });
488
+
489
+ return auth;
490
+ },
491
+ } satisfies Service<'auth', any>;
492
+
493
+ // Verify env vars are captured even though BetterAuth's internal
494
+ // fire-and-forget promise will reject on invalid trustedOrigins
495
+ const result = await sniffService(betterAuthService);
496
+ expect(result.envVars).toEqual([
497
+ 'BETTER_AUTH_SECRET',
498
+ 'BETTER_AUTH_TRUSTED_ORIGINS',
499
+ 'BETTER_AUTH_URL',
500
+ ]);
501
+ // Synchronous registration succeeds
502
+ expect(result.error).toBeUndefined();
503
+ // But fire-and-forget rejections are captured from better-auth
504
+ expect(result.unhandledRejections.length).toBeGreaterThan(0);
505
+ // Log the actual errors for debugging visibility
506
+ console.log(
507
+ 'Captured better-auth unhandled rejections:',
508
+ result.unhandledRejections.map((e) => e.message),
509
+ );
510
+
511
+ // Most importantly: the process should NOT crash from unhandled rejection
512
+ const fn = f
513
+ .services([betterAuthService])
514
+ .handle(async () => ({ success: true }));
515
+
516
+ const envVars = await fn.getEnvironment();
517
+ expect(envVars).toEqual([
518
+ 'BETTER_AUTH_SECRET',
519
+ 'BETTER_AUTH_TRUSTED_ORIGINS',
520
+ 'BETTER_AUTH_URL',
521
+ ]);
522
+ });
523
+
524
+ it('should handle multiple problematic services without crashing', async () => {
525
+ const service1 = {
526
+ serviceName: 'service1' as const,
527
+ register({ envParser }) {
528
+ envParser.create((get) => ({
529
+ var1: get('VAR_1').string(),
530
+ }));
531
+ throw new Error('Service 1 failed');
532
+ },
533
+ } satisfies Service<'service1', any>;
534
+
535
+ const service2 = {
536
+ serviceName: 'service2' as const,
537
+ register({ envParser }) {
538
+ const config = envParser.create((get) => ({
539
+ var2: get('VAR_2').string(),
540
+ }));
541
+
542
+ // Fire-and-forget rejection
543
+ Promise.reject(new Error('Service 2 async error'));
544
+
545
+ return config;
546
+ },
547
+ } satisfies Service<'service2', any>;
548
+
549
+ const service3 = {
550
+ serviceName: 'service3' as const,
551
+ register({ envParser }) {
552
+ return envParser.create((get) => ({
553
+ var3: get('VAR_3').string(),
554
+ }));
555
+ },
556
+ } satisfies Service<'service3', any>;
557
+
558
+ // Verify individual services
559
+ const result1 = await sniffService(service1);
560
+ expect(result1.envVars).toEqual(['VAR_1']);
561
+ expect(result1.error?.message).toBe('Service 1 failed');
562
+
563
+ const result2 = await sniffService(service2);
564
+ expect(result2.envVars).toEqual(['VAR_2']);
565
+ // Fire-and-forget - no error captured
566
+ expect(result2.error).toBeUndefined();
567
+
568
+ const result3 = await sniffService(service3);
569
+ expect(result3.envVars).toEqual(['VAR_3']);
570
+ expect(result3.error).toBeUndefined();
571
+
572
+ // Verify all work together in construct
573
+ const fn = f
574
+ .services([service1, service2, service3])
575
+ .handle(async () => ({ success: true }));
576
+
577
+ const envVars = await fn.getEnvironment();
578
+ expect(envVars).toEqual(['VAR_1', 'VAR_2', 'VAR_3']);
579
+ });
358
580
  });
359
581
  });
@@ -292,9 +292,8 @@ export abstract class AmazonApiGatewayEndpoint<
292
292
  if (Endpoint.isSuccessStatus(statusCode)) {
293
293
  const logger = event.logger as TLogger;
294
294
  const serviceDiscovery = ServiceDiscovery.getInstance<
295
- ServiceRecord<TServices>,
296
- TLogger
297
- >(logger, this.envParser);
295
+ ServiceRecord<TServices>
296
+ >(this.envParser);
298
297
 
299
298
  // Publish events
300
299
  await publishConstructEvents(
@@ -541,8 +540,10 @@ export abstract class AmazonApiGatewayEndpoint<
541
540
  const requestId = context.awsRequestId;
542
541
  const logger = this.endpoint.logger.child({ requestId }) as TLogger;
543
542
 
543
+ // Cast event to any since Middy middlewares enrich the event with
544
+ // services, logger, session, etc. during the middleware chain execution
544
545
  return runWithRequestContext({ logger, requestId, startTime }, () =>
545
- chain(event, context),
546
+ chain(event as unknown as Parameters<typeof chain>[0], context),
546
547
  );
547
548
  };
548
549
 
@@ -162,7 +162,7 @@ export class HonoEndpoint<
162
162
  return parsed.value;
163
163
  }
164
164
  addRoute(
165
- serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,
165
+ serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>>,
166
166
  app: Hono,
167
167
  ): void {
168
168
  HonoEndpoint.addRoute(this.endpoint, serviceDiscovery, app);
@@ -175,7 +175,7 @@ export class HonoEndpoint<
175
175
  */
176
176
  static applyEventMiddleware(
177
177
  _app: Hono,
178
- _serviceDiscovery: ServiceDiscovery<any, any>,
178
+ _serviceDiscovery: ServiceDiscovery<any>,
179
179
  ) {
180
180
  // No-op: Event publishing is now handled per-route in addRoute
181
181
  // This avoids running middleware on every request including 404s
@@ -203,7 +203,7 @@ export class HonoEndpoint<
203
203
  TLogger extends Logger = Logger,
204
204
  >(
205
205
  endpoints: Endpoint<string, HttpMethod, any, any, TServices, TLogger>[],
206
- serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,
206
+ serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>>,
207
207
  app: Hono,
208
208
  options?: HonoEndpointOptions,
209
209
  ): void {
@@ -296,7 +296,7 @@ export class HonoEndpoint<
296
296
  TDatabase,
297
297
  TDatabaseServiceName
298
298
  >,
299
- serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>, TLogger>,
299
+ serviceDiscovery: ServiceDiscovery<ServiceRecord<TServices>>,
300
300
  app: Hono,
301
301
  ): void {
302
302
  const { route } = endpoint;