@geekmidas/constructs 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/{AWSLambdaFunction-DnMm4xvz.mjs → AWSLambdaFunction-BMTaCrG9.mjs} +3 -3
  2. package/dist/{AWSLambdaFunction-DnMm4xvz.mjs.map → AWSLambdaFunction-BMTaCrG9.mjs.map} +1 -1
  3. package/dist/{AWSLambdaFunction-CuG3HNZx.d.mts → AWSLambdaFunction-BfLF5vNa.d.cts} +5 -5
  4. package/dist/{AWSLambdaFunction-CuG3HNZx.d.mts.map → AWSLambdaFunction-BfLF5vNa.d.cts.map} +1 -1
  5. package/dist/{AWSLambdaFunction-Ba1DcsW2.cjs → AWSLambdaFunction-C1gRqLO7.cjs} +3 -3
  6. package/dist/{AWSLambdaFunction-Ba1DcsW2.cjs.map → AWSLambdaFunction-C1gRqLO7.cjs.map} +1 -1
  7. package/dist/{AWSLambdaFunction-CKe73Qr0.d.cts → AWSLambdaFunction-K94K8JU2.d.mts} +5 -5
  8. package/dist/{AWSLambdaFunction-CKe73Qr0.d.cts.map → AWSLambdaFunction-K94K8JU2.d.mts.map} +1 -1
  9. package/dist/{AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts → AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts} +4 -4
  10. package/dist/{AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map → AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts.map} +1 -1
  11. package/dist/{AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts → AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts} +4 -4
  12. package/dist/{AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map → AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts.map} +1 -1
  13. package/dist/{AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs → AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs} +2 -2
  14. package/dist/{AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map → AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs.map} +1 -1
  15. package/dist/{AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts → AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts} +2 -2
  16. package/dist/{AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map → AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts.map} +1 -1
  17. package/dist/{AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs → AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs} +2 -2
  18. package/dist/{AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map → AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs.map} +1 -1
  19. package/dist/{AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts → AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts} +2 -2
  20. package/dist/{AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map → AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts.map} +1 -1
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs → AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs} +2 -2
  22. package/dist/{AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map → AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs.map} +1 -1
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts → AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts} +3 -3
  24. package/dist/{AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map → AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts.map} +1 -1
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts → AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts} +3 -3
  26. package/dist/{AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map → AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts.map} +1 -1
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs → AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs} +2 -2
  28. package/dist/{AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map → AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs.map} +1 -1
  29. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts → AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts} +3 -3
  30. package/dist/{AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map → AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts.map} +1 -1
  31. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs → AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs} +2 -2
  32. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map → AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs.map} +1 -1
  33. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs → AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs} +2 -2
  34. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map → AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs.map} +1 -1
  35. package/dist/{AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts → AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts} +3 -3
  36. package/dist/{AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts.map → AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts.map} +1 -1
  37. package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts → BaseFunctionBuilder-BqZCqIeU.d.mts} +3 -3
  38. package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts.map → BaseFunctionBuilder-BqZCqIeU.d.mts.map} +1 -1
  39. package/dist/{BaseFunctionBuilder-CDfDWWAQ.d.mts → BaseFunctionBuilder-CcK691ni.d.cts} +3 -3
  40. package/dist/{BaseFunctionBuilder-CDfDWWAQ.d.mts.map → BaseFunctionBuilder-CcK691ni.d.cts.map} +1 -1
  41. package/dist/{BaseFunctionBuilder-0qlenb9z.mjs → BaseFunctionBuilder-Dsqe6pnn.mjs} +2 -2
  42. package/dist/{BaseFunctionBuilder-0qlenb9z.mjs.map → BaseFunctionBuilder-Dsqe6pnn.mjs.map} +1 -1
  43. package/dist/{BaseFunctionBuilder-D7o93EGv.cjs → BaseFunctionBuilder-Z0XwrKB5.cjs} +2 -2
  44. package/dist/{BaseFunctionBuilder-D7o93EGv.cjs.map → BaseFunctionBuilder-Z0XwrKB5.cjs.map} +1 -1
  45. package/dist/{Construct-D5dCvxZ3.mjs → Construct-BNDLJJfD.mjs} +56 -13
  46. package/dist/Construct-BNDLJJfD.mjs.map +1 -0
  47. package/dist/{Construct-BlnyYtJC.cjs → Construct-CPrCF8NK.cjs} +67 -12
  48. package/dist/Construct-CPrCF8NK.cjs.map +1 -0
  49. package/dist/{Construct-C4rPE67v.d.cts → Construct-Dl0l2d8d.d.cts} +30 -4
  50. package/dist/Construct-Dl0l2d8d.d.cts.map +1 -0
  51. package/dist/{Construct-dZiwVo0q.d.mts → Construct-E8QPyHh4.d.mts} +30 -4
  52. package/dist/Construct-E8QPyHh4.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-BAPQetlC.cjs → Cron-BmPNTLla.cjs} +3 -3
  58. package/dist/{Cron-BAPQetlC.cjs.map → Cron-BmPNTLla.cjs.map} +1 -1
  59. package/dist/{Cron-CAk_ddH8.mjs → Cron-BpJONaFv.mjs} +3 -3
  60. package/dist/{Cron-CAk_ddH8.mjs.map → Cron-BpJONaFv.mjs.map} +1 -1
  61. package/dist/{Cron-B6FnTu7k.d.cts → Cron-CnmLLh3E.d.mts} +3 -3
  62. package/dist/{Cron-B6FnTu7k.d.cts.map → Cron-CnmLLh3E.d.mts.map} +1 -1
  63. package/dist/{Cron-D3bEljxQ.d.mts → Cron-DufAeHry.d.cts} +3 -3
  64. package/dist/{Cron-D3bEljxQ.d.mts.map → Cron-DufAeHry.d.cts.map} +1 -1
  65. package/dist/{CronBuilder-e8TaHPYm.mjs → CronBuilder-02HSIHJr.mjs} +4 -4
  66. package/dist/{CronBuilder-e8TaHPYm.mjs.map → CronBuilder-02HSIHJr.mjs.map} +1 -1
  67. package/dist/{CronBuilder-DxXA5ymv.cjs → CronBuilder-DC2zUS8a.cjs} +4 -4
  68. package/dist/{CronBuilder-DxXA5ymv.cjs.map → CronBuilder-DC2zUS8a.cjs.map} +1 -1
  69. package/dist/{CronBuilder-CA8euP0z.d.cts → CronBuilder-anUSbMxb.d.mts} +5 -5
  70. package/dist/{CronBuilder-CA8euP0z.d.cts.map → CronBuilder-anUSbMxb.d.mts.map} +1 -1
  71. package/dist/{CronBuilder-DvdiKzhq.d.mts → CronBuilder-fyqf_X8n.d.cts} +5 -5
  72. package/dist/{CronBuilder-DvdiKzhq.d.mts.map → CronBuilder-fyqf_X8n.d.cts.map} +1 -1
  73. package/dist/{Endpoint-DxvnlfXg.cjs → Endpoint-BCWVbi8l.cjs} +3 -3
  74. package/dist/{Endpoint-DxvnlfXg.cjs.map → Endpoint-BCWVbi8l.cjs.map} +1 -1
  75. package/dist/{Endpoint-BOlbY5iq.d.cts → Endpoint-BlcHiGNx.d.cts} +2 -2
  76. package/dist/{Endpoint-Dlv7nxgj.d.mts.map → Endpoint-BlcHiGNx.d.cts.map} +1 -1
  77. package/dist/{Endpoint-Dlv7nxgj.d.mts → Endpoint-DEHuy46S.d.mts} +2 -2
  78. package/dist/{Endpoint-BOlbY5iq.d.cts.map → Endpoint-DEHuy46S.d.mts.map} +1 -1
  79. package/dist/{Endpoint-BbdNmtlM.mjs → Endpoint-ygxv2Ia6.mjs} +3 -3
  80. package/dist/{Endpoint-BbdNmtlM.mjs.map → Endpoint-ygxv2Ia6.mjs.map} +1 -1
  81. package/dist/{EndpointBuilder-CFfWWjUa.d.cts → EndpointBuilder-DPLAUHqg.d.cts} +3 -3
  82. package/dist/{EndpointBuilder-T_K2NLWw.d.mts.map → EndpointBuilder-DPLAUHqg.d.cts.map} +1 -1
  83. package/dist/{EndpointBuilder-T_K2NLWw.d.mts → EndpointBuilder-DaeCeneF.d.mts} +3 -3
  84. package/dist/{EndpointBuilder-CFfWWjUa.d.cts.map → EndpointBuilder-DaeCeneF.d.mts.map} +1 -1
  85. package/dist/{EndpointBuilder-40Iz5CjY.cjs → EndpointBuilder-J5D67Y6a.cjs} +4 -4
  86. package/dist/{EndpointBuilder-40Iz5CjY.cjs.map → EndpointBuilder-J5D67Y6a.cjs.map} +1 -1
  87. package/dist/{EndpointBuilder-BaVvhW9m.mjs → EndpointBuilder-tn4zqoyw.mjs} +4 -4
  88. package/dist/{EndpointBuilder-BaVvhW9m.mjs.map → EndpointBuilder-tn4zqoyw.mjs.map} +1 -1
  89. package/dist/{EndpointFactory-DfNjSgVG.mjs → EndpointFactory-CIUZTTAF.mjs} +2 -2
  90. package/dist/{EndpointFactory-DfNjSgVG.mjs.map → EndpointFactory-CIUZTTAF.mjs.map} +1 -1
  91. package/dist/{EndpointFactory-ChzBVEM9.d.cts → EndpointFactory-CiKcb5PX.d.cts} +3 -3
  92. package/dist/{EndpointFactory-ChzBVEM9.d.cts.map → EndpointFactory-CiKcb5PX.d.cts.map} +1 -1
  93. package/dist/{EndpointFactory-GAL_tuPf.d.mts → EndpointFactory-DufM0t2z.d.mts} +3 -3
  94. package/dist/{EndpointFactory-GAL_tuPf.d.mts.map → EndpointFactory-DufM0t2z.d.mts.map} +1 -1
  95. package/dist/{EndpointFactory-r6jxPvQ8.cjs → EndpointFactory-d5uwWFkK.cjs} +2 -2
  96. package/dist/{EndpointFactory-r6jxPvQ8.cjs.map → EndpointFactory-d5uwWFkK.cjs.map} +1 -1
  97. package/dist/{Function-iLKrUXuw.cjs → Function-2qWSZqYB.cjs} +2 -2
  98. package/dist/{Function-iLKrUXuw.cjs.map → Function-2qWSZqYB.cjs.map} +1 -1
  99. package/dist/{Function-DBmU3uGI.d.mts → Function-CbEohg13.d.cts} +3 -3
  100. package/dist/{Function-DBmU3uGI.d.mts.map → Function-CbEohg13.d.cts.map} +1 -1
  101. package/dist/{Function-D8tBamM3.mjs → Function-CdF1HmFu.mjs} +2 -2
  102. package/dist/{Function-D8tBamM3.mjs.map → Function-CdF1HmFu.mjs.map} +1 -1
  103. package/dist/{Function-PNW4HdNE.d.cts → Function-EjIOLxlh.d.mts} +3 -3
  104. package/dist/{Function-PNW4HdNE.d.cts.map → Function-EjIOLxlh.d.mts.map} +1 -1
  105. package/dist/{FunctionBuilder-BEpPgeho.cjs → FunctionBuilder-B-pbgm09.cjs} +4 -4
  106. package/dist/{FunctionBuilder-BEpPgeho.cjs.map → FunctionBuilder-B-pbgm09.cjs.map} +1 -1
  107. package/dist/{FunctionBuilder-Bv4H2I1a.d.mts → FunctionBuilder-CX3ooNdq.d.cts} +5 -5
  108. package/dist/{FunctionBuilder-Bv4H2I1a.d.mts.map → FunctionBuilder-CX3ooNdq.d.cts.map} +1 -1
  109. package/dist/{FunctionBuilder-DCqXIHaq.d.cts → FunctionBuilder-D11ytDyy.d.mts} +5 -5
  110. package/dist/{FunctionBuilder-DCqXIHaq.d.cts.map → FunctionBuilder-D11ytDyy.d.mts.map} +1 -1
  111. package/dist/{FunctionBuilder-BwNF99AB.mjs → FunctionBuilder-DaWVthAJ.mjs} +4 -4
  112. package/dist/{FunctionBuilder-BwNF99AB.mjs.map → FunctionBuilder-DaWVthAJ.mjs.map} +1 -1
  113. package/dist/{FunctionExecutionWrapper-BclgIztn.d.cts → FunctionExecutionWrapper-BJcRjH9Z.d.cts} +2 -2
  114. package/dist/{FunctionExecutionWrapper-BclgIztn.d.cts.map → FunctionExecutionWrapper-BJcRjH9Z.d.cts.map} +1 -1
  115. package/dist/{FunctionExecutionWrapper-BjF6t9Hb.cjs → FunctionExecutionWrapper-C6ChBNHs.cjs} +2 -2
  116. package/dist/{FunctionExecutionWrapper-BjF6t9Hb.cjs.map → FunctionExecutionWrapper-C6ChBNHs.cjs.map} +1 -1
  117. package/dist/{FunctionExecutionWrapper-Dq21c6vt.d.mts → FunctionExecutionWrapper-D3RNjGIR.d.mts} +2 -2
  118. package/dist/{FunctionExecutionWrapper-Dq21c6vt.d.mts.map → FunctionExecutionWrapper-D3RNjGIR.d.mts.map} +1 -1
  119. package/dist/{FunctionExecutionWrapper-B__HE_B-.mjs → FunctionExecutionWrapper-Dj3pmXaN.mjs} +2 -2
  120. package/dist/{FunctionExecutionWrapper-B__HE_B-.mjs.map → FunctionExecutionWrapper-Dj3pmXaN.mjs.map} +1 -1
  121. package/dist/{HonoEndpointAdaptor-HukjdF6M.d.mts → HonoEndpointAdaptor-CKP6nrG2.d.mts} +4 -4
  122. package/dist/{HonoEndpointAdaptor-Dkkemmbo.d.cts.map → HonoEndpointAdaptor-CKP6nrG2.d.mts.map} +1 -1
  123. package/dist/{HonoEndpointAdaptor-C_ym_Sbr.mjs → HonoEndpointAdaptor-Cc8Rnp9G.mjs} +3 -3
  124. package/dist/{HonoEndpointAdaptor-C_ym_Sbr.mjs.map → HonoEndpointAdaptor-Cc8Rnp9G.mjs.map} +1 -1
  125. package/dist/{HonoEndpointAdaptor-Dkkemmbo.d.cts → HonoEndpointAdaptor-hrrvyfw9.d.cts} +2 -2
  126. package/dist/{HonoEndpointAdaptor-HukjdF6M.d.mts.map → HonoEndpointAdaptor-hrrvyfw9.d.cts.map} +1 -1
  127. package/dist/{HonoEndpointAdaptor-DiQH0eTb.cjs → HonoEndpointAdaptor-xGnDZa3a.cjs} +3 -3
  128. package/dist/{HonoEndpointAdaptor-DiQH0eTb.cjs.map → HonoEndpointAdaptor-xGnDZa3a.cjs.map} +1 -1
  129. package/dist/{Subscriber--zUjZDR6.d.cts → Subscriber-BBcIOkhW.d.cts} +2 -2
  130. package/dist/{Subscriber--zUjZDR6.d.cts.map → Subscriber-BBcIOkhW.d.cts.map} +1 -1
  131. package/dist/{Subscriber-0Ac7cXID.d.mts → Subscriber-BpTAXvbM.d.mts} +2 -2
  132. package/dist/{Subscriber-0Ac7cXID.d.mts.map → Subscriber-BpTAXvbM.d.mts.map} +1 -1
  133. package/dist/{Subscriber-CoFmHMIM.cjs → Subscriber-CL4iYm01.cjs} +2 -2
  134. package/dist/{Subscriber-CoFmHMIM.cjs.map → Subscriber-CL4iYm01.cjs.map} +1 -1
  135. package/dist/{Subscriber-BgZ8T-O2.mjs → Subscriber-CZ8Smwd2.mjs} +2 -2
  136. package/dist/{Subscriber-BgZ8T-O2.mjs.map → Subscriber-CZ8Smwd2.mjs.map} +1 -1
  137. package/dist/{SubscriberBuilder-DWXWZBPo.mjs → SubscriberBuilder-CxQg3TTm.mjs} +2 -2
  138. package/dist/{SubscriberBuilder-DWXWZBPo.mjs.map → SubscriberBuilder-CxQg3TTm.mjs.map} +1 -1
  139. package/dist/{SubscriberBuilder-JlxhyqGp.cjs → SubscriberBuilder-D0OS3hd7.cjs} +2 -2
  140. package/dist/{SubscriberBuilder-JlxhyqGp.cjs.map → SubscriberBuilder-D0OS3hd7.cjs.map} +1 -1
  141. package/dist/{SubscriberBuilder-D8cmUHee.d.mts → SubscriberBuilder-D7IgufwB.d.cts} +3 -3
  142. package/dist/{SubscriberBuilder-D8cmUHee.d.mts.map → SubscriberBuilder-D7IgufwB.d.cts.map} +1 -1
  143. package/dist/{SubscriberBuilder-DciTqb-7.d.cts → SubscriberBuilder-DOFBbWLt.d.mts} +3 -3
  144. package/dist/{SubscriberBuilder-DciTqb-7.d.cts.map → SubscriberBuilder-DOFBbWLt.d.mts.map} +1 -1
  145. package/dist/{TestEndpointAdaptor-Boijwbmz.d.mts → TestEndpointAdaptor-BnJusjf7.d.mts} +2 -2
  146. package/dist/{TestEndpointAdaptor-Boijwbmz.d.mts.map → TestEndpointAdaptor-BnJusjf7.d.mts.map} +1 -1
  147. package/dist/{TestEndpointAdaptor-OiA2JLDp.mjs → TestEndpointAdaptor-CPL8ru6q.mjs} +2 -2
  148. package/dist/{TestEndpointAdaptor-OiA2JLDp.mjs.map → TestEndpointAdaptor-CPL8ru6q.mjs.map} +1 -1
  149. package/dist/{TestEndpointAdaptor-Dk75ExxE.cjs → TestEndpointAdaptor-Ca4K26_d.cjs} +2 -2
  150. package/dist/{TestEndpointAdaptor-Dk75ExxE.cjs.map → TestEndpointAdaptor-Ca4K26_d.cjs.map} +1 -1
  151. package/dist/{TestEndpointAdaptor-DdwpRyNh.d.cts → TestEndpointAdaptor-EPPTjntv.d.cts} +2 -2
  152. package/dist/{TestEndpointAdaptor-DdwpRyNh.d.cts.map → TestEndpointAdaptor-EPPTjntv.d.cts.map} +1 -1
  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 +7 -7
  175. package/dist/crons/index.d.mts +7 -7
  176. package/dist/crons/index.mjs +7 -7
  177. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  178. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +7 -7
  179. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +7 -7
  180. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  181. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  182. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -8
  183. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +8 -8
  184. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  185. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  186. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +8 -8
  187. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +8 -8
  188. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  189. package/dist/endpoints/Endpoint.cjs +6 -6
  190. package/dist/endpoints/Endpoint.d.cts +6 -6
  191. package/dist/endpoints/Endpoint.d.mts +6 -6
  192. package/dist/endpoints/Endpoint.mjs +6 -6
  193. package/dist/endpoints/EndpointBuilder.cjs +7 -7
  194. package/dist/endpoints/EndpointBuilder.d.cts +7 -7
  195. package/dist/endpoints/EndpointBuilder.d.mts +7 -7
  196. package/dist/endpoints/EndpointBuilder.mjs +7 -7
  197. package/dist/endpoints/EndpointFactory.cjs +8 -8
  198. package/dist/endpoints/EndpointFactory.d.cts +8 -8
  199. package/dist/endpoints/EndpointFactory.d.mts +8 -8
  200. package/dist/endpoints/EndpointFactory.mjs +8 -8
  201. package/dist/endpoints/HonoEndpointAdaptor.cjs +8 -8
  202. package/dist/endpoints/HonoEndpointAdaptor.d.cts +7 -7
  203. package/dist/endpoints/HonoEndpointAdaptor.d.mts +7 -7
  204. package/dist/endpoints/HonoEndpointAdaptor.mjs +8 -8
  205. package/dist/endpoints/TestEndpointAdaptor.cjs +7 -7
  206. package/dist/endpoints/TestEndpointAdaptor.d.cts +7 -7
  207. package/dist/endpoints/TestEndpointAdaptor.d.mts +7 -7
  208. package/dist/endpoints/TestEndpointAdaptor.mjs +7 -7
  209. package/dist/endpoints/audit.d.cts +6 -6
  210. package/dist/endpoints/audit.d.mts +6 -6
  211. package/dist/endpoints/helpers.cjs +7 -7
  212. package/dist/endpoints/helpers.d.cts +6 -6
  213. package/dist/endpoints/helpers.d.mts +6 -6
  214. package/dist/endpoints/helpers.mjs +7 -7
  215. package/dist/endpoints/index.cjs +8 -8
  216. package/dist/endpoints/index.d.cts +10 -10
  217. package/dist/endpoints/index.d.mts +12 -12
  218. package/dist/endpoints/index.mjs +8 -8
  219. package/dist/endpoints/lazyAccessors.d.cts +7 -7
  220. package/dist/endpoints/lazyAccessors.d.mts +7 -7
  221. package/dist/endpoints/processAudits.d.cts +6 -6
  222. package/dist/endpoints/processAudits.d.mts +6 -6
  223. package/dist/endpoints/rls.d.cts +6 -6
  224. package/dist/endpoints/rls.d.mts +6 -6
  225. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  226. package/dist/functions/AWSLambdaFunction.d.cts +4 -4
  227. package/dist/functions/AWSLambdaFunction.d.mts +4 -4
  228. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  229. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  230. package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
  231. package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
  232. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  233. package/dist/functions/Function.cjs +2 -2
  234. package/dist/functions/Function.d.cts +2 -2
  235. package/dist/functions/Function.d.mts +2 -2
  236. package/dist/functions/Function.mjs +2 -2
  237. package/dist/functions/FunctionBuilder.cjs +4 -4
  238. package/dist/functions/FunctionBuilder.d.cts +4 -4
  239. package/dist/functions/FunctionBuilder.d.mts +4 -4
  240. package/dist/functions/FunctionBuilder.mjs +4 -4
  241. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  242. package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
  243. package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
  244. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  245. package/dist/functions/TestFunctionAdaptor.cjs +4 -4
  246. package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
  247. package/dist/functions/TestFunctionAdaptor.d.mts +2 -2
  248. package/dist/functions/TestFunctionAdaptor.mjs +4 -4
  249. package/dist/functions/index.cjs +5 -5
  250. package/dist/functions/index.d.cts +5 -5
  251. package/dist/functions/index.d.mts +5 -5
  252. package/dist/functions/index.mjs +5 -5
  253. package/dist/{functions-BkKXVeHm.cjs → functions-CUEv5NC3.cjs} +2 -2
  254. package/dist/{functions-BkKXVeHm.cjs.map → functions-CUEv5NC3.cjs.map} +1 -1
  255. package/dist/functions-DOYBrb7n.mjs +8 -0
  256. package/dist/{functions-C3A1vMRW.mjs.map → functions-DOYBrb7n.mjs.map} +1 -1
  257. package/dist/{helpers-DgsMFMUV.mjs → helpers-Dl1eszfi.mjs} +2 -2
  258. package/dist/{helpers-DgsMFMUV.mjs.map → helpers-Dl1eszfi.mjs.map} +1 -1
  259. package/dist/{helpers-BelEzV4U.cjs → helpers-QMdfdnvU.cjs} +2 -2
  260. package/dist/{helpers-BelEzV4U.cjs.map → helpers-QMdfdnvU.cjs.map} +1 -1
  261. package/dist/{index-D0fp_IK1.d.cts → index-BrGtMlpJ.d.cts} +2 -2
  262. package/dist/{index-CgAQHr3f.d.mts.map → index-BrGtMlpJ.d.cts.map} +1 -1
  263. package/dist/index-Dn4py3Db.d.mts +12 -0
  264. package/dist/{index-D0fp_IK1.d.cts.map → index-Dn4py3Db.d.mts.map} +1 -1
  265. package/dist/index.cjs +4 -2
  266. package/dist/index.d.cts +2 -2
  267. package/dist/index.d.mts +2 -2
  268. package/dist/index.mjs +2 -2
  269. package/dist/{lazyAccessors-B2ILzU-j.d.mts → lazyAccessors-BFAj2-S4.d.mts} +2 -2
  270. package/dist/{lazyAccessors-B2ILzU-j.d.mts.map → lazyAccessors-BFAj2-S4.d.mts.map} +1 -1
  271. package/dist/{lazyAccessors-Bcpi06ed.d.cts → lazyAccessors-knaNZuTN.d.cts} +2 -2
  272. package/dist/{lazyAccessors-Bcpi06ed.d.cts.map → lazyAccessors-knaNZuTN.d.cts.map} +1 -1
  273. package/dist/{publisher-C4BhHB5I.d.cts → publisher-BXG9YiRi.d.mts} +3 -3
  274. package/dist/{publisher-C4BhHB5I.d.cts.map → publisher-BXG9YiRi.d.mts.map} +1 -1
  275. package/dist/{publisher-NE-GnXL8.d.mts → publisher-D9ngDXg3.d.cts} +3 -3
  276. package/dist/{publisher-NE-GnXL8.d.mts.map → publisher-D9ngDXg3.d.cts.map} +1 -1
  277. package/dist/publisher.d.cts +2 -2
  278. package/dist/publisher.d.mts +2 -2
  279. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
  280. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
  281. package/dist/subscribers/Subscriber.cjs +2 -2
  282. package/dist/subscribers/Subscriber.d.cts +2 -2
  283. package/dist/subscribers/Subscriber.d.mts +2 -2
  284. package/dist/subscribers/Subscriber.mjs +2 -2
  285. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  286. package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
  287. package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
  288. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  289. package/dist/subscribers/index.cjs +3 -3
  290. package/dist/subscribers/index.d.cts +3 -3
  291. package/dist/subscribers/index.d.mts +5 -5
  292. package/dist/subscribers/index.d.mts.map +1 -1
  293. package/dist/subscribers/index.mjs +3 -3
  294. package/package.json +10 -9
  295. package/src/Construct.ts +81 -17
  296. package/src/__tests__/Construct.environment.spec.ts +231 -9
  297. package/src/index.ts +6 -1
  298. package/dist/Construct-BlnyYtJC.cjs.map +0 -1
  299. package/dist/Construct-C4rPE67v.d.cts.map +0 -1
  300. package/dist/Construct-D5dCvxZ3.mjs.map +0 -1
  301. package/dist/Construct-dZiwVo0q.d.mts.map +0 -1
  302. package/dist/functions-C3A1vMRW.mjs +0 -8
  303. package/dist/index-CgAQHr3f.d.mts +0 -12
@@ -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
  });
package/src/index.ts CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  // Re-export from services for convenience
4
4
  export type { Service, ServiceRecord } from '@geekmidas/services';
5
- export { Construct, ConstructType } from './Construct';
5
+ export {
6
+ Construct,
7
+ ConstructType,
8
+ snifferContext,
9
+ sniffService,
10
+ } from './Construct';
6
11
  // Telemetry interface
7
12
  export type {
8
13
  Telemetry,
@@ -1 +0,0 @@
1
- {"version":3,"file":"Construct-BlnyYtJC.cjs","names":["snifferContext: ServiceContext","type: ConstructType","logger: TLogger","services: TServices","events: MappedEvent<T, any>[]","publisherService?: Service<TServiceName, T>","outputSchema?: OutSchema","timeout?: number","memorySize?: number","auditorStorageService?: Service<\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditStorage\n\t\t>","services: Service[]","SnifferEnvironmentParser"],"sources":["../src/Construct.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service, ServiceContext } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport compact from 'lodash.compact';\n\n// Cache for service environment variables to handle singleton services\n// Key: service class/constructor, Value: array of env var names\nconst serviceEnvCache = new Map<Service, string[]>();\n\n/**\n * Noop context for environment sniffing.\n * Used when calling service.register() to detect env vars without a real request.\n * Returns dummy values since services should only use context in instance methods,\n * not during registration.\n */\nconst snifferContext: ServiceContext = {\n\tgetLogger() {\n\t\t// Return a noop logger for sniffing - services shouldn't log during registration\n\t\treturn {\n\t\t\tdebug: () => {},\n\t\t\tinfo: () => {},\n\t\t\twarn: () => {},\n\t\t\terror: () => {},\n\t\t\tchild: () => snifferContext.getLogger(),\n\t\t} as unknown as Logger;\n\t},\n\tgetRequestId() {\n\t\treturn 'sniffer-context';\n\t},\n\tgetRequestStartTime() {\n\t\treturn Date.now();\n\t},\n\thasContext() {\n\t\treturn false;\n\t},\n};\n\nexport abstract class Construct<\n\tTLogger extends Logger = Logger,\n\tTServiceName extends string = string,\n\tT extends EventPublisher<any> | undefined = undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTAuditStorageServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n> {\n\tconstructor(\n\t\tpublic readonly type: ConstructType,\n\t\tpublic readonly logger: TLogger,\n\t\tpublic readonly services: TServices,\n\t\tpublic readonly events: MappedEvent<T, any>[] = [],\n\n\t\tpublic readonly publisherService?: Service<TServiceName, T>,\n\t\tpublic outputSchema?: OutSchema,\n\t\tpublic readonly timeout?: number,\n\t\tpublic readonly memorySize?: number,\n\t\tpublic readonly auditorStorageService?: Service<\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditStorage\n\t\t>,\n\t) {}\n\n\t/**\n\t * Returns an array of environment variable names required by this construct's services.\n\t * This is determined by running a \"sniffer\" EnvironmentParser through each service's\n\t * register method to track which environment variables are accessed.\n\t *\n\t * Results are cached per service class to handle singleton patterns where\n\t * subsequent register() calls may short-circuit and not access env vars.\n\t *\n\t * @returns Promise that resolves to array of environment variable names, sorted alphabetically\n\t *\n\t * @example\n\t * ```typescript\n\t * const endpoint = e\n\t * .services([databaseService, authService])\n\t * .get('/users')\n\t * .handle(async () => []);\n\t *\n\t * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n\t * ```\n\t */\n\tasync getEnvironment(): Promise<string[]> {\n\t\tconst envVars = new Set<string>();\n\t\tconst services: Service[] = compact([\n\t\t\t...this.services,\n\t\t\tthis.publisherService,\n\t\t\tthis.auditorStorageService,\n\t\t]);\n\n\t\ttry {\n\t\t\tfor (const service of services) {\n\t\t\t\t// Check cache first - handles singleton services that short-circuit\n\t\t\t\tif (serviceEnvCache.has(service)) {\n\t\t\t\t\tconst cached = serviceEnvCache.get(service)!;\n\t\t\t\t\tcached.forEach((v) => envVars.add(v));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Sniff the service for env vars\n\t\t\t\tconst sniffer = new SnifferEnvironmentParser();\n\t\t\t\ttry {\n\t\t\t\t\tconst result = service.register({\n\t\t\t\t\t\tenvParser: sniffer as any,\n\t\t\t\t\t\tcontext: snifferContext,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Await if it's a Promise (async services)\n\t\t\t\t\tif (result && typeof result === 'object' && 'then' in result) {\n\t\t\t\t\t\tawait Promise.resolve(result);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Service registration may fail but env vars are still tracked\n\t\t\t\t}\n\n\t\t\t\t// Cache and collect the env vars\n\t\t\t\tconst serviceEnvVars = sniffer.getEnvironmentVariables();\n\t\t\t\tserviceEnvCache.set(service, serviceEnvVars);\n\t\t\t\tserviceEnvVars.forEach((v) => envVars.add(v));\n\t\t\t}\n\n\t\t\treturn Array.from(envVars).sort();\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\n\t\t\t\t{ error },\n\t\t\t\t'Error determining environment variables for construct',\n\t\t\t);\n\n\t\t\treturn [];\n\t\t}\n\t}\n}\n\nexport enum ConstructType {\n\tCron = 'dev.geekmidas.function.cron',\n\tEndpoint = 'dev.geekmidas.function.endpoint',\n\tFunction = 'dev.geekmidas.function.function',\n\tSubscriber = 'dev.geekmidas.function.subscriber',\n}\n"],"mappings":";;;;;AAUA,MAAM,kCAAkB,IAAI;;;;;;;AAQ5B,MAAMA,iBAAiC;CACtC,YAAY;AAEX,SAAO;GACN,OAAO,MAAM,CAAE;GACf,MAAM,MAAM,CAAE;GACd,MAAM,MAAM,CAAE;GACd,OAAO,MAAM,CAAE;GACf,OAAO,MAAM,eAAe,WAAW;EACvC;CACD;CACD,eAAe;AACd,SAAO;CACP;CACD,sBAAsB;AACrB,SAAO,KAAK,KAAK;CACjB;CACD,aAAa;AACZ,SAAO;CACP;AACD;AAED,IAAsB,YAAtB,MAQE;CACD,YACiBC,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIf;EAbe;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAIb;;;;;;;;;;;;;;;;;;;;;CAsBJ,MAAM,iBAAoC;EACzC,MAAM,0BAAU,IAAI;EACpB,MAAMC,WAAsB,4BAAQ;GACnC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;EACL,EAAC;AAEF,MAAI;AACH,QAAK,MAAM,WAAW,UAAU;AAE/B,QAAI,gBAAgB,IAAI,QAAQ,EAAE;KACjC,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAC3C,YAAO,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AACrC;IACA;IAGD,MAAM,UAAU,IAAIC;AACpB,QAAI;KACH,MAAM,SAAS,QAAQ,SAAS;MAC/B,WAAW;MACX,SAAS;KACT,EAAC;AAGF,SAAI,iBAAiB,WAAW,YAAY,UAAU,OACrD,OAAM,QAAQ,QAAQ,OAAO;IAE9B,QAAO,CAEP;IAGD,MAAM,iBAAiB,QAAQ,yBAAyB;AACxD,oBAAgB,IAAI,SAAS,eAAe;AAC5C,mBAAe,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;GAC7C;AAED,UAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;EACjC,SAAQ,OAAO;AACf,QAAK,OAAO,MACX,EAAE,MAAO,GACT,wDACA;AAED,UAAO,CAAE;EACT;CACD;AACD;AAED,IAAY,0DAAL;AACN;AACA;AACA;AACA;;AACA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Construct-C4rPE67v.d.cts","names":[],"sources":["../src/Construct.ts"],"sourcesContent":[],"mappings":";;;;;;;uBAwCsB,0BACL,SAAS,wDAEf,+DACQ,4DACA,wFAEI;iBAGC;EAVF,SAAA,MAAS,EAWL,OAXK;EAAA,SAAA,QAAA,EAYH,SAZG;EAAA,SACd,MAAA,EAYS,WAZT,CAYqB,CAZrB,EAAA,GAAA,CAAA,EAAA;EAAM,SAAG,gBAAA,CAAA,EAcW,OAdX,CAcmB,YAdnB,EAciC,CAdjC,CAAA,GAAA,SAAA;EAAM,YAErB,CAAA,EAaa,SAbb,GAAA,SAAA;EAAc,SACN,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAgB,SAChB,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAO,SAEH,qBAAA,CAAA,EAYmB,OAZnB,CAapB,wBAboB,EAcpB,aAdoB,CAAA,GAAA,SAAA;EAAY,WAGX,CAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EACE,OADF,EAAA,QAAA,EAEI,SAFJ,EAAA,MAAA,CAAA,EAGE,WAHF,CAGc,CAHd,EAAA,GAAA,CAAA,EAAA,EAAA,gBAAA,CAAA,EAKa,OALb,CAKqB,YALrB,EAKmC,CALnC,CAAA,GAAA,SAAA,EAAA,YAAA,CAAA,EAMA,SANA,GAAA,SAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,qBAAA,CAAA,EASkB,OATlB,CAUrB,wBAVqB,EAWrB,aAXqB,CAAA,GAAA,SAAA;EAAa;;;;;;;;;;;;;;;;;;;;EAMJ,cAI9B,CAAA,CAAA,EAyBsB,OAzBtB,CAAA,MAAA,EAAA,CAAA;;AADuC,aA6E9B,aAAA;EA7EqC,IA0BxB,GAAA,6BAAA;EAAO,QAAA,GAAA,iCAAA;EAmDpB,QAAA,GAAA,iCAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Construct-D5dCvxZ3.mjs","names":["snifferContext: ServiceContext","type: ConstructType","logger: TLogger","services: TServices","events: MappedEvent<T, any>[]","publisherService?: Service<TServiceName, T>","outputSchema?: OutSchema","timeout?: number","memorySize?: number","auditorStorageService?: Service<\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditStorage\n\t\t>","services: Service[]"],"sources":["../src/Construct.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service, ServiceContext } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport compact from 'lodash.compact';\n\n// Cache for service environment variables to handle singleton services\n// Key: service class/constructor, Value: array of env var names\nconst serviceEnvCache = new Map<Service, string[]>();\n\n/**\n * Noop context for environment sniffing.\n * Used when calling service.register() to detect env vars without a real request.\n * Returns dummy values since services should only use context in instance methods,\n * not during registration.\n */\nconst snifferContext: ServiceContext = {\n\tgetLogger() {\n\t\t// Return a noop logger for sniffing - services shouldn't log during registration\n\t\treturn {\n\t\t\tdebug: () => {},\n\t\t\tinfo: () => {},\n\t\t\twarn: () => {},\n\t\t\terror: () => {},\n\t\t\tchild: () => snifferContext.getLogger(),\n\t\t} as unknown as Logger;\n\t},\n\tgetRequestId() {\n\t\treturn 'sniffer-context';\n\t},\n\tgetRequestStartTime() {\n\t\treturn Date.now();\n\t},\n\thasContext() {\n\t\treturn false;\n\t},\n};\n\nexport abstract class Construct<\n\tTLogger extends Logger = Logger,\n\tTServiceName extends string = string,\n\tT extends EventPublisher<any> | undefined = undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTAuditStorageServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n> {\n\tconstructor(\n\t\tpublic readonly type: ConstructType,\n\t\tpublic readonly logger: TLogger,\n\t\tpublic readonly services: TServices,\n\t\tpublic readonly events: MappedEvent<T, any>[] = [],\n\n\t\tpublic readonly publisherService?: Service<TServiceName, T>,\n\t\tpublic outputSchema?: OutSchema,\n\t\tpublic readonly timeout?: number,\n\t\tpublic readonly memorySize?: number,\n\t\tpublic readonly auditorStorageService?: Service<\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditStorage\n\t\t>,\n\t) {}\n\n\t/**\n\t * Returns an array of environment variable names required by this construct's services.\n\t * This is determined by running a \"sniffer\" EnvironmentParser through each service's\n\t * register method to track which environment variables are accessed.\n\t *\n\t * Results are cached per service class to handle singleton patterns where\n\t * subsequent register() calls may short-circuit and not access env vars.\n\t *\n\t * @returns Promise that resolves to array of environment variable names, sorted alphabetically\n\t *\n\t * @example\n\t * ```typescript\n\t * const endpoint = e\n\t * .services([databaseService, authService])\n\t * .get('/users')\n\t * .handle(async () => []);\n\t *\n\t * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n\t * ```\n\t */\n\tasync getEnvironment(): Promise<string[]> {\n\t\tconst envVars = new Set<string>();\n\t\tconst services: Service[] = compact([\n\t\t\t...this.services,\n\t\t\tthis.publisherService,\n\t\t\tthis.auditorStorageService,\n\t\t]);\n\n\t\ttry {\n\t\t\tfor (const service of services) {\n\t\t\t\t// Check cache first - handles singleton services that short-circuit\n\t\t\t\tif (serviceEnvCache.has(service)) {\n\t\t\t\t\tconst cached = serviceEnvCache.get(service)!;\n\t\t\t\t\tcached.forEach((v) => envVars.add(v));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Sniff the service for env vars\n\t\t\t\tconst sniffer = new SnifferEnvironmentParser();\n\t\t\t\ttry {\n\t\t\t\t\tconst result = service.register({\n\t\t\t\t\t\tenvParser: sniffer as any,\n\t\t\t\t\t\tcontext: snifferContext,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Await if it's a Promise (async services)\n\t\t\t\t\tif (result && typeof result === 'object' && 'then' in result) {\n\t\t\t\t\t\tawait Promise.resolve(result);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Service registration may fail but env vars are still tracked\n\t\t\t\t}\n\n\t\t\t\t// Cache and collect the env vars\n\t\t\t\tconst serviceEnvVars = sniffer.getEnvironmentVariables();\n\t\t\t\tserviceEnvCache.set(service, serviceEnvVars);\n\t\t\t\tserviceEnvVars.forEach((v) => envVars.add(v));\n\t\t\t}\n\n\t\t\treturn Array.from(envVars).sort();\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\n\t\t\t\t{ error },\n\t\t\t\t'Error determining environment variables for construct',\n\t\t\t);\n\n\t\t\treturn [];\n\t\t}\n\t}\n}\n\nexport enum ConstructType {\n\tCron = 'dev.geekmidas.function.cron',\n\tEndpoint = 'dev.geekmidas.function.endpoint',\n\tFunction = 'dev.geekmidas.function.function',\n\tSubscriber = 'dev.geekmidas.function.subscriber',\n}\n"],"mappings":";;;;AAUA,MAAM,kCAAkB,IAAI;;;;;;;AAQ5B,MAAMA,iBAAiC;CACtC,YAAY;AAEX,SAAO;GACN,OAAO,MAAM,CAAE;GACf,MAAM,MAAM,CAAE;GACd,MAAM,MAAM,CAAE;GACd,OAAO,MAAM,CAAE;GACf,OAAO,MAAM,eAAe,WAAW;EACvC;CACD;CACD,eAAe;AACd,SAAO;CACP;CACD,sBAAsB;AACrB,SAAO,KAAK,KAAK;CACjB;CACD,aAAa;AACZ,SAAO;CACP;AACD;AAED,IAAsB,YAAtB,MAQE;CACD,YACiBC,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIf;EAbe;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAIb;;;;;;;;;;;;;;;;;;;;;CAsBJ,MAAM,iBAAoC;EACzC,MAAM,0BAAU,IAAI;EACpB,MAAMC,WAAsB,QAAQ;GACnC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;EACL,EAAC;AAEF,MAAI;AACH,QAAK,MAAM,WAAW,UAAU;AAE/B,QAAI,gBAAgB,IAAI,QAAQ,EAAE;KACjC,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAC3C,YAAO,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AACrC;IACA;IAGD,MAAM,UAAU,IAAI;AACpB,QAAI;KACH,MAAM,SAAS,QAAQ,SAAS;MAC/B,WAAW;MACX,SAAS;KACT,EAAC;AAGF,SAAI,iBAAiB,WAAW,YAAY,UAAU,OACrD,OAAM,QAAQ,QAAQ,OAAO;IAE9B,QAAO,CAEP;IAGD,MAAM,iBAAiB,QAAQ,yBAAyB;AACxD,oBAAgB,IAAI,SAAS,eAAe;AAC5C,mBAAe,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;GAC7C;AAED,UAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;EACjC,SAAQ,OAAO;AACf,QAAK,OAAO,MACX,EAAE,MAAO,GACT,wDACA;AAED,UAAO,CAAE;EACT;CACD;AACD;AAED,IAAY,0DAAL;AACN;AACA;AACA;AACA;;AACA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Construct-dZiwVo0q.d.mts","names":[],"sources":["../src/Construct.ts"],"sourcesContent":[],"mappings":";;;;;;;uBAwCsB,0BACL,SAAS,wDAEf,+DACQ,4DACA,wFAEI;iBAGC;EAVF,SAAA,MAAS,EAWL,OAXK;EAAA,SAAA,QAAA,EAYH,SAZG;EAAA,SACd,MAAA,EAYS,WAZT,CAYqB,CAZrB,EAAA,GAAA,CAAA,EAAA;EAAM,SAAG,gBAAA,CAAA,EAcW,OAdX,CAcmB,YAdnB,EAciC,CAdjC,CAAA,GAAA,SAAA;EAAM,YAErB,CAAA,EAaa,SAbb,GAAA,SAAA;EAAc,SACN,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAgB,SAChB,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAO,SAEH,qBAAA,CAAA,EAYmB,OAZnB,CAapB,wBAboB,EAcpB,aAdoB,CAAA,GAAA,SAAA;EAAY,WAGX,CAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EACE,OADF,EAAA,QAAA,EAEI,SAFJ,EAAA,MAAA,CAAA,EAGE,WAHF,CAGc,CAHd,EAAA,GAAA,CAAA,EAAA,EAAA,gBAAA,CAAA,EAKa,OALb,CAKqB,YALrB,EAKmC,CALnC,CAAA,GAAA,SAAA,EAAA,YAAA,CAAA,EAMA,SANA,GAAA,SAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,qBAAA,CAAA,EASkB,OATlB,CAUrB,wBAVqB,EAWrB,aAXqB,CAAA,GAAA,SAAA;EAAa;;;;;;;;;;;;;;;;;;;;EAMJ,cAI9B,CAAA,CAAA,EAyBsB,OAzBtB,CAAA,MAAA,EAAA,CAAA;;AADuC,aA6E9B,aAAA;EA7EqC,IA0BxB,GAAA,6BAAA;EAAO,QAAA,GAAA,iCAAA;EAmDpB,QAAA,GAAA,iCAAa"}
@@ -1,8 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-BwNF99AB.mjs";
2
-
3
- //#region src/functions/index.ts
4
- const f = new FunctionBuilder();
5
-
6
- //#endregion
7
- export { f };
8
- //# sourceMappingURL=functions-C3A1vMRW.mjs.map
@@ -1,12 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-Bv4H2I1a.mjs";
2
- import * as _geekmidas_audit9 from "@geekmidas/audit";
3
- import * as _geekmidas_logger8 from "@geekmidas/logger";
4
- import * as _geekmidas_schema7 from "@geekmidas/schema";
5
-
6
- //#region src/functions/index.d.ts
7
- declare const f: FunctionBuilder<_geekmidas_schema7.ComposableStandardSchema, undefined, [], _geekmidas_logger8.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit9.AuditableAction<string, unknown>>;
8
- //# sourceMappingURL=index.d.ts.map
9
-
10
- //#endregion
11
- export { f };
12
- //# sourceMappingURL=index-CgAQHr3f.d.mts.map