@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/dist/adaptors/aws.cjs
CHANGED
|
@@ -1,21 +1,737 @@
|
|
|
1
|
-
require('../Construct-
|
|
2
|
-
require('../
|
|
3
|
-
require('../
|
|
4
|
-
require('../
|
|
5
|
-
require(
|
|
6
|
-
require(
|
|
7
|
-
require(
|
|
8
|
-
require(
|
|
9
|
-
require(
|
|
10
|
-
require(
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
const require_Construct = require('../Construct-B14miJ6P.cjs');
|
|
2
|
+
const require_lazyAccessors = require('../lazyAccessors-DHvDeww0.cjs');
|
|
3
|
+
const require_functions = require('../functions-DiaRAdfp.cjs');
|
|
4
|
+
const require_processAudits = require('../processAudits-CUko08pi.cjs');
|
|
5
|
+
const __geekmidas_db_rls = require_Construct.__toESM(require("@geekmidas/db/rls"));
|
|
6
|
+
const __middy_core = require_Construct.__toESM(require("@middy/core"));
|
|
7
|
+
const __geekmidas_errors = require_Construct.__toESM(require("@geekmidas/errors"));
|
|
8
|
+
const __geekmidas_services = require_Construct.__toESM(require("@geekmidas/services"));
|
|
9
|
+
const __geekmidas_audit = require_Construct.__toESM(require("@geekmidas/audit"));
|
|
10
|
+
const qs = require_Construct.__toESM(require("qs"));
|
|
11
|
+
const __geekmidas_audit_kysely = require_Construct.__toESM(require("@geekmidas/audit/kysely"));
|
|
12
|
+
|
|
13
|
+
//#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
|
|
14
|
+
var import_lodash = require_Construct.__toESM(require_lazyAccessors.require_lodash(), 1);
|
|
15
|
+
var AmazonApiGatewayEndpoint = class {
|
|
16
|
+
options;
|
|
17
|
+
constructor(envParser, endpoint, options = {}) {
|
|
18
|
+
this.envParser = envParser;
|
|
19
|
+
this.endpoint = endpoint;
|
|
20
|
+
this.options = options;
|
|
21
|
+
}
|
|
22
|
+
error() {
|
|
23
|
+
return { onError: (req) => {
|
|
24
|
+
(req.event.logger || this.endpoint.logger).error(req.error || {}, "Error processing request");
|
|
25
|
+
const wrappedError = (0, __geekmidas_errors.wrapError)(req.error);
|
|
26
|
+
req.response = {
|
|
27
|
+
statusCode: wrappedError.statusCode,
|
|
28
|
+
body: wrappedError.body
|
|
29
|
+
};
|
|
30
|
+
} };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Decodes the raw body from an API Gateway event.
|
|
34
|
+
* Uses Content-Type to decide parsing strategy (like Express/Fastify/Hono):
|
|
35
|
+
* - `application/json` (or missing) → JSON.parse the decoded string
|
|
36
|
+
* - Anything else → return decoded string as-is, let the schema handle it
|
|
37
|
+
*
|
|
38
|
+
* Defaults to JSON when no Content-Type is provided for backwards compatibility.
|
|
39
|
+
*/
|
|
40
|
+
static decodeBody(body, isBase64Encoded, contentType) {
|
|
41
|
+
if (!body) return void 0;
|
|
42
|
+
const raw = isBase64Encoded ? Buffer.from(body, "base64").toString("utf-8") : body;
|
|
43
|
+
const isJson = !contentType || contentType.toLowerCase().includes("application/json");
|
|
44
|
+
if (isJson) return JSON.parse(raw);
|
|
45
|
+
return raw;
|
|
46
|
+
}
|
|
47
|
+
getCookies(e) {
|
|
48
|
+
const headers = e.headers;
|
|
49
|
+
return require_lazyAccessors.Endpoint.createCookies(headers?.cookie);
|
|
50
|
+
}
|
|
51
|
+
input() {
|
|
52
|
+
return { before: async (req) => {
|
|
53
|
+
try {
|
|
54
|
+
const { body, query, params } = this.getInput(req.event);
|
|
55
|
+
const headers = req.event.headers;
|
|
56
|
+
const header = require_lazyAccessors.Endpoint.createHeaders(headers);
|
|
57
|
+
const cookie = this.getCookies(req.event);
|
|
58
|
+
(0, import_lodash.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
|
|
59
|
+
(0, import_lodash.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
|
|
60
|
+
(0, import_lodash.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
|
|
61
|
+
(0, import_lodash.default)(req.event, "header", header);
|
|
62
|
+
(0, import_lodash.default)(req.event, "cookie", cookie);
|
|
63
|
+
} catch (error) {
|
|
64
|
+
if (error && typeof error === "object" && Array.isArray(error)) throw new __geekmidas_errors.UnprocessableEntityError("Validation failed", error);
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
} };
|
|
68
|
+
}
|
|
69
|
+
logger() {
|
|
70
|
+
return { before: (req) => {
|
|
71
|
+
req.event.logger = this.endpoint.logger.child({
|
|
72
|
+
route: this.endpoint.route,
|
|
73
|
+
host: req.event.headers?.host,
|
|
74
|
+
method: this.endpoint.method,
|
|
75
|
+
...this.getLoggerContext(req.event, req.context)
|
|
76
|
+
});
|
|
77
|
+
} };
|
|
78
|
+
}
|
|
79
|
+
services() {
|
|
80
|
+
return { before: async (req) => {
|
|
81
|
+
const _logger = req.event.logger;
|
|
82
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
83
|
+
const services = await serviceDiscovery.register(this.endpoint.services);
|
|
84
|
+
req.event.services = services;
|
|
85
|
+
} };
|
|
86
|
+
}
|
|
87
|
+
authorize() {
|
|
88
|
+
return { before: async (req) => {
|
|
89
|
+
const logger = req.event.logger;
|
|
90
|
+
const services = req.event.services;
|
|
91
|
+
const header = req.event.header;
|
|
92
|
+
const cookie = req.event.cookie;
|
|
93
|
+
const session = req.event.session;
|
|
94
|
+
const isAuthorized = await this.endpoint.authorize({
|
|
95
|
+
header,
|
|
96
|
+
cookie,
|
|
97
|
+
services,
|
|
98
|
+
logger,
|
|
99
|
+
session,
|
|
100
|
+
...req.event.db !== void 0 && { db: req.event.db },
|
|
101
|
+
body: req.event.body,
|
|
102
|
+
query: req.event.query,
|
|
103
|
+
params: req.event.params
|
|
104
|
+
});
|
|
105
|
+
if (!isAuthorized) {
|
|
106
|
+
logger.warn("Unauthorized access attempt");
|
|
107
|
+
throw new __geekmidas_errors.UnauthorizedError("Unauthorized access to the endpoint", "You do not have permission to access this resource.");
|
|
108
|
+
}
|
|
109
|
+
} };
|
|
110
|
+
}
|
|
111
|
+
database() {
|
|
112
|
+
return { before: async (req) => {
|
|
113
|
+
if (!this.endpoint.databaseService) return;
|
|
114
|
+
const _logger = req.event.logger;
|
|
115
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
116
|
+
const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
117
|
+
req.event.db = db;
|
|
118
|
+
} };
|
|
119
|
+
}
|
|
120
|
+
session() {
|
|
121
|
+
return { before: async (req) => {
|
|
122
|
+
const logger = req.event.logger;
|
|
123
|
+
const services = req.event.services;
|
|
124
|
+
const db = req.event.db;
|
|
125
|
+
req.event.session = await this.endpoint.getSession({
|
|
126
|
+
logger,
|
|
127
|
+
services,
|
|
128
|
+
header: req.event.header,
|
|
129
|
+
cookie: req.event.cookie,
|
|
130
|
+
...db !== void 0 && { db }
|
|
131
|
+
});
|
|
132
|
+
} };
|
|
133
|
+
}
|
|
134
|
+
events() {
|
|
135
|
+
return { after: async (req) => {
|
|
136
|
+
const event = req.event;
|
|
137
|
+
const response = event.__response;
|
|
138
|
+
const statusCode = req.response?.statusCode ?? this.endpoint.status;
|
|
139
|
+
if (require_lazyAccessors.Endpoint.isSuccessStatus(statusCode)) {
|
|
140
|
+
const logger = event.logger;
|
|
141
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
142
|
+
await require_lazyAccessors.publishConstructEvents(this.endpoint, response, serviceDiscovery, logger);
|
|
143
|
+
}
|
|
144
|
+
} };
|
|
145
|
+
}
|
|
146
|
+
async _handler(event) {
|
|
147
|
+
const input = this.endpoint.refineInput(event);
|
|
148
|
+
const logger = event.logger;
|
|
149
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
150
|
+
const auditContext = await require_processAudits.createAuditContext(this.endpoint, serviceDiscovery, logger, {
|
|
151
|
+
session: event.session,
|
|
152
|
+
header: event.header,
|
|
153
|
+
cookie: event.cookie,
|
|
154
|
+
services: event.services
|
|
155
|
+
});
|
|
156
|
+
const audits = this.endpoint.audits;
|
|
157
|
+
if (!auditContext && audits?.length) logger.warn("No auditor storage service available");
|
|
158
|
+
const rawDb = event.db;
|
|
159
|
+
const rlsActive = this.endpoint.rlsConfig && !this.endpoint.rlsBypass && rawDb !== void 0;
|
|
160
|
+
const rlsContext = rlsActive ? await this.endpoint.rlsConfig?.extractor({
|
|
161
|
+
services: event.services,
|
|
162
|
+
session: event.session,
|
|
163
|
+
header: event.header,
|
|
164
|
+
cookie: event.cookie,
|
|
165
|
+
logger
|
|
166
|
+
}) : void 0;
|
|
167
|
+
const result = await require_processAudits.executeWithAuditTransaction(auditContext, async (auditor) => {
|
|
168
|
+
const sameDatabase = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName;
|
|
169
|
+
const baseDb = sameDatabase ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
170
|
+
const executeHandler = async (db) => {
|
|
171
|
+
const responseBuilder = new require_lazyAccessors.ResponseBuilder();
|
|
172
|
+
const response = await this.endpoint.handler({
|
|
173
|
+
header: event.header,
|
|
174
|
+
cookie: event.cookie,
|
|
175
|
+
logger: event.logger,
|
|
176
|
+
services: event.services,
|
|
177
|
+
session: event.session,
|
|
178
|
+
auditor,
|
|
179
|
+
db,
|
|
180
|
+
...input
|
|
181
|
+
}, responseBuilder);
|
|
182
|
+
let data = response;
|
|
183
|
+
let metadata$1 = responseBuilder.getMetadata();
|
|
184
|
+
if (require_lazyAccessors.Endpoint.hasMetadata(response)) {
|
|
185
|
+
data = response.data;
|
|
186
|
+
metadata$1 = response.metadata;
|
|
187
|
+
}
|
|
188
|
+
const output$1 = this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0;
|
|
189
|
+
return {
|
|
190
|
+
output: output$1,
|
|
191
|
+
metadata: metadata$1,
|
|
192
|
+
responseBuilder
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
if (rlsActive && rlsContext && baseDb) return (0, __geekmidas_db_rls.withRlsContext)(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
|
|
196
|
+
return executeHandler(baseDb);
|
|
197
|
+
}, async (result$1, auditor) => {
|
|
198
|
+
if (!audits?.length) return;
|
|
199
|
+
for (const audit of audits) {
|
|
200
|
+
if (audit.when && !audit.when(result$1.output)) continue;
|
|
201
|
+
const payload = audit.payload(result$1.output);
|
|
202
|
+
const entityId = audit.entityId?.(result$1.output);
|
|
203
|
+
auditor.audit(audit.type, payload, {
|
|
204
|
+
table: audit.table,
|
|
205
|
+
entityId
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}, { db: rawDb });
|
|
209
|
+
const { output, metadata } = result;
|
|
210
|
+
const body = output !== void 0 ? JSON.stringify(output) : void 0;
|
|
211
|
+
event.__response = output;
|
|
212
|
+
const lambdaResponse = {
|
|
213
|
+
statusCode: metadata.status ?? this.endpoint.status,
|
|
214
|
+
body
|
|
215
|
+
};
|
|
216
|
+
if (metadata.headers && Object.keys(metadata.headers).length > 0) lambdaResponse.headers = { ...metadata.headers };
|
|
217
|
+
if (metadata.cookies && metadata.cookies.size > 0) {
|
|
218
|
+
const setCookieHeaders = [];
|
|
219
|
+
for (const [name, { value, options }] of metadata.cookies) setCookieHeaders.push(require_lazyAccessors.Endpoint.formatCookieHeader(name, value, options));
|
|
220
|
+
if (setCookieHeaders.length > 0) lambdaResponse.multiValueHeaders = {
|
|
221
|
+
...lambdaResponse.multiValueHeaders,
|
|
222
|
+
"Set-Cookie": setCookieHeaders
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
return lambdaResponse;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Convert Telemetry interface to Middy middleware
|
|
229
|
+
*/
|
|
230
|
+
telemetry() {
|
|
231
|
+
if (!this.options.telemetry) return null;
|
|
232
|
+
const telemetry = this.options.telemetry;
|
|
233
|
+
let ctx;
|
|
234
|
+
return {
|
|
235
|
+
before: (request) => {
|
|
236
|
+
ctx = telemetry.onRequestStart({
|
|
237
|
+
event: request.event,
|
|
238
|
+
context: request.context
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
after: (request) => {
|
|
242
|
+
if (ctx) telemetry.onRequestEnd(ctx, {
|
|
243
|
+
statusCode: request.response?.statusCode ?? 200,
|
|
244
|
+
body: request.response?.body,
|
|
245
|
+
headers: request.response?.headers
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
onError: (request) => {
|
|
249
|
+
if (ctx && request.error) telemetry.onRequestError(ctx, request.error instanceof Error ? request.error : new Error(String(request.error)));
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
get handler() {
|
|
254
|
+
const handler = this._handler.bind(this);
|
|
255
|
+
let chain = (0, __middy_core.default)(handler).use(this.logger()).use(this.error()).use(this.services()).use(this.input()).use(this.database()).use(this.session()).use(this.authorize()).use(this.events());
|
|
256
|
+
const telemetryMiddleware = this.telemetry();
|
|
257
|
+
if (telemetryMiddleware) chain = chain.use(telemetryMiddleware);
|
|
258
|
+
if (this.options.telescope?.middleware) chain = chain.use(this.options.telescope.middleware);
|
|
259
|
+
const wrappedHandler = async (event, context) => {
|
|
260
|
+
const startTime = Date.now();
|
|
261
|
+
const requestId = context.awsRequestId;
|
|
262
|
+
const logger = this.endpoint.logger.child({ requestId });
|
|
263
|
+
return (0, __geekmidas_services.runWithRequestContext)({
|
|
264
|
+
logger,
|
|
265
|
+
requestId,
|
|
266
|
+
startTime
|
|
267
|
+
}, () => chain(event, context));
|
|
268
|
+
};
|
|
269
|
+
return wrappedHandler;
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
//#endregion
|
|
274
|
+
//#region src/endpoints/parseQueryParams.ts
|
|
275
|
+
/**
|
|
276
|
+
* Parse query parameters from a flat object into a nested structure
|
|
277
|
+
* Uses qs bracket notation for standard interoperability
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* parseQueryParams({ 'tags[]': ['a', 'b'], 'filter[name]': 'john' })
|
|
281
|
+
* // Returns: { tags: ['a', 'b'], filter: { name: 'john' } }
|
|
282
|
+
*/
|
|
283
|
+
function parseQueryParams(queryParams) {
|
|
284
|
+
if (!queryParams) return {};
|
|
285
|
+
const parts = [];
|
|
286
|
+
for (const [key, value] of Object.entries(queryParams)) {
|
|
287
|
+
if (value === void 0) continue;
|
|
288
|
+
if (Array.isArray(value)) for (const v of value) parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(v)}`);
|
|
289
|
+
else parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
290
|
+
}
|
|
291
|
+
return qs.default.parse(parts.join("&"));
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
//#endregion
|
|
295
|
+
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
|
|
296
|
+
var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
297
|
+
getInput(e) {
|
|
298
|
+
const multiValueParams = e.multiValueQueryStringParameters || {};
|
|
299
|
+
const singleValueParams = e.queryStringParameters || {};
|
|
300
|
+
const mergedParams = {};
|
|
301
|
+
for (const [key, value] of Object.entries(singleValueParams)) if (value !== void 0) mergedParams[key] = value;
|
|
302
|
+
for (const [key, values] of Object.entries(multiValueParams)) if (values && values.length > 1) mergedParams[key] = values;
|
|
303
|
+
return {
|
|
304
|
+
body: AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["Content-Type"] ?? e.headers?.["content-type"]),
|
|
305
|
+
query: parseQueryParams(mergedParams),
|
|
306
|
+
params: e.pathParameters || {}
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
getLoggerContext(data, context) {
|
|
310
|
+
return {
|
|
311
|
+
fn: {
|
|
312
|
+
name: context.functionName,
|
|
313
|
+
version: context.functionVersion
|
|
314
|
+
},
|
|
315
|
+
req: {
|
|
316
|
+
id: data.requestContext.requestId,
|
|
317
|
+
awsRequestId: context.awsRequestId,
|
|
318
|
+
ip: data.requestContext.identity.sourceIp,
|
|
319
|
+
userAgent: data.requestContext.identity.userAgent || void 0,
|
|
320
|
+
path: data.requestContext.path
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
constructor(envParser, endpoint, options = {}) {
|
|
325
|
+
super(envParser, endpoint, options);
|
|
326
|
+
this.envParser = envParser;
|
|
327
|
+
this.endpoint = endpoint;
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
//#endregion
|
|
332
|
+
//#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
|
|
333
|
+
var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
334
|
+
getCookies(e) {
|
|
335
|
+
return require_lazyAccessors.createApiGatewayCookies(e.cookies, e.headers?.cookie);
|
|
336
|
+
}
|
|
337
|
+
getInput(e) {
|
|
338
|
+
const raw = AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]);
|
|
339
|
+
return {
|
|
340
|
+
body: raw,
|
|
341
|
+
query: qs.default.parse(e.rawQueryString),
|
|
342
|
+
params: e.pathParameters || {}
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
getLoggerContext(event, context) {
|
|
346
|
+
return {
|
|
347
|
+
fn: {
|
|
348
|
+
name: context.functionName,
|
|
349
|
+
version: context.functionVersion
|
|
350
|
+
},
|
|
351
|
+
req: {
|
|
352
|
+
id: event.requestContext.requestId,
|
|
353
|
+
awsRequestId: context.awsRequestId,
|
|
354
|
+
ip: event.requestContext.http.sourceIp,
|
|
355
|
+
userAgent: event.requestContext.http.userAgent || void 0,
|
|
356
|
+
path: event.requestContext.http.path
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
constructor(envParser, endpoint, options = {}) {
|
|
361
|
+
super(envParser, endpoint, options);
|
|
362
|
+
this.envParser = envParser;
|
|
363
|
+
this.endpoint = endpoint;
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
//#endregion
|
|
368
|
+
//#region src/functions/FunctionExecutionWrapper.ts
|
|
369
|
+
var FunctionExecutionWrapper = class {
|
|
370
|
+
constructor(envParser, fn) {
|
|
371
|
+
this.envParser = envParser;
|
|
372
|
+
this.fn = fn;
|
|
373
|
+
}
|
|
374
|
+
_logger;
|
|
375
|
+
get logger() {
|
|
376
|
+
return this._logger || this.fn.logger;
|
|
377
|
+
}
|
|
378
|
+
get serviceDiscovery() {
|
|
379
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
380
|
+
return serviceDiscovery;
|
|
381
|
+
}
|
|
382
|
+
getServices() {
|
|
383
|
+
return this.serviceDiscovery.register(this.fn.services);
|
|
384
|
+
}
|
|
385
|
+
async getDatabase() {
|
|
386
|
+
if (!this.fn.databaseService) return void 0;
|
|
387
|
+
const services = await this.serviceDiscovery.register([this.fn.databaseService]);
|
|
388
|
+
return services[this.fn.databaseService.serviceName];
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Get the audit storage service if configured.
|
|
392
|
+
* Returns undefined if no auditor storage is configured.
|
|
393
|
+
*/
|
|
394
|
+
async getAuditStorage() {
|
|
395
|
+
if (!this.fn.auditorStorageService) return void 0;
|
|
396
|
+
const services = await this.serviceDiscovery.register([this.fn.auditorStorageService]);
|
|
397
|
+
return services[this.fn.auditorStorageService.serviceName];
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Create an auditor instance for the function.
|
|
401
|
+
* Returns undefined if no auditor storage is configured.
|
|
402
|
+
*/
|
|
403
|
+
async createAuditor() {
|
|
404
|
+
const storage = await this.getAuditStorage();
|
|
405
|
+
if (!storage) return void 0;
|
|
406
|
+
return new __geekmidas_audit.DefaultAuditor({
|
|
407
|
+
actor: {
|
|
408
|
+
id: "system",
|
|
409
|
+
type: "system"
|
|
410
|
+
},
|
|
411
|
+
storage,
|
|
412
|
+
metadata: { function: this.fn.type }
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Execute handler with audit transaction support.
|
|
417
|
+
* If the audit storage has a database (via getDatabase()), wraps execution
|
|
418
|
+
* in a transaction so audits are atomic with handler's database operations.
|
|
419
|
+
*
|
|
420
|
+
* @param handler - The handler function to execute (receives auditor and db)
|
|
421
|
+
* @returns The handler result
|
|
422
|
+
*/
|
|
423
|
+
async executeWithAudit(handler) {
|
|
424
|
+
const auditor = await this.createAuditor();
|
|
425
|
+
const storage = await this.getAuditStorage();
|
|
426
|
+
if (!auditor || !storage) {
|
|
427
|
+
const db$1 = await this.getDatabase();
|
|
428
|
+
return handler({ db: db$1 });
|
|
429
|
+
}
|
|
430
|
+
const storageDb = storage.getDatabase?.();
|
|
431
|
+
const databaseServiceName = this.fn.databaseService?.serviceName;
|
|
432
|
+
const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
|
|
433
|
+
if (storageDb && databaseServiceName && auditDbServiceName) return (0, __geekmidas_audit_kysely.withAuditableTransaction)(storageDb, auditor, async (trx) => {
|
|
434
|
+
const response$1 = await handler({
|
|
435
|
+
auditor,
|
|
436
|
+
db: trx
|
|
437
|
+
});
|
|
438
|
+
return response$1;
|
|
439
|
+
});
|
|
440
|
+
const db = await this.getDatabase();
|
|
441
|
+
const response = await handler({
|
|
442
|
+
auditor,
|
|
443
|
+
db
|
|
444
|
+
});
|
|
445
|
+
await auditor.flush();
|
|
446
|
+
return response;
|
|
447
|
+
}
|
|
448
|
+
async getFunctionInput(event) {
|
|
449
|
+
const parsedInput = await require_functions.FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
|
|
450
|
+
return parsedInput;
|
|
451
|
+
}
|
|
452
|
+
async publishEvents(response) {
|
|
453
|
+
await require_lazyAccessors.publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response, this.fn.publisherService);
|
|
454
|
+
}
|
|
455
|
+
async parseComposableStandardSchema(data, schema) {
|
|
456
|
+
return require_functions.FunctionBuilder.parseComposableStandardSchema(data, schema);
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
|
|
460
|
+
//#endregion
|
|
461
|
+
//#region src/functions/AWSLambdaFunction.ts
|
|
462
|
+
var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
463
|
+
constructor(envParser, fn) {
|
|
464
|
+
super(envParser, fn);
|
|
465
|
+
this.fn = fn;
|
|
466
|
+
}
|
|
467
|
+
error() {
|
|
468
|
+
return { onError: (req) => {
|
|
469
|
+
const logger = req.event?.logger || this.fn.logger;
|
|
470
|
+
logger.error(req.error || {}, "Error processing function");
|
|
471
|
+
throw (0, __geekmidas_errors.wrapError)(req.error);
|
|
472
|
+
} };
|
|
473
|
+
}
|
|
474
|
+
baseInput() {
|
|
475
|
+
return { before: (_req) => {} };
|
|
476
|
+
}
|
|
477
|
+
input() {
|
|
478
|
+
return { before: async (req) => {
|
|
479
|
+
try {
|
|
480
|
+
if (this.fn.input) {
|
|
481
|
+
const parsedInput = await require_functions.FunctionBuilder.parseComposableStandardSchema(req.event, this.fn.input);
|
|
482
|
+
req.event.parsedInput = parsedInput;
|
|
483
|
+
} else req.event.parsedInput = req.event;
|
|
484
|
+
} catch (error) {
|
|
485
|
+
this.logger.error({
|
|
486
|
+
error,
|
|
487
|
+
event: req.event
|
|
488
|
+
}, "Failed to parse input");
|
|
489
|
+
throw error;
|
|
490
|
+
}
|
|
491
|
+
} };
|
|
492
|
+
}
|
|
493
|
+
loggerMiddleware() {
|
|
494
|
+
return { before: (req) => {
|
|
495
|
+
this._logger = this.fn.logger.child({
|
|
496
|
+
fn: {
|
|
497
|
+
name: req.context.functionName,
|
|
498
|
+
version: req.context.functionVersion,
|
|
499
|
+
memory: req.context.memoryLimitInMB
|
|
500
|
+
},
|
|
501
|
+
req: { id: req.context.awsRequestId }
|
|
502
|
+
});
|
|
503
|
+
req.event.logger = this._logger;
|
|
504
|
+
} };
|
|
505
|
+
}
|
|
506
|
+
services() {
|
|
507
|
+
return { before: async (req) => {
|
|
508
|
+
req.event.services = await this.getServices();
|
|
509
|
+
} };
|
|
510
|
+
}
|
|
511
|
+
database() {
|
|
512
|
+
return { before: async (req) => {
|
|
513
|
+
req.event.db = await this.getDatabase();
|
|
514
|
+
} };
|
|
515
|
+
}
|
|
516
|
+
auditor() {
|
|
517
|
+
return {
|
|
518
|
+
before: async (req) => {
|
|
519
|
+
req.event.auditor = await this.createAuditor();
|
|
520
|
+
},
|
|
521
|
+
after: async (req) => {
|
|
522
|
+
if (req.event.auditor) {
|
|
523
|
+
const records = req.event.auditor.getRecords();
|
|
524
|
+
if (records.length > 0) {
|
|
525
|
+
this.logger.debug({ auditCount: records.length }, "Flushing function audits");
|
|
526
|
+
await req.event.auditor.flush();
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
events() {
|
|
533
|
+
return { after: async (req) => {
|
|
534
|
+
const response = req.response || void 0;
|
|
535
|
+
await this.publishEvents(response);
|
|
536
|
+
} };
|
|
537
|
+
}
|
|
538
|
+
async _handler(event) {
|
|
539
|
+
const result = await this.fn.fn({
|
|
540
|
+
input: event.parsedInput,
|
|
541
|
+
services: event.services,
|
|
542
|
+
logger: event.logger,
|
|
543
|
+
db: event.db,
|
|
544
|
+
auditor: event.auditor
|
|
545
|
+
});
|
|
546
|
+
const output = await this.fn.parseOutput(result);
|
|
547
|
+
return output;
|
|
548
|
+
}
|
|
549
|
+
get handler() {
|
|
550
|
+
const handler = this._handler.bind(this);
|
|
551
|
+
const chain = (0, __middy_core.default)(handler).use(this.loggerMiddleware()).use(this.baseInput()).use(this.error()).use(this.services()).use(this.database()).use(this.auditor()).use(this.input()).use(this.events());
|
|
552
|
+
const wrappedHandler = async (event, context) => {
|
|
553
|
+
const startTime = Date.now();
|
|
554
|
+
const requestId = context.awsRequestId;
|
|
555
|
+
const logger = this.fn.logger.child({ requestId });
|
|
556
|
+
return (0, __geekmidas_services.runWithRequestContext)({
|
|
557
|
+
logger,
|
|
558
|
+
requestId,
|
|
559
|
+
startTime
|
|
560
|
+
}, () => chain(event, context));
|
|
561
|
+
};
|
|
562
|
+
return wrappedHandler;
|
|
563
|
+
}
|
|
564
|
+
};
|
|
565
|
+
|
|
566
|
+
//#endregion
|
|
567
|
+
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
568
|
+
var AWSLambdaSubscriber = class {
|
|
569
|
+
_logger;
|
|
570
|
+
_services;
|
|
571
|
+
constructor(envParser, subscriber) {
|
|
572
|
+
this.envParser = envParser;
|
|
573
|
+
this.subscriber = subscriber;
|
|
574
|
+
this._logger = subscriber.logger;
|
|
575
|
+
}
|
|
576
|
+
get logger() {
|
|
577
|
+
return this._logger;
|
|
578
|
+
}
|
|
579
|
+
async getServices() {
|
|
580
|
+
if (this._services) return this._services;
|
|
581
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
582
|
+
if (this.subscriber.services.length > 0) {
|
|
583
|
+
const registered = await serviceDiscovery.register(this.subscriber.services);
|
|
584
|
+
this._services = registered;
|
|
585
|
+
} else this._services = {};
|
|
586
|
+
return this._services;
|
|
587
|
+
}
|
|
588
|
+
error() {
|
|
589
|
+
return { onError: (req) => {
|
|
590
|
+
const logger = req.event?.logger || this.subscriber.logger;
|
|
591
|
+
logger.error(req.error || {}, "Error processing subscriber");
|
|
592
|
+
throw (0, __geekmidas_errors.wrapError)(req.error);
|
|
593
|
+
} };
|
|
594
|
+
}
|
|
595
|
+
loggerMiddleware() {
|
|
596
|
+
return { before: (req) => {
|
|
597
|
+
this._logger = this.subscriber.logger.child({
|
|
598
|
+
subscriber: {
|
|
599
|
+
name: req.context.functionName,
|
|
600
|
+
version: req.context.functionVersion,
|
|
601
|
+
memory: req.context.memoryLimitInMB
|
|
602
|
+
},
|
|
603
|
+
req: { id: req.context.awsRequestId }
|
|
604
|
+
});
|
|
605
|
+
req.event.logger = this._logger;
|
|
606
|
+
} };
|
|
607
|
+
}
|
|
608
|
+
services() {
|
|
609
|
+
return { before: async (req) => {
|
|
610
|
+
req.event.services = await this.getServices();
|
|
611
|
+
} };
|
|
612
|
+
}
|
|
613
|
+
parseEvents() {
|
|
614
|
+
return { before: async (req) => {
|
|
615
|
+
const { logger,...e } = req.event;
|
|
616
|
+
const rawEvent = e;
|
|
617
|
+
logger.info({ rawEvent });
|
|
618
|
+
const events = [];
|
|
619
|
+
if ("Records" in rawEvent) {
|
|
620
|
+
if (this.isSQSEvent(rawEvent)) for (const record of rawEvent.Records) try {
|
|
621
|
+
const event = this.parseSQSRecord(record);
|
|
622
|
+
if (this.shouldIncludeEvent(event)) events.push(event);
|
|
623
|
+
} catch (error) {
|
|
624
|
+
this.logger.error({
|
|
625
|
+
error,
|
|
626
|
+
record
|
|
627
|
+
}, "Failed to parse SQS record");
|
|
628
|
+
}
|
|
629
|
+
else if (this.isSNSEvent(rawEvent)) for (const record of rawEvent.Records) try {
|
|
630
|
+
const event = this.parseSNSRecord(record);
|
|
631
|
+
if (this.shouldIncludeEvent(event)) events.push(event);
|
|
632
|
+
} catch (error) {
|
|
633
|
+
this.logger.error({
|
|
634
|
+
error,
|
|
635
|
+
record
|
|
636
|
+
}, "Failed to parse SNS record");
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
req.event.events = events;
|
|
640
|
+
} };
|
|
641
|
+
}
|
|
642
|
+
isSQSEvent(event) {
|
|
643
|
+
const firstRecord = event.Records[0];
|
|
644
|
+
return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
|
|
645
|
+
}
|
|
646
|
+
isSNSEvent(event) {
|
|
647
|
+
const firstRecord = event.Records[0];
|
|
648
|
+
return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
|
|
649
|
+
}
|
|
650
|
+
parseSNSRecord(record) {
|
|
651
|
+
const message = this.safeJsonParse(record.Sns.Message);
|
|
652
|
+
const messageType = record.Sns.MessageAttributes?.type?.Value;
|
|
653
|
+
if (message === null) return messageType ? {
|
|
654
|
+
type: messageType,
|
|
655
|
+
payload: record.Sns.Message
|
|
656
|
+
} : record.Sns.Message;
|
|
657
|
+
const resolvedType = messageType ?? message.type;
|
|
658
|
+
if (message.type) return message;
|
|
659
|
+
return resolvedType ? {
|
|
660
|
+
type: resolvedType,
|
|
661
|
+
payload: message
|
|
662
|
+
} : message;
|
|
663
|
+
}
|
|
664
|
+
parseSQSRecord(record) {
|
|
665
|
+
const body = this.safeJsonParse(record.body);
|
|
666
|
+
if (body === null) return record.body;
|
|
667
|
+
if (body.Type === "Notification" && body.Message) {
|
|
668
|
+
const snsMessage = this.safeJsonParse(body.Message);
|
|
669
|
+
const messageType = body.MessageAttributes?.type?.Value;
|
|
670
|
+
if (snsMessage === null) return messageType ? {
|
|
671
|
+
type: messageType,
|
|
672
|
+
payload: body.Message
|
|
673
|
+
} : body.Message;
|
|
674
|
+
if (snsMessage.type) return snsMessage;
|
|
675
|
+
const resolvedType = messageType ?? snsMessage.type;
|
|
676
|
+
return resolvedType ? {
|
|
677
|
+
type: resolvedType,
|
|
678
|
+
payload: snsMessage
|
|
679
|
+
} : snsMessage;
|
|
680
|
+
}
|
|
681
|
+
return body;
|
|
682
|
+
}
|
|
683
|
+
safeJsonParse(value) {
|
|
684
|
+
try {
|
|
685
|
+
return JSON.parse(value);
|
|
686
|
+
} catch {
|
|
687
|
+
return null;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
shouldIncludeEvent(event) {
|
|
691
|
+
if (typeof event !== "object" || !event?.type) return true;
|
|
692
|
+
if (!this.subscriber.subscribedEvents) return true;
|
|
693
|
+
return this.subscriber.subscribedEvents.includes(event.type);
|
|
694
|
+
}
|
|
695
|
+
async _handler(event) {
|
|
696
|
+
if (event.events.length === 0) {
|
|
697
|
+
this.logger.info("No subscribed events to process");
|
|
698
|
+
return { batchItemFailures: [] };
|
|
699
|
+
}
|
|
700
|
+
const result = await this.subscriber.handler({
|
|
701
|
+
events: event.events,
|
|
702
|
+
services: event.services,
|
|
703
|
+
logger: event.logger
|
|
704
|
+
});
|
|
705
|
+
if (this.subscriber.outputSchema && result) {
|
|
706
|
+
const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
|
|
707
|
+
if (validationResult.issues) {
|
|
708
|
+
this.logger.error({ issues: validationResult.issues }, "Subscriber output validation failed");
|
|
709
|
+
throw new Error("Subscriber output validation failed");
|
|
710
|
+
}
|
|
711
|
+
return validationResult.value;
|
|
712
|
+
}
|
|
713
|
+
return result;
|
|
714
|
+
}
|
|
715
|
+
get handler() {
|
|
716
|
+
const handler = this._handler.bind(this);
|
|
717
|
+
const chain = (0, __middy_core.default)(handler).use(this.loggerMiddleware()).use(this.parseEvents()).use(this.error()).use(this.services());
|
|
718
|
+
const wrappedHandler = async (event, context) => {
|
|
719
|
+
const startTime = Date.now();
|
|
720
|
+
const requestId = context.awsRequestId;
|
|
721
|
+
const logger = this.subscriber.logger.child({ requestId });
|
|
722
|
+
return (0, __geekmidas_services.runWithRequestContext)({
|
|
723
|
+
logger,
|
|
724
|
+
requestId,
|
|
725
|
+
startTime
|
|
726
|
+
}, () => chain(event, context));
|
|
727
|
+
};
|
|
728
|
+
return wrappedHandler;
|
|
729
|
+
}
|
|
730
|
+
};
|
|
731
|
+
|
|
732
|
+
//#endregion
|
|
733
|
+
exports.AWSLambdaFunction = AWSLambdaFunction;
|
|
734
|
+
exports.AWSLambdaSubscriber = AWSLambdaSubscriber;
|
|
735
|
+
exports.AmazonApiGatewayV1Endpoint = AmazonApiGatewayV1Endpoint;
|
|
736
|
+
exports.AmazonApiGatewayV2Endpoint = AmazonApiGatewayV2Endpoint;
|
|
737
|
+
//# sourceMappingURL=aws.cjs.map
|