@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.
- package/dist/{AWSLambdaFunction-DnMm4xvz.mjs → AWSLambdaFunction-BMTaCrG9.mjs} +3 -3
- package/dist/{AWSLambdaFunction-DnMm4xvz.mjs.map → AWSLambdaFunction-BMTaCrG9.mjs.map} +1 -1
- package/dist/{AWSLambdaFunction-CuG3HNZx.d.mts → AWSLambdaFunction-BfLF5vNa.d.cts} +5 -5
- package/dist/{AWSLambdaFunction-CuG3HNZx.d.mts.map → AWSLambdaFunction-BfLF5vNa.d.cts.map} +1 -1
- package/dist/{AWSLambdaFunction-Ba1DcsW2.cjs → AWSLambdaFunction-C1gRqLO7.cjs} +3 -3
- package/dist/{AWSLambdaFunction-Ba1DcsW2.cjs.map → AWSLambdaFunction-C1gRqLO7.cjs.map} +1 -1
- package/dist/{AWSLambdaFunction-CKe73Qr0.d.cts → AWSLambdaFunction-K94K8JU2.d.mts} +5 -5
- package/dist/{AWSLambdaFunction-CKe73Qr0.d.cts.map → AWSLambdaFunction-K94K8JU2.d.mts.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts → AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts} +4 -4
- package/dist/{AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map → AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts → AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts} +4 -4
- package/dist/{AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map → AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs → AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map → AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts → AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map → AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs → AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map → AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts → AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map → AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs → AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs} +2 -2
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map → AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts → AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map → AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts → AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map → AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs → AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs} +2 -2
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map → AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts → AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map → AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs → AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs} +2 -2
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map → AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs → AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs} +2 -2
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map → AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts → AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts.map → AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts.map} +1 -1
- package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts → BaseFunctionBuilder-BqZCqIeU.d.mts} +3 -3
- package/dist/{BaseFunctionBuilder-BAtutR6q.d.cts.map → BaseFunctionBuilder-BqZCqIeU.d.mts.map} +1 -1
- package/dist/{BaseFunctionBuilder-CDfDWWAQ.d.mts → BaseFunctionBuilder-CcK691ni.d.cts} +3 -3
- package/dist/{BaseFunctionBuilder-CDfDWWAQ.d.mts.map → BaseFunctionBuilder-CcK691ni.d.cts.map} +1 -1
- package/dist/{BaseFunctionBuilder-0qlenb9z.mjs → BaseFunctionBuilder-Dsqe6pnn.mjs} +2 -2
- package/dist/{BaseFunctionBuilder-0qlenb9z.mjs.map → BaseFunctionBuilder-Dsqe6pnn.mjs.map} +1 -1
- package/dist/{BaseFunctionBuilder-D7o93EGv.cjs → BaseFunctionBuilder-Z0XwrKB5.cjs} +2 -2
- package/dist/{BaseFunctionBuilder-D7o93EGv.cjs.map → BaseFunctionBuilder-Z0XwrKB5.cjs.map} +1 -1
- package/dist/{Construct-D5dCvxZ3.mjs → Construct-BNDLJJfD.mjs} +56 -13
- package/dist/Construct-BNDLJJfD.mjs.map +1 -0
- package/dist/{Construct-BlnyYtJC.cjs → Construct-CPrCF8NK.cjs} +67 -12
- package/dist/Construct-CPrCF8NK.cjs.map +1 -0
- package/dist/{Construct-C4rPE67v.d.cts → Construct-Dl0l2d8d.d.cts} +30 -4
- package/dist/Construct-Dl0l2d8d.d.cts.map +1 -0
- package/dist/{Construct-dZiwVo0q.d.mts → Construct-E8QPyHh4.d.mts} +30 -4
- package/dist/Construct-E8QPyHh4.d.mts.map +1 -0
- package/dist/Construct.cjs +4 -2
- package/dist/Construct.d.cts +2 -2
- package/dist/Construct.d.mts +2 -2
- package/dist/Construct.mjs +2 -2
- package/dist/{Cron-BAPQetlC.cjs → Cron-BmPNTLla.cjs} +3 -3
- package/dist/{Cron-BAPQetlC.cjs.map → Cron-BmPNTLla.cjs.map} +1 -1
- package/dist/{Cron-CAk_ddH8.mjs → Cron-BpJONaFv.mjs} +3 -3
- package/dist/{Cron-CAk_ddH8.mjs.map → Cron-BpJONaFv.mjs.map} +1 -1
- package/dist/{Cron-B6FnTu7k.d.cts → Cron-CnmLLh3E.d.mts} +3 -3
- package/dist/{Cron-B6FnTu7k.d.cts.map → Cron-CnmLLh3E.d.mts.map} +1 -1
- package/dist/{Cron-D3bEljxQ.d.mts → Cron-DufAeHry.d.cts} +3 -3
- package/dist/{Cron-D3bEljxQ.d.mts.map → Cron-DufAeHry.d.cts.map} +1 -1
- package/dist/{CronBuilder-e8TaHPYm.mjs → CronBuilder-02HSIHJr.mjs} +4 -4
- package/dist/{CronBuilder-e8TaHPYm.mjs.map → CronBuilder-02HSIHJr.mjs.map} +1 -1
- package/dist/{CronBuilder-DxXA5ymv.cjs → CronBuilder-DC2zUS8a.cjs} +4 -4
- package/dist/{CronBuilder-DxXA5ymv.cjs.map → CronBuilder-DC2zUS8a.cjs.map} +1 -1
- package/dist/{CronBuilder-CA8euP0z.d.cts → CronBuilder-anUSbMxb.d.mts} +5 -5
- package/dist/{CronBuilder-CA8euP0z.d.cts.map → CronBuilder-anUSbMxb.d.mts.map} +1 -1
- package/dist/{CronBuilder-DvdiKzhq.d.mts → CronBuilder-fyqf_X8n.d.cts} +5 -5
- package/dist/{CronBuilder-DvdiKzhq.d.mts.map → CronBuilder-fyqf_X8n.d.cts.map} +1 -1
- package/dist/{Endpoint-DxvnlfXg.cjs → Endpoint-BCWVbi8l.cjs} +3 -3
- package/dist/{Endpoint-DxvnlfXg.cjs.map → Endpoint-BCWVbi8l.cjs.map} +1 -1
- package/dist/{Endpoint-BOlbY5iq.d.cts → Endpoint-BlcHiGNx.d.cts} +2 -2
- package/dist/{Endpoint-Dlv7nxgj.d.mts.map → Endpoint-BlcHiGNx.d.cts.map} +1 -1
- package/dist/{Endpoint-Dlv7nxgj.d.mts → Endpoint-DEHuy46S.d.mts} +2 -2
- package/dist/{Endpoint-BOlbY5iq.d.cts.map → Endpoint-DEHuy46S.d.mts.map} +1 -1
- package/dist/{Endpoint-BbdNmtlM.mjs → Endpoint-ygxv2Ia6.mjs} +3 -3
- package/dist/{Endpoint-BbdNmtlM.mjs.map → Endpoint-ygxv2Ia6.mjs.map} +1 -1
- package/dist/{EndpointBuilder-CFfWWjUa.d.cts → EndpointBuilder-DPLAUHqg.d.cts} +3 -3
- package/dist/{EndpointBuilder-T_K2NLWw.d.mts.map → EndpointBuilder-DPLAUHqg.d.cts.map} +1 -1
- package/dist/{EndpointBuilder-T_K2NLWw.d.mts → EndpointBuilder-DaeCeneF.d.mts} +3 -3
- package/dist/{EndpointBuilder-CFfWWjUa.d.cts.map → EndpointBuilder-DaeCeneF.d.mts.map} +1 -1
- package/dist/{EndpointBuilder-40Iz5CjY.cjs → EndpointBuilder-J5D67Y6a.cjs} +4 -4
- package/dist/{EndpointBuilder-40Iz5CjY.cjs.map → EndpointBuilder-J5D67Y6a.cjs.map} +1 -1
- package/dist/{EndpointBuilder-BaVvhW9m.mjs → EndpointBuilder-tn4zqoyw.mjs} +4 -4
- package/dist/{EndpointBuilder-BaVvhW9m.mjs.map → EndpointBuilder-tn4zqoyw.mjs.map} +1 -1
- package/dist/{EndpointFactory-DfNjSgVG.mjs → EndpointFactory-CIUZTTAF.mjs} +2 -2
- package/dist/{EndpointFactory-DfNjSgVG.mjs.map → EndpointFactory-CIUZTTAF.mjs.map} +1 -1
- package/dist/{EndpointFactory-ChzBVEM9.d.cts → EndpointFactory-CiKcb5PX.d.cts} +3 -3
- package/dist/{EndpointFactory-ChzBVEM9.d.cts.map → EndpointFactory-CiKcb5PX.d.cts.map} +1 -1
- package/dist/{EndpointFactory-GAL_tuPf.d.mts → EndpointFactory-DufM0t2z.d.mts} +3 -3
- package/dist/{EndpointFactory-GAL_tuPf.d.mts.map → EndpointFactory-DufM0t2z.d.mts.map} +1 -1
- package/dist/{EndpointFactory-r6jxPvQ8.cjs → EndpointFactory-d5uwWFkK.cjs} +2 -2
- package/dist/{EndpointFactory-r6jxPvQ8.cjs.map → EndpointFactory-d5uwWFkK.cjs.map} +1 -1
- package/dist/{Function-iLKrUXuw.cjs → Function-2qWSZqYB.cjs} +2 -2
- package/dist/{Function-iLKrUXuw.cjs.map → Function-2qWSZqYB.cjs.map} +1 -1
- package/dist/{Function-DBmU3uGI.d.mts → Function-CbEohg13.d.cts} +3 -3
- package/dist/{Function-DBmU3uGI.d.mts.map → Function-CbEohg13.d.cts.map} +1 -1
- package/dist/{Function-D8tBamM3.mjs → Function-CdF1HmFu.mjs} +2 -2
- package/dist/{Function-D8tBamM3.mjs.map → Function-CdF1HmFu.mjs.map} +1 -1
- package/dist/{Function-PNW4HdNE.d.cts → Function-EjIOLxlh.d.mts} +3 -3
- package/dist/{Function-PNW4HdNE.d.cts.map → Function-EjIOLxlh.d.mts.map} +1 -1
- package/dist/{FunctionBuilder-BEpPgeho.cjs → FunctionBuilder-B-pbgm09.cjs} +4 -4
- package/dist/{FunctionBuilder-BEpPgeho.cjs.map → FunctionBuilder-B-pbgm09.cjs.map} +1 -1
- package/dist/{FunctionBuilder-Bv4H2I1a.d.mts → FunctionBuilder-CX3ooNdq.d.cts} +5 -5
- package/dist/{FunctionBuilder-Bv4H2I1a.d.mts.map → FunctionBuilder-CX3ooNdq.d.cts.map} +1 -1
- package/dist/{FunctionBuilder-DCqXIHaq.d.cts → FunctionBuilder-D11ytDyy.d.mts} +5 -5
- package/dist/{FunctionBuilder-DCqXIHaq.d.cts.map → FunctionBuilder-D11ytDyy.d.mts.map} +1 -1
- package/dist/{FunctionBuilder-BwNF99AB.mjs → FunctionBuilder-DaWVthAJ.mjs} +4 -4
- package/dist/{FunctionBuilder-BwNF99AB.mjs.map → FunctionBuilder-DaWVthAJ.mjs.map} +1 -1
- package/dist/{FunctionExecutionWrapper-BclgIztn.d.cts → FunctionExecutionWrapper-BJcRjH9Z.d.cts} +2 -2
- package/dist/{FunctionExecutionWrapper-BclgIztn.d.cts.map → FunctionExecutionWrapper-BJcRjH9Z.d.cts.map} +1 -1
- package/dist/{FunctionExecutionWrapper-BjF6t9Hb.cjs → FunctionExecutionWrapper-C6ChBNHs.cjs} +2 -2
- package/dist/{FunctionExecutionWrapper-BjF6t9Hb.cjs.map → FunctionExecutionWrapper-C6ChBNHs.cjs.map} +1 -1
- package/dist/{FunctionExecutionWrapper-Dq21c6vt.d.mts → FunctionExecutionWrapper-D3RNjGIR.d.mts} +2 -2
- package/dist/{FunctionExecutionWrapper-Dq21c6vt.d.mts.map → FunctionExecutionWrapper-D3RNjGIR.d.mts.map} +1 -1
- package/dist/{FunctionExecutionWrapper-B__HE_B-.mjs → FunctionExecutionWrapper-Dj3pmXaN.mjs} +2 -2
- package/dist/{FunctionExecutionWrapper-B__HE_B-.mjs.map → FunctionExecutionWrapper-Dj3pmXaN.mjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-HukjdF6M.d.mts → HonoEndpointAdaptor-CKP6nrG2.d.mts} +4 -4
- package/dist/{HonoEndpointAdaptor-Dkkemmbo.d.cts.map → HonoEndpointAdaptor-CKP6nrG2.d.mts.map} +1 -1
- package/dist/{HonoEndpointAdaptor-C_ym_Sbr.mjs → HonoEndpointAdaptor-Cc8Rnp9G.mjs} +3 -3
- package/dist/{HonoEndpointAdaptor-C_ym_Sbr.mjs.map → HonoEndpointAdaptor-Cc8Rnp9G.mjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-Dkkemmbo.d.cts → HonoEndpointAdaptor-hrrvyfw9.d.cts} +2 -2
- package/dist/{HonoEndpointAdaptor-HukjdF6M.d.mts.map → HonoEndpointAdaptor-hrrvyfw9.d.cts.map} +1 -1
- package/dist/{HonoEndpointAdaptor-DiQH0eTb.cjs → HonoEndpointAdaptor-xGnDZa3a.cjs} +3 -3
- package/dist/{HonoEndpointAdaptor-DiQH0eTb.cjs.map → HonoEndpointAdaptor-xGnDZa3a.cjs.map} +1 -1
- package/dist/{Subscriber--zUjZDR6.d.cts → Subscriber-BBcIOkhW.d.cts} +2 -2
- package/dist/{Subscriber--zUjZDR6.d.cts.map → Subscriber-BBcIOkhW.d.cts.map} +1 -1
- package/dist/{Subscriber-0Ac7cXID.d.mts → Subscriber-BpTAXvbM.d.mts} +2 -2
- package/dist/{Subscriber-0Ac7cXID.d.mts.map → Subscriber-BpTAXvbM.d.mts.map} +1 -1
- package/dist/{Subscriber-CoFmHMIM.cjs → Subscriber-CL4iYm01.cjs} +2 -2
- package/dist/{Subscriber-CoFmHMIM.cjs.map → Subscriber-CL4iYm01.cjs.map} +1 -1
- package/dist/{Subscriber-BgZ8T-O2.mjs → Subscriber-CZ8Smwd2.mjs} +2 -2
- package/dist/{Subscriber-BgZ8T-O2.mjs.map → Subscriber-CZ8Smwd2.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-DWXWZBPo.mjs → SubscriberBuilder-CxQg3TTm.mjs} +2 -2
- package/dist/{SubscriberBuilder-DWXWZBPo.mjs.map → SubscriberBuilder-CxQg3TTm.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-JlxhyqGp.cjs → SubscriberBuilder-D0OS3hd7.cjs} +2 -2
- package/dist/{SubscriberBuilder-JlxhyqGp.cjs.map → SubscriberBuilder-D0OS3hd7.cjs.map} +1 -1
- package/dist/{SubscriberBuilder-D8cmUHee.d.mts → SubscriberBuilder-D7IgufwB.d.cts} +3 -3
- package/dist/{SubscriberBuilder-D8cmUHee.d.mts.map → SubscriberBuilder-D7IgufwB.d.cts.map} +1 -1
- package/dist/{SubscriberBuilder-DciTqb-7.d.cts → SubscriberBuilder-DOFBbWLt.d.mts} +3 -3
- package/dist/{SubscriberBuilder-DciTqb-7.d.cts.map → SubscriberBuilder-DOFBbWLt.d.mts.map} +1 -1
- package/dist/{TestEndpointAdaptor-Boijwbmz.d.mts → TestEndpointAdaptor-BnJusjf7.d.mts} +2 -2
- package/dist/{TestEndpointAdaptor-Boijwbmz.d.mts.map → TestEndpointAdaptor-BnJusjf7.d.mts.map} +1 -1
- package/dist/{TestEndpointAdaptor-OiA2JLDp.mjs → TestEndpointAdaptor-CPL8ru6q.mjs} +2 -2
- package/dist/{TestEndpointAdaptor-OiA2JLDp.mjs.map → TestEndpointAdaptor-CPL8ru6q.mjs.map} +1 -1
- package/dist/{TestEndpointAdaptor-Dk75ExxE.cjs → TestEndpointAdaptor-Ca4K26_d.cjs} +2 -2
- package/dist/{TestEndpointAdaptor-Dk75ExxE.cjs.map → TestEndpointAdaptor-Ca4K26_d.cjs.map} +1 -1
- package/dist/{TestEndpointAdaptor-DdwpRyNh.d.cts → TestEndpointAdaptor-EPPTjntv.d.cts} +2 -2
- package/dist/{TestEndpointAdaptor-DdwpRyNh.d.cts.map → TestEndpointAdaptor-EPPTjntv.d.cts.map} +1 -1
- package/dist/adaptors/aws.cjs +11 -11
- package/dist/adaptors/aws.d.cts +13 -13
- package/dist/adaptors/aws.d.mts +13 -13
- package/dist/adaptors/aws.mjs +11 -11
- package/dist/adaptors/hono.cjs +8 -8
- package/dist/adaptors/hono.d.cts +7 -7
- package/dist/adaptors/hono.d.mts +7 -7
- package/dist/adaptors/hono.mjs +8 -8
- package/dist/adaptors/testing.cjs +7 -7
- package/dist/adaptors/testing.d.cts +7 -7
- package/dist/adaptors/testing.d.mts +7 -7
- package/dist/adaptors/testing.mjs +7 -7
- package/dist/crons/Cron.cjs +6 -6
- package/dist/crons/Cron.d.cts +6 -6
- package/dist/crons/Cron.d.mts +6 -6
- package/dist/crons/Cron.mjs +6 -6
- package/dist/crons/CronBuilder.cjs +7 -7
- package/dist/crons/CronBuilder.d.cts +7 -7
- package/dist/crons/CronBuilder.d.mts +7 -7
- package/dist/crons/CronBuilder.mjs +7 -7
- package/dist/crons/index.cjs +7 -7
- package/dist/crons/index.d.cts +7 -7
- package/dist/crons/index.d.mts +7 -7
- package/dist/crons/index.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/Endpoint.cjs +6 -6
- package/dist/endpoints/Endpoint.d.cts +6 -6
- package/dist/endpoints/Endpoint.d.mts +6 -6
- package/dist/endpoints/Endpoint.mjs +6 -6
- package/dist/endpoints/EndpointBuilder.cjs +7 -7
- package/dist/endpoints/EndpointBuilder.d.cts +7 -7
- package/dist/endpoints/EndpointBuilder.d.mts +7 -7
- package/dist/endpoints/EndpointBuilder.mjs +7 -7
- package/dist/endpoints/EndpointFactory.cjs +8 -8
- package/dist/endpoints/EndpointFactory.d.cts +8 -8
- package/dist/endpoints/EndpointFactory.d.mts +8 -8
- package/dist/endpoints/EndpointFactory.mjs +8 -8
- package/dist/endpoints/HonoEndpointAdaptor.cjs +8 -8
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +7 -7
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +7 -7
- package/dist/endpoints/HonoEndpointAdaptor.mjs +8 -8
- package/dist/endpoints/TestEndpointAdaptor.cjs +7 -7
- package/dist/endpoints/TestEndpointAdaptor.d.cts +7 -7
- package/dist/endpoints/TestEndpointAdaptor.d.mts +7 -7
- package/dist/endpoints/TestEndpointAdaptor.mjs +7 -7
- package/dist/endpoints/audit.d.cts +6 -6
- package/dist/endpoints/audit.d.mts +6 -6
- package/dist/endpoints/helpers.cjs +7 -7
- package/dist/endpoints/helpers.d.cts +6 -6
- package/dist/endpoints/helpers.d.mts +6 -6
- package/dist/endpoints/helpers.mjs +7 -7
- package/dist/endpoints/index.cjs +8 -8
- package/dist/endpoints/index.d.cts +10 -10
- package/dist/endpoints/index.d.mts +12 -12
- package/dist/endpoints/index.mjs +8 -8
- package/dist/endpoints/lazyAccessors.d.cts +7 -7
- package/dist/endpoints/lazyAccessors.d.mts +7 -7
- package/dist/endpoints/processAudits.d.cts +6 -6
- package/dist/endpoints/processAudits.d.mts +6 -6
- package/dist/endpoints/rls.d.cts +6 -6
- package/dist/endpoints/rls.d.mts +6 -6
- package/dist/functions/AWSLambdaFunction.cjs +6 -6
- package/dist/functions/AWSLambdaFunction.d.cts +4 -4
- package/dist/functions/AWSLambdaFunction.d.mts +4 -4
- package/dist/functions/AWSLambdaFunction.mjs +6 -6
- package/dist/functions/BaseFunctionBuilder.cjs +2 -2
- package/dist/functions/BaseFunctionBuilder.d.cts +2 -2
- package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
- package/dist/functions/BaseFunctionBuilder.mjs +2 -2
- package/dist/functions/Function.cjs +2 -2
- package/dist/functions/Function.d.cts +2 -2
- package/dist/functions/Function.d.mts +2 -2
- package/dist/functions/Function.mjs +2 -2
- package/dist/functions/FunctionBuilder.cjs +4 -4
- package/dist/functions/FunctionBuilder.d.cts +4 -4
- package/dist/functions/FunctionBuilder.d.mts +4 -4
- package/dist/functions/FunctionBuilder.mjs +4 -4
- package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
- package/dist/functions/FunctionExecutionWrapper.d.cts +3 -3
- package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
- package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
- package/dist/functions/TestFunctionAdaptor.cjs +4 -4
- package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
- package/dist/functions/TestFunctionAdaptor.d.mts +2 -2
- package/dist/functions/TestFunctionAdaptor.mjs +4 -4
- package/dist/functions/index.cjs +5 -5
- package/dist/functions/index.d.cts +5 -5
- package/dist/functions/index.d.mts +5 -5
- package/dist/functions/index.mjs +5 -5
- package/dist/{functions-BkKXVeHm.cjs → functions-CUEv5NC3.cjs} +2 -2
- package/dist/{functions-BkKXVeHm.cjs.map → functions-CUEv5NC3.cjs.map} +1 -1
- package/dist/functions-DOYBrb7n.mjs +8 -0
- package/dist/{functions-C3A1vMRW.mjs.map → functions-DOYBrb7n.mjs.map} +1 -1
- package/dist/{helpers-DgsMFMUV.mjs → helpers-Dl1eszfi.mjs} +2 -2
- package/dist/{helpers-DgsMFMUV.mjs.map → helpers-Dl1eszfi.mjs.map} +1 -1
- package/dist/{helpers-BelEzV4U.cjs → helpers-QMdfdnvU.cjs} +2 -2
- package/dist/{helpers-BelEzV4U.cjs.map → helpers-QMdfdnvU.cjs.map} +1 -1
- package/dist/{index-D0fp_IK1.d.cts → index-BrGtMlpJ.d.cts} +2 -2
- package/dist/{index-CgAQHr3f.d.mts.map → index-BrGtMlpJ.d.cts.map} +1 -1
- package/dist/index-Dn4py3Db.d.mts +12 -0
- package/dist/{index-D0fp_IK1.d.cts.map → index-Dn4py3Db.d.mts.map} +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{lazyAccessors-B2ILzU-j.d.mts → lazyAccessors-BFAj2-S4.d.mts} +2 -2
- package/dist/{lazyAccessors-B2ILzU-j.d.mts.map → lazyAccessors-BFAj2-S4.d.mts.map} +1 -1
- package/dist/{lazyAccessors-Bcpi06ed.d.cts → lazyAccessors-knaNZuTN.d.cts} +2 -2
- package/dist/{lazyAccessors-Bcpi06ed.d.cts.map → lazyAccessors-knaNZuTN.d.cts.map} +1 -1
- package/dist/{publisher-C4BhHB5I.d.cts → publisher-BXG9YiRi.d.mts} +3 -3
- package/dist/{publisher-C4BhHB5I.d.cts.map → publisher-BXG9YiRi.d.mts.map} +1 -1
- package/dist/{publisher-NE-GnXL8.d.mts → publisher-D9ngDXg3.d.cts} +3 -3
- package/dist/{publisher-NE-GnXL8.d.mts.map → publisher-D9ngDXg3.d.cts.map} +1 -1
- package/dist/publisher.d.cts +2 -2
- package/dist/publisher.d.mts +2 -2
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
- package/dist/subscribers/Subscriber.cjs +2 -2
- package/dist/subscribers/Subscriber.d.cts +2 -2
- package/dist/subscribers/Subscriber.d.mts +2 -2
- package/dist/subscribers/Subscriber.mjs +2 -2
- package/dist/subscribers/SubscriberBuilder.cjs +3 -3
- package/dist/subscribers/SubscriberBuilder.d.cts +3 -3
- package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
- package/dist/subscribers/SubscriberBuilder.mjs +3 -3
- package/dist/subscribers/index.cjs +3 -3
- package/dist/subscribers/index.d.cts +3 -3
- package/dist/subscribers/index.d.mts +5 -5
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +3 -3
- package/package.json +10 -9
- package/src/Construct.ts +81 -17
- package/src/__tests__/Construct.environment.spec.ts +231 -9
- package/src/index.ts +6 -1
- package/dist/Construct-BlnyYtJC.cjs.map +0 -1
- package/dist/Construct-C4rPE67v.d.cts.map +0 -1
- package/dist/Construct-D5dCvxZ3.mjs.map +0 -1
- package/dist/Construct-dZiwVo0q.d.mts.map +0 -1
- package/dist/functions-C3A1vMRW.mjs +0 -8
- 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
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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 (
|
|
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 {
|
|
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,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
|