@geekmidas/constructs 3.0.7 → 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 +9 -0
- package/dist/{Construct-BXG8cFSm.cjs → Construct-B14miJ6P.cjs} +95 -10
- package/dist/Construct-B14miJ6P.cjs.map +1 -0
- package/dist/{Construct-BjpXFNxy.d.mts → Construct-CXqvzglu.d.cts} +11 -6
- package/dist/{Construct-BjpXFNxy.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-CGdCGJkC.d.cts → Endpoint-C991gK3T.d.cts} +130 -27
- package/dist/Endpoint-C991gK3T.d.cts.map +1 -0
- package/dist/{Endpoint-BET0JSZK.d.mts → Endpoint-CRHpLPV3.d.mts} +130 -27
- 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-9ObcUdcC.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 -21
- package/dist/adaptors/testing.cjs.map +1 -0
- package/dist/adaptors/testing.d.cts +177 -14
- package/dist/adaptors/testing.d.cts.map +1 -0
- package/dist/adaptors/testing.d.mts +177 -14
- package/dist/adaptors/testing.d.mts.map +1 -0
- package/dist/adaptors/testing.mjs +388 -17
- 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-BJo1gcV1.d.mts.map → telemetry-Bt0vK4ma.d.cts.map} +1 -1
- package/dist/{telemetry-BJo1gcV1.d.mts → telemetry-COvVBKBM.d.mts} +1 -1
- package/dist/{telemetry-BTaiRqPo.d.cts.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-BqPOdHEm.d.mts → types-BA3eK4xj.d.mts} +1 -1
- package/dist/{types-BqPOdHEm.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 +9 -9
- package/src/Construct.ts +26 -8
- package/src/__tests__/Construct.environment.spec.ts +123 -0
- package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +1 -9
- package/tsdown.config.ts +30 -1
- package/dist/AWSLambdaFunction-CC8gMZhz.d.mts +0 -32
- package/dist/AWSLambdaFunction-CC8gMZhz.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-Cmx9OQGG.d.mts +0 -36
- package/dist/AWSLambdaSubscriberAdaptor-Cmx9OQGG.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-DA0rS_1Y.d.mts +0 -124
- package/dist/AmazonApiGatewayEndpointAdaptor-DA0rS_1Y.d.mts.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts +0 -124
- package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-C7rJzNvG.d.mts +0 -23
- package/dist/AmazonApiGatewayV1EndpointAdaptor-C7rJzNvG.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/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-d7NP-bZX.d.mts +0 -22
- package/dist/AmazonApiGatewayV2EndpointAdaptor-d7NP-bZX.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs +0 -42
- package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs.map +0 -1
- package/dist/Authorizer-BZ1LcZFt.cjs +0 -92
- package/dist/Authorizer-BZ1LcZFt.cjs.map +0 -1
- package/dist/Authorizer-C5_FC_Rq.d.mts +0 -126
- package/dist/Authorizer-C5_FC_Rq.d.mts.map +0 -1
- package/dist/Authorizer-CZpg1Jqk.mjs +0 -68
- package/dist/Authorizer-CZpg1Jqk.mjs.map +0 -1
- package/dist/Authorizer-DWtwC8we.d.cts +0 -126
- package/dist/Authorizer-DWtwC8we.d.cts.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-DXf6HK-N.cjs +0 -76
- package/dist/BaseFunctionBuilder-DXf6HK-N.cjs.map +0 -1
- package/dist/BaseFunctionBuilder-Q5qIlF-F.d.mts +0 -42
- package/dist/BaseFunctionBuilder-Q5qIlF-F.d.mts.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-BljK1gsV.d.mts +0 -26
- package/dist/Cron-BljK1gsV.d.mts.map +0 -1
- package/dist/Cron-C1vyfJ8B.cjs +0 -25
- package/dist/Cron-C1vyfJ8B.cjs.map +0 -1
- package/dist/Cron-CjWQEad0.mjs +0 -20
- package/dist/Cron-CjWQEad0.mjs.map +0 -1
- package/dist/Cron-CllHkk3z.d.cts +0 -26
- package/dist/Cron-CllHkk3z.d.cts.map +0 -1
- package/dist/CronBuilder-CAJFtnmZ.mjs +0 -68
- package/dist/CronBuilder-CAJFtnmZ.mjs.map +0 -1
- package/dist/CronBuilder-CG54f9LM.d.mts +0 -32
- package/dist/CronBuilder-CG54f9LM.d.mts.map +0 -1
- package/dist/CronBuilder-CSMd02lu.cjs +0 -74
- package/dist/CronBuilder-CSMd02lu.cjs.map +0 -1
- package/dist/CronBuilder-i23l40xs.d.cts +0 -32
- package/dist/CronBuilder-i23l40xs.d.cts.map +0 -1
- package/dist/Endpoint-BET0JSZK.d.mts.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-DvY3aqAy.mjs +0 -422
- package/dist/Endpoint-DvY3aqAy.mjs.map +0 -1
- package/dist/EndpointBuilder-6kdrQyIh.d.mts +0 -146
- package/dist/EndpointBuilder-6kdrQyIh.d.mts.map +0 -1
- package/dist/EndpointBuilder-CSwIguiR.d.cts +0 -146
- package/dist/EndpointBuilder-CSwIguiR.d.cts.map +0 -1
- package/dist/EndpointBuilder-EptJojG9.cjs +0 -268
- package/dist/EndpointBuilder-EptJojG9.cjs.map +0 -1
- package/dist/EndpointBuilder-iDpnACRb.mjs +0 -262
- package/dist/EndpointBuilder-iDpnACRb.mjs.map +0 -1
- package/dist/EndpointFactory-CBagQW5j.d.mts +0 -142
- package/dist/EndpointFactory-CBagQW5j.d.mts.map +0 -1
- package/dist/EndpointFactory-D2QxeaAh.cjs +0 -393
- package/dist/EndpointFactory-D2QxeaAh.cjs.map +0 -1
- package/dist/EndpointFactory-DQYSH8XK.d.cts +0 -142
- package/dist/EndpointFactory-DQYSH8XK.d.cts.map +0 -1
- package/dist/EndpointFactory-wgcqWod-.mjs +0 -381
- package/dist/EndpointFactory-wgcqWod-.mjs.map +0 -1
- package/dist/Function-CwlB89lS.d.cts +0 -76
- package/dist/Function-CwlB89lS.d.cts.map +0 -1
- package/dist/Function-D74HrBnX.d.mts +0 -76
- package/dist/Function-D74HrBnX.d.mts.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_qPxC8g.d.mts +0 -40
- package/dist/FunctionBuilder-C_qPxC8g.d.mts.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/FunctionExecutionWrapper-B0ZAssiy.mjs +0 -101
- package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs.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/FunctionExecutionWrapper-xbTmBARx.d.mts +0 -50
- package/dist/FunctionExecutionWrapper-xbTmBARx.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-B5fKdLi7.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-C2deTEwW.d.mts +0 -50
- package/dist/HonoEndpointAdaptor-C2deTEwW.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/MswEndpointAdaptor-B41INCc7.mjs +0 -108
- package/dist/MswEndpointAdaptor-B41INCc7.mjs.map +0 -1
- package/dist/MswEndpointAdaptor-CA_fu6Wx.cjs +0 -120
- package/dist/MswEndpointAdaptor-CA_fu6Wx.cjs.map +0 -1
- package/dist/MswEndpointAdaptor-CXgYbOxw.d.mts +0 -101
- package/dist/MswEndpointAdaptor-CXgYbOxw.d.mts.map +0 -1
- package/dist/MswEndpointAdaptor-CsYvrQeB.d.cts +0 -101
- package/dist/MswEndpointAdaptor-CsYvrQeB.d.cts.map +0 -1
- package/dist/Subscriber-9ObcUdcC.d.mts.map +0 -1
- package/dist/Subscriber-BH76wgkL.mjs +0 -28
- package/dist/Subscriber-BH76wgkL.mjs.map +0 -1
- package/dist/Subscriber-BgspJeS4.cjs +0 -34
- package/dist/Subscriber-BgspJeS4.cjs.map +0 -1
- package/dist/SubscriberBuilder-B4md5wzs.mjs +0 -54
- package/dist/SubscriberBuilder-B4md5wzs.mjs.map +0 -1
- package/dist/SubscriberBuilder-Be7WBbCL.d.cts +0 -28
- package/dist/SubscriberBuilder-Be7WBbCL.d.cts.map +0 -1
- package/dist/SubscriberBuilder-BtL22ZJ9.cjs +0 -60
- package/dist/SubscriberBuilder-BtL22ZJ9.cjs.map +0 -1
- package/dist/SubscriberBuilder-DsfIkgTF.d.mts +0 -28
- package/dist/SubscriberBuilder-DsfIkgTF.d.mts.map +0 -1
- package/dist/TestEndpointAdaptor-BFmgf7Fn.mjs +0 -174
- package/dist/TestEndpointAdaptor-BFmgf7Fn.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-C79Z-QS4.d.mts +0 -45
- package/dist/TestEndpointAdaptor-C79Z-QS4.d.mts.map +0 -1
- package/dist/TestEndpointAdaptor-DYLDyAAC.cjs +0 -180
- package/dist/TestEndpointAdaptor-DYLDyAAC.cjs.map +0 -1
- package/dist/TestEndpointAdaptor-pM8yskbb.d.cts +0 -45
- package/dist/TestEndpointAdaptor-pM8yskbb.d.cts.map +0 -1
- package/dist/TestFunctionAdaptor-B859kIeb.cjs +0 -81
- package/dist/TestFunctionAdaptor-B859kIeb.cjs.map +0 -1
- package/dist/TestFunctionAdaptor-C0A-VqnM.d.mts +0 -30
- package/dist/TestFunctionAdaptor-C0A-VqnM.d.mts.map +0 -1
- package/dist/TestFunctionAdaptor-CqdSlhx1.mjs +0 -75
- package/dist/TestFunctionAdaptor-CqdSlhx1.mjs.map +0 -1
- package/dist/TestFunctionAdaptor-Dbq55dKP.d.cts +0 -30
- package/dist/TestFunctionAdaptor-Dbq55dKP.d.cts.map +0 -1
- package/dist/TestSubscriberAdaptor-BEyCFP9G.d.mts +0 -26
- package/dist/TestSubscriberAdaptor-BEyCFP9G.d.mts.map +0 -1
- package/dist/TestSubscriberAdaptor-BknOLRQw.d.cts +0 -26
- package/dist/TestSubscriberAdaptor-BknOLRQw.d.cts.map +0 -1
- package/dist/TestSubscriberAdaptor-CCcviuKa.mjs +0 -51
- package/dist/TestSubscriberAdaptor-CCcviuKa.mjs.map +0 -1
- package/dist/TestSubscriberAdaptor-_69o1d0f.cjs +0 -57
- package/dist/TestSubscriberAdaptor-_69o1d0f.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/MswEndpointAdaptor.cjs +0 -16
- package/dist/endpoints/MswEndpointAdaptor.d.cts +0 -10
- package/dist/endpoints/MswEndpointAdaptor.d.mts +0 -10
- package/dist/endpoints/MswEndpointAdaptor.mjs +0 -15
- 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-Cg2UDz1r.d.mts +0 -12
- package/dist/index-Cg2UDz1r.d.mts.map +0 -1
- package/dist/lazyAccessors-BVEtB9lU.cjs +0 -223
- package/dist/lazyAccessors-BVEtB9lU.cjs.map +0 -1
- package/dist/lazyAccessors-Bxy5DBp4.d.cts +0 -49
- package/dist/lazyAccessors-Bxy5DBp4.d.cts.map +0 -1
- package/dist/lazyAccessors-CWFdtzSR.d.mts +0 -49
- package/dist/lazyAccessors-CWFdtzSR.d.mts.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-BUDHcaz3.d.cts +0 -16
- package/dist/publisher-BUDHcaz3.d.cts.map +0 -1
- package/dist/publisher-Bw4770Hi.mjs +0 -41
- package/dist/publisher-Bw4770Hi.mjs.map +0 -1
- package/dist/publisher-DXglijK_.d.mts +0 -16
- package/dist/publisher-DXglijK_.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-C0r4UKVm.mjs +0 -9
- package/dist/rls-C0r4UKVm.mjs.map +0 -1
- package/dist/rls-Cfb6w-tQ.cjs +0 -15
- package/dist/rls-Cfb6w-tQ.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
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_publisher = require('./publisher-lFQleddL.cjs');
|
|
3
|
-
const require_Endpoint = require('./Endpoint-BcxvF4F3.cjs');
|
|
4
|
-
const require_processAudits = require('./processAudits-CzHkPokQ.cjs');
|
|
5
|
-
const require_lazyAccessors = require('./lazyAccessors-BVEtB9lU.cjs');
|
|
6
|
-
const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
|
|
7
|
-
const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
|
|
8
|
-
const __geekmidas_audit = require_chunk.__toESM(require("@geekmidas/audit"));
|
|
9
|
-
const __geekmidas_envkit = require_chunk.__toESM(require("@geekmidas/envkit"));
|
|
10
|
-
|
|
11
|
-
//#region src/endpoints/TestEndpointAdaptor.ts
|
|
12
|
-
/**
|
|
13
|
-
* Serializes a cookie into a Set-Cookie header string
|
|
14
|
-
*/
|
|
15
|
-
function serializeCookie(name, value, options) {
|
|
16
|
-
let cookieString = `${name}=${value}`;
|
|
17
|
-
if (options) {
|
|
18
|
-
if (options.maxAge !== void 0) cookieString += `; Max-Age=${options.maxAge}`;
|
|
19
|
-
if (options.expires) cookieString += `; Expires=${options.expires.toUTCString()}`;
|
|
20
|
-
if (options.domain) cookieString += `; Domain=${options.domain}`;
|
|
21
|
-
if (options.path) cookieString += `; Path=${options.path}`;
|
|
22
|
-
if (options.httpOnly) cookieString += "; HttpOnly";
|
|
23
|
-
if (options.secure) cookieString += "; Secure";
|
|
24
|
-
if (options.sameSite) cookieString += `; SameSite=${options.sameSite}`;
|
|
25
|
-
}
|
|
26
|
-
return cookieString;
|
|
27
|
-
}
|
|
28
|
-
var TestEndpointAdaptor = class TestEndpointAdaptor {
|
|
29
|
-
static getDefaultServiceDiscover(_endpoint) {
|
|
30
|
-
return __geekmidas_services.ServiceDiscovery.getInstance(new __geekmidas_envkit.EnvironmentParser({}));
|
|
31
|
-
}
|
|
32
|
-
constructor(endpoint, serviceDiscovery = TestEndpointAdaptor.getDefaultServiceDiscover(endpoint)) {
|
|
33
|
-
this.endpoint = endpoint;
|
|
34
|
-
this.serviceDiscovery = serviceDiscovery;
|
|
35
|
-
}
|
|
36
|
-
async fullRequest(ctx) {
|
|
37
|
-
const body = await this.endpoint.parseInput(ctx.body, "body");
|
|
38
|
-
const query = await this.endpoint.parseInput(ctx.query, "query");
|
|
39
|
-
const params = await this.endpoint.parseInput(ctx.params, "params");
|
|
40
|
-
const header = require_lazyAccessors.createObjectHeaders(ctx.headers);
|
|
41
|
-
const cookie = require_lazyAccessors.createCookieHeaderAccessor(ctx.headers.cookie);
|
|
42
|
-
const startTime = Date.now();
|
|
43
|
-
const requestId = ctx.requestId ?? ctx.headers["x-request-id"] ?? crypto.randomUUID();
|
|
44
|
-
const logger = this.endpoint.logger.child({
|
|
45
|
-
requestId,
|
|
46
|
-
route: this.endpoint.route,
|
|
47
|
-
host: ctx.headers.host,
|
|
48
|
-
method: this.endpoint.method
|
|
49
|
-
});
|
|
50
|
-
const rawDb = ctx.database;
|
|
51
|
-
return (0, __geekmidas_services.runWithRequestContext)({
|
|
52
|
-
logger,
|
|
53
|
-
requestId,
|
|
54
|
-
startTime
|
|
55
|
-
}, async () => {
|
|
56
|
-
const session = await this.endpoint.getSession({
|
|
57
|
-
logger,
|
|
58
|
-
services: ctx.services,
|
|
59
|
-
header,
|
|
60
|
-
cookie,
|
|
61
|
-
...rawDb !== void 0 && { db: rawDb }
|
|
62
|
-
});
|
|
63
|
-
const isAuthorized = await this.endpoint.authorize({
|
|
64
|
-
header,
|
|
65
|
-
cookie,
|
|
66
|
-
services: ctx.services,
|
|
67
|
-
logger,
|
|
68
|
-
session,
|
|
69
|
-
...rawDb !== void 0 && { db: rawDb },
|
|
70
|
-
body,
|
|
71
|
-
query,
|
|
72
|
-
params
|
|
73
|
-
});
|
|
74
|
-
if (!isAuthorized) {
|
|
75
|
-
logger.warn("Unauthorized access attempt");
|
|
76
|
-
throw new __geekmidas_errors.UnauthorizedError("Unauthorized access to the endpoint", "You do not have permission to access this resource.");
|
|
77
|
-
}
|
|
78
|
-
const auditorStorage = ctx.auditorStorage;
|
|
79
|
-
let auditContext;
|
|
80
|
-
if (auditorStorage) {
|
|
81
|
-
let actor = {
|
|
82
|
-
id: "system",
|
|
83
|
-
type: "system"
|
|
84
|
-
};
|
|
85
|
-
if (this.endpoint.actorExtractor) try {
|
|
86
|
-
actor = await this.endpoint.actorExtractor({
|
|
87
|
-
services: ctx.services,
|
|
88
|
-
session,
|
|
89
|
-
header,
|
|
90
|
-
cookie,
|
|
91
|
-
logger
|
|
92
|
-
});
|
|
93
|
-
} catch (error) {
|
|
94
|
-
logger.error(error, "Failed to extract actor for audits");
|
|
95
|
-
}
|
|
96
|
-
const auditor = new __geekmidas_audit.DefaultAuditor({
|
|
97
|
-
actor,
|
|
98
|
-
storage: auditorStorage,
|
|
99
|
-
metadata: {
|
|
100
|
-
endpoint: this.endpoint.route,
|
|
101
|
-
method: this.endpoint.method
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
auditContext = {
|
|
105
|
-
auditor,
|
|
106
|
-
storage: auditorStorage
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
const audits = this.endpoint.audits;
|
|
110
|
-
if (!auditContext && audits?.length) logger.warn("No auditor storage service available");
|
|
111
|
-
const result = await require_processAudits.executeWithAuditTransaction(auditContext, async (auditor) => {
|
|
112
|
-
const trx = auditor?.getTransaction?.();
|
|
113
|
-
const db = trx ?? rawDb;
|
|
114
|
-
const responseBuilder = new require_Endpoint.ResponseBuilder();
|
|
115
|
-
const response = await this.endpoint.handler({
|
|
116
|
-
body,
|
|
117
|
-
query,
|
|
118
|
-
params,
|
|
119
|
-
session,
|
|
120
|
-
services: ctx.services,
|
|
121
|
-
logger,
|
|
122
|
-
header,
|
|
123
|
-
cookie,
|
|
124
|
-
auditor,
|
|
125
|
-
db
|
|
126
|
-
}, responseBuilder);
|
|
127
|
-
let data = response;
|
|
128
|
-
let metadata$1 = responseBuilder.getMetadata();
|
|
129
|
-
if (require_Endpoint.Endpoint.hasMetadata(response)) {
|
|
130
|
-
data = response.data;
|
|
131
|
-
metadata$1 = response.metadata;
|
|
132
|
-
}
|
|
133
|
-
const output$1 = await this.endpoint.parseOutput(data);
|
|
134
|
-
return {
|
|
135
|
-
output: output$1,
|
|
136
|
-
metadata: metadata$1,
|
|
137
|
-
responseBuilder
|
|
138
|
-
};
|
|
139
|
-
}, async (result$1, auditor) => {
|
|
140
|
-
if (!audits?.length) return;
|
|
141
|
-
for (const audit of audits) {
|
|
142
|
-
if (audit.when && !audit.when(result$1.output)) continue;
|
|
143
|
-
const payload = audit.payload(result$1.output);
|
|
144
|
-
const entityId = audit.entityId?.(result$1.output);
|
|
145
|
-
auditor.audit(audit.type, payload, {
|
|
146
|
-
table: audit.table,
|
|
147
|
-
entityId
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
}, { db: rawDb });
|
|
151
|
-
const { output, metadata } = result;
|
|
152
|
-
ctx.publisher && await this.serviceDiscovery.register([ctx.publisher]);
|
|
153
|
-
await require_publisher.publishConstructEvents(this.endpoint, output, this.serviceDiscovery);
|
|
154
|
-
const headers = { ...metadata.headers || {} };
|
|
155
|
-
if (metadata.cookies && metadata.cookies.size > 0) {
|
|
156
|
-
const setCookieValues = [];
|
|
157
|
-
for (const [name, cookie$1] of metadata.cookies.entries()) setCookieValues.push(serializeCookie(name, cookie$1.value, cookie$1.options));
|
|
158
|
-
headers["set-cookie"] = setCookieValues;
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
body: output,
|
|
162
|
-
status: metadata.status || 200,
|
|
163
|
-
headers
|
|
164
|
-
};
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
async request(ctx) {
|
|
168
|
-
const response = await this.fullRequest(ctx);
|
|
169
|
-
return response.body;
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
//#endregion
|
|
174
|
-
Object.defineProperty(exports, 'TestEndpointAdaptor', {
|
|
175
|
-
enumerable: true,
|
|
176
|
-
get: function () {
|
|
177
|
-
return TestEndpointAdaptor;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
//# sourceMappingURL=TestEndpointAdaptor-DYLDyAAC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestEndpointAdaptor-DYLDyAAC.cjs","names":["name: string","value: string","options?: CookieOptions","_endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>","EnvironmentParser","endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>","serviceDiscovery: ServiceDiscovery<any>","ctx: TestRequestAdaptor<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>","UnauthorizedError","auditContext: AuditExecutionContext<TAuditAction> | undefined","actor: AuditActor","DefaultAuditor","ResponseBuilder","metadata","output","result","headers: Record<string, string | string[]>","setCookieValues: string[]","cookie"],"sources":["../src/endpoints/TestEndpointAdaptor.ts"],"sourcesContent":["import type {\n\tAuditActor,\n\tAuditableAction,\n\tAuditStorage,\n} from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport { EnvironmentParser } from '@geekmidas/envkit';\nimport { UnauthorizedError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\trunWithRequestContext,\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { publishConstructEvents } from '../publisher';\nimport type { HttpMethod } from '../types';\nimport type { MappedAudit } from './audit';\nimport {\n\ttype CookieOptions,\n\tEndpoint,\n\ttype EndpointSchemas,\n\tResponseBuilder,\n} from './Endpoint';\nimport {\n\tcreateCookieHeaderAccessor,\n\tcreateObjectHeaders,\n} from './lazyAccessors';\nimport {\n\ttype AuditExecutionContext,\n\texecuteWithAuditTransaction,\n} from './processAudits';\n\nexport type TestHttpResponse<TBody = any> = {\n\tbody: TBody;\n\tstatus: number;\n\theaders: Record<string, string | string[]>;\n};\n\n/**\n * Serializes a cookie into a Set-Cookie header string\n */\nfunction serializeCookie(\n\tname: string,\n\tvalue: string,\n\toptions?: CookieOptions,\n): string {\n\tlet cookieString = `${name}=${value}`;\n\n\tif (options) {\n\t\tif (options.maxAge !== undefined) {\n\t\t\tcookieString += `; Max-Age=${options.maxAge}`;\n\t\t}\n\t\tif (options.expires) {\n\t\t\tcookieString += `; Expires=${options.expires.toUTCString()}`;\n\t\t}\n\t\tif (options.domain) {\n\t\t\tcookieString += `; Domain=${options.domain}`;\n\t\t}\n\t\tif (options.path) {\n\t\t\tcookieString += `; Path=${options.path}`;\n\t\t}\n\t\tif (options.httpOnly) {\n\t\t\tcookieString += '; HttpOnly';\n\t\t}\n\t\tif (options.secure) {\n\t\t\tcookieString += '; Secure';\n\t\t}\n\t\tif (options.sameSite) {\n\t\t\tcookieString += `; SameSite=${options.sameSite}`;\n\t\t}\n\t}\n\n\treturn cookieString;\n}\n\nexport class TestEndpointAdaptor<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n> {\n\tstatic getDefaultServiceDiscover<\n\t\tTRoute extends string,\n\t\tTMethod extends HttpMethod,\n\t\tTInput extends EndpointSchemas = {},\n\t\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\t\tTServices extends Service[] = [],\n\t\tTLogger extends Logger = Logger,\n\t\tTSession = unknown,\n\t\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\t\tTEventPublisherServiceName extends string = string,\n\t\tTAuditStorage extends AuditStorage | undefined = undefined,\n\t\tTAuditStorageServiceName extends string = string,\n\t\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>,\n\t\tTDatabase = undefined,\n\t\tTDatabaseServiceName extends string = string,\n\t>(\n\t\t_endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>,\n\t) {\n\t\treturn ServiceDiscovery.getInstance(new EnvironmentParser({}));\n\t}\n\tconstructor(\n\t\tprivate readonly endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>,\n\t\tprivate serviceDiscovery: ServiceDiscovery<any> = TestEndpointAdaptor.getDefaultServiceDiscover(\n\t\t\tendpoint,\n\t\t),\n\t) {}\n\n\tasync fullRequest(\n\t\tctx: TestRequestAdaptor<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>,\n\t): Promise<TestHttpResponse<InferStandardSchema<TOutSchema>>> {\n\t\tconst body = await this.endpoint.parseInput((ctx as any).body, 'body');\n\t\tconst query = await this.endpoint.parseInput((ctx as any).query, 'query');\n\t\tconst params = await this.endpoint.parseInput(\n\t\t\t(ctx as any).params,\n\t\t\t'params',\n\t\t);\n\n\t\t// Lazy accessors - defer parsing until needed\n\t\tconst header = createObjectHeaders(ctx.headers);\n\t\tconst cookie = createCookieHeaderAccessor(ctx.headers.cookie);\n\n\t\t// Request context setup\n\t\tconst startTime = Date.now();\n\t\tconst requestId =\n\t\t\t(ctx as any).requestId ??\n\t\t\tctx.headers['x-request-id'] ??\n\t\t\tcrypto.randomUUID();\n\n\t\tconst logger = this.endpoint.logger.child({\n\t\t\trequestId,\n\t\t\troute: this.endpoint.route,\n\t\t\thost: ctx.headers.host,\n\t\t\tmethod: this.endpoint.method,\n\t\t}) as TLogger;\n\n\t\t// Get database from context for session extraction\n\t\tconst rawDb = (ctx as any).database as TDatabase;\n\n\t\t// Wrap handler execution in request context\n\t\treturn runWithRequestContext({ logger, requestId, startTime }, async () => {\n\t\t\tconst session = await this.endpoint.getSession({\n\t\t\t\tlogger,\n\t\t\t\tservices: ctx.services,\n\t\t\t\theader,\n\t\t\t\tcookie,\n\t\t\t\t...(rawDb !== undefined && { db: rawDb }),\n\t\t\t} as any);\n\n\t\t\t// Check authorization\n\t\t\tconst isAuthorized = await this.endpoint.authorize({\n\t\t\t\theader,\n\t\t\t\tcookie,\n\t\t\t\tservices: ctx.services,\n\t\t\t\tlogger,\n\t\t\t\tsession,\n\t\t\t\t...(rawDb !== undefined && { db: rawDb }),\n\t\t\t\tbody,\n\t\t\t\tquery,\n\t\t\t\tparams,\n\t\t\t} as any);\n\n\t\t\tif (!isAuthorized) {\n\t\t\t\tlogger.warn('Unauthorized access attempt');\n\t\t\t\tthrow new UnauthorizedError(\n\t\t\t\t\t'Unauthorized access to the endpoint',\n\t\t\t\t\t'You do not have permission to access this resource.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Create audit context if audit storage is provided\n\t\t\t// The auditorStorage instance is required when endpoint uses .auditor()\n\t\t\tconst auditorStorage = (ctx as any).auditorStorage as TAuditStorage;\n\t\t\tlet auditContext: AuditExecutionContext<TAuditAction> | undefined;\n\n\t\t\tif (auditorStorage) {\n\t\t\t\t// Extract actor if configured\n\t\t\t\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\t\t\t\tif (this.endpoint.actorExtractor) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tactor = await this.endpoint.actorExtractor({\n\t\t\t\t\t\t\tservices: ctx.services as any,\n\t\t\t\t\t\t\tsession,\n\t\t\t\t\t\t\theader,\n\t\t\t\t\t\t\tcookie,\n\t\t\t\t\t\t\tlogger,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst auditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\t\tactor,\n\t\t\t\t\tstorage: auditorStorage as AuditStorage,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tendpoint: this.endpoint.route,\n\t\t\t\t\t\tmethod: this.endpoint.method,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tauditContext = { auditor, storage: auditorStorage as AuditStorage };\n\t\t\t}\n\n\t\t\t// Warn if declarative audits are configured but no audit storage\n\t\t\tconst audits = this.endpoint.audits as MappedAudit<\n\t\t\t\tTAuditAction,\n\t\t\t\tTOutSchema\n\t\t\t>[];\n\t\t\tif (!auditContext && audits?.length) {\n\t\t\t\tlogger.warn('No auditor storage service available');\n\t\t\t}\n\n\t\t\t// Execute handler with automatic audit transaction support\n\t\t\tconst result = await executeWithAuditTransaction(\n\t\t\t\tauditContext,\n\t\t\t\tasync (auditor) => {\n\t\t\t\t\t// Use audit transaction as db if available (when storage has same database)\n\t\t\t\t\t// For testing, the tester controls whether to use transactional auditing\n\t\t\t\t\tconst trx = auditor?.getTransaction?.();\n\t\t\t\t\tconst db = trx ?? rawDb;\n\n\t\t\t\t\tconst responseBuilder = new ResponseBuilder();\n\t\t\t\t\tconst response = await this.endpoint.handler(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tquery,\n\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\tsession,\n\t\t\t\t\t\t\tservices: ctx.services,\n\t\t\t\t\t\t\tlogger,\n\t\t\t\t\t\t\theader,\n\t\t\t\t\t\t\tcookie,\n\t\t\t\t\t\t\tauditor,\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t} as any,\n\t\t\t\t\t\tresponseBuilder,\n\t\t\t\t\t);\n\n\t\t\t\t\t// Check if response has metadata\n\t\t\t\t\tlet data = response;\n\t\t\t\t\tlet metadata = responseBuilder.getMetadata();\n\n\t\t\t\t\tif (Endpoint.hasMetadata(response)) {\n\t\t\t\t\t\tdata = response.data;\n\t\t\t\t\t\tmetadata = response.metadata;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst output = await this.endpoint.parseOutput(data);\n\n\t\t\t\t\treturn { output, metadata, responseBuilder };\n\t\t\t\t},\n\t\t\t\t// Process declarative audits after handler (inside transaction)\n\t\t\t\tasync (result, auditor) => {\n\t\t\t\t\tif (!audits?.length) return;\n\n\t\t\t\t\tfor (const audit of audits) {\n\t\t\t\t\t\tif (audit.when && !audit.when(result.output as any)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst payload = audit.payload(result.output as any);\n\t\t\t\t\t\tconst entityId = audit.entityId?.(result.output as any);\n\t\t\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\t\t\ttable: audit.table,\n\t\t\t\t\t\t\tentityId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t// Pass rawDb so storage can reuse existing transactions\n\t\t\t\t{ db: rawDb },\n\t\t\t);\n\n\t\t\tconst { output, metadata } = result;\n\n\t\t\tctx.publisher && (await this.serviceDiscovery.register([ctx.publisher]));\n\t\t\tawait publishConstructEvents(\n\t\t\t\tthis.endpoint,\n\t\t\t\toutput,\n\t\t\t\tthis.serviceDiscovery,\n\t\t\t);\n\n\t\t\t// Convert cookies to Set-Cookie headers\n\t\t\tconst headers: Record<string, string | string[]> = {\n\t\t\t\t...(metadata.headers || {}),\n\t\t\t};\n\n\t\t\tif (metadata.cookies && metadata.cookies.size > 0) {\n\t\t\t\tconst setCookieValues: string[] = [];\n\t\t\t\tfor (const [name, cookie] of metadata.cookies.entries()) {\n\t\t\t\t\tsetCookieValues.push(\n\t\t\t\t\t\tserializeCookie(name, cookie.value, cookie.options),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\theaders['set-cookie'] = setCookieValues;\n\t\t\t}\n\n\t\t\t// Return HTTP response format\n\t\t\treturn {\n\t\t\t\tbody: output,\n\t\t\t\tstatus: metadata.status || 200,\n\t\t\t\theaders,\n\t\t\t};\n\t\t});\n\t}\n\n\tasync request(\n\t\tctx: TestRequestAdaptor<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName\n\t\t>,\n\t): Promise<InferStandardSchema<TOutSchema>> {\n\t\tconst response = await this.fullRequest(ctx);\n\t\treturn response.body;\n\t}\n}\n\n/**\n * Conditional audit storage requirement - required when TAuditStorage is configured\n */\ntype AuditStorageRequirement<\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n> = TAuditStorage extends undefined\n\t? {}\n\t: {\n\t\t\t/** Audit storage instance - required when endpoint uses .auditor() */\n\t\t\tauditorStorage: TAuditStorage;\n\t\t};\n\n/**\n * Conditional database requirement - required when TDatabase is configured\n */\ntype DatabaseRequirement<TDatabase = undefined> = TDatabase extends undefined\n\t? {}\n\t: {\n\t\t\t/** Database instance - required when endpoint uses .database() */\n\t\t\tdatabase: TDatabase;\n\t\t};\n\nexport type TestRequestAdaptor<\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\t_TAuditStorageServiceName extends string = string,\n\tTDatabase = undefined,\n\t_TDatabaseServiceName extends string = string,\n> = {\n\tservices: ServiceRecord<TServices>;\n\theaders: Record<string, string>;\n\tpublisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n} & InferComposableStandardSchema<TInput> &\n\tAuditStorageRequirement<TAuditStorage> &\n\tDatabaseRequirement<TDatabase>;\n"],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { HttpMethod } from "./types-B5H3piDg.cjs";
|
|
2
|
-
import { Endpoint, EndpointSchemas } from "./Endpoint-CGdCGJkC.cjs";
|
|
3
|
-
import { AuditStorage, AuditableAction } from "@geekmidas/audit";
|
|
4
|
-
import { EventPublisher } from "@geekmidas/events";
|
|
5
|
-
import { Logger } from "@geekmidas/logger";
|
|
6
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
7
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
8
|
-
import { InferComposableStandardSchema, InferStandardSchema } from "@geekmidas/schema";
|
|
9
|
-
|
|
10
|
-
//#region src/endpoints/TestEndpointAdaptor.d.ts
|
|
11
|
-
type TestHttpResponse<TBody = any> = {
|
|
12
|
-
body: TBody;
|
|
13
|
-
status: number;
|
|
14
|
-
headers: Record<string, string | string[]>;
|
|
15
|
-
};
|
|
16
|
-
declare class TestEndpointAdaptor<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>, TDatabase = undefined, TDatabaseServiceName extends string = string> {
|
|
17
|
-
private readonly endpoint;
|
|
18
|
-
private serviceDiscovery;
|
|
19
|
-
static getDefaultServiceDiscover<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TSession = unknown, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>, TDatabase = undefined, TDatabaseServiceName extends string = string>(_endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>): ServiceDiscovery<any>;
|
|
20
|
-
constructor(endpoint: Endpoint<TRoute, TMethod, TInput, TOutSchema, TServices, TLogger, TSession, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>, serviceDiscovery?: ServiceDiscovery<any>);
|
|
21
|
-
fullRequest(ctx: TestRequestAdaptor<TInput, TServices, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName>): Promise<TestHttpResponse<InferStandardSchema<TOutSchema>>>;
|
|
22
|
-
request(ctx: TestRequestAdaptor<TInput, TServices, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName>): Promise<InferStandardSchema<TOutSchema>>;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Conditional audit storage requirement - required when TAuditStorage is configured
|
|
26
|
-
*/
|
|
27
|
-
type AuditStorageRequirement<TAuditStorage extends AuditStorage | undefined = undefined> = TAuditStorage extends undefined ? {} : {
|
|
28
|
-
/** Audit storage instance - required when endpoint uses .auditor() */
|
|
29
|
-
auditorStorage: TAuditStorage;
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Conditional database requirement - required when TDatabase is configured
|
|
33
|
-
*/
|
|
34
|
-
type DatabaseRequirement<TDatabase = undefined> = TDatabase extends undefined ? {} : {
|
|
35
|
-
/** Database instance - required when endpoint uses .database() */
|
|
36
|
-
database: TDatabase;
|
|
37
|
-
};
|
|
38
|
-
type TestRequestAdaptor<TInput extends EndpointSchemas = {}, TServices extends Service[] = [], TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, _TAuditStorageServiceName extends string = string, TDatabase = undefined, _TDatabaseServiceName extends string = string> = {
|
|
39
|
-
services: ServiceRecord<TServices>;
|
|
40
|
-
headers: Record<string, string>;
|
|
41
|
-
publisher?: Service<TEventPublisherServiceName, TEventPublisher>;
|
|
42
|
-
} & InferComposableStandardSchema<TInput> & AuditStorageRequirement<TAuditStorage> & DatabaseRequirement<TDatabase>;
|
|
43
|
-
//#endregion
|
|
44
|
-
export { TestEndpointAdaptor, TestHttpResponse, TestRequestAdaptor };
|
|
45
|
-
//# sourceMappingURL=TestEndpointAdaptor-pM8yskbb.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestEndpointAdaptor-pM8yskbb.d.cts","names":[],"sources":["../src/endpoints/TestEndpointAdaptor.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_publisher = require('./publisher-lFQleddL.cjs');
|
|
3
|
-
const require_FunctionBuilder = require('./FunctionBuilder-C_xG9As7.cjs');
|
|
4
|
-
const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
|
|
5
|
-
const __geekmidas_audit = require_chunk.__toESM(require("@geekmidas/audit"));
|
|
6
|
-
const __geekmidas_envkit = require_chunk.__toESM(require("@geekmidas/envkit"));
|
|
7
|
-
|
|
8
|
-
//#region src/functions/TestFunctionAdaptor.ts
|
|
9
|
-
var TestFunctionAdaptor = class TestFunctionAdaptor {
|
|
10
|
-
static getDefaultServiceDiscovery(_fn) {
|
|
11
|
-
return __geekmidas_services.ServiceDiscovery.getInstance(new __geekmidas_envkit.EnvironmentParser({}));
|
|
12
|
-
}
|
|
13
|
-
constructor(fn, serviceDiscovery = TestFunctionAdaptor.getDefaultServiceDiscovery(fn)) {
|
|
14
|
-
this.fn = fn;
|
|
15
|
-
this.serviceDiscovery = serviceDiscovery;
|
|
16
|
-
}
|
|
17
|
-
async invoke(ctx) {
|
|
18
|
-
const parsedInput = await require_FunctionBuilder.FunctionBuilder.parseComposableStandardSchema(ctx.input, this.fn.input);
|
|
19
|
-
const logger = this.fn.logger.child({ test: true });
|
|
20
|
-
let services;
|
|
21
|
-
if (ctx.services) services = ctx.services;
|
|
22
|
-
else services = await this.serviceDiscovery.register(this.fn.services);
|
|
23
|
-
let db;
|
|
24
|
-
if ("db" in ctx && ctx.db !== void 0) db = ctx.db;
|
|
25
|
-
else if (this.fn.databaseService) {
|
|
26
|
-
const dbServices = await this.serviceDiscovery.register([this.fn.databaseService]);
|
|
27
|
-
db = dbServices[this.fn.databaseService.serviceName];
|
|
28
|
-
}
|
|
29
|
-
let auditor;
|
|
30
|
-
if ("auditor" in ctx && ctx.auditor !== void 0) auditor = ctx.auditor;
|
|
31
|
-
else if (this.fn.auditorStorageService) {
|
|
32
|
-
const auditServices = await this.serviceDiscovery.register([this.fn.auditorStorageService]);
|
|
33
|
-
const storage = auditServices[this.fn.auditorStorageService.serviceName];
|
|
34
|
-
auditor = new __geekmidas_audit.DefaultAuditor({
|
|
35
|
-
actor: {
|
|
36
|
-
id: "system",
|
|
37
|
-
type: "system"
|
|
38
|
-
},
|
|
39
|
-
storage,
|
|
40
|
-
metadata: {
|
|
41
|
-
function: this.fn.type,
|
|
42
|
-
test: true
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
const requestId = `test-${Date.now()}`;
|
|
47
|
-
const startTime = Date.now();
|
|
48
|
-
return (0, __geekmidas_services.runWithRequestContext)({
|
|
49
|
-
logger,
|
|
50
|
-
requestId,
|
|
51
|
-
startTime
|
|
52
|
-
}, async () => {
|
|
53
|
-
const response = await this.fn.fn({
|
|
54
|
-
input: parsedInput,
|
|
55
|
-
services,
|
|
56
|
-
logger,
|
|
57
|
-
db,
|
|
58
|
-
auditor
|
|
59
|
-
});
|
|
60
|
-
const output = await this.fn.parseOutput(response);
|
|
61
|
-
if (auditor) {
|
|
62
|
-
const records = auditor.getRecords();
|
|
63
|
-
if (records.length > 0) {
|
|
64
|
-
logger.debug({ auditCount: records.length }, "Flushing function audits");
|
|
65
|
-
await auditor.flush();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
await require_publisher.publishEvents(logger, this.serviceDiscovery, this.fn.events, output, this.fn.publisherService);
|
|
69
|
-
return output;
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
//#endregion
|
|
75
|
-
Object.defineProperty(exports, 'TestFunctionAdaptor', {
|
|
76
|
-
enumerable: true,
|
|
77
|
-
get: function () {
|
|
78
|
-
return TestFunctionAdaptor;
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
//# sourceMappingURL=TestFunctionAdaptor-B859kIeb.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestFunctionAdaptor-B859kIeb.cjs","names":["_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","EnvironmentParser","fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","serviceDiscovery: ServiceDiscovery<any>","ctx: TestFunctionRequest<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>","services: ServiceRecord<TServices>","db: TDatabase | undefined","auditor: Auditor<TAuditAction> | undefined","DefaultAuditor"],"sources":["../src/functions/TestFunctionAdaptor.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n\tComposableStandardSchema,\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\trunWithRequestContext,\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { publishEvents } from '../publisher';\nimport type { Function } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nexport class TestFunctionAdaptor<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\tstatic getDefaultServiceDiscovery<\n\t\tTInput extends ComposableStandardSchema | undefined = undefined,\n\t\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\t\tTServices extends Service[] = [],\n\t\tTLogger extends Logger = Logger,\n\t\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\t\tTEventPublisherServiceName extends string = string,\n\t\tTAuditStorage extends AuditStorage | undefined = undefined,\n\t\tTAuditStorageServiceName extends string = string,\n\t\tTDatabase = undefined,\n\t\tTDatabaseServiceName extends string = string,\n\t\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>,\n\t>(\n\t\t_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>,\n\t) {\n\t\treturn ServiceDiscovery.getInstance(new EnvironmentParser({}));\n\t}\n\n\tconstructor(\n\t\tprivate readonly fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>,\n\t\tprivate serviceDiscovery: ServiceDiscovery<any> = TestFunctionAdaptor.getDefaultServiceDiscovery(\n\t\t\tfn,\n\t\t),\n\t) {}\n\n\tasync invoke(\n\t\tctx: TestFunctionRequest<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t): Promise<InferStandardSchema<TOutSchema>> {\n\t\t// Parse input if schema is provided\n\n\t\tconst parsedInput = await FunctionBuilder.parseComposableStandardSchema(\n\t\t\tctx.input,\n\t\t\tthis.fn.input,\n\t\t);\n\n\t\t// Create logger with context\n\t\tconst logger = this.fn.logger.child({\n\t\t\ttest: true,\n\t\t}) as TLogger;\n\n\t\t// Register services (use provided services or register from function)\n\t\tlet services: ServiceRecord<TServices>;\n\t\tif (ctx.services) {\n\t\t\tservices = ctx.services;\n\t\t} else {\n\t\t\tservices = await this.serviceDiscovery.register(this.fn.services);\n\t\t}\n\n\t\t// Resolve database (use provided db or register from function)\n\t\tlet db: TDatabase | undefined;\n\t\tif ('db' in ctx && ctx.db !== undefined) {\n\t\t\tdb = ctx.db;\n\t\t} else if (this.fn.databaseService) {\n\t\t\tconst dbServices = await this.serviceDiscovery.register([\n\t\t\t\tthis.fn.databaseService,\n\t\t\t]);\n\t\t\tdb = dbServices[\n\t\t\t\tthis.fn.databaseService.serviceName as keyof typeof dbServices\n\t\t\t] as TDatabase;\n\t\t}\n\n\t\t// Resolve auditor (use provided auditor or create from function)\n\t\tlet auditor: Auditor<TAuditAction> | undefined;\n\t\tif ('auditor' in ctx && ctx.auditor !== undefined) {\n\t\t\tauditor = ctx.auditor;\n\t\t} else if (this.fn.auditorStorageService) {\n\t\t\tconst auditServices = await this.serviceDiscovery.register([\n\t\t\t\tthis.fn.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = auditServices[\n\t\t\t\tthis.fn.auditorStorageService.serviceName as keyof typeof auditServices\n\t\t\t] as AuditStorage;\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor: { id: 'system', type: 'system' },\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tfunction: this.fn.type,\n\t\t\t\t\ttest: true,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Wrap execution in request context for service access via context.getLogger()\n\t\tconst requestId = `test-${Date.now()}`;\n\t\tconst startTime = Date.now();\n\n\t\treturn runWithRequestContext({ logger, requestId, startTime }, async () => {\n\t\t\t// Execute the function\n\t\t\tconst response = await this.fn.fn({\n\t\t\t\tinput: parsedInput,\n\t\t\t\tservices,\n\t\t\t\tlogger,\n\t\t\t\tdb,\n\t\t\t\tauditor,\n\t\t\t} as any);\n\n\t\t\t// Parse output if schema is provided\n\t\t\tconst output = await this.fn.parseOutput(response);\n\n\t\t\t// Flush audits if any were recorded\n\t\t\tif (auditor) {\n\t\t\t\tconst records = auditor.getRecords();\n\t\t\t\tif (records.length > 0) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t\t'Flushing function audits',\n\t\t\t\t\t);\n\t\t\t\t\tawait auditor.flush();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Register publisher service if provided in context\n\n\t\t\tawait publishEvents(\n\t\t\t\tlogger,\n\t\t\t\tthis.serviceDiscovery,\n\t\t\t\tthis.fn.events,\n\t\t\t\toutput,\n\t\t\t\tthis.fn.publisherService,\n\t\t\t);\n\n\t\t\treturn output;\n\t\t}) as Promise<InferStandardSchema<TOutSchema>>;\n\t}\n}\n\nexport type TestFunctionRequest<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = {\n\tinput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tpublisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tdb?: TDatabase;\n\tauditor?: Auditor<TAuditAction>;\n} & InferComposableStandardSchema<{ input: TInput }>;\n"],"mappings":";;;;;;;;AAqBA,IAAa,sBAAb,MAAa,oBAeX;CACD,OAAO,2BAgBNA,KAcC;AACD,SAAO,sCAAiB,YAAY,IAAIC,qCAAkB,CAAE,GAAE;CAC9D;CAED,YACkBC,IAcTC,mBAA0C,oBAAoB,2BACrE,GACA,EACA;EAjBgB;EAcT;CAGL;CAEJ,MAAM,OACLC,KAQ2C;EAG3C,MAAM,cAAc,MAAM,wCAAgB,8BACzC,IAAI,OACJ,KAAK,GAAG,MACR;EAGD,MAAM,SAAS,KAAK,GAAG,OAAO,MAAM,EACnC,MAAM,KACN,EAAC;EAGF,IAAIC;AACJ,MAAI,IAAI,SACP,YAAW,IAAI;MAEf,YAAW,MAAM,KAAK,iBAAiB,SAAS,KAAK,GAAG,SAAS;EAIlE,IAAIC;AACJ,MAAI,QAAQ,OAAO,IAAI,cACtB,MAAK,IAAI;WACC,KAAK,GAAG,iBAAiB;GACnC,MAAM,aAAa,MAAM,KAAK,iBAAiB,SAAS,CACvD,KAAK,GAAG,eACR,EAAC;AACF,QAAK,WACJ,KAAK,GAAG,gBAAgB;EAEzB;EAGD,IAAIC;AACJ,MAAI,aAAa,OAAO,IAAI,mBAC3B,WAAU,IAAI;WACJ,KAAK,GAAG,uBAAuB;GACzC,MAAM,gBAAgB,MAAM,KAAK,iBAAiB,SAAS,CAC1D,KAAK,GAAG,qBACR,EAAC;GACF,MAAM,UAAU,cACf,KAAK,GAAG,sBAAsB;AAG/B,aAAU,IAAIC,iCAA6B;IAC1C,OAAO;KAAE,IAAI;KAAU,MAAM;IAAU;IACvC;IACA,UAAU;KACT,UAAU,KAAK,GAAG;KAClB,MAAM;IACN;GACD;EACD;EAGD,MAAM,aAAa,OAAO,KAAK,KAAK,CAAC;EACrC,MAAM,YAAY,KAAK,KAAK;AAE5B,SAAO,gDAAsB;GAAE;GAAQ;GAAW;EAAW,GAAE,YAAY;GAE1E,MAAM,WAAW,MAAM,KAAK,GAAG,GAAG;IACjC,OAAO;IACP;IACA;IACA;IACA;GACA,EAAQ;GAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,SAAS;AAGlD,OAAI,SAAS;IACZ,MAAM,UAAU,QAAQ,YAAY;AACpC,QAAI,QAAQ,SAAS,GAAG;AACvB,YAAO,MACN,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACA;AACD,WAAM,QAAQ,OAAO;IACrB;GACD;AAID,SAAM,gCACL,QACA,KAAK,kBACL,KAAK,GAAG,QACR,QACA,KAAK,GAAG,iBACR;AAED,UAAO;EACP,EAAC;CACF;AACD"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Function } from "./Function-D74HrBnX.mjs";
|
|
2
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
3
|
-
import { AuditStorage, AuditableAction, Auditor } from "@geekmidas/audit";
|
|
4
|
-
import { EventPublisher } from "@geekmidas/events";
|
|
5
|
-
import { Logger } from "@geekmidas/logger";
|
|
6
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
7
|
-
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "@geekmidas/schema";
|
|
8
|
-
|
|
9
|
-
//#region src/functions/TestFunctionAdaptor.d.ts
|
|
10
|
-
declare class TestFunctionAdaptor<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> {
|
|
11
|
-
private readonly fn;
|
|
12
|
-
private serviceDiscovery;
|
|
13
|
-
static getDefaultServiceDiscovery<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>>(_fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, any>): ServiceDiscovery<any>;
|
|
14
|
-
constructor(fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, any>, serviceDiscovery?: ServiceDiscovery<any>);
|
|
15
|
-
invoke(ctx: TestFunctionRequest<TInput, TServices, TEventPublisher, TEventPublisherServiceName, TDatabase, TAuditAction>): Promise<InferStandardSchema<TOutSchema>>;
|
|
16
|
-
}
|
|
17
|
-
type TestFunctionRequest<TInput extends ComposableStandardSchema | undefined = undefined, TServices extends Service[] = [], TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TDatabase = undefined, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> = {
|
|
18
|
-
input: InferComposableStandardSchema<TInput>;
|
|
19
|
-
services: ServiceRecord<TServices>;
|
|
20
|
-
publisher?: Service<TEventPublisherServiceName, TEventPublisher>;
|
|
21
|
-
db?: TDatabase;
|
|
22
|
-
auditor?: Auditor<TAuditAction>;
|
|
23
|
-
} & InferComposableStandardSchema<{
|
|
24
|
-
input: TInput;
|
|
25
|
-
}>;
|
|
26
|
-
//# sourceMappingURL=TestFunctionAdaptor.d.ts.map
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { TestFunctionAdaptor, TestFunctionRequest };
|
|
30
|
-
//# sourceMappingURL=TestFunctionAdaptor-C0A-VqnM.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestFunctionAdaptor-C0A-VqnM.d.mts","names":[],"sources":["../src/functions/TestFunctionAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;cAqBa,mCACG,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC;;EAX5C,QAAA,gBAAmB;EAAA,OAAA,0BAAA,CAAA,eAiBf,wBAjBe,GAAA,SAAA,GAAA,SAAA,EAAA,mBAkBX,gBAlBW,GAAA,SAAA,GAAA,SAAA,EAAA,kBAmBZ,OAnBY,EAAA,GAAA,EAAA,EAAA,gBAoBd,MApBc,GAoBL,MApBK,EAAA,wBAqBN,cArBM,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,sBAuBR,YAvBQ,GAAA,SAAA,GAAA,SAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,YAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,qBA2BT,eA3BS,CAAA,MAAA,EAAA,OAAA,CAAA,GA2B0B,eA3B1B,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,GAAA,EAgCzB,QAhCyB,CAiC7B,MAjC6B,EAkC7B,SAlC6B,EAmC7B,OAnC6B,EAoC7B,UApC6B,EAqC7B,eArC6B,EAsC7B,0BAtC6B,EAuC7B,aAvC6B,EAwC7B,wBAxC6B,EAyC7B,SAzC6B,EA0C7B,oBA1C6B,EA2C7B,YA3C6B,EAAA,GAAA,CAAA,CAAA,EA6C7B,gBA7C6B,CAAA,GAAA,CAAA;EAAA,WAChB,CAAA,EAAA,EAkDO,QAlDP,CAmDb,MAnDa,EAoDb,SApDa,EAqDb,OArDa,EAsDb,UAtDa,EAuDb,eAvDa,EAwDb,0BAxDa,EAyDb,aAzDa,EA0Db,wBA1Da,EA2Db,SA3Da,EA4Db,oBA5Da,EA6Db,YA7Da,EAAA,GAAA,CAAA,EAAA,gBAAA,CAAA,EAgEY,gBAhEZ,CAAA,GAAA,CAAA;EAAwB,MACpB,CAAA,GAAA,EAqEb,mBArEa,CAsEjB,MAtEiB,EAuEjB,SAvEiB,EAwEjB,eAxEiB,EAyEjB,0BAzEiB,EA0EjB,SA1EiB,EA2EjB,YA3EiB,CAAA,CAAA,EA6EhB,OA7EgB,CA6ER,mBA7EQ,CA6EY,UA7EZ,CAAA,CAAA;;AAEH,KA+KL,mBA/KK,CAAA,eAgLD,wBAhLC,GAAA,SAAA,GAAA,SAAA,EAAA,kBAiLE,OAjLF,EAAA,GAAA,EAAA,EAAA,wBAkLQ,cAlLR,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,YAAA,SAAA,EAAA,qBAqLK,eArLL,CAAA,MAAA,EAAA,OAAA,CAAA,GAqLwC,eArLxC,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA;EAAM,KAAG,EA0LlB,6BA1LkB,CA0LY,MA1LZ,CAAA;EAAM,QACP,EA0Ld,aA1Lc,CA0LA,SA1LA,CAAA;EAAc,SAEhB,CAAA,EAyLV,OAzLU,CAyLF,0BAzLE,EAyL0B,eAzL1B,CAAA;EAAY,EAAA,CAIb,EAsLhB,SAtLgB;EAAe,OAAoB,CAAA,EAuL9C,OAvL8C,CAuLtC,YAvLsC,CAAA;CAAe,GAwLpE,6BAlLa,CAAA;EAAwB,KACpB,EAiLsB,MAjLtB;CAAgB,CAAA"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { publishEvents } from "./publisher-Bw4770Hi.mjs";
|
|
2
|
-
import { FunctionBuilder } from "./FunctionBuilder-CBeqX18X.mjs";
|
|
3
|
-
import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
|
|
4
|
-
import { DefaultAuditor } from "@geekmidas/audit";
|
|
5
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
6
|
-
|
|
7
|
-
//#region src/functions/TestFunctionAdaptor.ts
|
|
8
|
-
var TestFunctionAdaptor = class TestFunctionAdaptor {
|
|
9
|
-
static getDefaultServiceDiscovery(_fn) {
|
|
10
|
-
return ServiceDiscovery.getInstance(new EnvironmentParser({}));
|
|
11
|
-
}
|
|
12
|
-
constructor(fn, serviceDiscovery = TestFunctionAdaptor.getDefaultServiceDiscovery(fn)) {
|
|
13
|
-
this.fn = fn;
|
|
14
|
-
this.serviceDiscovery = serviceDiscovery;
|
|
15
|
-
}
|
|
16
|
-
async invoke(ctx) {
|
|
17
|
-
const parsedInput = await FunctionBuilder.parseComposableStandardSchema(ctx.input, this.fn.input);
|
|
18
|
-
const logger = this.fn.logger.child({ test: true });
|
|
19
|
-
let services;
|
|
20
|
-
if (ctx.services) services = ctx.services;
|
|
21
|
-
else services = await this.serviceDiscovery.register(this.fn.services);
|
|
22
|
-
let db;
|
|
23
|
-
if ("db" in ctx && ctx.db !== void 0) db = ctx.db;
|
|
24
|
-
else if (this.fn.databaseService) {
|
|
25
|
-
const dbServices = await this.serviceDiscovery.register([this.fn.databaseService]);
|
|
26
|
-
db = dbServices[this.fn.databaseService.serviceName];
|
|
27
|
-
}
|
|
28
|
-
let auditor;
|
|
29
|
-
if ("auditor" in ctx && ctx.auditor !== void 0) auditor = ctx.auditor;
|
|
30
|
-
else if (this.fn.auditorStorageService) {
|
|
31
|
-
const auditServices = await this.serviceDiscovery.register([this.fn.auditorStorageService]);
|
|
32
|
-
const storage = auditServices[this.fn.auditorStorageService.serviceName];
|
|
33
|
-
auditor = new DefaultAuditor({
|
|
34
|
-
actor: {
|
|
35
|
-
id: "system",
|
|
36
|
-
type: "system"
|
|
37
|
-
},
|
|
38
|
-
storage,
|
|
39
|
-
metadata: {
|
|
40
|
-
function: this.fn.type,
|
|
41
|
-
test: true
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
const requestId = `test-${Date.now()}`;
|
|
46
|
-
const startTime = Date.now();
|
|
47
|
-
return runWithRequestContext({
|
|
48
|
-
logger,
|
|
49
|
-
requestId,
|
|
50
|
-
startTime
|
|
51
|
-
}, async () => {
|
|
52
|
-
const response = await this.fn.fn({
|
|
53
|
-
input: parsedInput,
|
|
54
|
-
services,
|
|
55
|
-
logger,
|
|
56
|
-
db,
|
|
57
|
-
auditor
|
|
58
|
-
});
|
|
59
|
-
const output = await this.fn.parseOutput(response);
|
|
60
|
-
if (auditor) {
|
|
61
|
-
const records = auditor.getRecords();
|
|
62
|
-
if (records.length > 0) {
|
|
63
|
-
logger.debug({ auditCount: records.length }, "Flushing function audits");
|
|
64
|
-
await auditor.flush();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
await publishEvents(logger, this.serviceDiscovery, this.fn.events, output, this.fn.publisherService);
|
|
68
|
-
return output;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
//#endregion
|
|
74
|
-
export { TestFunctionAdaptor };
|
|
75
|
-
//# sourceMappingURL=TestFunctionAdaptor-CqdSlhx1.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestFunctionAdaptor-CqdSlhx1.mjs","names":["_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","serviceDiscovery: ServiceDiscovery<any>","ctx: TestFunctionRequest<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>","services: ServiceRecord<TServices>","db: TDatabase | undefined","auditor: Auditor<TAuditAction> | undefined"],"sources":["../src/functions/TestFunctionAdaptor.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n\tComposableStandardSchema,\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\trunWithRequestContext,\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { publishEvents } from '../publisher';\nimport type { Function } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nexport class TestFunctionAdaptor<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\tstatic getDefaultServiceDiscovery<\n\t\tTInput extends ComposableStandardSchema | undefined = undefined,\n\t\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\t\tTServices extends Service[] = [],\n\t\tTLogger extends Logger = Logger,\n\t\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\t\tTEventPublisherServiceName extends string = string,\n\t\tTAuditStorage extends AuditStorage | undefined = undefined,\n\t\tTAuditStorageServiceName extends string = string,\n\t\tTDatabase = undefined,\n\t\tTDatabaseServiceName extends string = string,\n\t\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>,\n\t>(\n\t\t_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>,\n\t) {\n\t\treturn ServiceDiscovery.getInstance(new EnvironmentParser({}));\n\t}\n\n\tconstructor(\n\t\tprivate readonly fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>,\n\t\tprivate serviceDiscovery: ServiceDiscovery<any> = TestFunctionAdaptor.getDefaultServiceDiscovery(\n\t\t\tfn,\n\t\t),\n\t) {}\n\n\tasync invoke(\n\t\tctx: TestFunctionRequest<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t): Promise<InferStandardSchema<TOutSchema>> {\n\t\t// Parse input if schema is provided\n\n\t\tconst parsedInput = await FunctionBuilder.parseComposableStandardSchema(\n\t\t\tctx.input,\n\t\t\tthis.fn.input,\n\t\t);\n\n\t\t// Create logger with context\n\t\tconst logger = this.fn.logger.child({\n\t\t\ttest: true,\n\t\t}) as TLogger;\n\n\t\t// Register services (use provided services or register from function)\n\t\tlet services: ServiceRecord<TServices>;\n\t\tif (ctx.services) {\n\t\t\tservices = ctx.services;\n\t\t} else {\n\t\t\tservices = await this.serviceDiscovery.register(this.fn.services);\n\t\t}\n\n\t\t// Resolve database (use provided db or register from function)\n\t\tlet db: TDatabase | undefined;\n\t\tif ('db' in ctx && ctx.db !== undefined) {\n\t\t\tdb = ctx.db;\n\t\t} else if (this.fn.databaseService) {\n\t\t\tconst dbServices = await this.serviceDiscovery.register([\n\t\t\t\tthis.fn.databaseService,\n\t\t\t]);\n\t\t\tdb = dbServices[\n\t\t\t\tthis.fn.databaseService.serviceName as keyof typeof dbServices\n\t\t\t] as TDatabase;\n\t\t}\n\n\t\t// Resolve auditor (use provided auditor or create from function)\n\t\tlet auditor: Auditor<TAuditAction> | undefined;\n\t\tif ('auditor' in ctx && ctx.auditor !== undefined) {\n\t\t\tauditor = ctx.auditor;\n\t\t} else if (this.fn.auditorStorageService) {\n\t\t\tconst auditServices = await this.serviceDiscovery.register([\n\t\t\t\tthis.fn.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = auditServices[\n\t\t\t\tthis.fn.auditorStorageService.serviceName as keyof typeof auditServices\n\t\t\t] as AuditStorage;\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor: { id: 'system', type: 'system' },\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tfunction: this.fn.type,\n\t\t\t\t\ttest: true,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Wrap execution in request context for service access via context.getLogger()\n\t\tconst requestId = `test-${Date.now()}`;\n\t\tconst startTime = Date.now();\n\n\t\treturn runWithRequestContext({ logger, requestId, startTime }, async () => {\n\t\t\t// Execute the function\n\t\t\tconst response = await this.fn.fn({\n\t\t\t\tinput: parsedInput,\n\t\t\t\tservices,\n\t\t\t\tlogger,\n\t\t\t\tdb,\n\t\t\t\tauditor,\n\t\t\t} as any);\n\n\t\t\t// Parse output if schema is provided\n\t\t\tconst output = await this.fn.parseOutput(response);\n\n\t\t\t// Flush audits if any were recorded\n\t\t\tif (auditor) {\n\t\t\t\tconst records = auditor.getRecords();\n\t\t\t\tif (records.length > 0) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t\t'Flushing function audits',\n\t\t\t\t\t);\n\t\t\t\t\tawait auditor.flush();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Register publisher service if provided in context\n\n\t\t\tawait publishEvents(\n\t\t\t\tlogger,\n\t\t\t\tthis.serviceDiscovery,\n\t\t\t\tthis.fn.events,\n\t\t\t\toutput,\n\t\t\t\tthis.fn.publisherService,\n\t\t\t);\n\n\t\t\treturn output;\n\t\t}) as Promise<InferStandardSchema<TOutSchema>>;\n\t}\n}\n\nexport type TestFunctionRequest<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = {\n\tinput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tpublisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tdb?: TDatabase;\n\tauditor?: Auditor<TAuditAction>;\n} & InferComposableStandardSchema<{ input: TInput }>;\n"],"mappings":";;;;;;;AAqBA,IAAa,sBAAb,MAAa,oBAeX;CACD,OAAO,2BAgBNA,KAcC;AACD,SAAO,iBAAiB,YAAY,IAAI,kBAAkB,CAAE,GAAE;CAC9D;CAED,YACkBC,IAcTC,mBAA0C,oBAAoB,2BACrE,GACA,EACA;EAjBgB;EAcT;CAGL;CAEJ,MAAM,OACLC,KAQ2C;EAG3C,MAAM,cAAc,MAAM,gBAAgB,8BACzC,IAAI,OACJ,KAAK,GAAG,MACR;EAGD,MAAM,SAAS,KAAK,GAAG,OAAO,MAAM,EACnC,MAAM,KACN,EAAC;EAGF,IAAIC;AACJ,MAAI,IAAI,SACP,YAAW,IAAI;MAEf,YAAW,MAAM,KAAK,iBAAiB,SAAS,KAAK,GAAG,SAAS;EAIlE,IAAIC;AACJ,MAAI,QAAQ,OAAO,IAAI,cACtB,MAAK,IAAI;WACC,KAAK,GAAG,iBAAiB;GACnC,MAAM,aAAa,MAAM,KAAK,iBAAiB,SAAS,CACvD,KAAK,GAAG,eACR,EAAC;AACF,QAAK,WACJ,KAAK,GAAG,gBAAgB;EAEzB;EAGD,IAAIC;AACJ,MAAI,aAAa,OAAO,IAAI,mBAC3B,WAAU,IAAI;WACJ,KAAK,GAAG,uBAAuB;GACzC,MAAM,gBAAgB,MAAM,KAAK,iBAAiB,SAAS,CAC1D,KAAK,GAAG,qBACR,EAAC;GACF,MAAM,UAAU,cACf,KAAK,GAAG,sBAAsB;AAG/B,aAAU,IAAI,eAA6B;IAC1C,OAAO;KAAE,IAAI;KAAU,MAAM;IAAU;IACvC;IACA,UAAU;KACT,UAAU,KAAK,GAAG;KAClB,MAAM;IACN;GACD;EACD;EAGD,MAAM,aAAa,OAAO,KAAK,KAAK,CAAC;EACrC,MAAM,YAAY,KAAK,KAAK;AAE5B,SAAO,sBAAsB;GAAE;GAAQ;GAAW;EAAW,GAAE,YAAY;GAE1E,MAAM,WAAW,MAAM,KAAK,GAAG,GAAG;IACjC,OAAO;IACP;IACA;IACA;IACA;GACA,EAAQ;GAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,SAAS;AAGlD,OAAI,SAAS;IACZ,MAAM,UAAU,QAAQ,YAAY;AACpC,QAAI,QAAQ,SAAS,GAAG;AACvB,YAAO,MACN,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACA;AACD,WAAM,QAAQ,OAAO;IACrB;GACD;AAID,SAAM,cACL,QACA,KAAK,kBACL,KAAK,GAAG,QACR,QACA,KAAK,GAAG,iBACR;AAED,UAAO;EACP,EAAC;CACF;AACD"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Function } from "./Function-CwlB89lS.cjs";
|
|
2
|
-
import { AuditStorage, AuditableAction, Auditor } from "@geekmidas/audit";
|
|
3
|
-
import { EventPublisher } from "@geekmidas/events";
|
|
4
|
-
import { Logger } from "@geekmidas/logger";
|
|
5
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
6
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
7
|
-
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "@geekmidas/schema";
|
|
8
|
-
|
|
9
|
-
//#region src/functions/TestFunctionAdaptor.d.ts
|
|
10
|
-
declare class TestFunctionAdaptor<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> {
|
|
11
|
-
private readonly fn;
|
|
12
|
-
private serviceDiscovery;
|
|
13
|
-
static getDefaultServiceDiscovery<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>>(_fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, any>): ServiceDiscovery<any>;
|
|
14
|
-
constructor(fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, any>, serviceDiscovery?: ServiceDiscovery<any>);
|
|
15
|
-
invoke(ctx: TestFunctionRequest<TInput, TServices, TEventPublisher, TEventPublisherServiceName, TDatabase, TAuditAction>): Promise<InferStandardSchema<TOutSchema>>;
|
|
16
|
-
}
|
|
17
|
-
type TestFunctionRequest<TInput extends ComposableStandardSchema | undefined = undefined, TServices extends Service[] = [], TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TDatabase = undefined, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> = {
|
|
18
|
-
input: InferComposableStandardSchema<TInput>;
|
|
19
|
-
services: ServiceRecord<TServices>;
|
|
20
|
-
publisher?: Service<TEventPublisherServiceName, TEventPublisher>;
|
|
21
|
-
db?: TDatabase;
|
|
22
|
-
auditor?: Auditor<TAuditAction>;
|
|
23
|
-
} & InferComposableStandardSchema<{
|
|
24
|
-
input: TInput;
|
|
25
|
-
}>;
|
|
26
|
-
//# sourceMappingURL=TestFunctionAdaptor.d.ts.map
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { TestFunctionAdaptor, TestFunctionRequest };
|
|
30
|
-
//# sourceMappingURL=TestFunctionAdaptor-Dbq55dKP.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestFunctionAdaptor-Dbq55dKP.d.cts","names":[],"sources":["../src/functions/TestFunctionAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;cAqBa,mCACG,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC;;EAX5C,QAAA,gBAAmB;EAAA,OAAA,0BAAA,CAAA,eAiBf,wBAjBe,GAAA,SAAA,GAAA,SAAA,EAAA,mBAkBX,gBAlBW,GAAA,SAAA,GAAA,SAAA,EAAA,kBAmBZ,OAnBY,EAAA,GAAA,EAAA,EAAA,gBAoBd,MApBc,GAoBL,MApBK,EAAA,wBAqBN,cArBM,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,sBAuBR,YAvBQ,GAAA,SAAA,GAAA,SAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,YAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,qBA2BT,eA3BS,CAAA,MAAA,EAAA,OAAA,CAAA,GA2B0B,eA3B1B,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,GAAA,EAgCzB,QAhCyB,CAiC7B,MAjC6B,EAkC7B,SAlC6B,EAmC7B,OAnC6B,EAoC7B,UApC6B,EAqC7B,eArC6B,EAsC7B,0BAtC6B,EAuC7B,aAvC6B,EAwC7B,wBAxC6B,EAyC7B,SAzC6B,EA0C7B,oBA1C6B,EA2C7B,YA3C6B,EAAA,GAAA,CAAA,CAAA,EA6C7B,gBA7C6B,CAAA,GAAA,CAAA;EAAA,WAChB,CAAA,EAAA,EAkDO,QAlDP,CAmDb,MAnDa,EAoDb,SApDa,EAqDb,OArDa,EAsDb,UAtDa,EAuDb,eAvDa,EAwDb,0BAxDa,EAyDb,aAzDa,EA0Db,wBA1Da,EA2Db,SA3Da,EA4Db,oBA5Da,EA6Db,YA7Da,EAAA,GAAA,CAAA,EAAA,gBAAA,CAAA,EAgEY,gBAhEZ,CAAA,GAAA,CAAA;EAAwB,MACpB,CAAA,GAAA,EAqEb,mBArEa,CAsEjB,MAtEiB,EAuEjB,SAvEiB,EAwEjB,eAxEiB,EAyEjB,0BAzEiB,EA0EjB,SA1EiB,EA2EjB,YA3EiB,CAAA,CAAA,EA6EhB,OA7EgB,CA6ER,mBA7EQ,CA6EY,UA7EZ,CAAA,CAAA;;AAEH,KA+KL,mBA/KK,CAAA,eAgLD,wBAhLC,GAAA,SAAA,GAAA,SAAA,EAAA,kBAiLE,OAjLF,EAAA,GAAA,EAAA,EAAA,wBAkLQ,cAlLR,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,YAAA,SAAA,EAAA,qBAqLK,eArLL,CAAA,MAAA,EAAA,OAAA,CAAA,GAqLwC,eArLxC,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA;EAAM,KAAG,EA0LlB,6BA1LkB,CA0LY,MA1LZ,CAAA;EAAM,QACP,EA0Ld,aA1Lc,CA0LA,SA1LA,CAAA;EAAc,SAEhB,CAAA,EAyLV,OAzLU,CAyLF,0BAzLE,EAyL0B,eAzL1B,CAAA;EAAY,EAAA,CAIb,EAsLhB,SAtLgB;EAAe,OAAoB,CAAA,EAuL9C,OAvL8C,CAuLtC,YAvLsC,CAAA;CAAe,GAwLpE,6BAlLa,CAAA;EAAwB,KACpB,EAiLsB,MAjLtB;CAAgB,CAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Subscriber } from "./Subscriber-9ObcUdcC.mjs";
|
|
2
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
3
|
-
import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
|
|
4
|
-
import { Logger } from "@geekmidas/logger";
|
|
5
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
-
import { InferStandardSchema } from "@geekmidas/schema";
|
|
7
|
-
|
|
8
|
-
//#region src/subscribers/TestSubscriberAdaptor.d.ts
|
|
9
|
-
type ExtractEventPayloads<TPublisher extends EventPublisher<any> | undefined, TEventTypes extends any[]> = TPublisher extends EventPublisher<any> ? Extract<ExtractPublisherMessage<TPublisher>, {
|
|
10
|
-
type: TEventTypes[number];
|
|
11
|
-
}> : never;
|
|
12
|
-
declare class TestSubscriberAdaptor<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][]> {
|
|
13
|
-
private readonly subscriber;
|
|
14
|
-
private serviceDiscovery;
|
|
15
|
-
static getDefaultServiceDiscovery(): ServiceDiscovery<any>;
|
|
16
|
-
constructor(subscriber: Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>, serviceDiscovery?: ServiceDiscovery<any>);
|
|
17
|
-
invoke(request: TestSubscriberRequest<TEventPublisher, TSubscribedEvents, TServices>): Promise<InferStandardSchema<OutSchema>>;
|
|
18
|
-
private filterEvents;
|
|
19
|
-
}
|
|
20
|
-
type TestSubscriberRequest<TEventPublisher extends EventPublisher<any> | undefined = undefined, TSubscribedEvents extends any[] = [], TServices extends Service[] = []> = {
|
|
21
|
-
events: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];
|
|
22
|
-
services?: ServiceRecord<TServices>;
|
|
23
|
-
};
|
|
24
|
-
//#endregion
|
|
25
|
-
export { TestSubscriberAdaptor, TestSubscriberRequest };
|
|
26
|
-
//# sourceMappingURL=TestSubscriberAdaptor-BEyCFP9G.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestSubscriberAdaptor-BEyCFP9G.d.mts","names":[],"sources":["../src/subscribers/TestSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAcK,wCACe,8DAEhB,mBAAmB,sBACpB,QAAQ,wBAAwB;EAJ9B,IAAA,EAImD,WAJnD,CAAA,MAAoB,CAAA;CAAA,CAAA,GAAA,KAAA;AACL,cAMP,qBANO,CAAA,kBAOD,OAPC,EAAA,GAAA,EAAA,EAAA,gBAQH,MARG,GAQM,MARN,EAAA,kBASD,gBATC,GAAA,SAAA,GAAA,SAAA,EAAA,wBAUK,cAVL,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,0BAalB,uBAbkB,CAaM,eAbN,CAAA,CAAA,MAAA,CAAA,EAAA,GAamC,uBAbnC,CAa2D,eAb3D,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;EAAc,iBAE9B,UAAA;EAAU,QAAS,gBAAA;EAAc,OACF,0BAAA,CAAA,CAAA,EAYD,gBAZC,CAAA,GAAA,CAAA;EAAU,WAAlC,CAAA,UAAA,EAiBoB,UAjBpB,CAkBR,SAlBQ,EAmBR,OAnBQ,EAoBR,SApBQ,EAqBR,eArBQ,EAsBR,0BAtBQ,EAuBR,iBAvBQ,CAAA,EAAA,gBAAA,CAAA,EAyBiB,gBAzBjB,CAAA,GAAA,CAAA;EAAuB,MAAsB,CAAA,OAAA,EA6B7C,qBA7B6C,CA8BrD,eA9BqD,EA+BrD,iBA/BqD,EAgCrD,SAhCqD,CAAA,CAAA,EAkCpD,OAlCoD,CAkC5C,mBAlC4C,CAkCxB,SAlCwB,CAAA,CAAA;EAAW,QAAhE,YAAA;AAAO;AAGG,KAwGD,qBAxGsB,CAAA,wBAyGT,cAzGS,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,0BAAA,GAAA,EAAA,GAAA,EAAA,EAAA,kBA2Gf,OA3Ge,EAAA,GAAA,EAAA,CAAA,GAAA;EAAA,MAAA,EA6GzB,oBA7GyB,CA6GJ,eA7GI,EA6Ga,iBA7Gb,CAAA,EAAA;EAAA,QACf,CAAA,EA6GP,aA7GO,CA6GO,SA7GP,CAAA;CAAO"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Subscriber } from "./Subscriber-1rDE7HuM.cjs";
|
|
2
|
-
import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
|
|
3
|
-
import { Logger } from "@geekmidas/logger";
|
|
4
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
5
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
-
import { InferStandardSchema } from "@geekmidas/schema";
|
|
7
|
-
|
|
8
|
-
//#region src/subscribers/TestSubscriberAdaptor.d.ts
|
|
9
|
-
type ExtractEventPayloads<TPublisher extends EventPublisher<any> | undefined, TEventTypes extends any[]> = TPublisher extends EventPublisher<any> ? Extract<ExtractPublisherMessage<TPublisher>, {
|
|
10
|
-
type: TEventTypes[number];
|
|
11
|
-
}> : never;
|
|
12
|
-
declare class TestSubscriberAdaptor<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][]> {
|
|
13
|
-
private readonly subscriber;
|
|
14
|
-
private serviceDiscovery;
|
|
15
|
-
static getDefaultServiceDiscovery(): ServiceDiscovery<any>;
|
|
16
|
-
constructor(subscriber: Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>, serviceDiscovery?: ServiceDiscovery<any>);
|
|
17
|
-
invoke(request: TestSubscriberRequest<TEventPublisher, TSubscribedEvents, TServices>): Promise<InferStandardSchema<OutSchema>>;
|
|
18
|
-
private filterEvents;
|
|
19
|
-
}
|
|
20
|
-
type TestSubscriberRequest<TEventPublisher extends EventPublisher<any> | undefined = undefined, TSubscribedEvents extends any[] = [], TServices extends Service[] = []> = {
|
|
21
|
-
events: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];
|
|
22
|
-
services?: ServiceRecord<TServices>;
|
|
23
|
-
};
|
|
24
|
-
//#endregion
|
|
25
|
-
export { TestSubscriberAdaptor, TestSubscriberRequest };
|
|
26
|
-
//# sourceMappingURL=TestSubscriberAdaptor-BknOLRQw.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestSubscriberAdaptor-BknOLRQw.d.cts","names":[],"sources":["../src/subscribers/TestSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAcK,wCACe,8DAEhB,mBAAmB,sBACpB,QAAQ,wBAAwB;EAJ9B,IAAA,EAImD,WAJnD,CAAA,MAAoB,CAAA;CAAA,CAAA,GAAA,KAAA;AACL,cAMP,qBANO,CAAA,kBAOD,OAPC,EAAA,GAAA,EAAA,EAAA,gBAQH,MARG,GAQM,MARN,EAAA,kBASD,gBATC,GAAA,SAAA,GAAA,SAAA,EAAA,wBAUK,cAVL,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,0BAalB,uBAbkB,CAaM,eAbN,CAAA,CAAA,MAAA,CAAA,EAAA,GAamC,uBAbnC,CAa2D,eAb3D,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;EAAc,iBAE9B,UAAA;EAAU,QAAS,gBAAA;EAAc,OACF,0BAAA,CAAA,CAAA,EAYD,gBAZC,CAAA,GAAA,CAAA;EAAU,WAAlC,CAAA,UAAA,EAiBoB,UAjBpB,CAkBR,SAlBQ,EAmBR,OAnBQ,EAoBR,SApBQ,EAqBR,eArBQ,EAsBR,0BAtBQ,EAuBR,iBAvBQ,CAAA,EAAA,gBAAA,CAAA,EAyBiB,gBAzBjB,CAAA,GAAA,CAAA;EAAuB,MAAsB,CAAA,OAAA,EA6B7C,qBA7B6C,CA8BrD,eA9BqD,EA+BrD,iBA/BqD,EAgCrD,SAhCqD,CAAA,CAAA,EAkCpD,OAlCoD,CAkC5C,mBAlC4C,CAkCxB,SAlCwB,CAAA,CAAA;EAAW,QAAhE,YAAA;AAAO;AAGG,KAwGD,qBAxGsB,CAAA,wBAyGT,cAzGS,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,0BAAA,GAAA,EAAA,GAAA,EAAA,EAAA,kBA2Gf,OA3Ge,EAAA,GAAA,EAAA,CAAA,GAAA;EAAA,MAAA,EA6GzB,oBA7GyB,CA6GJ,eA7GI,EA6Ga,iBA7Gb,CAAA,EAAA;EAAA,QACf,CAAA,EA6GP,aA7GO,CA6GO,SA7GP,CAAA;CAAO"}
|