@geekmidas/constructs 0.0.1
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/README.md +614 -0
- package/dist/AWSLambdaFunction-CpHFE2m6.d.mts +27 -0
- package/dist/AWSLambdaFunction-CwagvPG3.d.cts +27 -0
- package/dist/AWSLambdaFunction-DWIZYsCy.mjs +79 -0
- package/dist/AWSLambdaFunction-DWIZYsCy.mjs.map +1 -0
- package/dist/AWSLambdaFunction-qA5LqPsv.cjs +85 -0
- package/dist/AWSLambdaFunction-qA5LqPsv.cjs.map +1 -0
- package/dist/AWSLambdaSubscriberAdaptor-C1wQuucQ.d.mts +32 -0
- package/dist/AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs +138 -0
- package/dist/AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs.map +1 -0
- package/dist/AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs +132 -0
- package/dist/AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs.map +1 -0
- package/dist/AWSLambdaSubscriberAdaptor-QKVxR6qh.d.cts +32 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-BoBh7vvD.d.mts +61 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-Cx1oqcqh.mjs +124 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-Cx1oqcqh.mjs.map +1 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-DtzgQ9Vb.d.cts +61 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-i74DEUbc.cjs +130 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-i74DEUbc.cjs.map +1 -0
- package/dist/AmazonApiGatewayV1EndpointAdaptor-CLmBDYsl.mjs +42 -0
- package/dist/AmazonApiGatewayV1EndpointAdaptor-CLmBDYsl.mjs.map +1 -0
- package/dist/AmazonApiGatewayV1EndpointAdaptor-EhMd1YqV.d.mts +21 -0
- package/dist/AmazonApiGatewayV1EndpointAdaptor-GkMAUPL5.cjs +47 -0
- package/dist/AmazonApiGatewayV1EndpointAdaptor-GkMAUPL5.cjs.map +1 -0
- package/dist/AmazonApiGatewayV1EndpointAdaptor-Gw-j61qM.d.cts +21 -0
- package/dist/AmazonApiGatewayV2EndpointAdaptor-3RqegmJC.mjs +41 -0
- package/dist/AmazonApiGatewayV2EndpointAdaptor-3RqegmJC.mjs.map +1 -0
- package/dist/AmazonApiGatewayV2EndpointAdaptor-LUlpwmUW.d.cts +21 -0
- package/dist/AmazonApiGatewayV2EndpointAdaptor-YlFoFSS9.cjs +46 -0
- package/dist/AmazonApiGatewayV2EndpointAdaptor-YlFoFSS9.cjs.map +1 -0
- package/dist/AmazonApiGatewayV2EndpointAdaptor-zfd1gqXA.d.mts +21 -0
- package/dist/BaseFunctionBuilder-5QCHkchp.d.cts +31 -0
- package/dist/BaseFunctionBuilder-BFPVGnKi.d.mts +31 -0
- package/dist/BaseFunctionBuilder-BPE9JBbT.mjs +56 -0
- package/dist/BaseFunctionBuilder-BPE9JBbT.mjs.map +1 -0
- package/dist/BaseFunctionBuilder-DtO4Nwxm.cjs +62 -0
- package/dist/BaseFunctionBuilder-DtO4Nwxm.cjs.map +1 -0
- package/dist/Construct-BSEs6uwW.cjs +75 -0
- package/dist/Construct-BSEs6uwW.cjs.map +1 -0
- package/dist/Construct-BbKCIPQm.mjs +63 -0
- package/dist/Construct-BbKCIPQm.mjs.map +1 -0
- package/dist/Construct-Bm-PSO2V.d.cts +42 -0
- package/dist/Construct-DIguIyw4.d.mts +42 -0
- package/dist/Construct.cjs +4 -0
- package/dist/Construct.d.cts +2 -0
- package/dist/Construct.d.mts +2 -0
- package/dist/Construct.mjs +3 -0
- package/dist/Cron-Bgs6EQOb.mjs +20 -0
- package/dist/Cron-Bgs6EQOb.mjs.map +1 -0
- package/dist/Cron-DQiCj3ef.cjs +25 -0
- package/dist/Cron-DQiCj3ef.cjs.map +1 -0
- package/dist/Cron-FpAw03k6.d.mts +25 -0
- package/dist/Cron-ztnK6zgU.d.cts +25 -0
- package/dist/CronBuilder-B2clNQSP.d.mts +24 -0
- package/dist/CronBuilder-Cje9K8lZ.d.cts +24 -0
- package/dist/CronBuilder-DIBqJkh_.cjs +60 -0
- package/dist/CronBuilder-DIBqJkh_.cjs.map +1 -0
- package/dist/CronBuilder-DecAvvcn.mjs +54 -0
- package/dist/CronBuilder-DecAvvcn.mjs.map +1 -0
- package/dist/Endpoint-BaHC9y4Z.cjs +291 -0
- package/dist/Endpoint-BaHC9y4Z.cjs.map +1 -0
- package/dist/Endpoint-C7z9YJHK.d.cts +405 -0
- package/dist/Endpoint-DCn53Vd8.d.mts +405 -0
- package/dist/Endpoint-ierdM62O.mjs +279 -0
- package/dist/Endpoint-ierdM62O.mjs.map +1 -0
- package/dist/EndpointBuilder-BHFSpbPR.cjs +107 -0
- package/dist/EndpointBuilder-BHFSpbPR.cjs.map +1 -0
- package/dist/EndpointBuilder-BLUsoK3l.mjs +101 -0
- package/dist/EndpointBuilder-BLUsoK3l.mjs.map +1 -0
- package/dist/EndpointBuilder-Bfnb2oJr.d.mts +49 -0
- package/dist/EndpointBuilder-CP9RGwZH.d.cts +49 -0
- package/dist/EndpointFactory-BYdDVCNj.mjs +127 -0
- package/dist/EndpointFactory-BYdDVCNj.mjs.map +1 -0
- package/dist/EndpointFactory-CNtMXgIh.d.mts +52 -0
- package/dist/EndpointFactory-CXX4E6Gx.cjs +139 -0
- package/dist/EndpointFactory-CXX4E6Gx.cjs.map +1 -0
- package/dist/EndpointFactory-D2zgWbXZ.d.cts +52 -0
- package/dist/Function-BP58p9Mp.d.cts +59 -0
- package/dist/Function-BsBxc2wA.d.mts +59 -0
- package/dist/Function-C5mW-38v.mjs +72 -0
- package/dist/Function-C5mW-38v.mjs.map +1 -0
- package/dist/Function-CbO2NZx-.cjs +84 -0
- package/dist/Function-CbO2NZx-.cjs.map +1 -0
- package/dist/FunctionBuilder-BS1KgxA_.d.cts +24 -0
- package/dist/FunctionBuilder-C-PfPN3r.d.mts +24 -0
- package/dist/FunctionBuilder-CosgPmMl.mjs +53 -0
- package/dist/FunctionBuilder-CosgPmMl.mjs.map +1 -0
- package/dist/FunctionBuilder-DuOeWCAl.cjs +59 -0
- package/dist/FunctionBuilder-DuOeWCAl.cjs.map +1 -0
- package/dist/FunctionExecutionWrapper-Bx-Dl-2a.d.cts +24 -0
- package/dist/FunctionExecutionWrapper-CElXEjPe.cjs +42 -0
- package/dist/FunctionExecutionWrapper-CElXEjPe.cjs.map +1 -0
- package/dist/FunctionExecutionWrapper-DvglBBjE.d.mts +24 -0
- package/dist/FunctionExecutionWrapper-XGrSAAPD.mjs +36 -0
- package/dist/FunctionExecutionWrapper-XGrSAAPD.mjs.map +1 -0
- package/dist/HonoEndpointAdaptor-B0IO1zj2.d.mts +41 -0
- package/dist/HonoEndpointAdaptor-B4snrp7v.cjs +154 -0
- package/dist/HonoEndpointAdaptor-B4snrp7v.cjs.map +1 -0
- package/dist/HonoEndpointAdaptor-B6lW9Q1k.d.cts +41 -0
- package/dist/HonoEndpointAdaptor-D-M4-6Tf.mjs +148 -0
- package/dist/HonoEndpointAdaptor-D-M4-6Tf.mjs.map +1 -0
- package/dist/Subscriber-BoFm12i_.d.cts +33 -0
- package/dist/Subscriber-BwuCaC9G.mjs +28 -0
- package/dist/Subscriber-BwuCaC9G.mjs.map +1 -0
- package/dist/Subscriber-THGsj7Iy.d.mts +33 -0
- package/dist/Subscriber-iMRFG7ba.cjs +34 -0
- package/dist/Subscriber-iMRFG7ba.cjs.map +1 -0
- package/dist/SubscriberBuilder-CiPxgnKT.d.mts +26 -0
- package/dist/SubscriberBuilder-Dhz0C_t-.mjs +54 -0
- package/dist/SubscriberBuilder-Dhz0C_t-.mjs.map +1 -0
- package/dist/SubscriberBuilder-DuIgxuzc.d.cts +26 -0
- package/dist/SubscriberBuilder-wthr-FL9.cjs +60 -0
- package/dist/SubscriberBuilder-wthr-FL9.cjs.map +1 -0
- package/dist/adaptors/aws.cjs +19 -0
- package/dist/adaptors/aws.d.cts +15 -0
- package/dist/adaptors/aws.d.mts +15 -0
- package/dist/adaptors/aws.mjs +16 -0
- package/dist/adaptors/hono.cjs +12 -0
- package/dist/adaptors/hono.d.cts +9 -0
- package/dist/adaptors/hono.d.mts +9 -0
- package/dist/adaptors/hono.mjs +12 -0
- package/dist/chunk-CUT6urMc.cjs +30 -0
- package/dist/crons/Cron.cjs +8 -0
- package/dist/crons/Cron.d.cts +7 -0
- package/dist/crons/Cron.d.mts +7 -0
- package/dist/crons/Cron.mjs +8 -0
- package/dist/crons/CronBuilder.cjs +9 -0
- package/dist/crons/CronBuilder.d.cts +8 -0
- package/dist/crons/CronBuilder.d.mts +8 -0
- package/dist/crons/CronBuilder.mjs +9 -0
- package/dist/crons/index.cjs +16 -0
- package/dist/crons/index.cjs.map +1 -0
- package/dist/crons/index.d.cts +16 -0
- package/dist/crons/index.d.mts +16 -0
- package/dist/crons/index.mjs +14 -0
- package/dist/crons/index.mjs.map +1 -0
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +10 -0
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +9 -0
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -0
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +10 -0
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +12 -0
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +10 -0
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -0
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +12 -0
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +12 -0
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +10 -0
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -0
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +12 -0
- package/dist/endpoints/Endpoint.cjs +9 -0
- package/dist/endpoints/Endpoint.d.cts +8 -0
- package/dist/endpoints/Endpoint.d.mts +8 -0
- package/dist/endpoints/Endpoint.mjs +8 -0
- package/dist/endpoints/EndpointBuilder.cjs +9 -0
- package/dist/endpoints/EndpointBuilder.d.cts +9 -0
- package/dist/endpoints/EndpointBuilder.d.mts +9 -0
- package/dist/endpoints/EndpointBuilder.mjs +9 -0
- package/dist/endpoints/EndpointFactory.cjs +11 -0
- package/dist/endpoints/EndpointFactory.d.cts +10 -0
- package/dist/endpoints/EndpointFactory.d.mts +10 -0
- package/dist/endpoints/EndpointFactory.mjs +10 -0
- package/dist/endpoints/HonoEndpointAdaptor.cjs +12 -0
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +9 -0
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -0
- package/dist/endpoints/HonoEndpointAdaptor.mjs +12 -0
- package/dist/endpoints/TestEndpointAdaptor.cjs +54 -0
- package/dist/endpoints/TestEndpointAdaptor.cjs.map +1 -0
- package/dist/endpoints/TestEndpointAdaptor.d.cts +29 -0
- package/dist/endpoints/TestEndpointAdaptor.d.mts +29 -0
- package/dist/endpoints/TestEndpointAdaptor.mjs +53 -0
- package/dist/endpoints/TestEndpointAdaptor.mjs.map +1 -0
- package/dist/endpoints/helpers.cjs +10 -0
- package/dist/endpoints/helpers.d.cts +58 -0
- package/dist/endpoints/helpers.d.mts +58 -0
- package/dist/endpoints/helpers.mjs +9 -0
- package/dist/endpoints/index.cjs +16 -0
- package/dist/endpoints/index.cjs.map +1 -0
- package/dist/endpoints/index.d.cts +16 -0
- package/dist/endpoints/index.d.mts +16 -0
- package/dist/endpoints/index.mjs +15 -0
- package/dist/endpoints/index.mjs.map +1 -0
- package/dist/endpoints/parseHonoQuery.cjs +3 -0
- package/dist/endpoints/parseHonoQuery.d.cts +12 -0
- package/dist/endpoints/parseHonoQuery.d.mts +12 -0
- package/dist/endpoints/parseHonoQuery.mjs +3 -0
- package/dist/endpoints/parseQueryParams.cjs +3 -0
- package/dist/endpoints/parseQueryParams.d.cts +13 -0
- package/dist/endpoints/parseQueryParams.d.mts +13 -0
- package/dist/endpoints/parseQueryParams.mjs +3 -0
- package/dist/functions/AWSLambdaFunction.cjs +9 -0
- package/dist/functions/AWSLambdaFunction.d.cts +5 -0
- package/dist/functions/AWSLambdaFunction.d.mts +5 -0
- package/dist/functions/AWSLambdaFunction.mjs +9 -0
- package/dist/functions/BaseFunctionBuilder.cjs +4 -0
- package/dist/functions/BaseFunctionBuilder.d.cts +3 -0
- package/dist/functions/BaseFunctionBuilder.d.mts +3 -0
- package/dist/functions/BaseFunctionBuilder.mjs +4 -0
- package/dist/functions/Function.cjs +5 -0
- package/dist/functions/Function.d.cts +3 -0
- package/dist/functions/Function.d.mts +3 -0
- package/dist/functions/Function.mjs +4 -0
- package/dist/functions/FunctionBuilder.cjs +6 -0
- package/dist/functions/FunctionBuilder.d.cts +5 -0
- package/dist/functions/FunctionBuilder.d.mts +5 -0
- package/dist/functions/FunctionBuilder.mjs +6 -0
- package/dist/functions/FunctionExecutionWrapper.cjs +8 -0
- package/dist/functions/FunctionExecutionWrapper.d.cts +4 -0
- package/dist/functions/FunctionExecutionWrapper.d.mts +4 -0
- package/dist/functions/FunctionExecutionWrapper.mjs +8 -0
- package/dist/functions/TestFunctionAdaptor.cjs +38 -0
- package/dist/functions/TestFunctionAdaptor.cjs.map +1 -0
- package/dist/functions/TestFunctionAdaptor.d.cts +26 -0
- package/dist/functions/TestFunctionAdaptor.d.mts +26 -0
- package/dist/functions/TestFunctionAdaptor.mjs +37 -0
- package/dist/functions/TestFunctionAdaptor.mjs.map +1 -0
- package/dist/functions/index.cjs +10 -0
- package/dist/functions/index.d.cts +6 -0
- package/dist/functions/index.d.mts +6 -0
- package/dist/functions/index.mjs +7 -0
- package/dist/functions-DVDb5wEA.cjs +13 -0
- package/dist/functions-DVDb5wEA.cjs.map +1 -0
- package/dist/functions-mM-jcphA.mjs +8 -0
- package/dist/functions-mM-jcphA.mjs.map +1 -0
- package/dist/helpers-BeGM4pP_.cjs +95 -0
- package/dist/helpers-BeGM4pP_.cjs.map +1 -0
- package/dist/helpers-DbpO95aE.mjs +83 -0
- package/dist/helpers-DbpO95aE.mjs.map +1 -0
- package/dist/index-CuGR4L7O.d.mts +9 -0
- package/dist/index-Fg3N3EKD.d.cts +9 -0
- package/dist/index.cjs +4 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.mjs +3 -0
- package/dist/parseHonoQuery-DopC24vB.cjs +37 -0
- package/dist/parseHonoQuery-DopC24vB.cjs.map +1 -0
- package/dist/parseHonoQuery-znDKBhdE.mjs +31 -0
- package/dist/parseHonoQuery-znDKBhdE.mjs.map +1 -0
- package/dist/parseQueryParams-BJaRh3OB.mjs +32 -0
- package/dist/parseQueryParams-BJaRh3OB.mjs.map +1 -0
- package/dist/parseQueryParams-BzPop4I1.cjs +38 -0
- package/dist/parseQueryParams-BzPop4I1.cjs.map +1 -0
- package/dist/publisher-Bw4770Hi.mjs +41 -0
- package/dist/publisher-Bw4770Hi.mjs.map +1 -0
- package/dist/publisher-lFQleddL.cjs +53 -0
- package/dist/publisher-lFQleddL.cjs.map +1 -0
- package/dist/publisher.cjs +4 -0
- package/dist/publisher.d.cts +13 -0
- package/dist/publisher.d.mts +13 -0
- package/dist/publisher.mjs +3 -0
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +3 -0
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +4 -0
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +4 -0
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +3 -0
- package/dist/subscribers/Subscriber.cjs +4 -0
- package/dist/subscribers/Subscriber.d.cts +3 -0
- package/dist/subscribers/Subscriber.d.mts +3 -0
- package/dist/subscribers/Subscriber.mjs +4 -0
- package/dist/subscribers/SubscriberBuilder.cjs +5 -0
- package/dist/subscribers/SubscriberBuilder.d.cts +4 -0
- package/dist/subscribers/SubscriberBuilder.d.mts +4 -0
- package/dist/subscribers/SubscriberBuilder.mjs +5 -0
- package/dist/subscribers/index.cjs +12 -0
- package/dist/subscribers/index.cjs.map +1 -0
- package/dist/subscribers/index.d.cts +10 -0
- package/dist/subscribers/index.d.mts +10 -0
- package/dist/subscribers/index.mjs +10 -0
- package/dist/subscribers/index.mjs.map +1 -0
- package/dist/types-Bp9ysFXd.d.cts +7 -0
- package/dist/types-DBKNYvsW.d.mts +7 -0
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +2 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.mjs +0 -0
- package/package.json +91 -0
- package/src/Construct.ts +98 -0
- package/src/__tests__/Construct.environment.spec.ts +360 -0
- package/src/__tests__/publisher.setting.spec.ts +511 -0
- package/src/__tests__/publisher.spec.ts +454 -0
- package/src/adaptors/aws.ts +4 -0
- package/src/adaptors/hono.ts +1 -0
- package/src/crons/Cron.ts +137 -0
- package/src/crons/CronBuilder.ts +192 -0
- package/src/crons/__tests__/Cron.spec.ts +464 -0
- package/src/crons/index.ts +11 -0
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +315 -0
- package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +101 -0
- package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +95 -0
- package/src/endpoints/Endpoint.ts +771 -0
- package/src/endpoints/EndpointBuilder.ts +308 -0
- package/src/endpoints/EndpointFactory.ts +329 -0
- package/src/endpoints/HonoEndpointAdaptor.ts +365 -0
- package/src/endpoints/TestEndpointAdaptor.ts +130 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +553 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +927 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +721 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +296 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +441 -0
- package/src/endpoints/__tests__/Endpoint.spec.ts +800 -0
- package/src/endpoints/__tests__/EndpointBuilder.spec.ts +488 -0
- package/src/endpoints/__tests__/EndpointFactory.spec.ts +479 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +569 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +313 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1078 -0
- package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +236 -0
- package/src/endpoints/__tests__/__snapshots__/HonoEndpointAdaptor.spec.ts.snap +54 -0
- package/src/endpoints/__tests__/endpoint-types.test.ts +88 -0
- package/src/endpoints/helpers.ts +99 -0
- package/src/endpoints/index.ts +5 -0
- package/src/endpoints/parseHonoQuery.ts +51 -0
- package/src/endpoints/parseQueryParams.ts +51 -0
- package/src/functions/AWSLambdaFunction.ts +222 -0
- package/src/functions/BaseFunctionBuilder.ts +110 -0
- package/src/functions/Function.ts +160 -0
- package/src/functions/FunctionBuilder.ts +182 -0
- package/src/functions/FunctionExecutionWrapper.ts +86 -0
- package/src/functions/TestFunctionAdaptor.ts +125 -0
- package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +376 -0
- package/src/functions/__tests__/Function.spec.ts +402 -0
- package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +398 -0
- package/src/functions/index.ts +10 -0
- package/src/index.ts +14 -0
- package/src/publisher.ts +83 -0
- package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +269 -0
- package/src/subscribers/Subscriber.ts +112 -0
- package/src/subscribers/SubscriberBuilder.ts +150 -0
- package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +623 -0
- package/src/subscribers/__tests__/Subscriber.spec.ts +432 -0
- package/src/subscribers/index.ts +5 -0
- package/src/types.ts +13 -0
- package/tsdown.config.ts +3 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import type { Logger } from '@geekmidas/logger';
|
|
2
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
|
+
import type { HttpMethod } from '../types';
|
|
4
|
+
import { Endpoint, type EndpointSchemas } from './Endpoint';
|
|
5
|
+
|
|
6
|
+
import type { EnvironmentParser } from '@geekmidas/envkit';
|
|
7
|
+
import middy, { type MiddlewareObj } from '@middy/core';
|
|
8
|
+
import type {
|
|
9
|
+
APIGatewayProxyEvent,
|
|
10
|
+
APIGatewayProxyEventV2,
|
|
11
|
+
Context,
|
|
12
|
+
} from 'aws-lambda';
|
|
13
|
+
import set from 'lodash.set';
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
UnauthorizedError,
|
|
17
|
+
UnprocessableEntityError,
|
|
18
|
+
wrapError,
|
|
19
|
+
} from '@geekmidas/errors';
|
|
20
|
+
import type { EventPublisher } from '@geekmidas/events';
|
|
21
|
+
import {
|
|
22
|
+
type Service,
|
|
23
|
+
ServiceDiscovery,
|
|
24
|
+
type ServiceRecord,
|
|
25
|
+
} from '@geekmidas/services';
|
|
26
|
+
|
|
27
|
+
import type {
|
|
28
|
+
InferComposableStandardSchema,
|
|
29
|
+
InferStandardSchema,
|
|
30
|
+
} from '@geekmidas/schema';
|
|
31
|
+
import { publishConstructEvents } from '../publisher';
|
|
32
|
+
|
|
33
|
+
// Helper function to publish events
|
|
34
|
+
|
|
35
|
+
export abstract class AmazonApiGatewayEndpoint<
|
|
36
|
+
THandler extends
|
|
37
|
+
| AmazonApiGatewayV1EndpointHandler
|
|
38
|
+
| AmazonApiGatewayV2EndpointHandler,
|
|
39
|
+
TEvent extends HandlerEvent<THandler>,
|
|
40
|
+
TRoute extends string,
|
|
41
|
+
TMethod extends HttpMethod,
|
|
42
|
+
TInput extends EndpointSchemas = {},
|
|
43
|
+
TOutSchema extends StandardSchemaV1 | undefined = undefined,
|
|
44
|
+
TServices extends Service[] = [],
|
|
45
|
+
TLogger extends Logger = Logger,
|
|
46
|
+
TSession = unknown,
|
|
47
|
+
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
48
|
+
TEventPublisherServiceName extends string = string,
|
|
49
|
+
> {
|
|
50
|
+
constructor(
|
|
51
|
+
protected envParser: EnvironmentParser<{}>,
|
|
52
|
+
protected readonly endpoint: Endpoint<
|
|
53
|
+
TRoute,
|
|
54
|
+
TMethod,
|
|
55
|
+
TInput,
|
|
56
|
+
TOutSchema,
|
|
57
|
+
TServices,
|
|
58
|
+
TLogger,
|
|
59
|
+
TSession,
|
|
60
|
+
TEventPublisher,
|
|
61
|
+
TEventPublisherServiceName
|
|
62
|
+
>,
|
|
63
|
+
) {}
|
|
64
|
+
|
|
65
|
+
private error(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
66
|
+
return {
|
|
67
|
+
onError: (req) => {
|
|
68
|
+
(req.event.logger || this.endpoint.logger).error(
|
|
69
|
+
req.error || {},
|
|
70
|
+
'Error processing request',
|
|
71
|
+
);
|
|
72
|
+
const wrappedError = wrapError(req.error);
|
|
73
|
+
|
|
74
|
+
// Set the response with the proper status code from the HttpError
|
|
75
|
+
req.response = {
|
|
76
|
+
statusCode: wrappedError.statusCode,
|
|
77
|
+
body: wrappedError.body,
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
abstract getInput(e: TEvent): GetInputResponse;
|
|
83
|
+
|
|
84
|
+
private input(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
85
|
+
return {
|
|
86
|
+
before: async (req) => {
|
|
87
|
+
try {
|
|
88
|
+
const { body, query, params } = this.getInput(req.event);
|
|
89
|
+
const headers = req.event.headers as Record<string, string>;
|
|
90
|
+
const header = Endpoint.createHeaders(headers);
|
|
91
|
+
|
|
92
|
+
set(req.event, 'body', await this.endpoint.parseInput(body, 'body'));
|
|
93
|
+
|
|
94
|
+
set(
|
|
95
|
+
req.event,
|
|
96
|
+
'query',
|
|
97
|
+
await this.endpoint.parseInput(query, 'query'),
|
|
98
|
+
);
|
|
99
|
+
set(
|
|
100
|
+
req.event,
|
|
101
|
+
'params',
|
|
102
|
+
await this.endpoint.parseInput(params, 'params'),
|
|
103
|
+
);
|
|
104
|
+
set(req.event, 'header', header);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
// Convert validation errors to 422 Unprocessable Entity
|
|
107
|
+
if (error && typeof error === 'object' && Array.isArray(error)) {
|
|
108
|
+
throw new UnprocessableEntityError('Validation failed', error);
|
|
109
|
+
}
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
abstract getLoggerContext(data: TEvent, context: Context): LoggerContext;
|
|
117
|
+
|
|
118
|
+
private logger(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
119
|
+
return {
|
|
120
|
+
before: (req) => {
|
|
121
|
+
req.event.logger = this.endpoint.logger.child({
|
|
122
|
+
route: this.endpoint.route,
|
|
123
|
+
host: req.event.headers?.host,
|
|
124
|
+
method: this.endpoint.method,
|
|
125
|
+
...this.getLoggerContext(req.event, req.context),
|
|
126
|
+
}) as TLogger;
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
private services(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
131
|
+
return {
|
|
132
|
+
before: async (req) => {
|
|
133
|
+
const logger = req.event.logger as TLogger;
|
|
134
|
+
const serviceDiscovery = ServiceDiscovery.getInstance<
|
|
135
|
+
ServiceRecord<TServices>,
|
|
136
|
+
TLogger
|
|
137
|
+
>(logger, this.envParser);
|
|
138
|
+
|
|
139
|
+
const services = await serviceDiscovery.register(
|
|
140
|
+
this.endpoint.services,
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
req.event.services = services;
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
private authorize(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
149
|
+
return {
|
|
150
|
+
before: async (req) => {
|
|
151
|
+
const logger = req.event.logger as TLogger;
|
|
152
|
+
const services = req.event.services;
|
|
153
|
+
const header = req.event.header;
|
|
154
|
+
const session = req.event.session as TSession;
|
|
155
|
+
|
|
156
|
+
const isAuthorized = await this.endpoint.authorize({
|
|
157
|
+
header,
|
|
158
|
+
services,
|
|
159
|
+
logger,
|
|
160
|
+
session,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
if (!isAuthorized) {
|
|
164
|
+
logger.warn('Unauthorized access attempt');
|
|
165
|
+
throw new UnauthorizedError(
|
|
166
|
+
'Unauthorized access to the endpoint',
|
|
167
|
+
'You do not have permission to access this resource.',
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
private session(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
175
|
+
return {
|
|
176
|
+
before: async (req) => {
|
|
177
|
+
const logger = req.event.logger as TLogger;
|
|
178
|
+
const services = req.event.services;
|
|
179
|
+
req.event.session = (await this.endpoint.getSession({
|
|
180
|
+
logger,
|
|
181
|
+
services,
|
|
182
|
+
header: req.event.header,
|
|
183
|
+
})) as TSession;
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private events(): Middleware<TEvent, TInput, TServices, TLogger> {
|
|
189
|
+
return {
|
|
190
|
+
after: async (req) => {
|
|
191
|
+
const event = req.event;
|
|
192
|
+
const response = (event as any)
|
|
193
|
+
.__response as InferStandardSchema<TOutSchema>;
|
|
194
|
+
const statusCode = req.response?.statusCode ?? this.endpoint.status;
|
|
195
|
+
|
|
196
|
+
// Only publish events on successful responses (2xx status codes)
|
|
197
|
+
if (Endpoint.isSuccessStatus(statusCode)) {
|
|
198
|
+
const logger = event.logger as TLogger;
|
|
199
|
+
const serviceDiscovery = ServiceDiscovery.getInstance<
|
|
200
|
+
ServiceRecord<TServices>,
|
|
201
|
+
TLogger
|
|
202
|
+
>(logger, this.envParser);
|
|
203
|
+
await publishConstructEvents(
|
|
204
|
+
this.endpoint,
|
|
205
|
+
response,
|
|
206
|
+
serviceDiscovery,
|
|
207
|
+
logger,
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
private async _handler(
|
|
215
|
+
event: Event<TEvent, TInput, TServices, TLogger, TSession>,
|
|
216
|
+
) {
|
|
217
|
+
const input = this.endpoint.refineInput(event);
|
|
218
|
+
|
|
219
|
+
const response = await this.endpoint.handler({
|
|
220
|
+
header: event.header,
|
|
221
|
+
logger: event.logger,
|
|
222
|
+
services: event.services,
|
|
223
|
+
session: event.session,
|
|
224
|
+
...input,
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
const output = await this.endpoint.parseOutput(response);
|
|
228
|
+
|
|
229
|
+
const body = output ? JSON.stringify(output) : undefined;
|
|
230
|
+
|
|
231
|
+
// Store response for middleware access
|
|
232
|
+
(event as any).__response = response;
|
|
233
|
+
|
|
234
|
+
return {
|
|
235
|
+
statusCode: this.endpoint.status,
|
|
236
|
+
body,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
get handler() {
|
|
241
|
+
const handler = this._handler.bind(this);
|
|
242
|
+
return middy(handler)
|
|
243
|
+
.use(this.logger())
|
|
244
|
+
.use(this.error())
|
|
245
|
+
.use(this.services())
|
|
246
|
+
.use(this.input())
|
|
247
|
+
.use(this.session())
|
|
248
|
+
.use(this.authorize())
|
|
249
|
+
.use(this.events()) as unknown as THandler;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export type Event<
|
|
254
|
+
TEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,
|
|
255
|
+
TInput extends EndpointSchemas = {},
|
|
256
|
+
TServices extends Service[] = [],
|
|
257
|
+
TLogger extends Logger = Logger,
|
|
258
|
+
TSession = unknown,
|
|
259
|
+
> = {
|
|
260
|
+
services: ServiceRecord<TServices>;
|
|
261
|
+
logger: TLogger;
|
|
262
|
+
header(key: string): string | undefined;
|
|
263
|
+
session: TSession;
|
|
264
|
+
} & TEvent &
|
|
265
|
+
InferComposableStandardSchema<TInput>;
|
|
266
|
+
|
|
267
|
+
type Middleware<
|
|
268
|
+
TEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,
|
|
269
|
+
TInput extends EndpointSchemas = {},
|
|
270
|
+
TServices extends Service[] = [],
|
|
271
|
+
TLogger extends Logger = Logger,
|
|
272
|
+
TSession = unknown,
|
|
273
|
+
> = MiddlewareObj<Event<TEvent, TInput, TServices, TLogger, TSession>>;
|
|
274
|
+
|
|
275
|
+
export type AmazonApiGatewayEndpointHandlerResponse = {
|
|
276
|
+
statusCode: number;
|
|
277
|
+
body: string | undefined;
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
export type LoggerContext = {
|
|
281
|
+
fn: {
|
|
282
|
+
name: string;
|
|
283
|
+
version: string;
|
|
284
|
+
};
|
|
285
|
+
req: {
|
|
286
|
+
id: string | undefined;
|
|
287
|
+
awsRequestId: string;
|
|
288
|
+
path: string;
|
|
289
|
+
ip: string | undefined;
|
|
290
|
+
userAgent: string | undefined;
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
export type GetInputResponse = {
|
|
295
|
+
body: any;
|
|
296
|
+
query: any;
|
|
297
|
+
params: any;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
export type AmazonApiGatewayV1EndpointHandler = (
|
|
301
|
+
event: APIGatewayProxyEvent,
|
|
302
|
+
context: Context,
|
|
303
|
+
) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
|
|
304
|
+
|
|
305
|
+
export type AmazonApiGatewayV2EndpointHandler = (
|
|
306
|
+
event: APIGatewayProxyEventV2,
|
|
307
|
+
context: Context,
|
|
308
|
+
) => Promise<AmazonApiGatewayEndpointHandlerResponse>;
|
|
309
|
+
|
|
310
|
+
export type HandlerEvent<T extends Function> = T extends (
|
|
311
|
+
event: infer E,
|
|
312
|
+
context: Context,
|
|
313
|
+
) => any
|
|
314
|
+
? E
|
|
315
|
+
: never;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { Logger } from '@geekmidas/logger';
|
|
2
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
|
+
import type { HttpMethod } from '../types';
|
|
4
|
+
import type { Endpoint, EndpointSchemas } from './Endpoint';
|
|
5
|
+
|
|
6
|
+
import type { EnvironmentParser } from '@geekmidas/envkit';
|
|
7
|
+
import type { APIGatewayProxyEvent, Context } from 'aws-lambda';
|
|
8
|
+
|
|
9
|
+
import type { EventPublisher } from '@geekmidas/events';
|
|
10
|
+
import type { Service } from '@geekmidas/services';
|
|
11
|
+
import {
|
|
12
|
+
AmazonApiGatewayEndpoint,
|
|
13
|
+
type AmazonApiGatewayV1EndpointHandler,
|
|
14
|
+
type GetInputResponse,
|
|
15
|
+
type LoggerContext,
|
|
16
|
+
} from './AmazonApiGatewayEndpointAdaptor';
|
|
17
|
+
import { parseQueryParams } from './parseQueryParams';
|
|
18
|
+
|
|
19
|
+
export class AmazonApiGatewayV1Endpoint<
|
|
20
|
+
TRoute extends string,
|
|
21
|
+
TMethod extends HttpMethod,
|
|
22
|
+
TInput extends EndpointSchemas = {},
|
|
23
|
+
TOutSchema extends StandardSchemaV1 | undefined = undefined,
|
|
24
|
+
TServices extends Service[] = [],
|
|
25
|
+
TLogger extends Logger = Logger,
|
|
26
|
+
TSession = unknown,
|
|
27
|
+
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
28
|
+
> extends AmazonApiGatewayEndpoint<
|
|
29
|
+
AmazonApiGatewayV1EndpointHandler,
|
|
30
|
+
APIGatewayProxyEvent,
|
|
31
|
+
TRoute,
|
|
32
|
+
TMethod,
|
|
33
|
+
TInput,
|
|
34
|
+
TOutSchema,
|
|
35
|
+
TServices,
|
|
36
|
+
TLogger,
|
|
37
|
+
TSession,
|
|
38
|
+
TEventPublisher
|
|
39
|
+
> {
|
|
40
|
+
getInput(e: APIGatewayProxyEvent): GetInputResponse {
|
|
41
|
+
// For arrays, AWS API Gateway V1 provides multiValueQueryStringParameters
|
|
42
|
+
const multiValueParams = e.multiValueQueryStringParameters || {};
|
|
43
|
+
const singleValueParams = e.queryStringParameters || {};
|
|
44
|
+
|
|
45
|
+
// Merge single and multi-value parameters
|
|
46
|
+
const mergedParams: Record<string, string | string[]> = {};
|
|
47
|
+
|
|
48
|
+
// Add single value parameters
|
|
49
|
+
for (const [key, value] of Object.entries(singleValueParams)) {
|
|
50
|
+
if (value !== undefined) {
|
|
51
|
+
mergedParams[key] = value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Override with multi-value parameters where applicable
|
|
56
|
+
for (const [key, values] of Object.entries(multiValueParams)) {
|
|
57
|
+
if (values && values.length > 1) {
|
|
58
|
+
mergedParams[key] = values;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
body: e.body ? JSON.parse(e.body) : undefined,
|
|
64
|
+
query: parseQueryParams(mergedParams),
|
|
65
|
+
params: e.pathParameters || {},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
getLoggerContext(
|
|
69
|
+
data: APIGatewayProxyEvent,
|
|
70
|
+
context: Context,
|
|
71
|
+
): LoggerContext {
|
|
72
|
+
return {
|
|
73
|
+
fn: {
|
|
74
|
+
name: context.functionName,
|
|
75
|
+
version: context.functionVersion,
|
|
76
|
+
},
|
|
77
|
+
req: {
|
|
78
|
+
id: data.requestContext.requestId,
|
|
79
|
+
awsRequestId: context.awsRequestId,
|
|
80
|
+
ip: data.requestContext.identity.sourceIp,
|
|
81
|
+
userAgent: data.requestContext.identity.userAgent || undefined,
|
|
82
|
+
path: data.requestContext.path,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
constructor(
|
|
87
|
+
protected envParser: EnvironmentParser<{}>,
|
|
88
|
+
protected readonly endpoint: Endpoint<
|
|
89
|
+
TRoute,
|
|
90
|
+
TMethod,
|
|
91
|
+
TInput,
|
|
92
|
+
TOutSchema,
|
|
93
|
+
TServices,
|
|
94
|
+
TLogger,
|
|
95
|
+
TSession,
|
|
96
|
+
TEventPublisher
|
|
97
|
+
>,
|
|
98
|
+
) {
|
|
99
|
+
super(envParser, endpoint);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { Logger } from '@geekmidas/logger';
|
|
2
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
|
+
import type { HttpMethod } from '../types';
|
|
4
|
+
import type { Endpoint, EndpointSchemas } from './Endpoint';
|
|
5
|
+
|
|
6
|
+
import type { EnvironmentParser } from '@geekmidas/envkit';
|
|
7
|
+
import type { EventPublisher } from '@geekmidas/events';
|
|
8
|
+
import type { Service } from '@geekmidas/services';
|
|
9
|
+
import type { APIGatewayProxyEventV2, Context } from 'aws-lambda';
|
|
10
|
+
import {
|
|
11
|
+
AmazonApiGatewayEndpoint,
|
|
12
|
+
type AmazonApiGatewayV2EndpointHandler,
|
|
13
|
+
type GetInputResponse,
|
|
14
|
+
type LoggerContext,
|
|
15
|
+
} from './AmazonApiGatewayEndpointAdaptor';
|
|
16
|
+
import { parseQueryParams } from './parseQueryParams';
|
|
17
|
+
|
|
18
|
+
export class AmazonApiGatewayV2Endpoint<
|
|
19
|
+
TRoute extends string,
|
|
20
|
+
TMethod extends HttpMethod,
|
|
21
|
+
TInput extends EndpointSchemas = {},
|
|
22
|
+
TOutSchema extends StandardSchemaV1 | undefined = undefined,
|
|
23
|
+
TServices extends Service[] = [],
|
|
24
|
+
TLogger extends Logger = Logger,
|
|
25
|
+
TSession = unknown,
|
|
26
|
+
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
27
|
+
> extends AmazonApiGatewayEndpoint<
|
|
28
|
+
AmazonApiGatewayV2EndpointHandler,
|
|
29
|
+
APIGatewayProxyEventV2,
|
|
30
|
+
TRoute,
|
|
31
|
+
TMethod,
|
|
32
|
+
TInput,
|
|
33
|
+
TOutSchema,
|
|
34
|
+
TServices,
|
|
35
|
+
TLogger,
|
|
36
|
+
TSession,
|
|
37
|
+
TEventPublisher
|
|
38
|
+
> {
|
|
39
|
+
getInput(e: APIGatewayProxyEventV2): GetInputResponse {
|
|
40
|
+
// API Gateway V2 handles arrays as comma-separated values
|
|
41
|
+
const queryParams = e.queryStringParameters || {};
|
|
42
|
+
const processedParams: Record<string, string | string[]> = {};
|
|
43
|
+
|
|
44
|
+
for (const [key, value] of Object.entries(queryParams)) {
|
|
45
|
+
if (value !== undefined) {
|
|
46
|
+
// Check if value contains comma and could be an array
|
|
47
|
+
// Be careful not to split values that legitimately contain commas
|
|
48
|
+
if (value.includes(',') && !value.includes('"')) {
|
|
49
|
+
processedParams[key] = value.split(',').map((v) => v.trim());
|
|
50
|
+
} else {
|
|
51
|
+
processedParams[key] = value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
body: e.body ? JSON.parse(e.body) : undefined,
|
|
58
|
+
query: parseQueryParams(processedParams),
|
|
59
|
+
params: e.pathParameters || {},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
getLoggerContext(
|
|
63
|
+
event: APIGatewayProxyEventV2,
|
|
64
|
+
context: Context,
|
|
65
|
+
): LoggerContext {
|
|
66
|
+
return {
|
|
67
|
+
fn: {
|
|
68
|
+
name: context.functionName,
|
|
69
|
+
version: context.functionVersion,
|
|
70
|
+
},
|
|
71
|
+
req: {
|
|
72
|
+
id: event.requestContext.requestId,
|
|
73
|
+
awsRequestId: context.awsRequestId,
|
|
74
|
+
ip: event.requestContext.http.sourceIp,
|
|
75
|
+
userAgent: event.requestContext.http.userAgent || undefined,
|
|
76
|
+
path: event.requestContext.http.path,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
constructor(
|
|
81
|
+
protected envParser: EnvironmentParser<{}>,
|
|
82
|
+
protected readonly endpoint: Endpoint<
|
|
83
|
+
TRoute,
|
|
84
|
+
TMethod,
|
|
85
|
+
TInput,
|
|
86
|
+
TOutSchema,
|
|
87
|
+
TServices,
|
|
88
|
+
TLogger,
|
|
89
|
+
TSession,
|
|
90
|
+
TEventPublisher
|
|
91
|
+
>,
|
|
92
|
+
) {
|
|
93
|
+
super(envParser, endpoint);
|
|
94
|
+
}
|
|
95
|
+
}
|