@geekmidas/constructs 3.0.6 → 3.0.8
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/CHANGELOG.md +15 -0
- package/dist/{Construct-BXG8cFSm.cjs → Construct-B14miJ6P.cjs} +95 -10
- package/dist/Construct-B14miJ6P.cjs.map +1 -0
- package/dist/{Construct-C2SyofdS.d.mts → Construct-CXqvzglu.d.cts} +11 -6
- package/dist/{Construct-C2SyofdS.d.mts.map → Construct-CXqvzglu.d.cts.map} +1 -1
- package/dist/{Construct-CQ9zV58W.mjs → Construct-CdJY2DJS.mjs} +83 -9
- package/dist/Construct-CdJY2DJS.mjs.map +1 -0
- package/dist/{Construct-CX7HyFfT.d.cts → Construct-D0n7QTaI.d.mts} +13 -8
- package/dist/Construct-D0n7QTaI.d.mts.map +1 -0
- package/dist/{Endpoint-DtFQFL63.d.mts → Endpoint-C991gK3T.d.cts} +133 -30
- package/dist/Endpoint-C991gK3T.d.cts.map +1 -0
- package/dist/{Endpoint-CGdCGJkC.d.cts → Endpoint-CRHpLPV3.d.mts} +133 -30
- package/dist/Endpoint-CRHpLPV3.d.mts.map +1 -0
- package/dist/{HonoEndpointAdaptor-B5fKdLi7.cjs → HonoEndpointAdaptor-BDz1qM4z.cjs} +81 -24
- package/dist/HonoEndpointAdaptor-BDz1qM4z.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-DOUODM7n.mjs → HonoEndpointAdaptor-DPBfEPZj.mjs} +64 -7
- package/dist/HonoEndpointAdaptor-DPBfEPZj.mjs.map +1 -0
- package/dist/{Subscriber-1rDE7HuM.d.cts → Subscriber-D8WkA8np.d.cts} +3 -3
- package/dist/{Subscriber-1rDE7HuM.d.cts.map → Subscriber-D8WkA8np.d.cts.map} +1 -1
- package/dist/{Subscriber-BgB3RRxb.d.mts → Subscriber-Tft61-YG.d.mts} +5 -5
- package/dist/Subscriber-Tft61-YG.d.mts.map +1 -0
- package/dist/adaptors/aws.cjs +737 -21
- package/dist/adaptors/aws.cjs.map +1 -0
- package/dist/adaptors/aws.d.cts +221 -17
- package/dist/adaptors/aws.d.cts.map +1 -0
- package/dist/adaptors/aws.d.mts +221 -17
- package/dist/adaptors/aws.d.mts.map +1 -0
- package/dist/adaptors/aws.mjs +734 -18
- package/dist/adaptors/aws.mjs.map +1 -0
- package/dist/adaptors/hono.cjs +5 -12
- package/dist/adaptors/hono.d.cts +52 -10
- package/dist/adaptors/hono.d.cts.map +1 -0
- package/dist/adaptors/hono.d.mts +52 -10
- package/dist/adaptors/hono.d.mts.map +1 -0
- package/dist/adaptors/hono.mjs +5 -12
- package/dist/adaptors/testing.cjs +392 -15
- package/dist/adaptors/testing.cjs.map +1 -0
- package/dist/adaptors/testing.d.cts +177 -13
- package/dist/adaptors/testing.d.cts.map +1 -0
- package/dist/adaptors/testing.d.mts +177 -13
- package/dist/adaptors/testing.d.mts.map +1 -0
- package/dist/adaptors/testing.mjs +389 -14
- package/dist/adaptors/testing.mjs.map +1 -0
- package/dist/crons/index.cjs +82 -10
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +48 -11
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +45 -11
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +79 -7
- package/dist/crons/index.mjs.map +1 -1
- package/dist/endpoints/index.cjs +717 -23
- package/dist/endpoints/index.cjs.map +1 -1
- package/dist/endpoints/index.d.cts +316 -14
- package/dist/endpoints/index.d.cts.map +1 -1
- package/dist/endpoints/index.d.mts +315 -14
- package/dist/endpoints/index.d.mts.map +1 -1
- package/dist/endpoints/index.mjs +706 -12
- package/dist/endpoints/index.mjs.map +1 -1
- package/dist/functions/index.cjs +5 -8
- package/dist/functions/index.d.cts +2 -5
- package/dist/functions/index.d.mts +2 -5
- package/dist/functions/index.mjs +2 -5
- package/dist/functions-DiaRAdfp.cjs +2893 -0
- package/dist/functions-DiaRAdfp.cjs.map +1 -0
- package/dist/functions-GmSHFbpr.mjs +2864 -0
- package/dist/functions-GmSHFbpr.mjs.map +1 -0
- package/dist/index-Cq4fz8uM.d.mts +132 -0
- package/dist/index-Cq4fz8uM.d.mts.map +1 -0
- package/dist/index-CzIMpK-e.d.cts +135 -0
- package/dist/index-CzIMpK-e.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/lazyAccessors-CJZYs9uM.mjs +1887 -0
- package/dist/lazyAccessors-CJZYs9uM.mjs.map +1 -0
- package/dist/lazyAccessors-DHvDeww0.cjs +1964 -0
- package/dist/lazyAccessors-DHvDeww0.cjs.map +1 -0
- package/dist/processAudits-B0PbJf1Z.mjs +80 -0
- package/dist/processAudits-B0PbJf1Z.mjs.map +1 -0
- package/dist/processAudits-CUko08pi.cjs +92 -0
- package/dist/processAudits-CUko08pi.cjs.map +1 -0
- package/dist/subscribers/index.cjs +77 -6
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +27 -5
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +26 -5
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +74 -3
- package/dist/subscribers/index.mjs.map +1 -1
- package/dist/{telemetry-BTaiRqPo.d.cts → telemetry-Bt0vK4ma.d.cts} +1 -1
- package/dist/{telemetry-BTaiRqPo.d.cts.map → telemetry-Bt0vK4ma.d.cts.map} +1 -1
- package/dist/{telemetry-C-kNOW3C.d.mts → telemetry-COvVBKBM.d.mts} +1 -1
- package/dist/{telemetry-C-kNOW3C.d.mts.map → telemetry-COvVBKBM.d.mts.map} +1 -1
- package/dist/{types-B5H3piDg.d.cts → types-B8YlI4cx.d.cts} +1 -1
- package/dist/{types-B5H3piDg.d.cts.map → types-B8YlI4cx.d.cts.map} +1 -1
- package/dist/{types-aFmq5cKh.d.mts → types-BA3eK4xj.d.mts} +1 -1
- package/dist/{types-aFmq5cKh.d.mts.map → types-BA3eK4xj.d.mts.map} +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +18 -13
- package/src/Construct.ts +26 -8
- package/src/__tests__/Construct.environment.spec.ts +123 -0
- package/src/adaptors/testing.ts +7 -0
- package/src/endpoints/MswEndpointAdaptor.ts +226 -0
- package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +211 -0
- package/tsdown.config.ts +30 -1
- package/dist/AWSLambdaFunction-BF1gJJjG.d.mts +0 -32
- package/dist/AWSLambdaFunction-BF1gJJjG.d.mts.map +0 -1
- package/dist/AWSLambdaFunction-CPEAl5nZ.cjs +0 -120
- package/dist/AWSLambdaFunction-CPEAl5nZ.cjs.map +0 -1
- package/dist/AWSLambdaFunction-DJiCAPAf.mjs +0 -114
- package/dist/AWSLambdaFunction-DJiCAPAf.mjs.map +0 -1
- package/dist/AWSLambdaFunction-tzqv5XU6.d.cts +0 -32
- package/dist/AWSLambdaFunction-tzqv5XU6.d.cts.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts +0 -36
- package/dist/AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-OQvj2lKI.d.mts +0 -36
- package/dist/AWSLambdaSubscriberAdaptor-OQvj2lKI.d.mts.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs +0 -172
- package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs +0 -178
- package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-BIltcbAc.cjs +0 -277
- package/dist/AmazonApiGatewayEndpointAdaptor-BIltcbAc.cjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-BpYtYCeW.mjs +0 -271
- package/dist/AmazonApiGatewayEndpointAdaptor-BpYtYCeW.mjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts +0 -124
- package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-Hi8Pbp2d.d.mts +0 -124
- package/dist/AmazonApiGatewayEndpointAdaptor-Hi8Pbp2d.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-CRwyWT6t.mjs +0 -42
- package/dist/AmazonApiGatewayV1EndpointAdaptor-CRwyWT6t.mjs.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-DEETT6Wj.cjs +0 -47
- package/dist/AmazonApiGatewayV1EndpointAdaptor-DEETT6Wj.cjs.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-DcN2fYsv.d.cts +0 -23
- package/dist/AmazonApiGatewayV1EndpointAdaptor-DcN2fYsv.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-cpwJzU4W.d.mts +0 -23
- package/dist/AmazonApiGatewayV1EndpointAdaptor-cpwJzU4W.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-C2qO8FN6.cjs +0 -48
- package/dist/AmazonApiGatewayV2EndpointAdaptor-C2qO8FN6.cjs.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-Cn9UoRgB.d.cts +0 -22
- package/dist/AmazonApiGatewayV2EndpointAdaptor-Cn9UoRgB.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-LzH3hkB-.d.mts +0 -22
- package/dist/AmazonApiGatewayV2EndpointAdaptor-LzH3hkB-.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs +0 -42
- package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs.map +0 -1
- package/dist/Authorizer-4unKN3Xn.mjs +0 -68
- package/dist/Authorizer-4unKN3Xn.mjs.map +0 -1
- package/dist/Authorizer-DBsrDTuf.d.mts +0 -126
- package/dist/Authorizer-DBsrDTuf.d.mts.map +0 -1
- package/dist/Authorizer-DWtwC8we.d.cts +0 -126
- package/dist/Authorizer-DWtwC8we.d.cts.map +0 -1
- package/dist/Authorizer-Dx57psuM.cjs +0 -92
- package/dist/Authorizer-Dx57psuM.cjs.map +0 -1
- package/dist/BaseFunctionBuilder-C-4hYTfj.d.cts +0 -42
- package/dist/BaseFunctionBuilder-C-4hYTfj.d.cts.map +0 -1
- package/dist/BaseFunctionBuilder-C3rQMoWb.mjs +0 -70
- package/dist/BaseFunctionBuilder-C3rQMoWb.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-CsvFjzA8.d.mts +0 -42
- package/dist/BaseFunctionBuilder-CsvFjzA8.d.mts.map +0 -1
- package/dist/BaseFunctionBuilder-DXf6HK-N.cjs +0 -76
- package/dist/BaseFunctionBuilder-DXf6HK-N.cjs.map +0 -1
- package/dist/Construct-BXG8cFSm.cjs.map +0 -1
- package/dist/Construct-CQ9zV58W.mjs.map +0 -1
- package/dist/Construct-CX7HyFfT.d.cts.map +0 -1
- package/dist/Construct.cjs +0 -6
- package/dist/Construct.d.cts +0 -2
- package/dist/Construct.d.mts +0 -2
- package/dist/Construct.mjs +0 -3
- package/dist/Cron-B3vrGuaD.mjs +0 -20
- package/dist/Cron-B3vrGuaD.mjs.map +0 -1
- package/dist/Cron-BDxW6fYg.d.cts +0 -26
- package/dist/Cron-BDxW6fYg.d.cts.map +0 -1
- package/dist/Cron-CWxjO2Fg.d.mts +0 -26
- package/dist/Cron-CWxjO2Fg.d.mts.map +0 -1
- package/dist/Cron-DEKZg5j4.cjs +0 -25
- package/dist/Cron-DEKZg5j4.cjs.map +0 -1
- package/dist/CronBuilder-BHpY6w3b.cjs +0 -74
- package/dist/CronBuilder-BHpY6w3b.cjs.map +0 -1
- package/dist/CronBuilder-CginrW3H.d.cts +0 -32
- package/dist/CronBuilder-CginrW3H.d.cts.map +0 -1
- package/dist/CronBuilder-DJnXbDGK.d.mts +0 -32
- package/dist/CronBuilder-DJnXbDGK.d.mts.map +0 -1
- package/dist/CronBuilder-VXpyNfp2.mjs +0 -68
- package/dist/CronBuilder-VXpyNfp2.mjs.map +0 -1
- package/dist/Endpoint-BcxvF4F3.cjs +0 -440
- package/dist/Endpoint-BcxvF4F3.cjs.map +0 -1
- package/dist/Endpoint-CGdCGJkC.d.cts.map +0 -1
- package/dist/Endpoint-DtFQFL63.d.mts.map +0 -1
- package/dist/Endpoint-DvY3aqAy.mjs +0 -422
- package/dist/Endpoint-DvY3aqAy.mjs.map +0 -1
- package/dist/EndpointBuilder-CMzbGG2c.mjs +0 -262
- package/dist/EndpointBuilder-CMzbGG2c.mjs.map +0 -1
- package/dist/EndpointBuilder-DIAsH97h.d.mts +0 -146
- package/dist/EndpointBuilder-DIAsH97h.d.mts.map +0 -1
- package/dist/EndpointBuilder-Dzqcm8Yv.d.cts +0 -146
- package/dist/EndpointBuilder-Dzqcm8Yv.d.cts.map +0 -1
- package/dist/EndpointBuilder-QdDf3x87.cjs +0 -268
- package/dist/EndpointBuilder-QdDf3x87.cjs.map +0 -1
- package/dist/EndpointFactory-AsfUsn-v.cjs +0 -393
- package/dist/EndpointFactory-AsfUsn-v.cjs.map +0 -1
- package/dist/EndpointFactory-C1rh407J.d.cts +0 -142
- package/dist/EndpointFactory-C1rh407J.d.cts.map +0 -1
- package/dist/EndpointFactory-CkPaFZA0.mjs +0 -381
- package/dist/EndpointFactory-CkPaFZA0.mjs.map +0 -1
- package/dist/EndpointFactory-pCuCu_1H.d.mts +0 -142
- package/dist/EndpointFactory-pCuCu_1H.d.mts.map +0 -1
- package/dist/Function-CZw1DRQ6.d.mts +0 -76
- package/dist/Function-CZw1DRQ6.d.mts.map +0 -1
- package/dist/Function-CwlB89lS.d.cts +0 -76
- package/dist/Function-CwlB89lS.d.cts.map +0 -1
- package/dist/Function-DgQ_no6B.cjs +0 -84
- package/dist/Function-DgQ_no6B.cjs.map +0 -1
- package/dist/Function-xfQbftdE.mjs +0 -72
- package/dist/Function-xfQbftdE.mjs.map +0 -1
- package/dist/FunctionBuilder-CBeqX18X.mjs +0 -80
- package/dist/FunctionBuilder-CBeqX18X.mjs.map +0 -1
- package/dist/FunctionBuilder-C_xG9As7.cjs +0 -86
- package/dist/FunctionBuilder-C_xG9As7.cjs.map +0 -1
- package/dist/FunctionBuilder-D_7f5MfS.d.cts +0 -40
- package/dist/FunctionBuilder-D_7f5MfS.d.cts.map +0 -1
- package/dist/FunctionBuilder-m5BNA2Ap.d.mts +0 -40
- package/dist/FunctionBuilder-m5BNA2Ap.d.mts.map +0 -1
- package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs +0 -101
- package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs.map +0 -1
- package/dist/FunctionExecutionWrapper-C7yYXIq-.d.mts +0 -50
- package/dist/FunctionExecutionWrapper-C7yYXIq-.d.mts.map +0 -1
- package/dist/FunctionExecutionWrapper-Cg8HjuHL.d.cts +0 -50
- package/dist/FunctionExecutionWrapper-Cg8HjuHL.d.cts.map +0 -1
- package/dist/FunctionExecutionWrapper-KKHP6fDY.cjs +0 -107
- package/dist/FunctionExecutionWrapper-KKHP6fDY.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-B5fKdLi7.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-BXga7Jqh.d.mts +0 -50
- package/dist/HonoEndpointAdaptor-BXga7Jqh.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-D3IgM-0B.d.cts +0 -50
- package/dist/HonoEndpointAdaptor-D3IgM-0B.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-DOUODM7n.mjs.map +0 -1
- package/dist/Subscriber-BEhOdNQi.mjs +0 -28
- package/dist/Subscriber-BEhOdNQi.mjs.map +0 -1
- package/dist/Subscriber-BgB3RRxb.d.mts.map +0 -1
- package/dist/Subscriber-Scz7hrV6.cjs +0 -34
- package/dist/Subscriber-Scz7hrV6.cjs.map +0 -1
- package/dist/SubscriberBuilder-B82h4v-S.cjs +0 -60
- package/dist/SubscriberBuilder-B82h4v-S.cjs.map +0 -1
- package/dist/SubscriberBuilder-B9uva8fZ.d.cts +0 -28
- package/dist/SubscriberBuilder-B9uva8fZ.d.cts.map +0 -1
- package/dist/SubscriberBuilder-DaQkh2Nt.d.mts +0 -28
- package/dist/SubscriberBuilder-DaQkh2Nt.d.mts.map +0 -1
- package/dist/SubscriberBuilder-DlUaG0Ej.mjs +0 -54
- package/dist/SubscriberBuilder-DlUaG0Ej.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-Clz_L8Xj.d.cts +0 -45
- package/dist/TestEndpointAdaptor-Clz_L8Xj.d.cts.map +0 -1
- package/dist/TestEndpointAdaptor-DxXJoBBf.d.mts +0 -45
- package/dist/TestEndpointAdaptor-DxXJoBBf.d.mts.map +0 -1
- package/dist/TestEndpointAdaptor-G2T789bH.mjs +0 -174
- package/dist/TestEndpointAdaptor-G2T789bH.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-YlwOEisx.cjs +0 -180
- package/dist/TestEndpointAdaptor-YlwOEisx.cjs.map +0 -1
- package/dist/TestFunctionAdaptor-BHk2bDOV.d.cts +0 -30
- package/dist/TestFunctionAdaptor-BHk2bDOV.d.cts.map +0 -1
- package/dist/TestFunctionAdaptor-C5CLuR-9.mjs +0 -75
- package/dist/TestFunctionAdaptor-C5CLuR-9.mjs.map +0 -1
- package/dist/TestFunctionAdaptor-CH6-gO_B.cjs +0 -81
- package/dist/TestFunctionAdaptor-CH6-gO_B.cjs.map +0 -1
- package/dist/TestFunctionAdaptor-DzT8GRdR.d.mts +0 -30
- package/dist/TestFunctionAdaptor-DzT8GRdR.d.mts.map +0 -1
- package/dist/TestSubscriberAdaptor-CPEiqSfE.d.mts +0 -26
- package/dist/TestSubscriberAdaptor-CPEiqSfE.d.mts.map +0 -1
- package/dist/TestSubscriberAdaptor-CwP3qNJ4.mjs +0 -51
- package/dist/TestSubscriberAdaptor-CwP3qNJ4.mjs.map +0 -1
- package/dist/TestSubscriberAdaptor-DQk5xzb0.d.cts +0 -26
- package/dist/TestSubscriberAdaptor-DQk5xzb0.d.cts.map +0 -1
- package/dist/TestSubscriberAdaptor-Dgxr_0vL.cjs +0 -57
- package/dist/TestSubscriberAdaptor-Dgxr_0vL.cjs.map +0 -1
- package/dist/chunk-CUT6urMc.cjs +0 -30
- package/dist/crons/Cron.cjs +0 -8
- package/dist/crons/Cron.d.cts +0 -7
- package/dist/crons/Cron.d.mts +0 -7
- package/dist/crons/Cron.mjs +0 -8
- package/dist/crons/CronBuilder.cjs +0 -9
- package/dist/crons/CronBuilder.d.cts +0 -8
- package/dist/crons/CronBuilder.d.mts +0 -8
- package/dist/crons/CronBuilder.mjs +0 -9
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +0 -11
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +0 -11
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +0 -11
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +0 -11
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +0 -13
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +0 -12
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +0 -12
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +0 -13
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +0 -13
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +0 -12
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +0 -12
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +0 -13
- package/dist/endpoints/Authorizer.cjs +0 -6
- package/dist/endpoints/Authorizer.d.cts +0 -2
- package/dist/endpoints/Authorizer.d.mts +0 -2
- package/dist/endpoints/Authorizer.mjs +0 -3
- package/dist/endpoints/Endpoint.cjs +0 -10
- package/dist/endpoints/Endpoint.d.cts +0 -9
- package/dist/endpoints/Endpoint.d.mts +0 -9
- package/dist/endpoints/Endpoint.mjs +0 -8
- package/dist/endpoints/EndpointBuilder.cjs +0 -11
- package/dist/endpoints/EndpointBuilder.d.cts +0 -10
- package/dist/endpoints/EndpointBuilder.d.mts +0 -10
- package/dist/endpoints/EndpointBuilder.mjs +0 -11
- package/dist/endpoints/EndpointFactory.cjs +0 -13
- package/dist/endpoints/EndpointFactory.d.cts +0 -11
- package/dist/endpoints/EndpointFactory.d.mts +0 -11
- package/dist/endpoints/EndpointFactory.mjs +0 -12
- package/dist/endpoints/HonoEndpointAdaptor.cjs +0 -14
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +0 -10
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +0 -10
- package/dist/endpoints/HonoEndpointAdaptor.mjs +0 -14
- package/dist/endpoints/TestEndpointAdaptor.cjs +0 -12
- package/dist/endpoints/TestEndpointAdaptor.d.cts +0 -10
- package/dist/endpoints/TestEndpointAdaptor.d.mts +0 -10
- package/dist/endpoints/TestEndpointAdaptor.mjs +0 -12
- package/dist/endpoints/audit.cjs +0 -0
- package/dist/endpoints/audit.d.cts +0 -9
- package/dist/endpoints/audit.d.mts +0 -9
- package/dist/endpoints/audit.mjs +0 -0
- package/dist/endpoints/helpers.cjs +0 -10
- package/dist/endpoints/helpers.d.cts +0 -60
- package/dist/endpoints/helpers.d.cts.map +0 -1
- package/dist/endpoints/helpers.d.mts +0 -60
- package/dist/endpoints/helpers.d.mts.map +0 -1
- package/dist/endpoints/helpers.mjs +0 -9
- package/dist/endpoints/lazyAccessors.cjs +0 -10
- package/dist/endpoints/lazyAccessors.d.cts +0 -10
- package/dist/endpoints/lazyAccessors.d.mts +0 -10
- package/dist/endpoints/lazyAccessors.mjs +0 -3
- package/dist/endpoints/parseHonoQuery.cjs +0 -3
- package/dist/endpoints/parseHonoQuery.d.cts +0 -14
- package/dist/endpoints/parseHonoQuery.d.cts.map +0 -1
- package/dist/endpoints/parseHonoQuery.d.mts +0 -14
- package/dist/endpoints/parseHonoQuery.d.mts.map +0 -1
- package/dist/endpoints/parseHonoQuery.mjs +0 -3
- package/dist/endpoints/parseQueryParams.cjs +0 -3
- package/dist/endpoints/parseQueryParams.d.cts +0 -14
- package/dist/endpoints/parseQueryParams.d.cts.map +0 -1
- package/dist/endpoints/parseQueryParams.d.mts +0 -14
- package/dist/endpoints/parseQueryParams.d.mts.map +0 -1
- package/dist/endpoints/parseQueryParams.mjs +0 -3
- package/dist/endpoints/processAudits.cjs +0 -5
- package/dist/endpoints/processAudits.d.cts +0 -95
- package/dist/endpoints/processAudits.d.cts.map +0 -1
- package/dist/endpoints/processAudits.d.mts +0 -95
- package/dist/endpoints/processAudits.d.mts.map +0 -1
- package/dist/endpoints/processAudits.mjs +0 -3
- package/dist/endpoints/rls.cjs +0 -3
- package/dist/endpoints/rls.d.cts +0 -9
- package/dist/endpoints/rls.d.mts +0 -9
- package/dist/endpoints/rls.mjs +0 -3
- package/dist/functions/AWSLambdaFunction.cjs +0 -9
- package/dist/functions/AWSLambdaFunction.d.cts +0 -5
- package/dist/functions/AWSLambdaFunction.d.mts +0 -5
- package/dist/functions/AWSLambdaFunction.mjs +0 -9
- package/dist/functions/BaseFunctionBuilder.cjs +0 -4
- package/dist/functions/BaseFunctionBuilder.d.cts +0 -3
- package/dist/functions/BaseFunctionBuilder.d.mts +0 -3
- package/dist/functions/BaseFunctionBuilder.mjs +0 -4
- package/dist/functions/Function.cjs +0 -5
- package/dist/functions/Function.d.cts +0 -3
- package/dist/functions/Function.d.mts +0 -3
- package/dist/functions/Function.mjs +0 -4
- package/dist/functions/FunctionBuilder.cjs +0 -6
- package/dist/functions/FunctionBuilder.d.cts +0 -5
- package/dist/functions/FunctionBuilder.d.mts +0 -5
- package/dist/functions/FunctionBuilder.mjs +0 -6
- package/dist/functions/FunctionExecutionWrapper.cjs +0 -8
- package/dist/functions/FunctionExecutionWrapper.d.cts +0 -4
- package/dist/functions/FunctionExecutionWrapper.d.mts +0 -4
- package/dist/functions/FunctionExecutionWrapper.mjs +0 -8
- package/dist/functions/TestFunctionAdaptor.cjs +0 -8
- package/dist/functions/TestFunctionAdaptor.d.cts +0 -4
- package/dist/functions/TestFunctionAdaptor.d.mts +0 -4
- package/dist/functions/TestFunctionAdaptor.mjs +0 -8
- package/dist/functions-B1mrMoUH.mjs +0 -8
- package/dist/functions-B1mrMoUH.mjs.map +0 -1
- package/dist/functions-rOD3pXQd.cjs +0 -13
- package/dist/functions-rOD3pXQd.cjs.map +0 -1
- package/dist/helpers-BYyX0qTA.cjs +0 -95
- package/dist/helpers-BYyX0qTA.cjs.map +0 -1
- package/dist/helpers-BtwC2IW8.mjs +0 -83
- package/dist/helpers-BtwC2IW8.mjs.map +0 -1
- package/dist/index-BfeupgMl.d.cts +0 -12
- package/dist/index-BfeupgMl.d.cts.map +0 -1
- package/dist/index-DQo_Csy7.d.mts +0 -12
- package/dist/index-DQo_Csy7.d.mts.map +0 -1
- package/dist/lazyAccessors-BVEtB9lU.cjs +0 -223
- package/dist/lazyAccessors-BVEtB9lU.cjs.map +0 -1
- package/dist/lazyAccessors-Bled3FVc.d.mts +0 -49
- package/dist/lazyAccessors-Bled3FVc.d.mts.map +0 -1
- package/dist/lazyAccessors-C8AF1hNi.d.cts +0 -49
- package/dist/lazyAccessors-C8AF1hNi.d.cts.map +0 -1
- package/dist/lazyAccessors-DM6HcXQk.mjs +0 -175
- package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
- package/dist/parseHonoQuery-BBs8CX-H.cjs +0 -24
- package/dist/parseHonoQuery-BBs8CX-H.cjs.map +0 -1
- package/dist/parseHonoQuery-Cp8CII0P.mjs +0 -18
- package/dist/parseHonoQuery-Cp8CII0P.mjs.map +0 -1
- package/dist/parseQueryParams-B4RK1za3.cjs +0 -31
- package/dist/parseQueryParams-B4RK1za3.cjs.map +0 -1
- package/dist/parseQueryParams-DS3Qmrbd.mjs +0 -25
- package/dist/parseQueryParams-DS3Qmrbd.mjs.map +0 -1
- package/dist/processAudits-CzHkPokQ.cjs +0 -180
- package/dist/processAudits-CzHkPokQ.cjs.map +0 -1
- package/dist/processAudits-Dj8UGqcW.mjs +0 -162
- package/dist/processAudits-Dj8UGqcW.mjs.map +0 -1
- package/dist/publisher-BrzPGnm4.d.cts +0 -16
- package/dist/publisher-BrzPGnm4.d.cts.map +0 -1
- package/dist/publisher-Bw4770Hi.mjs +0 -41
- package/dist/publisher-Bw4770Hi.mjs.map +0 -1
- package/dist/publisher-CP4gpv-4.d.mts +0 -16
- package/dist/publisher-CP4gpv-4.d.mts.map +0 -1
- package/dist/publisher-lFQleddL.cjs +0 -53
- package/dist/publisher-lFQleddL.cjs.map +0 -1
- package/dist/publisher.cjs +0 -4
- package/dist/publisher.d.cts +0 -3
- package/dist/publisher.d.mts +0 -3
- package/dist/publisher.mjs +0 -3
- package/dist/rls-7XXX7DvY.mjs +0 -9
- package/dist/rls-7XXX7DvY.mjs.map +0 -1
- package/dist/rls-DxFqdIA0.cjs +0 -15
- package/dist/rls-DxFqdIA0.cjs.map +0 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +0 -3
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +0 -4
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +0 -4
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +0 -3
- package/dist/subscribers/Subscriber.cjs +0 -4
- package/dist/subscribers/Subscriber.d.cts +0 -3
- package/dist/subscribers/Subscriber.d.mts +0 -3
- package/dist/subscribers/Subscriber.mjs +0 -4
- package/dist/subscribers/SubscriberBuilder.cjs +0 -5
- package/dist/subscribers/SubscriberBuilder.d.cts +0 -4
- package/dist/subscribers/SubscriberBuilder.d.mts +0 -4
- package/dist/subscribers/SubscriberBuilder.mjs +0 -5
- package/dist/subscribers/TestSubscriberAdaptor.cjs +0 -4
- package/dist/subscribers/TestSubscriberAdaptor.d.cts +0 -4
- package/dist/subscribers/TestSubscriberAdaptor.d.mts +0 -4
- package/dist/subscribers/TestSubscriberAdaptor.mjs +0 -4
- package/dist/telemetry.cjs +0 -0
- package/dist/telemetry.d.cts +0 -2
- package/dist/telemetry.d.mts +0 -2
- package/dist/telemetry.mjs +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @geekmidas/constructs
|
|
2
2
|
|
|
3
|
+
## 3.0.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- ✨ [`0830c6e`](https://github.com/geekmidas/toolbox/commit/0830c6e0d60842526788e0e1f0e78827514ea7b3) Thanks [@geekmidas](https://github.com/geekmidas)! - Add optional sniff support
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`0830c6e`](https://github.com/geekmidas/toolbox/commit/0830c6e0d60842526788e0e1f0e78827514ea7b3)]:
|
|
10
|
+
- @geekmidas/logger@1.0.1
|
|
11
|
+
|
|
12
|
+
## 3.0.7
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- ✨ [`79e17a8`](https://github.com/geekmidas/toolbox/commit/79e17a84e630f102023005994d9d45b37f7d9d8f) Thanks [@geekmidas](https://github.com/geekmidas)! - Add msw support for construct testing for ui
|
|
17
|
+
|
|
3
18
|
## 3.0.6
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -1,8 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __commonJS = (cb, mod) => function() {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
13
|
+
key = keys[i];
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
|
+
get: ((k) => from[k]).bind(null, key),
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
22
|
+
value: mod,
|
|
23
|
+
enumerable: true
|
|
24
|
+
}) : target, mod));
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
const __geekmidas_envkit_sniffer = __toESM(require("@geekmidas/envkit/sniffer"));
|
|
28
|
+
|
|
29
|
+
//#region ../../node_modules/.pnpm/lodash.compact@3.0.1/node_modules/lodash.compact/index.js
|
|
30
|
+
var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.compact@3.0.1/node_modules/lodash.compact/index.js"(exports, module) {
|
|
31
|
+
/**
|
|
32
|
+
* lodash 3.0.1 (Custom Build) <https://lodash.com/>
|
|
33
|
+
* Build: `lodash modularize exports="npm" -o ./`
|
|
34
|
+
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
|
35
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
36
|
+
* Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
37
|
+
* Available under MIT license <https://lodash.com/license>
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Creates an array with all falsey values removed. The values `false`, `null`,
|
|
41
|
+
* `0`, `""`, `undefined`, and `NaN` are falsey.
|
|
42
|
+
*
|
|
43
|
+
* @static
|
|
44
|
+
* @memberOf _
|
|
45
|
+
* @category Array
|
|
46
|
+
* @param {Array} array The array to compact.
|
|
47
|
+
* @returns {Array} Returns the new array of filtered values.
|
|
48
|
+
* @example
|
|
49
|
+
*
|
|
50
|
+
* _.compact([0, 1, false, 2, '', 3]);
|
|
51
|
+
* // => [1, 2, 3]
|
|
52
|
+
*/
|
|
53
|
+
function compact$1(array) {
|
|
54
|
+
var index = -1, length = array ? array.length : 0, resIndex = 0, result = [];
|
|
55
|
+
while (++index < length) {
|
|
56
|
+
var value = array[index];
|
|
57
|
+
if (value) result[resIndex++] = value;
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
module.exports = compact$1;
|
|
62
|
+
} });
|
|
4
63
|
|
|
64
|
+
//#endregion
|
|
5
65
|
//#region src/Construct.ts
|
|
66
|
+
var import_lodash = __toESM(require_lodash(), 1);
|
|
6
67
|
const serviceEnvCache = /* @__PURE__ */ new Map();
|
|
7
68
|
/**
|
|
8
69
|
* Noop context for environment sniffing.
|
|
@@ -52,6 +113,8 @@ var Construct = class {
|
|
|
52
113
|
* Results are cached per service class to handle singleton patterns where
|
|
53
114
|
* subsequent register() calls may short-circuit and not access env vars.
|
|
54
115
|
*
|
|
116
|
+
* @param markOptional - When true, optional vars (those accessed via `.optional()` or
|
|
117
|
+
* `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).
|
|
55
118
|
* @returns Promise that resolves to array of environment variable names, sorted alphabetically
|
|
56
119
|
*
|
|
57
120
|
* @example
|
|
@@ -61,12 +124,15 @@ var Construct = class {
|
|
|
61
124
|
* .get('/users')
|
|
62
125
|
* .handle(async () => []);
|
|
63
126
|
*
|
|
64
|
-
*
|
|
127
|
+
* await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']
|
|
128
|
+
* await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']
|
|
65
129
|
* ```
|
|
66
130
|
*/
|
|
67
|
-
async getEnvironment() {
|
|
131
|
+
async getEnvironment(opts = {}) {
|
|
132
|
+
const { markOptional = false } = opts;
|
|
68
133
|
const envVars = /* @__PURE__ */ new Set();
|
|
69
|
-
const
|
|
134
|
+
const optionalVars = /* @__PURE__ */ new Set();
|
|
135
|
+
const services = (0, import_lodash.default)([
|
|
70
136
|
...this.services,
|
|
71
137
|
this.publisherService,
|
|
72
138
|
this.publisherService,
|
|
@@ -77,7 +143,8 @@ var Construct = class {
|
|
|
77
143
|
for (const service of services) {
|
|
78
144
|
if (serviceEnvCache.has(service)) {
|
|
79
145
|
const cached = serviceEnvCache.get(service);
|
|
80
|
-
cached.forEach((v) => envVars.add(v));
|
|
146
|
+
cached.envVars.forEach((v) => envVars.add(v));
|
|
147
|
+
cached.optionalEnvVars.forEach((v) => optionalVars.add(v));
|
|
81
148
|
continue;
|
|
82
149
|
}
|
|
83
150
|
const result = await sniffService(service);
|
|
@@ -89,10 +156,16 @@ var Construct = class {
|
|
|
89
156
|
errors: result.unhandledRejections.map((e) => e.message),
|
|
90
157
|
service: service.serviceName
|
|
91
158
|
}, "Fire-and-forget rejections during env sniffing (suppressed)");
|
|
92
|
-
serviceEnvCache.set(service,
|
|
159
|
+
serviceEnvCache.set(service, {
|
|
160
|
+
envVars: result.envVars,
|
|
161
|
+
optionalEnvVars: result.optionalEnvVars
|
|
162
|
+
});
|
|
93
163
|
result.envVars.forEach((v) => envVars.add(v));
|
|
164
|
+
result.optionalEnvVars.forEach((v) => optionalVars.add(v));
|
|
94
165
|
}
|
|
95
|
-
|
|
166
|
+
const sorted = Array.from(envVars).sort();
|
|
167
|
+
if (!markOptional || optionalVars.size === 0) return sorted;
|
|
168
|
+
return sorted.map((v) => optionalVars.has(v) ? `${v}?` : v);
|
|
96
169
|
} catch (error) {
|
|
97
170
|
this.logger.error({ error }, "Error determining environment variables for construct");
|
|
98
171
|
return [];
|
|
@@ -141,6 +214,18 @@ Object.defineProperty(exports, 'ConstructType', {
|
|
|
141
214
|
return ConstructType;
|
|
142
215
|
}
|
|
143
216
|
});
|
|
217
|
+
Object.defineProperty(exports, '__commonJS', {
|
|
218
|
+
enumerable: true,
|
|
219
|
+
get: function () {
|
|
220
|
+
return __commonJS;
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
Object.defineProperty(exports, '__toESM', {
|
|
224
|
+
enumerable: true,
|
|
225
|
+
get: function () {
|
|
226
|
+
return __toESM;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
144
229
|
Object.defineProperty(exports, 'sniffService', {
|
|
145
230
|
enumerable: true,
|
|
146
231
|
get: function () {
|
|
@@ -153,4 +238,4 @@ Object.defineProperty(exports, 'snifferContext', {
|
|
|
153
238
|
return snifferContext;
|
|
154
239
|
}
|
|
155
240
|
});
|
|
156
|
-
//# sourceMappingURL=Construct-
|
|
241
|
+
//# sourceMappingURL=Construct-B14miJ6P.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Construct-B14miJ6P.cjs","names":["compact","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>","opts: { markOptional?: boolean }","services: Service[]","service: Service","SnifferEnvironmentParser"],"sources":["../../../node_modules/.pnpm/lodash.compact@3.0.1/node_modules/lodash.compact/index.js","../src/Construct.ts"],"sourcesContent":["/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","import type { AuditStorage } from '@geekmidas/audit';\nimport {\n\tSnifferEnvironmentParser,\n\ttype SniffResult,\n\tsniffWithFireAndForget,\n} 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// Stores both the full list and the optional subset so the same sniff result\n// can satisfy both getEnvironment() and getEnvironment({ markOptional: true }).\nconst serviceEnvCache = new Map<\n\tService,\n\t{ envVars: string[]; optionalEnvVars: string[] }\n>();\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\tTDatabaseServiceName extends string = string,\n\tTDatabase = unknown,\n> {\n\t/** Database service for this construct (used by Endpoint for RLS/audit context) */\n\tpublic databaseService?: Service<TDatabaseServiceName, TDatabase>;\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 * @param markOptional - When true, optional vars (those accessed via `.optional()` or\n\t * `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).\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 * await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n\t * await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']\n\t * ```\n\t */\n\tasync getEnvironment(\n\t\topts: { markOptional?: boolean } = {},\n\t): Promise<string[]> {\n\t\tconst { markOptional = false } = opts;\n\t\tconst envVars = new Set<string>();\n\t\tconst optionalVars = new Set<string>();\n\t\tconst services: Service[] = compact([\n\t\t\t...this.services,\n\t\t\tthis.publisherService,\n\t\t\tthis.publisherService,\n\t\t\tthis.auditorStorageService,\n\t\t\tthis.databaseService,\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.envVars.forEach((v) => envVars.add(v));\n\t\t\t\t\tcached.optionalEnvVars.forEach((v) => optionalVars.add(v));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Use sniffService to properly handle all error scenarios\n\t\t\t\tconst result = await sniffService(service);\n\n\t\t\t\t// Log any issues for debugging\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthis.logger.warn(\n\t\t\t\t\t\t{ error: result.error.message, service: service.serviceName },\n\t\t\t\t\t\t'Service threw error during env sniffing (env vars still captured)',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (result.unhandledRejections.length > 0) {\n\t\t\t\t\tthis.logger.warn(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terrors: result.unhandledRejections.map((e) => e.message),\n\t\t\t\t\t\t\tservice: service.serviceName,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'Fire-and-forget rejections during env sniffing (suppressed)',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Cache and collect env vars (both required and optional)\n\t\t\t\tserviceEnvCache.set(service, {\n\t\t\t\t\tenvVars: result.envVars,\n\t\t\t\t\toptionalEnvVars: result.optionalEnvVars,\n\t\t\t\t});\n\t\t\t\tresult.envVars.forEach((v) => envVars.add(v));\n\t\t\t\tresult.optionalEnvVars.forEach((v) => optionalVars.add(v));\n\t\t\t}\n\n\t\t\tconst sorted = Array.from(envVars).sort();\n\t\t\tif (!markOptional || optionalVars.size === 0) return sorted;\n\t\t\treturn sorted.map((v) => (optionalVars.has(v) ? `${v}?` : v));\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\n/**\n * Utility to test sniffing a service for environment variables.\n * Useful for debugging services that throw errors during sniffing.\n *\n * @example\n * ```typescript\n * import { sniffService } from '@geekmidas/constructs';\n * import { authService } from './services/AuthService';\n *\n * const result = await sniffService(authService);\n * console.log('Env vars:', result.envVars);\n * console.log('Error:', result.error);\n * ```\n */\nexport async function sniffService(service: Service): Promise<SniffResult> {\n\tconst sniffer = new SnifferEnvironmentParser();\n\n\treturn sniffWithFireAndForget(sniffer, () =>\n\t\tservice.register({\n\t\t\tenvParser: sniffer as any,\n\t\t\tcontext: snifferContext,\n\t\t}),\n\t);\n}\n\n// Export for testing\nexport { snifferContext };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBA,SAASA,UAAQ,OAAO;EACtB,IAAI,QAAQ,IACR,SAAS,QAAQ,MAAM,SAAS,GAChC,WAAW,GACX,SAAS,CAAE;AAEf,SAAO,EAAE,QAAQ,QAAQ;GACvB,IAAI,QAAQ,MAAM;AAClB,OAAI,MACF,QAAO,cAAc;EAExB;AACD,SAAO;CACR;AAED,QAAO,UAAUA;;;;;;ACvBjB,MAAM,kCAAkB,IAAI;;;;;;;AAW5B,MAAMC,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,MAUE;;CAED,AAAO;CAEP,YACiBC,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIf;EAbe;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAIb;;;;;;;;;;;;;;;;;;;;;;;;CAyBJ,MAAM,eACLC,OAAmC,CAAE,GACjB;EACpB,MAAM,EAAE,eAAe,OAAO,GAAG;EACjC,MAAM,0BAAU,IAAI;EACpB,MAAM,+BAAe,IAAI;EACzB,MAAMC,WAAsB,2BAAQ;GACnC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;GACL,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,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AAC7C,YAAO,gBAAgB,QAAQ,CAAC,MAAM,aAAa,IAAI,EAAE,CAAC;AAC1D;IACA;IAGD,MAAM,SAAS,MAAM,aAAa,QAAQ;AAG1C,QAAI,OAAO,MACV,MAAK,OAAO,KACX;KAAE,OAAO,OAAO,MAAM;KAAS,SAAS,QAAQ;IAAa,GAC7D,oEACA;AAEF,QAAI,OAAO,oBAAoB,SAAS,EACvC,MAAK,OAAO,KACX;KACC,QAAQ,OAAO,oBAAoB,IAAI,CAAC,MAAM,EAAE,QAAQ;KACxD,SAAS,QAAQ;IACjB,GACD,8DACA;AAIF,oBAAgB,IAAI,SAAS;KAC5B,SAAS,OAAO;KAChB,iBAAiB,OAAO;IACxB,EAAC;AACF,WAAO,QAAQ,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AAC7C,WAAO,gBAAgB,QAAQ,CAAC,MAAM,aAAa,IAAI,EAAE,CAAC;GAC1D;GAED,MAAM,SAAS,MAAM,KAAK,QAAQ,CAAC,MAAM;AACzC,QAAK,gBAAgB,aAAa,SAAS,EAAG,QAAO;AACrD,UAAO,OAAO,IAAI,CAAC,MAAO,aAAa,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAG;EAC7D,SAAQ,OAAO;AACf,QAAK,OAAO,MACX,EAAE,MAAO,GACT,wDACA;AAED,UAAO,CAAE;EACT;CACD;AACD;AAED,IAAY,0DAAL;AACN;AACA;AACA;AACA;;AACA;;;;;;;;;;;;;;;AAgBD,eAAsB,aAAaC,SAAwC;CAC1E,MAAM,UAAU,IAAIC;AAEpB,QAAO,uDAAuB,SAAS,MACtC,QAAQ,SAAS;EAChB,WAAW;EACX,SAAS;CACT,EAAC,CACF;AACD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { SniffResult } from "@geekmidas/envkit/sniffer";
|
|
2
|
-
import { Service, ServiceContext } from "@geekmidas/services";
|
|
3
|
-
import { AuditStorage } from "@geekmidas/audit";
|
|
4
1
|
import { EventPublisher, MappedEvent } from "@geekmidas/events";
|
|
5
2
|
import { Logger } from "@geekmidas/logger";
|
|
3
|
+
import { Service, ServiceContext } from "@geekmidas/services";
|
|
6
4
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
|
+
import { AuditStorage } from "@geekmidas/audit";
|
|
6
|
+
import { SniffResult } from "@geekmidas/envkit/sniffer";
|
|
7
7
|
|
|
8
8
|
//#region src/Construct.d.ts
|
|
9
9
|
|
|
@@ -35,6 +35,8 @@ declare abstract class Construct<TLogger extends Logger = Logger, TServiceName e
|
|
|
35
35
|
* Results are cached per service class to handle singleton patterns where
|
|
36
36
|
* subsequent register() calls may short-circuit and not access env vars.
|
|
37
37
|
*
|
|
38
|
+
* @param markOptional - When true, optional vars (those accessed via `.optional()` or
|
|
39
|
+
* `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).
|
|
38
40
|
* @returns Promise that resolves to array of environment variable names, sorted alphabetically
|
|
39
41
|
*
|
|
40
42
|
* @example
|
|
@@ -44,10 +46,13 @@ declare abstract class Construct<TLogger extends Logger = Logger, TServiceName e
|
|
|
44
46
|
* .get('/users')
|
|
45
47
|
* .handle(async () => []);
|
|
46
48
|
*
|
|
47
|
-
*
|
|
49
|
+
* await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']
|
|
50
|
+
* await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']
|
|
48
51
|
* ```
|
|
49
52
|
*/
|
|
50
|
-
getEnvironment(
|
|
53
|
+
getEnvironment(opts?: {
|
|
54
|
+
markOptional?: boolean;
|
|
55
|
+
}): Promise<string[]>;
|
|
51
56
|
}
|
|
52
57
|
declare enum ConstructType {
|
|
53
58
|
Cron = "dev.geekmidas.function.cron",
|
|
@@ -72,4 +77,4 @@ declare enum ConstructType {
|
|
|
72
77
|
declare function sniffService(service: Service): Promise<SniffResult>;
|
|
73
78
|
//#endregion
|
|
74
79
|
export { Construct, ConstructType, sniffService, snifferContext };
|
|
75
|
-
//# sourceMappingURL=Construct-
|
|
80
|
+
//# sourceMappingURL=Construct-CXqvzglu.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Construct-
|
|
1
|
+
{"version":3,"file":"Construct-CXqvzglu.d.cts","names":[],"sources":["../src/Construct.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AAS8D;AAuC9D;;;cAtBM,cAuBoB,EAvBJ,cAuBI;AAEf,uBAHW,SAGX,CAAA,gBAFM,MAEN,GAFe,MAEf,EAAA,qBAAA,MAAA,GAAA,MAAA,EAAA,UAAA,cAAA,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,kBACQ,gBADR,GAAA,SAAA,GAAA,SAAA,EAAA,kBAEQ,OAFR,EAAA,GAAA,EAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,sBAIY,YAJZ,GAAA,SAAA,GAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,YAAA,OAAA,CAAA,CAAA;EAAc,SACN,IAAA,EAWK,aAXL;EAAgB,SAChB,MAAA,EAWO,OAXP;EAAO,SAEH,QAAA,EAUK,SAVL;EAAY,SAQX,MAAA,EAGE,WAHF,CAGc,CAHd,EAAA,GAAA,CAAA,EAAA;EAAa,SACX,gBAAA,CAAA,EAIW,OAJX,CAImB,YAJnB,EAIiC,CAJjC,CAAA,GAAA,SAAA;EAAO,YACL,CAAA,EAIJ,SAJI,GAAA,SAAA;EAAS,SACC,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAC,SAAb,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAW,SAEQ,qBAAA,CAAA,EAIH,OAJG,CAK1C,wBAL0C,EAM1C,aAN0C,CAAA,GAAA,SAAA;EAAY;EAAG,eAAvB,CAAA,EARX,OAQW,CARH,oBAQG,EARmB,SAQnB,CAAA;EAAO,WACpB,CAAA,IAAA,EANA,aAMA,EAAA,MAAA,EALE,OAKF,EAAA,QAAA,EAJI,SAIJ,EAAA,MAAA,CAAA,EAHE,WAGF,CAHc,CAGd,EAAA,GAAA,CAAA,EAAA,EAAA,gBAAA,CAAA,EADa,OACb,CADqB,YACrB,EADmC,CACnC,CAAA,GAAA,SAAA,EAAA,YAAA,CAAA,EAAA,SAAA,GAAA,SAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,qBAAA,CAAA,EAGkB,OAHlB,CAIrB,wBAJqB,EAKrB,aALqB,CAAA,GAAA,SAAA;EAAS;;;;;;;;;;;;;;;;;;;AAkCtB;AAiEX;AAqBA;;EAAkC,cAAU,CAAA,IAA6B,CAA7B,EAAA;IAAkB,YAAA,CAAA,EAAA,OAAA;EAAW,CAAA,CAAA,EAtFrE,OAsFkD,CAAA,MAAA,EAAA,CAAA;AAAO;aArBjD,aAAA;;;;;;;;;;;;;;;;;;;;iBAqBU,YAAA,UAAsB,UAAU,QAAQ"}
|
|
@@ -1,7 +1,69 @@
|
|
|
1
1
|
import { SnifferEnvironmentParser, sniffWithFireAndForget } from "@geekmidas/envkit/sniffer";
|
|
2
|
-
import compact from "lodash.compact";
|
|
3
2
|
|
|
3
|
+
//#region rolldown:runtime
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __commonJS = (cb, mod) => function() {
|
|
11
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
15
|
+
key = keys[i];
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
17
|
+
get: ((k) => from[k]).bind(null, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
24
|
+
value: mod,
|
|
25
|
+
enumerable: true
|
|
26
|
+
}) : target, mod));
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region ../../node_modules/.pnpm/lodash.compact@3.0.1/node_modules/lodash.compact/index.js
|
|
30
|
+
var require_lodash = __commonJS({ "../../node_modules/.pnpm/lodash.compact@3.0.1/node_modules/lodash.compact/index.js"(exports, module) {
|
|
31
|
+
/**
|
|
32
|
+
* lodash 3.0.1 (Custom Build) <https://lodash.com/>
|
|
33
|
+
* Build: `lodash modularize exports="npm" -o ./`
|
|
34
|
+
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
|
35
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
36
|
+
* Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
37
|
+
* Available under MIT license <https://lodash.com/license>
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Creates an array with all falsey values removed. The values `false`, `null`,
|
|
41
|
+
* `0`, `""`, `undefined`, and `NaN` are falsey.
|
|
42
|
+
*
|
|
43
|
+
* @static
|
|
44
|
+
* @memberOf _
|
|
45
|
+
* @category Array
|
|
46
|
+
* @param {Array} array The array to compact.
|
|
47
|
+
* @returns {Array} Returns the new array of filtered values.
|
|
48
|
+
* @example
|
|
49
|
+
*
|
|
50
|
+
* _.compact([0, 1, false, 2, '', 3]);
|
|
51
|
+
* // => [1, 2, 3]
|
|
52
|
+
*/
|
|
53
|
+
function compact$1(array) {
|
|
54
|
+
var index = -1, length = array ? array.length : 0, resIndex = 0, result = [];
|
|
55
|
+
while (++index < length) {
|
|
56
|
+
var value = array[index];
|
|
57
|
+
if (value) result[resIndex++] = value;
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
module.exports = compact$1;
|
|
62
|
+
} });
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
4
65
|
//#region src/Construct.ts
|
|
66
|
+
var import_lodash = __toESM(require_lodash(), 1);
|
|
5
67
|
const serviceEnvCache = /* @__PURE__ */ new Map();
|
|
6
68
|
/**
|
|
7
69
|
* Noop context for environment sniffing.
|
|
@@ -51,6 +113,8 @@ var Construct = class {
|
|
|
51
113
|
* Results are cached per service class to handle singleton patterns where
|
|
52
114
|
* subsequent register() calls may short-circuit and not access env vars.
|
|
53
115
|
*
|
|
116
|
+
* @param markOptional - When true, optional vars (those accessed via `.optional()` or
|
|
117
|
+
* `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).
|
|
54
118
|
* @returns Promise that resolves to array of environment variable names, sorted alphabetically
|
|
55
119
|
*
|
|
56
120
|
* @example
|
|
@@ -60,12 +124,15 @@ var Construct = class {
|
|
|
60
124
|
* .get('/users')
|
|
61
125
|
* .handle(async () => []);
|
|
62
126
|
*
|
|
63
|
-
*
|
|
127
|
+
* await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']
|
|
128
|
+
* await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']
|
|
64
129
|
* ```
|
|
65
130
|
*/
|
|
66
|
-
async getEnvironment() {
|
|
131
|
+
async getEnvironment(opts = {}) {
|
|
132
|
+
const { markOptional = false } = opts;
|
|
67
133
|
const envVars = /* @__PURE__ */ new Set();
|
|
68
|
-
const
|
|
134
|
+
const optionalVars = /* @__PURE__ */ new Set();
|
|
135
|
+
const services = (0, import_lodash.default)([
|
|
69
136
|
...this.services,
|
|
70
137
|
this.publisherService,
|
|
71
138
|
this.publisherService,
|
|
@@ -76,7 +143,8 @@ var Construct = class {
|
|
|
76
143
|
for (const service of services) {
|
|
77
144
|
if (serviceEnvCache.has(service)) {
|
|
78
145
|
const cached = serviceEnvCache.get(service);
|
|
79
|
-
cached.forEach((v) => envVars.add(v));
|
|
146
|
+
cached.envVars.forEach((v) => envVars.add(v));
|
|
147
|
+
cached.optionalEnvVars.forEach((v) => optionalVars.add(v));
|
|
80
148
|
continue;
|
|
81
149
|
}
|
|
82
150
|
const result = await sniffService(service);
|
|
@@ -88,10 +156,16 @@ var Construct = class {
|
|
|
88
156
|
errors: result.unhandledRejections.map((e) => e.message),
|
|
89
157
|
service: service.serviceName
|
|
90
158
|
}, "Fire-and-forget rejections during env sniffing (suppressed)");
|
|
91
|
-
serviceEnvCache.set(service,
|
|
159
|
+
serviceEnvCache.set(service, {
|
|
160
|
+
envVars: result.envVars,
|
|
161
|
+
optionalEnvVars: result.optionalEnvVars
|
|
162
|
+
});
|
|
92
163
|
result.envVars.forEach((v) => envVars.add(v));
|
|
164
|
+
result.optionalEnvVars.forEach((v) => optionalVars.add(v));
|
|
93
165
|
}
|
|
94
|
-
|
|
166
|
+
const sorted = Array.from(envVars).sort();
|
|
167
|
+
if (!markOptional || optionalVars.size === 0) return sorted;
|
|
168
|
+
return sorted.map((v) => optionalVars.has(v) ? `${v}?` : v);
|
|
95
169
|
} catch (error) {
|
|
96
170
|
this.logger.error({ error }, "Error determining environment variables for construct");
|
|
97
171
|
return [];
|
|
@@ -128,5 +202,5 @@ async function sniffService(service) {
|
|
|
128
202
|
}
|
|
129
203
|
|
|
130
204
|
//#endregion
|
|
131
|
-
export { Construct, ConstructType, sniffService, snifferContext };
|
|
132
|
-
//# sourceMappingURL=Construct-
|
|
205
|
+
export { Construct, ConstructType, __commonJS, __toESM, sniffService, snifferContext };
|
|
206
|
+
//# sourceMappingURL=Construct-CdJY2DJS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Construct-CdJY2DJS.mjs","names":["compact","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>","opts: { markOptional?: boolean }","services: Service[]","service: Service"],"sources":["../../../node_modules/.pnpm/lodash.compact@3.0.1/node_modules/lodash.compact/index.js","../src/Construct.ts"],"sourcesContent":["/**\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","import type { AuditStorage } from '@geekmidas/audit';\nimport {\n\tSnifferEnvironmentParser,\n\ttype SniffResult,\n\tsniffWithFireAndForget,\n} 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// Stores both the full list and the optional subset so the same sniff result\n// can satisfy both getEnvironment() and getEnvironment({ markOptional: true }).\nconst serviceEnvCache = new Map<\n\tService,\n\t{ envVars: string[]; optionalEnvVars: string[] }\n>();\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\tTDatabaseServiceName extends string = string,\n\tTDatabase = unknown,\n> {\n\t/** Database service for this construct (used by Endpoint for RLS/audit context) */\n\tpublic databaseService?: Service<TDatabaseServiceName, TDatabase>;\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 * @param markOptional - When true, optional vars (those accessed via `.optional()` or\n\t * `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).\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 * await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n\t * await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']\n\t * ```\n\t */\n\tasync getEnvironment(\n\t\topts: { markOptional?: boolean } = {},\n\t): Promise<string[]> {\n\t\tconst { markOptional = false } = opts;\n\t\tconst envVars = new Set<string>();\n\t\tconst optionalVars = new Set<string>();\n\t\tconst services: Service[] = compact([\n\t\t\t...this.services,\n\t\t\tthis.publisherService,\n\t\t\tthis.publisherService,\n\t\t\tthis.auditorStorageService,\n\t\t\tthis.databaseService,\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.envVars.forEach((v) => envVars.add(v));\n\t\t\t\t\tcached.optionalEnvVars.forEach((v) => optionalVars.add(v));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Use sniffService to properly handle all error scenarios\n\t\t\t\tconst result = await sniffService(service);\n\n\t\t\t\t// Log any issues for debugging\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthis.logger.warn(\n\t\t\t\t\t\t{ error: result.error.message, service: service.serviceName },\n\t\t\t\t\t\t'Service threw error during env sniffing (env vars still captured)',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (result.unhandledRejections.length > 0) {\n\t\t\t\t\tthis.logger.warn(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\terrors: result.unhandledRejections.map((e) => e.message),\n\t\t\t\t\t\t\tservice: service.serviceName,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'Fire-and-forget rejections during env sniffing (suppressed)',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Cache and collect env vars (both required and optional)\n\t\t\t\tserviceEnvCache.set(service, {\n\t\t\t\t\tenvVars: result.envVars,\n\t\t\t\t\toptionalEnvVars: result.optionalEnvVars,\n\t\t\t\t});\n\t\t\t\tresult.envVars.forEach((v) => envVars.add(v));\n\t\t\t\tresult.optionalEnvVars.forEach((v) => optionalVars.add(v));\n\t\t\t}\n\n\t\t\tconst sorted = Array.from(envVars).sort();\n\t\t\tif (!markOptional || optionalVars.size === 0) return sorted;\n\t\t\treturn sorted.map((v) => (optionalVars.has(v) ? `${v}?` : v));\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\n/**\n * Utility to test sniffing a service for environment variables.\n * Useful for debugging services that throw errors during sniffing.\n *\n * @example\n * ```typescript\n * import { sniffService } from '@geekmidas/constructs';\n * import { authService } from './services/AuthService';\n *\n * const result = await sniffService(authService);\n * console.log('Env vars:', result.envVars);\n * console.log('Error:', result.error);\n * ```\n */\nexport async function sniffService(service: Service): Promise<SniffResult> {\n\tconst sniffer = new SnifferEnvironmentParser();\n\n\treturn sniffWithFireAndForget(sniffer, () =>\n\t\tservice.register({\n\t\t\tenvParser: sniffer as any,\n\t\t\tcontext: snifferContext,\n\t\t}),\n\t);\n}\n\n// Export for testing\nexport { snifferContext };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBA,SAASA,UAAQ,OAAO;EACtB,IAAI,QAAQ,IACR,SAAS,QAAQ,MAAM,SAAS,GAChC,WAAW,GACX,SAAS,CAAE;AAEf,SAAO,EAAE,QAAQ,QAAQ;GACvB,IAAI,QAAQ,MAAM;AAClB,OAAI,MACF,QAAO,cAAc;EAExB;AACD,SAAO;CACR;AAED,QAAO,UAAUA;;;;;;ACvBjB,MAAM,kCAAkB,IAAI;;;;;;;AAW5B,MAAMC,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,MAUE;;CAED,AAAO;CAEP,YACiBC,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIf;EAbe;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAIb;;;;;;;;;;;;;;;;;;;;;;;;CAyBJ,MAAM,eACLC,OAAmC,CAAE,GACjB;EACpB,MAAM,EAAE,eAAe,OAAO,GAAG;EACjC,MAAM,0BAAU,IAAI;EACpB,MAAM,+BAAe,IAAI;EACzB,MAAMC,WAAsB,2BAAQ;GACnC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;GACL,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,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AAC7C,YAAO,gBAAgB,QAAQ,CAAC,MAAM,aAAa,IAAI,EAAE,CAAC;AAC1D;IACA;IAGD,MAAM,SAAS,MAAM,aAAa,QAAQ;AAG1C,QAAI,OAAO,MACV,MAAK,OAAO,KACX;KAAE,OAAO,OAAO,MAAM;KAAS,SAAS,QAAQ;IAAa,GAC7D,oEACA;AAEF,QAAI,OAAO,oBAAoB,SAAS,EACvC,MAAK,OAAO,KACX;KACC,QAAQ,OAAO,oBAAoB,IAAI,CAAC,MAAM,EAAE,QAAQ;KACxD,SAAS,QAAQ;IACjB,GACD,8DACA;AAIF,oBAAgB,IAAI,SAAS;KAC5B,SAAS,OAAO;KAChB,iBAAiB,OAAO;IACxB,EAAC;AACF,WAAO,QAAQ,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AAC7C,WAAO,gBAAgB,QAAQ,CAAC,MAAM,aAAa,IAAI,EAAE,CAAC;GAC1D;GAED,MAAM,SAAS,MAAM,KAAK,QAAQ,CAAC,MAAM;AACzC,QAAK,gBAAgB,aAAa,SAAS,EAAG,QAAO;AACrD,UAAO,OAAO,IAAI,CAAC,MAAO,aAAa,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAG;EAC7D,SAAQ,OAAO;AACf,QAAK,OAAO,MACX,EAAE,MAAO,GACT,wDACA;AAED,UAAO,CAAE;EACT;CACD;AACD;AAED,IAAY,0DAAL;AACN;AACA;AACA;AACA;;AACA;;;;;;;;;;;;;;;AAgBD,eAAsB,aAAaC,SAAwC;CAC1E,MAAM,UAAU,IAAI;AAEpB,QAAO,uBAAuB,SAAS,MACtC,QAAQ,SAAS;EAChB,WAAW;EACX,SAAS;CACT,EAAC,CACF;AACD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AuditStorage } from "@geekmidas/audit";
|
|
2
1
|
import { SniffResult } from "@geekmidas/envkit/sniffer";
|
|
2
|
+
import { Service, ServiceContext } from "@geekmidas/services";
|
|
3
|
+
import { AuditStorage } from "@geekmidas/audit";
|
|
3
4
|
import { EventPublisher, MappedEvent } from "@geekmidas/events";
|
|
4
5
|
import { Logger } from "@geekmidas/logger";
|
|
5
|
-
import { Service, ServiceContext } from "@geekmidas/services";
|
|
6
6
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
7
7
|
|
|
8
8
|
//#region src/Construct.d.ts
|
|
@@ -19,14 +19,14 @@ declare abstract class Construct<TLogger extends Logger = Logger, TServiceName e
|
|
|
19
19
|
readonly logger: TLogger;
|
|
20
20
|
readonly services: TServices;
|
|
21
21
|
readonly events: MappedEvent<T, any>[];
|
|
22
|
-
readonly publisherService?: Service<TServiceName, T
|
|
22
|
+
readonly publisherService?: Service<TServiceName, T>;
|
|
23
23
|
outputSchema?: OutSchema | undefined;
|
|
24
24
|
readonly timeout?: number | undefined;
|
|
25
25
|
readonly memorySize?: number | undefined;
|
|
26
|
-
readonly auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage
|
|
26
|
+
readonly auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>;
|
|
27
27
|
/** Database service for this construct (used by Endpoint for RLS/audit context) */
|
|
28
28
|
databaseService?: Service<TDatabaseServiceName, TDatabase>;
|
|
29
|
-
constructor(type: ConstructType, logger: TLogger, services: TServices, events?: MappedEvent<T, any>[], publisherService?: Service<TServiceName, T
|
|
29
|
+
constructor(type: ConstructType, logger: TLogger, services: TServices, events?: MappedEvent<T, any>[], publisherService?: Service<TServiceName, T>, outputSchema?: OutSchema | undefined, timeout?: number | undefined, memorySize?: number | undefined, auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>);
|
|
30
30
|
/**
|
|
31
31
|
* Returns an array of environment variable names required by this construct's services.
|
|
32
32
|
* This is determined by running a "sniffer" EnvironmentParser through each service's
|
|
@@ -35,6 +35,8 @@ declare abstract class Construct<TLogger extends Logger = Logger, TServiceName e
|
|
|
35
35
|
* Results are cached per service class to handle singleton patterns where
|
|
36
36
|
* subsequent register() calls may short-circuit and not access env vars.
|
|
37
37
|
*
|
|
38
|
+
* @param markOptional - When true, optional vars (those accessed via `.optional()` or
|
|
39
|
+
* `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).
|
|
38
40
|
* @returns Promise that resolves to array of environment variable names, sorted alphabetically
|
|
39
41
|
*
|
|
40
42
|
* @example
|
|
@@ -44,10 +46,13 @@ declare abstract class Construct<TLogger extends Logger = Logger, TServiceName e
|
|
|
44
46
|
* .get('/users')
|
|
45
47
|
* .handle(async () => []);
|
|
46
48
|
*
|
|
47
|
-
*
|
|
49
|
+
* await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']
|
|
50
|
+
* await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']
|
|
48
51
|
* ```
|
|
49
52
|
*/
|
|
50
|
-
getEnvironment(
|
|
53
|
+
getEnvironment(opts?: {
|
|
54
|
+
markOptional?: boolean;
|
|
55
|
+
}): Promise<string[]>;
|
|
51
56
|
}
|
|
52
57
|
declare enum ConstructType {
|
|
53
58
|
Cron = "dev.geekmidas.function.cron",
|
|
@@ -72,4 +77,4 @@ declare enum ConstructType {
|
|
|
72
77
|
declare function sniffService(service: Service): Promise<SniffResult>;
|
|
73
78
|
//#endregion
|
|
74
79
|
export { Construct, ConstructType, sniffService, snifferContext };
|
|
75
|
-
//# sourceMappingURL=Construct-
|
|
80
|
+
//# sourceMappingURL=Construct-D0n7QTaI.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Construct-D0n7QTaI.d.mts","names":[],"sources":["../src/Construct.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AAS8D;AAuC9D;;;cAtBM,cAuBoB,EAvBJ,cAuBI;AAEf,uBAHW,SAGX,CAAA,gBAFM,MAEN,GAFe,MAEf,EAAA,qBAAA,MAAA,GAAA,MAAA,EAAA,UAAA,cAAA,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,kBACQ,gBADR,GAAA,SAAA,GAAA,SAAA,EAAA,kBAEQ,OAFR,EAAA,GAAA,EAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,sBAIY,YAJZ,GAAA,SAAA,GAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,YAAA,OAAA,CAAA,CAAA;EAAc,SACN,IAAA,EAWK,aAXL;EAAgB,SAChB,MAAA,EAWO,OAXP;EAAO,SAEH,QAAA,EAUK,SAVL;EAAY,SAQX,MAAA,EAGE,WAHF,CAGc,CAHd,EAAA,GAAA,CAAA,EAAA;EAAa,SACX,gBAAA,CAAA,EAIW,OAJX,CAImB,YAJnB,EAIiC,CAJjC,CAAA;EAAO,YACL,CAAA,EAIJ,SAJI,GAAA,SAAA;EAAS,SACC,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAC,SAAb,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAAW,SAEQ,qBAAA,CAAA,EAIH,OAJG,CAK1C,wBAL0C,EAM1C,aAN0C,CAAA;EAAY;EAAG,eAAvB,CAAA,EARX,OAQW,CARH,oBAQG,EARmB,SAQnB,CAAA;EAAO,WACpB,CAAA,IAAA,EANA,aAMA,EAAA,MAAA,EALE,OAKF,EAAA,QAAA,EAJI,SAIJ,EAAA,MAAA,CAAA,EAHE,WAGF,CAHc,CAGd,EAAA,GAAA,CAAA,EAAA,EAAA,gBAAA,CAAA,EADa,OACb,CADqB,YACrB,EADmC,CACnC,CAAA,EAAA,YAAA,CAAA,EAAA,SAAA,GAAA,SAAA,EAAA,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,UAAA,CAAA,EAAA,MAAA,GAAA,SAAA,EAAA,qBAAA,CAAA,EAGkB,OAHlB,CAIrB,wBAJqB,EAKrB,aALqB,CAAA;EAAS;;;;;;;;;;;;;;;;;;;AAkCtB;AAiEX;AAqBA;;EAAkC,cAAU,CAAA,IAA6B,CAA7B,EAAA;IAAkB,YAAA,CAAA,EAAA,OAAA;EAAW,CAAA,CAAA,EAtFrE,OAsFkD,CAAA,MAAA,EAAA,CAAA;AAAO;aArBjD,aAAA;;;;;;;;;;;;;;;;;;;;iBAqBU,YAAA,UAAsB,UAAU,QAAQ"}
|