@geekmidas/constructs 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AWSLambdaFunction-EPGY4s7i.cjs → AWSLambdaFunction-Ba1DcsW2.cjs} +6 -6
- package/dist/AWSLambdaFunction-Ba1DcsW2.cjs.map +1 -0
- package/dist/{AWSLambdaFunction-BdebRMUh.d.mts → AWSLambdaFunction-CKe73Qr0.d.cts} +6 -6
- package/dist/AWSLambdaFunction-CKe73Qr0.d.cts.map +1 -0
- package/dist/{AWSLambdaFunction-D0tEOTXQ.d.cts → AWSLambdaFunction-CuG3HNZx.d.mts} +6 -6
- package/dist/AWSLambdaFunction-CuG3HNZx.d.mts.map +1 -0
- package/dist/{AWSLambdaFunction-C54a1doJ.mjs → AWSLambdaFunction-DnMm4xvz.mjs} +6 -6
- package/dist/AWSLambdaFunction-DnMm4xvz.mjs.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts} +4 -4
- package/dist/AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-BLfO612H.mjs → AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs} +3 -3
- package/dist/AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts} +4 -4
- package/dist/AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs} +3 -3
- package/dist/AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs → AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs} +56 -14
- package/dist/AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs → AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs} +55 -13
- package/dist/AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts → AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts} +52 -6
- package/dist/AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts → AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts} +51 -5
- package/dist/AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts → AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts} +4 -4
- package/dist/AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs → AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs} +4 -4
- package/dist/AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs → AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs} +4 -4
- package/dist/AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts → AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts} +5 -5
- package/dist/AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs → AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs} +4 -4
- package/dist/AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs → AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs} +4 -4
- package/dist/AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts → AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts} +4 -6
- package/dist/AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts → AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts} +5 -7
- package/dist/AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts.map +1 -0
- package/dist/{Authorizer-C0ge_tc8.cjs → Authorizer-BXxBee2P.cjs} +1 -1
- package/dist/Authorizer-BXxBee2P.cjs.map +1 -0
- package/dist/{Authorizer-r9U3y_ms.mjs → Authorizer-BgjU8-z6.mjs} +1 -1
- package/dist/Authorizer-BgjU8-z6.mjs.map +1 -0
- package/dist/{Authorizer-gWxYsGEp.d.mts → Authorizer-DCcYOx3h.d.mts} +1 -1
- package/dist/Authorizer-DCcYOx3h.d.mts.map +1 -0
- package/dist/{Authorizer-B-btowNd.d.cts → Authorizer-DWtwC8we.d.cts} +1 -1
- package/dist/Authorizer-DWtwC8we.d.cts.map +1 -0
- package/dist/{BaseFunctionBuilder-Czi1Jwza.mjs → BaseFunctionBuilder-0qlenb9z.mjs} +2 -2
- package/dist/BaseFunctionBuilder-0qlenb9z.mjs.map +1 -0
- package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +1 -1
- package/dist/{BaseFunctionBuilder-DRY419e7.d.mts → BaseFunctionBuilder-CDfDWWAQ.d.mts} +2 -2
- package/dist/BaseFunctionBuilder-CDfDWWAQ.d.mts.map +1 -0
- package/dist/{BaseFunctionBuilder-MYG3C9ug.cjs → BaseFunctionBuilder-D7o93EGv.cjs} +2 -2
- package/dist/BaseFunctionBuilder-D7o93EGv.cjs.map +1 -0
- package/dist/{Construct-Ba5cMxib.cjs → Construct-BlnyYtJC.cjs} +31 -2
- package/dist/Construct-BlnyYtJC.cjs.map +1 -0
- package/dist/Construct-C4rPE67v.d.cts.map +1 -1
- package/dist/{Construct-DdyGHuag.mjs → Construct-D5dCvxZ3.mjs} +31 -2
- package/dist/Construct-D5dCvxZ3.mjs.map +1 -0
- package/dist/{Construct-XrijZFFh.d.mts → Construct-dZiwVo0q.d.mts} +1 -1
- package/dist/Construct-dZiwVo0q.d.mts.map +1 -0
- package/dist/Construct.cjs +1 -1
- package/dist/Construct.d.mts +1 -1
- package/dist/Construct.mjs +1 -1
- package/dist/{Cron-bDLcTvV5.d.cts → Cron-B6FnTu7k.d.cts} +2 -2
- package/dist/Cron-B6FnTu7k.d.cts.map +1 -0
- package/dist/{Cron-CGF4YAfM.cjs → Cron-BAPQetlC.cjs} +3 -3
- package/dist/Cron-BAPQetlC.cjs.map +1 -0
- package/dist/{Cron-BxhGs5up.mjs → Cron-CAk_ddH8.mjs} +3 -3
- package/dist/Cron-CAk_ddH8.mjs.map +1 -0
- package/dist/{Cron-cdjlSKNp.d.mts → Cron-D3bEljxQ.d.mts} +2 -2
- package/dist/Cron-D3bEljxQ.d.mts.map +1 -0
- package/dist/{CronBuilder-DKVXyE0Q.d.cts → CronBuilder-CA8euP0z.d.cts} +4 -4
- package/dist/CronBuilder-CA8euP0z.d.cts.map +1 -0
- package/dist/{CronBuilder-BC4m5-p1.d.mts → CronBuilder-DvdiKzhq.d.mts} +4 -4
- package/dist/CronBuilder-DvdiKzhq.d.mts.map +1 -0
- package/dist/{CronBuilder-CcxKRtVP.cjs → CronBuilder-DxXA5ymv.cjs} +4 -4
- package/dist/CronBuilder-DxXA5ymv.cjs.map +1 -0
- package/dist/{CronBuilder-d2jh-IB2.mjs → CronBuilder-e8TaHPYm.mjs} +4 -4
- package/dist/CronBuilder-e8TaHPYm.mjs.map +1 -0
- package/dist/{Endpoint-BPv9_-m_.d.cts → Endpoint-BOlbY5iq.d.cts} +3 -3
- package/dist/Endpoint-BOlbY5iq.d.cts.map +1 -0
- package/dist/{Endpoint-CuOEswxJ.mjs → Endpoint-BbdNmtlM.mjs} +6 -6
- package/dist/Endpoint-BbdNmtlM.mjs.map +1 -0
- package/dist/{Endpoint-BdwG75G_.d.mts → Endpoint-Dlv7nxgj.d.mts} +4 -4
- package/dist/Endpoint-Dlv7nxgj.d.mts.map +1 -0
- package/dist/{Endpoint-BVGZXFyV.cjs → Endpoint-DxvnlfXg.cjs} +6 -6
- package/dist/Endpoint-DxvnlfXg.cjs.map +1 -0
- package/dist/{EndpointBuilder-Cgj1P_ra.cjs → EndpointBuilder-40Iz5CjY.cjs} +6 -6
- package/dist/EndpointBuilder-40Iz5CjY.cjs.map +1 -0
- package/dist/{EndpointBuilder-DnCB1h1j.mjs → EndpointBuilder-BaVvhW9m.mjs} +6 -6
- package/dist/EndpointBuilder-BaVvhW9m.mjs.map +1 -0
- package/dist/{EndpointBuilder-DIy_m1bu.d.cts → EndpointBuilder-CFfWWjUa.d.cts} +3 -3
- package/dist/EndpointBuilder-CFfWWjUa.d.cts.map +1 -0
- package/dist/{EndpointBuilder-B3az942t.d.mts → EndpointBuilder-T_K2NLWw.d.mts} +5 -5
- package/dist/EndpointBuilder-T_K2NLWw.d.mts.map +1 -0
- package/dist/{EndpointFactory-CyPbm3AD.d.cts → EndpointFactory-ChzBVEM9.d.cts} +4 -4
- package/dist/EndpointFactory-ChzBVEM9.d.cts.map +1 -0
- package/dist/{EndpointFactory-CbdxPCIH.mjs → EndpointFactory-DfNjSgVG.mjs} +7 -7
- package/dist/EndpointFactory-DfNjSgVG.mjs.map +1 -0
- package/dist/{EndpointFactory-C-0nE6Jg.d.mts → EndpointFactory-GAL_tuPf.d.mts} +4 -4
- package/dist/EndpointFactory-GAL_tuPf.d.mts.map +1 -0
- package/dist/{EndpointFactory-CYj6BYok.cjs → EndpointFactory-r6jxPvQ8.cjs} +7 -7
- package/dist/EndpointFactory-r6jxPvQ8.cjs.map +1 -0
- package/dist/{Function-BVHqIDp9.mjs → Function-D8tBamM3.mjs} +3 -3
- package/dist/Function-D8tBamM3.mjs.map +1 -0
- package/dist/{Function-DN2G6OT5.d.mts → Function-DBmU3uGI.d.mts} +3 -3
- package/dist/Function-DBmU3uGI.d.mts.map +1 -0
- package/dist/{Function-Cf7f_kCz.d.cts → Function-PNW4HdNE.d.cts} +2 -2
- package/dist/Function-PNW4HdNE.d.cts.map +1 -0
- package/dist/{Function-DDZb1525.cjs → Function-iLKrUXuw.cjs} +3 -3
- package/dist/Function-iLKrUXuw.cjs.map +1 -0
- package/dist/{FunctionBuilder-DswJ-9sD.cjs → FunctionBuilder-BEpPgeho.cjs} +4 -4
- package/dist/FunctionBuilder-BEpPgeho.cjs.map +1 -0
- package/dist/{FunctionBuilder-Cxx8D2na.d.mts → FunctionBuilder-Bv4H2I1a.d.mts} +4 -4
- package/dist/FunctionBuilder-Bv4H2I1a.d.mts.map +1 -0
- package/dist/{FunctionBuilder-CrDYgfiI.mjs → FunctionBuilder-BwNF99AB.mjs} +4 -4
- package/dist/FunctionBuilder-BwNF99AB.mjs.map +1 -0
- package/dist/{FunctionBuilder-CJBzzXL3.d.cts → FunctionBuilder-DCqXIHaq.d.cts} +2 -2
- package/dist/FunctionBuilder-DCqXIHaq.d.cts.map +1 -0
- package/dist/{FunctionExecutionWrapper-CLDh7Z2_.mjs → FunctionExecutionWrapper-B__HE_B-.mjs} +3 -3
- package/dist/FunctionExecutionWrapper-B__HE_B-.mjs.map +1 -0
- package/dist/{FunctionExecutionWrapper-DF260Aaj.d.mts → FunctionExecutionWrapper-BclgIztn.d.cts} +5 -5
- package/dist/FunctionExecutionWrapper-BclgIztn.d.cts.map +1 -0
- package/dist/{FunctionExecutionWrapper-BYI2bGTL.cjs → FunctionExecutionWrapper-BjF6t9Hb.cjs} +3 -3
- package/dist/FunctionExecutionWrapper-BjF6t9Hb.cjs.map +1 -0
- package/dist/{FunctionExecutionWrapper-Qy8bmgFR.d.cts → FunctionExecutionWrapper-Dq21c6vt.d.mts} +5 -5
- package/dist/FunctionExecutionWrapper-Dq21c6vt.d.mts.map +1 -0
- package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs +251 -0
- package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs.map +1 -0
- package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs +257 -0
- package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-YcRHYALH.d.cts → HonoEndpointAdaptor-Dkkemmbo.d.cts} +10 -5
- package/dist/HonoEndpointAdaptor-Dkkemmbo.d.cts.map +1 -0
- package/dist/{HonoEndpointAdaptor-BaPlUhz0.d.mts → HonoEndpointAdaptor-HukjdF6M.d.mts} +11 -6
- package/dist/HonoEndpointAdaptor-HukjdF6M.d.mts.map +1 -0
- package/dist/{Subscriber-COYMSevD.d.cts → Subscriber--zUjZDR6.d.cts} +1 -1
- package/dist/Subscriber--zUjZDR6.d.cts.map +1 -0
- package/dist/{Subscriber-ikctpU3I.d.mts → Subscriber-0Ac7cXID.d.mts} +2 -2
- package/dist/Subscriber-0Ac7cXID.d.mts.map +1 -0
- package/dist/{Subscriber-BmPf9GFb.mjs → Subscriber-BgZ8T-O2.mjs} +2 -2
- package/dist/Subscriber-BgZ8T-O2.mjs.map +1 -0
- package/dist/{Subscriber-BiHjVXtM.cjs → Subscriber-CoFmHMIM.cjs} +2 -2
- package/dist/Subscriber-CoFmHMIM.cjs.map +1 -0
- package/dist/{SubscriberBuilder-D_9zzllj.d.mts → SubscriberBuilder-D8cmUHee.d.mts} +2 -2
- package/dist/SubscriberBuilder-D8cmUHee.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-DJPEeYDJ.mjs → SubscriberBuilder-DWXWZBPo.mjs} +2 -2
- package/dist/SubscriberBuilder-DWXWZBPo.mjs.map +1 -0
- package/dist/{SubscriberBuilder-ivHAGIVi.d.cts → SubscriberBuilder-DciTqb-7.d.cts} +2 -2
- package/dist/SubscriberBuilder-DciTqb-7.d.cts.map +1 -0
- package/dist/{SubscriberBuilder-Cp1C-xtT.cjs → SubscriberBuilder-JlxhyqGp.cjs} +2 -2
- package/dist/SubscriberBuilder-JlxhyqGp.cjs.map +1 -0
- package/dist/{TestEndpointAdaptor-DB7bREhS.d.mts → TestEndpointAdaptor-Boijwbmz.d.mts} +4 -4
- package/dist/TestEndpointAdaptor-Boijwbmz.d.mts.map +1 -0
- package/dist/{TestEndpointAdaptor-C10xBI--.d.cts → TestEndpointAdaptor-DdwpRyNh.d.cts} +3 -3
- package/dist/TestEndpointAdaptor-DdwpRyNh.d.cts.map +1 -0
- package/dist/TestEndpointAdaptor-Dk75ExxE.cjs +176 -0
- package/dist/TestEndpointAdaptor-Dk75ExxE.cjs.map +1 -0
- package/dist/TestEndpointAdaptor-OiA2JLDp.mjs +170 -0
- package/dist/TestEndpointAdaptor-OiA2JLDp.mjs.map +1 -0
- package/dist/adaptors/aws.cjs +12 -12
- package/dist/adaptors/aws.d.cts +13 -12
- package/dist/adaptors/aws.d.mts +16 -15
- package/dist/adaptors/aws.mjs +12 -12
- package/dist/adaptors/hono.cjs +10 -9
- package/dist/adaptors/hono.d.cts +6 -6
- package/dist/adaptors/hono.d.mts +9 -9
- package/dist/adaptors/hono.mjs +10 -9
- package/dist/adaptors/testing.cjs +8 -7
- package/dist/adaptors/testing.d.cts +6 -6
- package/dist/adaptors/testing.d.mts +9 -9
- package/dist/adaptors/testing.mjs +8 -7
- package/dist/crons/Cron.cjs +6 -6
- package/dist/crons/Cron.d.cts +4 -4
- package/dist/crons/Cron.d.mts +6 -6
- package/dist/crons/Cron.mjs +6 -6
- package/dist/crons/CronBuilder.cjs +7 -7
- package/dist/crons/CronBuilder.d.cts +5 -5
- package/dist/crons/CronBuilder.d.mts +7 -7
- package/dist/crons/CronBuilder.mjs +7 -7
- package/dist/crons/index.cjs +7 -7
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +9 -9
- package/dist/crons/index.d.mts +7 -7
- package/dist/crons/index.mjs +7 -7
- package/dist/crons/index.mjs.map +1 -1
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +11 -10
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +11 -10
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +12 -11
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/Authorizer.cjs +1 -1
- package/dist/endpoints/Authorizer.d.cts +1 -1
- package/dist/endpoints/Authorizer.d.mts +1 -1
- package/dist/endpoints/Authorizer.mjs +1 -1
- package/dist/endpoints/Endpoint.cjs +6 -6
- package/dist/endpoints/Endpoint.d.cts +5 -5
- package/dist/endpoints/Endpoint.d.mts +8 -8
- package/dist/endpoints/Endpoint.mjs +6 -6
- package/dist/endpoints/EndpointBuilder.cjs +9 -9
- package/dist/endpoints/EndpointBuilder.d.cts +6 -6
- package/dist/endpoints/EndpointBuilder.d.mts +9 -9
- package/dist/endpoints/EndpointBuilder.mjs +9 -9
- package/dist/endpoints/EndpointFactory.cjs +10 -10
- package/dist/endpoints/EndpointFactory.d.cts +7 -7
- package/dist/endpoints/EndpointFactory.d.mts +10 -10
- package/dist/endpoints/EndpointFactory.mjs +10 -10
- package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +6 -6
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
- package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
- package/dist/endpoints/TestEndpointAdaptor.d.cts +6 -6
- package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
- package/dist/endpoints/audit.d.cts +5 -5
- package/dist/endpoints/audit.d.mts +8 -8
- package/dist/endpoints/helpers.cjs +7 -7
- package/dist/endpoints/helpers.d.cts +5 -5
- package/dist/endpoints/helpers.d.cts.map +1 -1
- package/dist/endpoints/helpers.d.mts +8 -8
- package/dist/endpoints/helpers.d.mts.map +1 -1
- package/dist/endpoints/helpers.mjs +7 -7
- package/dist/endpoints/index.cjs +20 -10
- package/dist/endpoints/index.cjs.map +1 -1
- package/dist/endpoints/index.d.cts +12 -10
- package/dist/endpoints/index.d.cts.map +1 -1
- package/dist/endpoints/index.d.mts +15 -13
- package/dist/endpoints/index.d.mts.map +1 -1
- package/dist/endpoints/index.mjs +13 -11
- package/dist/endpoints/index.mjs.map +1 -1
- package/dist/endpoints/lazyAccessors.cjs +10 -0
- package/dist/endpoints/lazyAccessors.d.cts +10 -0
- package/dist/endpoints/lazyAccessors.d.mts +10 -0
- package/dist/endpoints/lazyAccessors.mjs +3 -0
- package/dist/endpoints/parseHonoQuery.cjs +1 -1
- package/dist/endpoints/parseHonoQuery.mjs +1 -1
- package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
- package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
- package/dist/endpoints/processAudits.d.cts +5 -5
- package/dist/endpoints/processAudits.d.cts.map +1 -1
- package/dist/endpoints/processAudits.d.mts +8 -8
- package/dist/endpoints/processAudits.d.mts.map +1 -1
- package/dist/endpoints/rls.cjs +1 -1
- package/dist/endpoints/rls.d.cts +5 -5
- package/dist/endpoints/rls.d.mts +8 -8
- package/dist/endpoints/rls.mjs +1 -1
- package/dist/functions/AWSLambdaFunction.cjs +6 -6
- package/dist/functions/AWSLambdaFunction.d.cts +3 -3
- package/dist/functions/AWSLambdaFunction.d.mts +4 -4
- package/dist/functions/AWSLambdaFunction.mjs +6 -6
- package/dist/functions/BaseFunctionBuilder.cjs +2 -2
- package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
- package/dist/functions/BaseFunctionBuilder.mjs +2 -2
- package/dist/functions/Function.cjs +2 -2
- package/dist/functions/Function.d.cts +1 -1
- package/dist/functions/Function.d.mts +2 -2
- package/dist/functions/Function.mjs +2 -2
- package/dist/functions/FunctionBuilder.cjs +4 -4
- package/dist/functions/FunctionBuilder.d.cts +2 -2
- package/dist/functions/FunctionBuilder.d.mts +4 -4
- package/dist/functions/FunctionBuilder.mjs +4 -4
- package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
- package/dist/functions/FunctionExecutionWrapper.d.cts +2 -2
- package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
- package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
- package/dist/functions/TestFunctionAdaptor.cjs +7 -7
- package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
- package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
- package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
- package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
- package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
- package/dist/functions/TestFunctionAdaptor.mjs +7 -7
- package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
- package/dist/functions/index.cjs +5 -5
- package/dist/functions/index.d.cts +3 -3
- package/dist/functions/index.d.mts +5 -5
- package/dist/functions/index.mjs +5 -5
- package/dist/{functions-fTid0RMK.cjs → functions-BkKXVeHm.cjs} +2 -2
- package/dist/functions-BkKXVeHm.cjs.map +1 -0
- package/dist/functions-C3A1vMRW.mjs +8 -0
- package/dist/functions-C3A1vMRW.mjs.map +1 -0
- package/dist/{helpers-BcP1tXAi.cjs → helpers-BelEzV4U.cjs} +2 -2
- package/dist/helpers-BelEzV4U.cjs.map +1 -0
- package/dist/{helpers-ByRTDO_m.mjs → helpers-DgsMFMUV.mjs} +2 -2
- package/dist/helpers-DgsMFMUV.mjs.map +1 -0
- package/dist/{index-BWzGIj06.d.mts → index-CgAQHr3f.d.mts} +2 -2
- package/dist/index-CgAQHr3f.d.mts.map +1 -0
- package/dist/index-D0fp_IK1.d.cts +12 -0
- package/dist/index-D0fp_IK1.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.mjs +1 -1
- package/dist/lazyAccessors-B-Jgkg2o.mjs +175 -0
- package/dist/lazyAccessors-B-Jgkg2o.mjs.map +1 -0
- package/dist/lazyAccessors-B2ILzU-j.d.mts +49 -0
- package/dist/lazyAccessors-B2ILzU-j.d.mts.map +1 -0
- package/dist/lazyAccessors-B8Hhras9.cjs +223 -0
- package/dist/lazyAccessors-B8Hhras9.cjs.map +1 -0
- package/dist/lazyAccessors-Bcpi06ed.d.cts +49 -0
- package/dist/lazyAccessors-Bcpi06ed.d.cts.map +1 -0
- package/dist/{parseHonoQuery-CZC5_97v.cjs → parseHonoQuery-D4MhxTRc.cjs} +1 -1
- package/dist/parseHonoQuery-D4MhxTRc.cjs.map +1 -0
- package/dist/{parseHonoQuery-DDgIkTO4.mjs → parseHonoQuery-DpK3sGPc.mjs} +1 -1
- package/dist/parseHonoQuery-DpK3sGPc.mjs.map +1 -0
- package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -1
- package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -1
- package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
- package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
- package/dist/publisher-Bw4770Hi.mjs.map +1 -1
- package/dist/publisher-C4BhHB5I.d.cts +16 -0
- package/dist/publisher-C4BhHB5I.d.cts.map +1 -0
- package/dist/publisher-NE-GnXL8.d.mts +16 -0
- package/dist/publisher-NE-GnXL8.d.mts.map +1 -0
- package/dist/publisher-lFQleddL.cjs.map +1 -1
- package/dist/publisher.d.cts +3 -16
- package/dist/publisher.d.mts +3 -16
- package/dist/{rls-CmJ7bRsz.cjs → rls-BrywnrQb.cjs} +1 -1
- package/dist/{rls-CmJ7bRsz.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
- package/dist/{rls-Bf3FRwto.mjs → rls-C0cWOnk4.mjs} +1 -1
- package/dist/{rls-Bf3FRwto.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +2 -2
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
- package/dist/subscribers/Subscriber.cjs +2 -2
- package/dist/subscribers/Subscriber.d.cts +1 -1
- package/dist/subscribers/Subscriber.d.mts +2 -2
- package/dist/subscribers/Subscriber.mjs +2 -2
- package/dist/subscribers/SubscriberBuilder.cjs +3 -3
- package/dist/subscribers/SubscriberBuilder.d.cts +2 -2
- package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
- package/dist/subscribers/SubscriberBuilder.mjs +3 -3
- package/dist/subscribers/index.cjs +3 -3
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +4 -4
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +3 -3
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +3 -3
- package/dist/subscribers/index.mjs.map +1 -1
- package/dist/telemetry-BTaiRqPo.d.cts +95 -0
- package/dist/telemetry-BTaiRqPo.d.cts.map +1 -0
- package/dist/telemetry-yAHf5yDs.d.mts +95 -0
- package/dist/telemetry-yAHf5yDs.d.mts.map +1 -0
- package/dist/telemetry.cjs +0 -0
- package/dist/telemetry.d.cts +2 -0
- package/dist/telemetry.d.mts +2 -0
- package/dist/telemetry.mjs +0 -0
- package/dist/types-B5H3piDg.d.cts.map +1 -1
- package/dist/{types-DdIlpxAd.d.mts → types-Dw-iLd3Y.d.mts} +1 -1
- package/dist/types-Dw-iLd3Y.d.mts.map +1 -0
- package/dist/types.d.mts +1 -1
- package/package.json +18 -18
- package/src/Construct.ts +117 -86
- package/src/__benchmarks__/build-time-optimization.bench.ts +274 -0
- package/src/__benchmarks__/endpoint.bench.ts +375 -375
- package/src/__benchmarks__/fixtures.ts +241 -0
- package/src/__benchmarks__/hono-adaptor.bench.ts +533 -0
- package/src/__benchmarks__/hono-server.bench.ts +206 -206
- package/src/__benchmarks__/response-builder.bench.ts +428 -0
- package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +319 -0
- package/src/__benchmarks__/strategies/strategy-c-middleware.ts +530 -0
- package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +567 -0
- package/src/__tests__/Construct.environment.spec.ts +349 -350
- package/src/__tests__/publisher.setting.spec.ts +496 -499
- package/src/__tests__/publisher.spec.ts +440 -442
- package/src/crons/Cron.ts +117 -117
- package/src/crons/CronBuilder.ts +237 -238
- package/src/crons/__tests__/Cron.spec.ts +448 -448
- package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +214 -214
- package/src/crons/index.ts +4 -4
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +571 -463
- package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +86 -86
- package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +85 -81
- package/src/endpoints/Authorizer.ts +100 -100
- package/src/endpoints/Endpoint.ts +921 -937
- package/src/endpoints/EndpointBuilder.ts +703 -703
- package/src/endpoints/EndpointFactory.ts +1054 -1056
- package/src/endpoints/HonoEndpointAdaptor.ts +621 -548
- package/src/endpoints/TestEndpointAdaptor.ts +372 -353
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +499 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +541 -542
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +1172 -1174
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +599 -599
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +710 -710
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +280 -280
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +924 -730
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +307 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +408 -408
- package/src/endpoints/__tests__/Authorizer.spec.ts +286 -0
- package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +162 -162
- package/src/endpoints/__tests__/Endpoint.headers.spec.ts +182 -182
- package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +158 -159
- package/src/endpoints/__tests__/Endpoint.spec.ts +819 -822
- package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +427 -427
- package/src/endpoints/__tests__/EndpointBuilder.spec.ts +478 -478
- package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +426 -426
- package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +501 -501
- package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +177 -177
- package/src/endpoints/__tests__/EndpointFactory.spec.ts +471 -471
- package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +143 -143
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +663 -663
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +608 -608
- package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +561 -561
- package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1036 -1036
- package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +278 -278
- package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1093 -1093
- package/src/endpoints/__tests__/ResponseBuilder.spec.ts +230 -230
- package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +569 -569
- package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +841 -841
- package/src/endpoints/__tests__/endpoint-types.test.ts +68 -68
- package/src/endpoints/__tests__/helpers.spec.ts +37 -0
- package/src/endpoints/__tests__/lazyAccessors.spec.ts +330 -0
- package/src/endpoints/__tests__/processAudits.spec.ts +631 -0
- package/src/endpoints/audit.ts +51 -51
- package/src/endpoints/helpers.ts +34 -35
- package/src/endpoints/index.ts +33 -23
- package/src/endpoints/lazyAccessors.ts +241 -0
- package/src/endpoints/parseHonoQuery.ts +41 -41
- package/src/endpoints/parseQueryParams.ts +36 -36
- package/src/endpoints/processAudits.ts +269 -269
- package/src/endpoints/rls.ts +16 -16
- package/src/functions/AWSLambdaFunction.ts +294 -295
- package/src/functions/BaseFunctionBuilder.ts +185 -185
- package/src/functions/Function.ts +190 -190
- package/src/functions/FunctionBuilder.ts +353 -353
- package/src/functions/FunctionExecutionWrapper.ts +199 -200
- package/src/functions/TestFunctionAdaptor.ts +191 -191
- package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +424 -424
- package/src/functions/__tests__/Function.audits.spec.ts +364 -364
- package/src/functions/__tests__/Function.spec.ts +453 -454
- package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +179 -179
- package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +369 -369
- package/src/functions/index.ts +6 -4
- package/src/index.ts +13 -9
- package/src/publisher.ts +71 -72
- package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +244 -248
- package/src/subscribers/Subscriber.ts +82 -84
- package/src/subscribers/SubscriberBuilder.ts +129 -129
- package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +589 -589
- package/src/subscribers/__tests__/Subscriber.spec.ts +402 -404
- package/src/subscribers/index.ts +1 -0
- package/src/telemetry.ts +103 -0
- package/src/types.ts +7 -7
- package/test.ts +58 -59
- package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +0 -1
- package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +0 -1
- package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +0 -1
- package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +0 -1
- package/dist/Authorizer-B-btowNd.d.cts.map +0 -1
- package/dist/Authorizer-C0ge_tc8.cjs.map +0 -1
- package/dist/Authorizer-gWxYsGEp.d.mts.map +0 -1
- package/dist/Authorizer-r9U3y_ms.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-Czi1Jwza.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +0 -1
- package/dist/BaseFunctionBuilder-MYG3C9ug.cjs.map +0 -1
- package/dist/Construct-Ba5cMxib.cjs.map +0 -1
- package/dist/Construct-DdyGHuag.mjs.map +0 -1
- package/dist/Construct-XrijZFFh.d.mts.map +0 -1
- package/dist/Cron-BxhGs5up.mjs.map +0 -1
- package/dist/Cron-CGF4YAfM.cjs.map +0 -1
- package/dist/Cron-bDLcTvV5.d.cts.map +0 -1
- package/dist/Cron-cdjlSKNp.d.mts.map +0 -1
- package/dist/CronBuilder-BC4m5-p1.d.mts.map +0 -1
- package/dist/CronBuilder-CcxKRtVP.cjs.map +0 -1
- package/dist/CronBuilder-DKVXyE0Q.d.cts.map +0 -1
- package/dist/CronBuilder-d2jh-IB2.mjs.map +0 -1
- package/dist/Endpoint-BPv9_-m_.d.cts.map +0 -1
- package/dist/Endpoint-BVGZXFyV.cjs.map +0 -1
- package/dist/Endpoint-BdwG75G_.d.mts.map +0 -1
- package/dist/Endpoint-CuOEswxJ.mjs.map +0 -1
- package/dist/EndpointBuilder-B3az942t.d.mts.map +0 -1
- package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +0 -1
- package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +0 -1
- package/dist/EndpointBuilder-DnCB1h1j.mjs.map +0 -1
- package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +0 -1
- package/dist/EndpointFactory-CYj6BYok.cjs.map +0 -1
- package/dist/EndpointFactory-CbdxPCIH.mjs.map +0 -1
- package/dist/EndpointFactory-CyPbm3AD.d.cts.map +0 -1
- package/dist/Function-BVHqIDp9.mjs.map +0 -1
- package/dist/Function-Cf7f_kCz.d.cts.map +0 -1
- package/dist/Function-DDZb1525.cjs.map +0 -1
- package/dist/Function-DN2G6OT5.d.mts.map +0 -1
- package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +0 -1
- package/dist/FunctionBuilder-CrDYgfiI.mjs.map +0 -1
- package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +0 -1
- package/dist/FunctionBuilder-DswJ-9sD.cjs.map +0 -1
- package/dist/FunctionExecutionWrapper-BYI2bGTL.cjs.map +0 -1
- package/dist/FunctionExecutionWrapper-CLDh7Z2_.mjs.map +0 -1
- package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +0 -1
- package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-BaPlUhz0.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
- package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
- package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-YcRHYALH.d.cts.map +0 -1
- package/dist/Subscriber-BiHjVXtM.cjs.map +0 -1
- package/dist/Subscriber-BmPf9GFb.mjs.map +0 -1
- package/dist/Subscriber-COYMSevD.d.cts.map +0 -1
- package/dist/Subscriber-ikctpU3I.d.mts.map +0 -1
- package/dist/SubscriberBuilder-Cp1C-xtT.cjs.map +0 -1
- package/dist/SubscriberBuilder-DJPEeYDJ.mjs.map +0 -1
- package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +0 -1
- package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +0 -1
- package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
- package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +0 -1
- package/dist/TestEndpointAdaptor-DJgik2Wj.mjs +0 -160
- package/dist/TestEndpointAdaptor-DJgik2Wj.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs +0 -166
- package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs.map +0 -1
- package/dist/functions-C6EK1xL6.mjs +0 -8
- package/dist/functions-C6EK1xL6.mjs.map +0 -1
- package/dist/functions-fTid0RMK.cjs.map +0 -1
- package/dist/helpers-BcP1tXAi.cjs.map +0 -1
- package/dist/helpers-ByRTDO_m.mjs.map +0 -1
- package/dist/index-BWzGIj06.d.mts.map +0 -1
- package/dist/index-DmFozqLd.d.cts +0 -12
- package/dist/index-DmFozqLd.d.cts.map +0 -1
- package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
- package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
- package/dist/publisher.d.cts.map +0 -1
- package/dist/publisher.d.mts.map +0 -1
- package/dist/types-DdIlpxAd.d.mts.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_FunctionBuilder = require('./FunctionBuilder-
|
|
3
|
-
const require_FunctionExecutionWrapper = require('./FunctionExecutionWrapper-
|
|
4
|
-
const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
|
|
2
|
+
const require_FunctionBuilder = require('./FunctionBuilder-BEpPgeho.cjs');
|
|
3
|
+
const require_FunctionExecutionWrapper = require('./FunctionExecutionWrapper-BjF6t9Hb.cjs');
|
|
5
4
|
const __middy_core = require_chunk.__toESM(require("@middy/core"));
|
|
5
|
+
const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
|
|
6
6
|
|
|
7
7
|
//#region src/functions/AWSLambdaFunction.ts
|
|
8
8
|
var AWSLambdaFunction = class extends require_FunctionExecutionWrapper.FunctionExecutionWrapper {
|
|
@@ -18,7 +18,7 @@ var AWSLambdaFunction = class extends require_FunctionExecutionWrapper.FunctionE
|
|
|
18
18
|
} };
|
|
19
19
|
}
|
|
20
20
|
baseInput() {
|
|
21
|
-
return { before: (
|
|
21
|
+
return { before: (_req) => {} };
|
|
22
22
|
}
|
|
23
23
|
input() {
|
|
24
24
|
return { before: async (req) => {
|
|
@@ -82,7 +82,7 @@ var AWSLambdaFunction = class extends require_FunctionExecutionWrapper.FunctionE
|
|
|
82
82
|
} };
|
|
83
83
|
}
|
|
84
84
|
async _handler(event) {
|
|
85
|
-
const result = await this.fn
|
|
85
|
+
const result = await this.fn.fn({
|
|
86
86
|
input: event.parsedInput,
|
|
87
87
|
services: event.services,
|
|
88
88
|
logger: event.logger,
|
|
@@ -105,4 +105,4 @@ Object.defineProperty(exports, 'AWSLambdaFunction', {
|
|
|
105
105
|
return AWSLambdaFunction;
|
|
106
106
|
}
|
|
107
107
|
});
|
|
108
|
-
//# sourceMappingURL=AWSLambdaFunction-
|
|
108
|
+
//# sourceMappingURL=AWSLambdaFunction-Ba1DcsW2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaFunction-Ba1DcsW2.cjs","names":["FunctionExecutionWrapper","envParser: 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\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>","event: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\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 type { Service, ServiceRecord } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Context, Handler } from 'aws-lambda';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype FunctionEvent<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = TEvent & {\n\tparsedInput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\tdb: TDatabase | undefined;\n\tauditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = MiddlewareObj<\n\tFunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n\tInferComposableStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaFunction<\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> extends FunctionExecutionWrapper<\n\tTInput,\n\tTOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName,\n\tTAuditAction\n> {\n\tconstructor(\n\t\tenvParser: EnvironmentParser<{}>,\n\t\toverride 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\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>,\n\t) {\n\t\tsuper(envParser, fn);\n\t}\n\n\tprivate error<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.fn.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing function');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate baseInput<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (_req) => {},\n\t\t};\n\t}\n\n\tprivate input<\n\t\tTEvent extends { input: InferComposableStandardSchema<TInput> },\n\t>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\t// Parse input if schema is provided\n\t\t\t\t\tif (this.fn.input) {\n\t\t\t\t\t\tconst parsedInput =\n\t\t\t\t\t\t\tawait FunctionBuilder.parseComposableStandardSchema(\n\t\t\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t\t\tthis.fn.input,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treq.event.parsedInput =\n\t\t\t\t\t\t\tparsedInput as InferComposableStandardSchema<TInput>;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If no schema, pass the event as-is\n\t\t\t\t\t\treq.event.parsedInput = req.event as any;\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t{ error, event: req.event },\n\t\t\t\t\t\t'Failed to parse input',\n\t\t\t\t\t);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.fn.logger.child({\n\t\t\t\t\tfn: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.db = await this.getDatabase();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate auditor<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.auditor = await this.createAuditor();\n\t\t\t},\n\t\t\tafter: async (req) => {\n\t\t\t\t// Flush any pending audits after successful execution\n\t\t\t\tif (req.event.auditor) {\n\t\t\t\t\tconst records = req.event.auditor.getRecords();\n\t\t\t\t\tif (records.length > 0) {\n\t\t\t\t\t\tthis.logger.debug(\n\t\t\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t\t\t'Flushing function audits',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait req.event.auditor.flush();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst response = (req.response ||\n\t\t\t\t\tundefined) as InferStandardSchema<TOutSchema>;\n\t\t\t\tawait this.publishEvents(response);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler<TEvent>(\n\t\tevent: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t) {\n\t\t// Execute the function with the parsed context\n\t\tconst result = await this.fn.fn({\n\t\t\tinput: event.parsedInput,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t\tdb: event.db,\n\t\t\tauditor: event.auditor,\n\t\t} as any);\n\n\t\t// Parse output if schema is provided\n\t\tconst output = await this.fn.parseOutput(result);\n\n\t\treturn output;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\treturn middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.baseInput())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.database())\n\t\t\t.use(this.auditor())\n\t\t\t.use(this.input())\n\t\t\t.use(this.events()) as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":";;;;;;;AA2DA,IAAa,oBAAb,cAeUA,0DAYR;CACD,YACCC,WACkBC,IAsBjB;AACD,QAAM,WAAW,GAAG;EAvBF;CAwBlB;CAED,AAAQ,QAQN;AACD,SAAO,EACN,SAAS,CAAC,QAAQ;GACjB,MAAM,SAAS,IAAI,OAAO,UAAU,KAAK,GAAG;AAC5C,UAAO,MAAM,IAAI,SAAS,CAAE,GAAE,4BAA4B;AAG1D,SAAM,kCAAU,IAAI,MAAM;EAC1B,EACD;CACD;CAED,AAAQ,YAQN;AACD,SAAO,EACN,QAAQ,CAAC,SAAS,CAAE,EACpB;CACD;CAED,AAAQ,QAUN;AACD,SAAO,EACN,QAAQ,OAAO,QAAQ;AACtB,OAAI;AAEH,QAAI,KAAK,GAAG,OAAO;KAClB,MAAM,cACL,MAAM,wCAAgB,8BACrB,IAAI,OACJ,KAAK,GAAG,MACR;AAEF,SAAI,MAAM,cACT;IACD,MAEA,KAAI,MAAM,cAAc,IAAI;GAE7B,SAAQ,OAAO;AACf,SAAK,OAAO,MACX;KAAE;KAAO,OAAO,IAAI;IAAO,GAC3B,wBACA;AACD,UAAM;GACN;EACD,EACD;CACD;CAED,AAAQ,mBAQN;AACD,SAAO,EACN,QAAQ,CAAC,QAAQ;AAChB,QAAK,UAAU,KAAK,GAAG,OAAO,MAAM;IACnC,IAAI;KACH,MAAM,IAAI,QAAQ;KAClB,SAAS,IAAI,QAAQ;KACrB,QAAQ,IAAI,QAAQ;IACpB;IACD,KAAK,EACJ,IAAI,IAAI,QAAQ,aAChB;GACD,EAAC;AAEF,OAAI,MAAM,SAAS,KAAK;EACxB,EACD;CACD;CAED,AAAQ,WAQN;AACD,SAAO,EACN,QAAQ,OAAO,QAAQ;AACtB,OAAI,MAAM,WAAW,MAAM,KAAK,aAAa;EAC7C,EACD;CACD;CAED,AAAQ,WAQN;AACD,SAAO,EACN,QAAQ,OAAO,QAAQ;AACtB,OAAI,MAAM,KAAK,MAAM,KAAK,aAAa;EACvC,EACD;CACD;CAED,AAAQ,UAQN;AACD,SAAO;GACN,QAAQ,OAAO,QAAQ;AACtB,QAAI,MAAM,UAAU,MAAM,KAAK,eAAe;GAC9C;GACD,OAAO,OAAO,QAAQ;AAErB,QAAI,IAAI,MAAM,SAAS;KACtB,MAAM,UAAU,IAAI,MAAM,QAAQ,YAAY;AAC9C,SAAI,QAAQ,SAAS,GAAG;AACvB,WAAK,OAAO,MACX,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACA;AACD,YAAM,IAAI,MAAM,QAAQ,OAAO;KAC/B;IACD;GACD;EACD;CACD;CAED,AAAQ,SAQN;AACD,SAAO,EACN,OAAO,OAAO,QAAQ;GACrB,MAAM,WAAY,IAAI;AAEtB,SAAM,KAAK,cAAc,SAAS;EAClC,EACD;CACD;CAED,MAAc,SACbC,OAQC;EAED,MAAM,SAAS,MAAM,KAAK,GAAG,GAAG;GAC/B,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd,IAAI,MAAM;GACV,SAAS,MAAM;EACf,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO;AAEhD,SAAO;CACP;CAED,IAAI,UAA4B;EAC/B,MAAM,UAAU,KAAK,SAAS,KAAK,KAAK;AAGxC,SAAO,0BAAM,QAAQ,CACnB,IAAI,KAAK,kBAAkB,CAAC,CAC5B,IAAI,KAAK,WAAW,CAAC,CACrB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,SAAS,CAAC,CACnB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,QAAQ,CAAC;CACpB;AACD"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Function, FunctionHandler } from "./Function-
|
|
2
|
-
import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-
|
|
3
|
-
import { Service } from "@geekmidas/services";
|
|
1
|
+
import { Function, FunctionHandler } from "./Function-PNW4HdNE.cjs";
|
|
2
|
+
import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-BclgIztn.cjs";
|
|
4
3
|
import { AuditStorage, AuditableAction } from "@geekmidas/audit";
|
|
5
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
6
4
|
import { EventPublisher } from "@geekmidas/events";
|
|
7
5
|
import { Logger } from "@geekmidas/logger";
|
|
6
|
+
import { Service } from "@geekmidas/services";
|
|
8
7
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
9
|
-
import {
|
|
8
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
10
9
|
import { Handler } from "aws-lambda";
|
|
10
|
+
import { ComposableStandardSchema } from "@geekmidas/schema";
|
|
11
11
|
|
|
12
12
|
//#region src/functions/AWSLambdaFunction.d.ts
|
|
13
13
|
type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
|
|
@@ -29,4 +29,4 @@ declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefi
|
|
|
29
29
|
|
|
30
30
|
//#endregion
|
|
31
31
|
export { AWSLambdaFunction, AWSLambdaHandler };
|
|
32
|
-
//# sourceMappingURL=AWSLambdaFunction-
|
|
32
|
+
//# sourceMappingURL=AWSLambdaFunction-CKe73Qr0.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaFunction-CKe73Qr0.d.cts","names":[],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAkBY,gDAAgD,QAC3D,QACA;cAuCY,iCACG,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC,0CAI/C,yBACT,QACA,YACA,WACA,SACA,iBACA,4BACA,eACA,0BACA,WACA,sBACA;EAnEW,SAAA,EAAA,EAuEY,QAvEI,CAwEzB,MAxEyB,EAyEzB,SAzEyB,EA0EzB,OA1EyB,EA2EzB,UA3EyB,EA4EzB,eA5EyB,EA6EzB,0BA7EyB,EA8EzB,aA9EyB,EA+EzB,wBA/EyB,EAgFzB,SAhFyB,EAiFzB,oBAjFyB,EAkFzB,YAlFyB,EAmFzB,eAnFyB,CAoFxB,MApFwB,EAqFxB,SArFwB,EAsFxB,OAtFwB,EAuFxB,UAvFwB,EAwFxB,SAxFwB,EAyFxB,aAzFwB,EA0FxB,YA1FwB,CAAA,CAAA;EAAA,WAAA,CAAA,SAAA,EAsEf,iBAtEe,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAuEJ,QAvEI,CAwEzB,MAxEyB,EAyEzB,SAzEyB,EA0EzB,OA1EyB,EA2EzB,UA3EyB,EA4EzB,eA5EyB,EA6EzB,0BA7EyB,EA8EzB,aA9EyB,EA+EzB,wBA/EyB,EAgFzB,SAhFyB,EAiFzB,oBAjFyB,EAkFzB,YAlFyB,EAmFzB,eAnFyB,CAoFxB,MApFwB,EAqFxB,SArFwB,EAsFxB,OAtFwB,EAuFxB,UAvFwB,EAwFxB,SAxFwB,EAyFxB,aAzFwB,EA0FxB,YA1FwB,CAAA,CAAA;EAAA,QAC3B,KAAA;EAAM,QACN,SAAA;EAAO,QAFoD,KAAA;EAAO,QAAA,gBAAA;EAyCtD,QAAA,QAAA;EAAiB,QAAA,QAAA;EAAA,QACd,OAAA;EAAwB,QACpB,MAAA;EAAgB,QACjB,QAAA;EAAO,IACT,OAAA,CAAA,CAAA,EAgQD,gBAhQC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Function, FunctionHandler } from "./Function-
|
|
2
|
-
import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-
|
|
1
|
+
import { Function, FunctionHandler } from "./Function-DBmU3uGI.mjs";
|
|
2
|
+
import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-Dq21c6vt.mjs";
|
|
3
|
+
import { Service } from "@geekmidas/services";
|
|
3
4
|
import { AuditStorage, AuditableAction } from "@geekmidas/audit";
|
|
5
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
4
6
|
import { EventPublisher } from "@geekmidas/events";
|
|
5
7
|
import { Logger } from "@geekmidas/logger";
|
|
6
|
-
import { Service } from "@geekmidas/services";
|
|
7
8
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
8
|
-
import { ComposableStandardSchema } from "@geekmidas/schema";
|
|
9
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
10
9
|
import { Handler } from "aws-lambda";
|
|
10
|
+
import { ComposableStandardSchema } from "@geekmidas/schema";
|
|
11
11
|
|
|
12
12
|
//#region src/functions/AWSLambdaFunction.d.ts
|
|
13
13
|
type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
|
|
@@ -29,4 +29,4 @@ declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefi
|
|
|
29
29
|
|
|
30
30
|
//#endregion
|
|
31
31
|
export { AWSLambdaFunction, AWSLambdaHandler };
|
|
32
|
-
//# sourceMappingURL=AWSLambdaFunction-
|
|
32
|
+
//# sourceMappingURL=AWSLambdaFunction-CuG3HNZx.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaFunction-CuG3HNZx.d.mts","names":[],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAkBY,gDAAgD,QAC3D,QACA;cAuCY,iCACG,qEACI,4DACD,gCACF,SAAS,gCACD,uHAEF,kLAID,mCAAmC,0CAI/C,yBACT,QACA,YACA,WACA,SACA,iBACA,4BACA,eACA,0BACA,WACA,sBACA;EAnEW,SAAA,EAAA,EAuEY,QAvEI,CAwEzB,MAxEyB,EAyEzB,SAzEyB,EA0EzB,OA1EyB,EA2EzB,UA3EyB,EA4EzB,eA5EyB,EA6EzB,0BA7EyB,EA8EzB,aA9EyB,EA+EzB,wBA/EyB,EAgFzB,SAhFyB,EAiFzB,oBAjFyB,EAkFzB,YAlFyB,EAmFzB,eAnFyB,CAoFxB,MApFwB,EAqFxB,SArFwB,EAsFxB,OAtFwB,EAuFxB,UAvFwB,EAwFxB,SAxFwB,EAyFxB,aAzFwB,EA0FxB,YA1FwB,CAAA,CAAA;EAAA,WAAA,CAAA,SAAA,EAsEf,iBAtEe,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAuEJ,QAvEI,CAwEzB,MAxEyB,EAyEzB,SAzEyB,EA0EzB,OA1EyB,EA2EzB,UA3EyB,EA4EzB,eA5EyB,EA6EzB,0BA7EyB,EA8EzB,aA9EyB,EA+EzB,wBA/EyB,EAgFzB,SAhFyB,EAiFzB,oBAjFyB,EAkFzB,YAlFyB,EAmFzB,eAnFyB,CAoFxB,MApFwB,EAqFxB,SArFwB,EAsFxB,OAtFwB,EAuFxB,UAvFwB,EAwFxB,SAxFwB,EAyFxB,aAzFwB,EA0FxB,YA1FwB,CAAA,CAAA;EAAA,QAC3B,KAAA;EAAM,QACN,SAAA;EAAO,QAFoD,KAAA;EAAO,QAAA,gBAAA;EAyCtD,QAAA,QAAA;EAAiB,QAAA,QAAA;EAAA,QACd,OAAA;EAAwB,QACpB,MAAA;EAAgB,QACjB,QAAA;EAAO,IACT,OAAA,CAAA,CAAA,EAgQD,gBAhQC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { FunctionBuilder } from "./FunctionBuilder-
|
|
2
|
-
import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-
|
|
3
|
-
import { wrapError } from "@geekmidas/errors";
|
|
1
|
+
import { FunctionBuilder } from "./FunctionBuilder-BwNF99AB.mjs";
|
|
2
|
+
import { FunctionExecutionWrapper } from "./FunctionExecutionWrapper-B__HE_B-.mjs";
|
|
4
3
|
import middy from "@middy/core";
|
|
4
|
+
import { wrapError } from "@geekmidas/errors";
|
|
5
5
|
|
|
6
6
|
//#region src/functions/AWSLambdaFunction.ts
|
|
7
7
|
var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
@@ -17,7 +17,7 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
17
17
|
} };
|
|
18
18
|
}
|
|
19
19
|
baseInput() {
|
|
20
|
-
return { before: (
|
|
20
|
+
return { before: (_req) => {} };
|
|
21
21
|
}
|
|
22
22
|
input() {
|
|
23
23
|
return { before: async (req) => {
|
|
@@ -81,7 +81,7 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
81
81
|
} };
|
|
82
82
|
}
|
|
83
83
|
async _handler(event) {
|
|
84
|
-
const result = await this.fn
|
|
84
|
+
const result = await this.fn.fn({
|
|
85
85
|
input: event.parsedInput,
|
|
86
86
|
services: event.services,
|
|
87
87
|
logger: event.logger,
|
|
@@ -99,4 +99,4 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
99
99
|
|
|
100
100
|
//#endregion
|
|
101
101
|
export { AWSLambdaFunction };
|
|
102
|
-
//# sourceMappingURL=AWSLambdaFunction-
|
|
102
|
+
//# sourceMappingURL=AWSLambdaFunction-DnMm4xvz.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaFunction-DnMm4xvz.mjs","names":["envParser: 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\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>","event: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>"],"sources":["../src/functions/AWSLambdaFunction.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\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 type { Service, ServiceRecord } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Context, Handler } from 'aws-lambda';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\nimport { FunctionExecutionWrapper } from './FunctionExecutionWrapper';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype FunctionEvent<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = TEvent & {\n\tparsedInput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\tdb: TDatabase | undefined;\n\tauditor: Auditor<TAuditAction> | undefined;\n};\n\ntype Middleware<\n\tTEvent,\n\tTInput extends ComposableStandardSchema | undefined,\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = MiddlewareObj<\n\tFunctionEvent<TEvent, TInput, TServices, TLogger, TDatabase, TAuditAction>,\n\tInferComposableStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaFunction<\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> extends FunctionExecutionWrapper<\n\tTInput,\n\tTOutSchema,\n\tTServices,\n\tTLogger,\n\tTEventPublisher,\n\tTEventPublisherServiceName,\n\tTAuditStorage,\n\tTAuditStorageServiceName,\n\tTDatabase,\n\tTDatabaseServiceName,\n\tTAuditAction\n> {\n\tconstructor(\n\t\tenvParser: EnvironmentParser<{}>,\n\t\toverride 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\tFunctionHandler<\n\t\t\t\tTInput,\n\t\t\t\tTServices,\n\t\t\t\tTLogger,\n\t\t\t\tTOutSchema,\n\t\t\t\tTDatabase,\n\t\t\t\tTAuditStorage,\n\t\t\t\tTAuditAction\n\t\t\t>\n\t\t>,\n\t) {\n\t\tsuper(envParser, fn);\n\t}\n\n\tprivate error<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.fn.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing function');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate baseInput<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (_req) => {},\n\t\t};\n\t}\n\n\tprivate input<\n\t\tTEvent extends { input: InferComposableStandardSchema<TInput> },\n\t>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\t// Parse input if schema is provided\n\t\t\t\t\tif (this.fn.input) {\n\t\t\t\t\t\tconst parsedInput =\n\t\t\t\t\t\t\tawait FunctionBuilder.parseComposableStandardSchema(\n\t\t\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t\t\tthis.fn.input,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treq.event.parsedInput =\n\t\t\t\t\t\t\tparsedInput as InferComposableStandardSchema<TInput>;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If no schema, pass the event as-is\n\t\t\t\t\t\treq.event.parsedInput = req.event as any;\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t{ error, event: req.event },\n\t\t\t\t\t\t'Failed to parse input',\n\t\t\t\t\t);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.fn.logger.child({\n\t\t\t\t\tfn: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.db = await this.getDatabase();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate auditor<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.auditor = await this.createAuditor();\n\t\t\t},\n\t\t\tafter: async (req) => {\n\t\t\t\t// Flush any pending audits after successful execution\n\t\t\t\tif (req.event.auditor) {\n\t\t\t\t\tconst records = req.event.auditor.getRecords();\n\t\t\t\t\tif (records.length > 0) {\n\t\t\t\t\t\tthis.logger.debug(\n\t\t\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t\t\t'Flushing function audits',\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait req.event.auditor.flush();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events<TEvent>(): Middleware<\n\t\tTEvent,\n\t\tTInput,\n\t\tTServices,\n\t\tTLogger,\n\t\tTOutSchema,\n\t\tTDatabase,\n\t\tTAuditAction\n\t> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst response = (req.response ||\n\t\t\t\t\tundefined) as InferStandardSchema<TOutSchema>;\n\t\t\t\tawait this.publishEvents(response);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler<TEvent>(\n\t\tevent: FunctionEvent<\n\t\t\tTEvent,\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t) {\n\t\t// Execute the function with the parsed context\n\t\tconst result = await this.fn.fn({\n\t\t\tinput: event.parsedInput,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t\tdb: event.db,\n\t\t\tauditor: event.auditor,\n\t\t} as any);\n\n\t\t// Parse output if schema is provided\n\t\tconst output = await this.fn.parseOutput(result);\n\n\t\treturn output;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\treturn middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.baseInput())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.database())\n\t\t\t.use(this.auditor())\n\t\t\t.use(this.input())\n\t\t\t.use(this.events()) as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":";;;;;;AA2DA,IAAa,oBAAb,cAeU,yBAYR;CACD,YACCA,WACkBC,IAsBjB;AACD,QAAM,WAAW,GAAG;EAvBF;CAwBlB;CAED,AAAQ,QAQN;AACD,SAAO,EACN,SAAS,CAAC,QAAQ;GACjB,MAAM,SAAS,IAAI,OAAO,UAAU,KAAK,GAAG;AAC5C,UAAO,MAAM,IAAI,SAAS,CAAE,GAAE,4BAA4B;AAG1D,SAAM,UAAU,IAAI,MAAM;EAC1B,EACD;CACD;CAED,AAAQ,YAQN;AACD,SAAO,EACN,QAAQ,CAAC,SAAS,CAAE,EACpB;CACD;CAED,AAAQ,QAUN;AACD,SAAO,EACN,QAAQ,OAAO,QAAQ;AACtB,OAAI;AAEH,QAAI,KAAK,GAAG,OAAO;KAClB,MAAM,cACL,MAAM,gBAAgB,8BACrB,IAAI,OACJ,KAAK,GAAG,MACR;AAEF,SAAI,MAAM,cACT;IACD,MAEA,KAAI,MAAM,cAAc,IAAI;GAE7B,SAAQ,OAAO;AACf,SAAK,OAAO,MACX;KAAE;KAAO,OAAO,IAAI;IAAO,GAC3B,wBACA;AACD,UAAM;GACN;EACD,EACD;CACD;CAED,AAAQ,mBAQN;AACD,SAAO,EACN,QAAQ,CAAC,QAAQ;AAChB,QAAK,UAAU,KAAK,GAAG,OAAO,MAAM;IACnC,IAAI;KACH,MAAM,IAAI,QAAQ;KAClB,SAAS,IAAI,QAAQ;KACrB,QAAQ,IAAI,QAAQ;IACpB;IACD,KAAK,EACJ,IAAI,IAAI,QAAQ,aAChB;GACD,EAAC;AAEF,OAAI,MAAM,SAAS,KAAK;EACxB,EACD;CACD;CAED,AAAQ,WAQN;AACD,SAAO,EACN,QAAQ,OAAO,QAAQ;AACtB,OAAI,MAAM,WAAW,MAAM,KAAK,aAAa;EAC7C,EACD;CACD;CAED,AAAQ,WAQN;AACD,SAAO,EACN,QAAQ,OAAO,QAAQ;AACtB,OAAI,MAAM,KAAK,MAAM,KAAK,aAAa;EACvC,EACD;CACD;CAED,AAAQ,UAQN;AACD,SAAO;GACN,QAAQ,OAAO,QAAQ;AACtB,QAAI,MAAM,UAAU,MAAM,KAAK,eAAe;GAC9C;GACD,OAAO,OAAO,QAAQ;AAErB,QAAI,IAAI,MAAM,SAAS;KACtB,MAAM,UAAU,IAAI,MAAM,QAAQ,YAAY;AAC9C,SAAI,QAAQ,SAAS,GAAG;AACvB,WAAK,OAAO,MACX,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACA;AACD,YAAM,IAAI,MAAM,QAAQ,OAAO;KAC/B;IACD;GACD;EACD;CACD;CAED,AAAQ,SAQN;AACD,SAAO,EACN,OAAO,OAAO,QAAQ;GACrB,MAAM,WAAY,IAAI;AAEtB,SAAM,KAAK,cAAc,SAAS;EAClC,EACD;CACD;CAED,MAAc,SACbC,OAQC;EAED,MAAM,SAAS,MAAM,KAAK,GAAG,GAAG;GAC/B,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,QAAQ,MAAM;GACd,IAAI,MAAM;GACV,SAAS,MAAM;EACf,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,OAAO;AAEhD,SAAO;CACP;CAED,IAAI,UAA4B;EAC/B,MAAM,UAAU,KAAK,SAAS,KAAK,KAAK;AAGxC,SAAO,MAAM,QAAQ,CACnB,IAAI,KAAK,kBAAkB,CAAC,CAC5B,IAAI,KAAK,WAAW,CAAC,CACrB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,UAAU,CAAC,CACpB,IAAI,KAAK,SAAS,CAAC,CACnB,IAAI,KAAK,OAAO,CAAC,CACjB,IAAI,KAAK,QAAQ,CAAC;CACpB;AACD"}
|
package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Subscriber } from "./Subscriber-
|
|
1
|
+
import { Subscriber } from "./Subscriber-0Ac7cXID.mjs";
|
|
2
|
+
import { Service } from "@geekmidas/services";
|
|
3
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
2
4
|
import { EventPublisher } from "@geekmidas/events";
|
|
3
5
|
import { Logger } from "@geekmidas/logger";
|
|
4
|
-
import { Service } from "@geekmidas/services";
|
|
5
6
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
7
7
|
import { Handler } from "aws-lambda";
|
|
8
8
|
|
|
9
9
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.d.ts
|
|
@@ -31,4 +31,4 @@ declare class AWSLambdaSubscriber<TServices extends Service[] = [], TLogger exte
|
|
|
31
31
|
|
|
32
32
|
//#endregion
|
|
33
33
|
export { AWSLambdaHandler, AWSLambdaSubscriber };
|
|
34
|
-
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-
|
|
34
|
+
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts","names":[],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAkBY,gDAAgD,QAC3D,QACA;cAoBY,sCACM,gCACF,SAAS,0BACP,kEACM;EA1Bb,QAAA,SAAA;EAAgB,SAAA,UAAA,EAmCL,UAnCK,CAoCzB,SApCyB,EAqCzB,OArCyB,EAsCzB,SAtCyB,EAuCzB,eAvCyB,EAwCzB,0BAxCyB,EAyCzB,iBAzCyB,CAAA;EAAA,QAC3B,OAAA;EAAM,QACN,SAAA;EAAO,WAFoD,CAAA,SAAA,EAkCvC,iBAlCuC,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAmCrC,UAnCqC,CAoCzD,SApCyD,EAqCzD,OArCyD,EAsCzD,SAtCyD,EAuCzD,eAvCyD,EAwCzD,0BAxCyD,EAyCzD,iBAzCyD,CAAA;EAAO,IAAA,MAAA,CAAA,CAAA,EA+CpD,OA/CoD;EAsBtD,QAAA,WAAA;EAAmB,QAAA,KAAA;EAAA,QACb,gBAAA;EAAO,QACT,QAAA;EAAM,QAAG,WAAA;EAAM,QACb,UAAA;EAAgB,QACV,UAAA;EAAc,QAUpC,cAAA;EAAS,QACT,iBAAA;EAAO,QACP,QAAA;EAAS,IACT,OAAA,CAAA,CAAA,EAyMa,gBAzMb"}
|
package/dist/{AWSLambdaSubscriberAdaptor-BLfO612H.mjs → AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { wrapError } from "@geekmidas/errors";
|
|
2
1
|
import middy from "@middy/core";
|
|
2
|
+
import { wrapError } from "@geekmidas/errors";
|
|
3
3
|
import { ServiceDiscovery } from "@geekmidas/services";
|
|
4
4
|
|
|
5
5
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
@@ -16,7 +16,7 @@ var AWSLambdaSubscriber = class {
|
|
|
16
16
|
}
|
|
17
17
|
async getServices() {
|
|
18
18
|
if (this._services) return this._services;
|
|
19
|
-
const serviceDiscovery = ServiceDiscovery.getInstance(this.
|
|
19
|
+
const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
|
|
20
20
|
if (this.subscriber.services.length > 0) {
|
|
21
21
|
const registered = await serviceDiscovery.register(this.subscriber.services);
|
|
22
22
|
this._services = registered;
|
|
@@ -131,4 +131,4 @@ var AWSLambdaSubscriber = class {
|
|
|
131
131
|
|
|
132
132
|
//#endregion
|
|
133
133
|
export { AWSLambdaSubscriber };
|
|
134
|
-
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-
|
|
134
|
+
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>","events: any[]","event: SQSEvent | SNSEvent","record: SQSRecord","eventType: string","event: SubscriberEvent<TServices, TLogger>"],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n\tContext,\n\tHandler,\n\tSNSEvent,\n\tSQSEvent,\n\tSQSRecord,\n} from 'aws-lambda';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n\tevents: any[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n\ntype Middleware<\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n\tSubscriberEvent<TServices, TLogger>,\n\tInferStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaSubscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _logger!: TLogger;\n\tprivate _services!: ServiceRecord<TServices>;\n\n\tconstructor(\n\t\tprivate envParser: EnvironmentParser<{}>,\n\t\treadonly subscriber: Subscriber<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>,\n\t) {\n\t\tthis._logger = subscriber.logger;\n\t}\n\n\tget logger(): TLogger {\n\t\treturn this._logger;\n\t}\n\n\tprivate async getServices(): Promise<ServiceRecord<TServices>> {\n\t\tif (this._services) {\n\t\t\treturn this._services;\n\t\t}\n\n\t\tconst serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);\n\n\t\tif (this.subscriber.services.length > 0) {\n\t\t\tconst registered = await serviceDiscovery.register(\n\t\t\t\tthis.subscriber.services,\n\t\t\t);\n\t\t\tthis._services = registered as ServiceRecord<TServices>;\n\t\t} else {\n\t\t\tthis._services = {} as ServiceRecord<TServices>;\n\t\t}\n\n\t\treturn this._services;\n\t}\n\n\tprivate error(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.subscriber.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing subscriber');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.subscriber.logger.child({\n\t\t\t\t\tsubscriber: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst rawEvent = (req as any).event as SQSEvent | SNSEvent;\n\n\t\t\t\t// Parse events based on the event type\n\t\t\t\tconst events: any[] = [];\n\n\t\t\t\tif ('Records' in rawEvent) {\n\t\t\t\t\tif (this.isSQSEvent(rawEvent)) {\n\t\t\t\t\t\t// SQS Event\n\t\t\t\t\t\tfor (const record of rawEvent.Records) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst event = this.parseSQSRecord(record);\n\t\t\t\t\t\t\t\tif (event && this.isSubscribedEvent(event.type)) {\n\t\t\t\t\t\t\t\t\tevents.push(event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t{ error, record },\n\t\t\t\t\t\t\t\t\t'Failed to parse SQS record',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (this.isSNSEvent(rawEvent)) {\n\t\t\t\t\t\t// SNS Event\n\t\t\t\t\t\tfor (const record of rawEvent.Records) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst event = JSON.parse(record.Sns.Message);\n\t\t\t\t\t\t\t\tif (event && this.isSubscribedEvent(event.type)) {\n\t\t\t\t\t\t\t\t\tevents.push(event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t{ error, record },\n\t\t\t\t\t\t\t\t\t'Failed to parse SNS record',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t(req.event as any).events = events;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n\t\tconst firstRecord = event.Records[0];\n\t\treturn (\n\t\t\t'Records' in event &&\n\t\t\tevent.Records.length > 0 &&\n\t\t\tfirstRecord !== undefined &&\n\t\t\t'eventSource' in firstRecord &&\n\t\t\tfirstRecord.eventSource === 'aws:sqs'\n\t\t);\n\t}\n\n\tprivate isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n\t\tconst firstRecord = event.Records[0];\n\t\treturn (\n\t\t\t'Records' in event &&\n\t\t\tevent.Records.length > 0 &&\n\t\t\tfirstRecord !== undefined &&\n\t\t\t'EventSource' in firstRecord &&\n\t\t\tfirstRecord.EventSource === 'aws:sns'\n\t\t);\n\t}\n\n\tprivate parseSQSRecord(record: SQSRecord): any | null {\n\t\ttry {\n\t\t\tconst body = JSON.parse(record.body);\n\n\t\t\t// Check if this is an SNS message wrapped in SQS\n\t\t\tif (body.Type === 'Notification' && body.Message) {\n\t\t\t\t// Parse the SNS message\n\t\t\t\tconst snsMessage = JSON.parse(body.Message);\n\t\t\t\treturn snsMessage;\n\t\t\t}\n\n\t\t\t// Direct SQS message\n\t\t\treturn body;\n\t\t} catch (error) {\n\t\t\tthis.logger.error({ error, record }, 'Failed to parse SQS record body');\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate isSubscribedEvent(eventType: string): boolean {\n\t\tif (!this.subscriber.subscribedEvents) {\n\t\t\treturn true; // If no events specified, accept all\n\t\t}\n\n\t\treturn this.subscriber.subscribedEvents.includes(eventType as any);\n\t}\n\n\tprivate async _handler(event: SubscriberEvent<TServices, TLogger>) {\n\t\t// If no events after filtering, return early\n\t\tif (event.events.length === 0) {\n\t\t\tthis.logger.info('No subscribed events to process');\n\t\t\treturn {\n\t\t\t\tbatchItemFailures: [],\n\t\t\t};\n\t\t}\n\n\t\t// Execute the subscriber with the parsed context\n\t\tconst result = await this.subscriber.handler({\n\t\t\tevents: event.events,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t});\n\n\t\t// Parse output if schema is provided\n\t\tif (this.subscriber.outputSchema && result) {\n\t\t\tconst validationResult =\n\t\t\t\tawait this.subscriber.outputSchema['~standard'].validate(result);\n\n\t\t\tif (validationResult.issues) {\n\t\t\t\tthis.logger.error(\n\t\t\t\t\t{ issues: validationResult.issues },\n\t\t\t\t\t'Subscriber output validation failed',\n\t\t\t\t);\n\t\t\t\tthrow new Error('Subscriber output validation failed');\n\t\t\t}\n\n\t\t\treturn validationResult.value;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\treturn middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.parseEvents()) as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":"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"}
|
package/dist/{AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Subscriber } from "./Subscriber
|
|
2
|
-
import { Service } from "@geekmidas/services";
|
|
3
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
1
|
+
import { Subscriber } from "./Subscriber--zUjZDR6.cjs";
|
|
4
2
|
import { EventPublisher } from "@geekmidas/events";
|
|
5
3
|
import { Logger } from "@geekmidas/logger";
|
|
4
|
+
import { Service } from "@geekmidas/services";
|
|
6
5
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
7
7
|
import { Handler } from "aws-lambda";
|
|
8
8
|
|
|
9
9
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.d.ts
|
|
@@ -31,4 +31,4 @@ declare class AWSLambdaSubscriber<TServices extends Service[] = [], TLogger exte
|
|
|
31
31
|
|
|
32
32
|
//#endregion
|
|
33
33
|
export { AWSLambdaHandler, AWSLambdaSubscriber };
|
|
34
|
-
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-
|
|
34
|
+
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts","names":[],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAkBY,gDAAgD,QAC3D,QACA;cAoBY,sCACM,gCACF,SAAS,0BACP,kEACM;EA1Bb,QAAA,SAAA;EAAgB,SAAA,UAAA,EAmCL,UAnCK,CAoCzB,SApCyB,EAqCzB,OArCyB,EAsCzB,SAtCyB,EAuCzB,eAvCyB,EAwCzB,0BAxCyB,EAyCzB,iBAzCyB,CAAA;EAAA,QAC3B,OAAA;EAAM,QACN,SAAA;EAAO,WAFoD,CAAA,SAAA,EAkCvC,iBAlCuC,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAmCrC,UAnCqC,CAoCzD,SApCyD,EAqCzD,OArCyD,EAsCzD,SAtCyD,EAuCzD,eAvCyD,EAwCzD,0BAxCyD,EAyCzD,iBAzCyD,CAAA;EAAO,IAAA,MAAA,CAAA,CAAA,EA+CpD,OA/CoD;EAsBtD,QAAA,WAAA;EAAmB,QAAA,KAAA;EAAA,QACb,gBAAA;EAAO,QACT,QAAA;EAAM,QAAG,WAAA;EAAM,QACb,UAAA;EAAgB,QACV,UAAA;EAAc,QAUpC,cAAA;EAAS,QACT,iBAAA;EAAO,QACP,QAAA;EAAS,IACT,OAAA,CAAA,CAAA,EAyMa,gBAzMb"}
|
package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
|
|
3
2
|
const __middy_core = require_chunk.__toESM(require("@middy/core"));
|
|
3
|
+
const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
|
|
4
4
|
const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
|
|
5
5
|
|
|
6
6
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
@@ -17,7 +17,7 @@ var AWSLambdaSubscriber = class {
|
|
|
17
17
|
}
|
|
18
18
|
async getServices() {
|
|
19
19
|
if (this._services) return this._services;
|
|
20
|
-
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.
|
|
20
|
+
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
21
21
|
if (this.subscriber.services.length > 0) {
|
|
22
22
|
const registered = await serviceDiscovery.register(this.subscriber.services);
|
|
23
23
|
this._services = registered;
|
|
@@ -137,4 +137,4 @@ Object.defineProperty(exports, 'AWSLambdaSubscriber', {
|
|
|
137
137
|
return AWSLambdaSubscriber;
|
|
138
138
|
}
|
|
139
139
|
});
|
|
140
|
-
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-
|
|
140
|
+
//# sourceMappingURL=AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs","names":["envParser: EnvironmentParser<{}>","subscriber: Subscriber<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>","events: any[]","event: SQSEvent | SNSEvent","record: SQSRecord","eventType: string","event: SubscriberEvent<TServices, TLogger>"],"sources":["../src/subscribers/AWSLambdaSubscriberAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport { wrapError } from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport { ServiceDiscovery } from '@geekmidas/services';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n\tContext,\n\tHandler,\n\tSNSEvent,\n\tSQSEvent,\n\tSQSRecord,\n} from 'aws-lambda';\nimport type { Subscriber } from './Subscriber';\n\nexport type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<\n\tTEvent,\n\tTResult\n>;\n\ntype SubscriberEvent<TServices extends Service[], TLogger extends Logger> = {\n\tevents: any[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n\ntype Middleware<\n\tTServices extends Service[],\n\tTLogger extends Logger,\n\tTOutSchema extends StandardSchemaV1 | undefined,\n> = MiddlewareObj<\n\tSubscriberEvent<TServices, TLogger>,\n\tInferStandardSchema<TOutSchema>,\n\tError,\n\tContext\n>;\n\nexport class AWSLambdaSubscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _logger!: TLogger;\n\tprivate _services!: ServiceRecord<TServices>;\n\n\tconstructor(\n\t\tprivate envParser: EnvironmentParser<{}>,\n\t\treadonly subscriber: Subscriber<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>,\n\t) {\n\t\tthis._logger = subscriber.logger;\n\t}\n\n\tget logger(): TLogger {\n\t\treturn this._logger;\n\t}\n\n\tprivate async getServices(): Promise<ServiceRecord<TServices>> {\n\t\tif (this._services) {\n\t\t\treturn this._services;\n\t\t}\n\n\t\tconst serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);\n\n\t\tif (this.subscriber.services.length > 0) {\n\t\t\tconst registered = await serviceDiscovery.register(\n\t\t\t\tthis.subscriber.services,\n\t\t\t);\n\t\t\tthis._services = registered as ServiceRecord<TServices>;\n\t\t} else {\n\t\t\tthis._services = {} as ServiceRecord<TServices>;\n\t\t}\n\n\t\treturn this._services;\n\t}\n\n\tprivate error(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\tconst logger = req.event?.logger || this.subscriber.logger;\n\t\t\t\tlogger.error(req.error || {}, 'Error processing subscriber');\n\n\t\t\t\t// Re-throw the wrapped error to let Lambda handle it\n\t\t\t\tthrow wrapError(req.error);\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate loggerMiddleware(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\tthis._logger = this.subscriber.logger.child({\n\t\t\t\t\tsubscriber: {\n\t\t\t\t\t\tname: req.context.functionName,\n\t\t\t\t\t\tversion: req.context.functionVersion,\n\t\t\t\t\t\tmemory: req.context.memoryLimitInMB,\n\t\t\t\t\t},\n\t\t\t\t\treq: {\n\t\t\t\t\t\tid: req.context.awsRequestId,\n\t\t\t\t\t},\n\t\t\t\t}) as TLogger;\n\n\t\t\t\treq.event.logger = this._logger;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate services(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\treq.event.services = await this.getServices();\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate parseEvents(): Middleware<TServices, TLogger, OutSchema> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst rawEvent = (req as any).event as SQSEvent | SNSEvent;\n\n\t\t\t\t// Parse events based on the event type\n\t\t\t\tconst events: any[] = [];\n\n\t\t\t\tif ('Records' in rawEvent) {\n\t\t\t\t\tif (this.isSQSEvent(rawEvent)) {\n\t\t\t\t\t\t// SQS Event\n\t\t\t\t\t\tfor (const record of rawEvent.Records) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst event = this.parseSQSRecord(record);\n\t\t\t\t\t\t\t\tif (event && this.isSubscribedEvent(event.type)) {\n\t\t\t\t\t\t\t\t\tevents.push(event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t{ error, record },\n\t\t\t\t\t\t\t\t\t'Failed to parse SQS record',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (this.isSNSEvent(rawEvent)) {\n\t\t\t\t\t\t// SNS Event\n\t\t\t\t\t\tfor (const record of rawEvent.Records) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst event = JSON.parse(record.Sns.Message);\n\t\t\t\t\t\t\t\tif (event && this.isSubscribedEvent(event.type)) {\n\t\t\t\t\t\t\t\t\tevents.push(event);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t\t\t\t{ error, record },\n\t\t\t\t\t\t\t\t\t'Failed to parse SNS record',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t(req.event as any).events = events;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate isSQSEvent(event: SQSEvent | SNSEvent): event is SQSEvent {\n\t\tconst firstRecord = event.Records[0];\n\t\treturn (\n\t\t\t'Records' in event &&\n\t\t\tevent.Records.length > 0 &&\n\t\t\tfirstRecord !== undefined &&\n\t\t\t'eventSource' in firstRecord &&\n\t\t\tfirstRecord.eventSource === 'aws:sqs'\n\t\t);\n\t}\n\n\tprivate isSNSEvent(event: SQSEvent | SNSEvent): event is SNSEvent {\n\t\tconst firstRecord = event.Records[0];\n\t\treturn (\n\t\t\t'Records' in event &&\n\t\t\tevent.Records.length > 0 &&\n\t\t\tfirstRecord !== undefined &&\n\t\t\t'EventSource' in firstRecord &&\n\t\t\tfirstRecord.EventSource === 'aws:sns'\n\t\t);\n\t}\n\n\tprivate parseSQSRecord(record: SQSRecord): any | null {\n\t\ttry {\n\t\t\tconst body = JSON.parse(record.body);\n\n\t\t\t// Check if this is an SNS message wrapped in SQS\n\t\t\tif (body.Type === 'Notification' && body.Message) {\n\t\t\t\t// Parse the SNS message\n\t\t\t\tconst snsMessage = JSON.parse(body.Message);\n\t\t\t\treturn snsMessage;\n\t\t\t}\n\n\t\t\t// Direct SQS message\n\t\t\treturn body;\n\t\t} catch (error) {\n\t\t\tthis.logger.error({ error, record }, 'Failed to parse SQS record body');\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate isSubscribedEvent(eventType: string): boolean {\n\t\tif (!this.subscriber.subscribedEvents) {\n\t\t\treturn true; // If no events specified, accept all\n\t\t}\n\n\t\treturn this.subscriber.subscribedEvents.includes(eventType as any);\n\t}\n\n\tprivate async _handler(event: SubscriberEvent<TServices, TLogger>) {\n\t\t// If no events after filtering, return early\n\t\tif (event.events.length === 0) {\n\t\t\tthis.logger.info('No subscribed events to process');\n\t\t\treturn {\n\t\t\t\tbatchItemFailures: [],\n\t\t\t};\n\t\t}\n\n\t\t// Execute the subscriber with the parsed context\n\t\tconst result = await this.subscriber.handler({\n\t\t\tevents: event.events,\n\t\t\tservices: event.services,\n\t\t\tlogger: event.logger,\n\t\t});\n\n\t\t// Parse output if schema is provided\n\t\tif (this.subscriber.outputSchema && result) {\n\t\t\tconst validationResult =\n\t\t\t\tawait this.subscriber.outputSchema['~standard'].validate(result);\n\n\t\t\tif (validationResult.issues) {\n\t\t\t\tthis.logger.error(\n\t\t\t\t\t{ issues: validationResult.issues },\n\t\t\t\t\t'Subscriber output validation failed',\n\t\t\t\t);\n\t\t\t\tthrow new Error('Subscriber output validation failed');\n\t\t\t}\n\n\t\t\treturn validationResult.value;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tget handler(): AWSLambdaHandler {\n\t\tconst handler = this._handler.bind(this);\n\n\t\t// Apply middleware in order\n\t\treturn middy(handler)\n\t\t\t.use(this.loggerMiddleware())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.parseEvents()) as unknown as AWSLambdaHandler;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { publishConstructEvents } from "./publisher-Bw4770Hi.mjs";
|
|
2
|
-
import { Endpoint, ResponseBuilder } from "./Endpoint-
|
|
2
|
+
import { Endpoint, ResponseBuilder } from "./Endpoint-BbdNmtlM.mjs";
|
|
3
3
|
import { createAuditContext, executeWithAuditTransaction } from "./processAudits-Dj8UGqcW.mjs";
|
|
4
4
|
import { withRlsContext } from "@geekmidas/db/rls";
|
|
5
|
+
import middy from "@middy/core";
|
|
5
6
|
import set from "lodash.set";
|
|
6
7
|
import { UnauthorizedError, UnprocessableEntityError, wrapError } from "@geekmidas/errors";
|
|
7
|
-
import
|
|
8
|
-
import { ServiceDiscovery } from "@geekmidas/services";
|
|
8
|
+
import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
|
|
9
9
|
|
|
10
10
|
//#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
|
|
11
11
|
var AmazonApiGatewayEndpoint = class {
|
|
12
|
-
|
|
12
|
+
options;
|
|
13
|
+
constructor(envParser, endpoint, options = {}) {
|
|
13
14
|
this.envParser = envParser;
|
|
14
15
|
this.endpoint = endpoint;
|
|
16
|
+
this.options = options;
|
|
15
17
|
}
|
|
16
18
|
error() {
|
|
17
19
|
return { onError: (req) => {
|
|
@@ -53,8 +55,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
53
55
|
}
|
|
54
56
|
services() {
|
|
55
57
|
return { before: async (req) => {
|
|
56
|
-
const
|
|
57
|
-
const serviceDiscovery = ServiceDiscovery.getInstance(
|
|
58
|
+
const _logger = req.event.logger;
|
|
59
|
+
const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
|
|
58
60
|
const services = await serviceDiscovery.register(this.endpoint.services);
|
|
59
61
|
req.event.services = services;
|
|
60
62
|
} };
|
|
@@ -82,9 +84,9 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
82
84
|
database() {
|
|
83
85
|
return { before: async (req) => {
|
|
84
86
|
if (!this.endpoint.databaseService) return;
|
|
85
|
-
const
|
|
86
|
-
const serviceDiscovery = ServiceDiscovery.getInstance(
|
|
87
|
-
const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService
|
|
87
|
+
const _logger = req.event.logger;
|
|
88
|
+
const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
|
|
89
|
+
const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
88
90
|
req.event.db = db;
|
|
89
91
|
} };
|
|
90
92
|
}
|
|
@@ -117,7 +119,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
117
119
|
async _handler(event) {
|
|
118
120
|
const input = this.endpoint.refineInput(event);
|
|
119
121
|
const logger = event.logger;
|
|
120
|
-
const serviceDiscovery = ServiceDiscovery.getInstance(
|
|
122
|
+
const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
|
|
121
123
|
const auditContext = await createAuditContext(this.endpoint, serviceDiscovery, logger, {
|
|
122
124
|
session: event.session,
|
|
123
125
|
header: event.header,
|
|
@@ -128,7 +130,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
128
130
|
if (!auditContext && audits?.length) logger.warn("No auditor storage service available");
|
|
129
131
|
const rawDb = event.db;
|
|
130
132
|
const rlsActive = this.endpoint.rlsConfig && !this.endpoint.rlsBypass && rawDb !== void 0;
|
|
131
|
-
const rlsContext = rlsActive ? await this.endpoint.rlsConfig
|
|
133
|
+
const rlsContext = rlsActive ? await this.endpoint.rlsConfig?.extractor({
|
|
132
134
|
services: event.services,
|
|
133
135
|
session: event.session,
|
|
134
136
|
header: event.header,
|
|
@@ -163,7 +165,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
163
165
|
responseBuilder
|
|
164
166
|
};
|
|
165
167
|
};
|
|
166
|
-
if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig
|
|
168
|
+
if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
|
|
167
169
|
return executeHandler(baseDb);
|
|
168
170
|
}, async (result$1, auditor) => {
|
|
169
171
|
if (!audits?.length) return;
|
|
@@ -195,12 +197,52 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
195
197
|
}
|
|
196
198
|
return lambdaResponse;
|
|
197
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Convert Telemetry interface to Middy middleware
|
|
202
|
+
*/
|
|
203
|
+
telemetry() {
|
|
204
|
+
if (!this.options.telemetry) return null;
|
|
205
|
+
const telemetry = this.options.telemetry;
|
|
206
|
+
let ctx;
|
|
207
|
+
return {
|
|
208
|
+
before: (request) => {
|
|
209
|
+
ctx = telemetry.onRequestStart({
|
|
210
|
+
event: request.event,
|
|
211
|
+
context: request.context
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
after: (request) => {
|
|
215
|
+
if (ctx) telemetry.onRequestEnd(ctx, {
|
|
216
|
+
statusCode: request.response?.statusCode ?? 200,
|
|
217
|
+
body: request.response?.body,
|
|
218
|
+
headers: request.response?.headers
|
|
219
|
+
});
|
|
220
|
+
},
|
|
221
|
+
onError: (request) => {
|
|
222
|
+
if (ctx && request.error) telemetry.onRequestError(ctx, request.error instanceof Error ? request.error : new Error(String(request.error)));
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
198
226
|
get handler() {
|
|
199
227
|
const handler = this._handler.bind(this);
|
|
200
|
-
|
|
228
|
+
let chain = middy(handler).use(this.logger()).use(this.error()).use(this.services()).use(this.input()).use(this.database()).use(this.session()).use(this.authorize()).use(this.events());
|
|
229
|
+
const telemetryMiddleware = this.telemetry();
|
|
230
|
+
if (telemetryMiddleware) chain = chain.use(telemetryMiddleware);
|
|
231
|
+
if (this.options.telescope?.middleware) chain = chain.use(this.options.telescope.middleware);
|
|
232
|
+
const wrappedHandler = async (event, context) => {
|
|
233
|
+
const startTime = Date.now();
|
|
234
|
+
const requestId = context.awsRequestId;
|
|
235
|
+
const logger = this.endpoint.logger.child({ requestId });
|
|
236
|
+
return runWithRequestContext({
|
|
237
|
+
logger,
|
|
238
|
+
requestId,
|
|
239
|
+
startTime
|
|
240
|
+
}, () => chain(event, context));
|
|
241
|
+
};
|
|
242
|
+
return wrappedHandler;
|
|
201
243
|
}
|
|
202
244
|
};
|
|
203
245
|
|
|
204
246
|
//#endregion
|
|
205
247
|
export { AmazonApiGatewayEndpoint };
|
|
206
|
-
//# sourceMappingURL=AmazonApiGatewayEndpointAdaptor-
|
|
248
|
+
//# sourceMappingURL=AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs","names":["envParser: 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>","options: AmazonApiGatewayEndpointOptions","event: Event<TEvent, TInput, TServices, TLogger, TSession>","db: any","metadata","output","trx: any","result","lambdaResponse: AmazonApiGatewayEndpointHandlerResponse","setCookieHeaders: string[]","ctx: any","event: TEvent","context: Context"],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":["import type { AuditableAction, AuditStorage } from '@geekmidas/audit';\nimport { withRlsContext } from '@geekmidas/db/rls';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { Logger } from '@geekmidas/logger';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n\tAPIGatewayProxyEvent,\n\tAPIGatewayProxyEventV2,\n\tContext,\n} from 'aws-lambda';\nimport set from 'lodash.set';\nimport type { Telemetry } from '../telemetry';\nimport type { HttpMethod } from '../types';\nimport { Endpoint, type EndpointSchemas, ResponseBuilder } from './Endpoint';\n\n/**\n * Telescope integration for request recording.\n * Uses Middy middleware pattern for compatibility with existing telescope package.\n */\nexport interface TelescopeIntegration {\n\tmiddleware: MiddlewareObj<any, any, Error, Context>;\n}\n\nimport {\n\tUnauthorizedError,\n\tUnprocessableEntityError,\n\twrapError,\n} from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\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 { publishConstructEvents } from '../publisher';\nimport type { MappedAudit } from './audit';\nimport type { CookieFn, HeaderFn } from './Endpoint';\nimport {\n\tcreateAuditContext,\n\texecuteWithAuditTransaction,\n} from './processAudits';\n\n// Helper function to publish events\n\n/**\n * Options for Amazon API Gateway endpoint adaptors\n */\nexport interface AmazonApiGatewayEndpointOptions {\n\t/**\n\t * Telescope integration for request recording and monitoring.\n\t *\n\t * @example\n\t * ```typescript\n\t * import { telescopeMiddleware } from '@geekmidas/telescope/lambda';\n\t *\n\t * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {\n\t * telescope: { middleware: telescopeMiddleware(telescope) },\n\t * });\n\t * ```\n\t */\n\ttelescope?: TelescopeIntegration;\n\n\t/**\n\t * Telemetry integration for distributed tracing.\n\t * Works with any OpenTelemetry-compatible backend.\n\t *\n\t * @example\n\t * ```typescript\n\t * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';\n\t *\n\t * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {\n\t * telemetry: new OTelTelemetry(),\n\t * });\n\t * ```\n\t */\n\ttelemetry?: Telemetry;\n}\n\nexport abstract class AmazonApiGatewayEndpoint<\n\tTHandler extends\n\t\t| AmazonApiGatewayV1EndpointHandler\n\t\t| AmazonApiGatewayV2EndpointHandler,\n\tTEvent extends HandlerEvent<THandler>,\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> {\n\tprotected options: AmazonApiGatewayEndpointOptions;\n\n\tconstructor(\n\t\tprotected envParser: EnvironmentParser<{}>,\n\t\tprotected 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>,\n\t\toptions: AmazonApiGatewayEndpointOptions = {},\n\t) {\n\t\tthis.options = options;\n\t}\n\n\tprivate error(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\t(req.event.logger || this.endpoint.logger).error(\n\t\t\t\t\treq.error || {},\n\t\t\t\t\t'Error processing request',\n\t\t\t\t);\n\t\t\t\tconst wrappedError = wrapError(req.error);\n\n\t\t\t\t// Set the response with the proper status code from the HttpError\n\t\t\t\treq.response = {\n\t\t\t\t\tstatusCode: wrappedError.statusCode,\n\t\t\t\t\tbody: wrappedError.body,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\tabstract getInput(e: TEvent): GetInputResponse;\n\n\tprivate input(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { body, query, params } = this.getInput(req.event);\n\t\t\t\t\tconst headers = req.event.headers as Record<string, string>;\n\t\t\t\t\tconst header = Endpoint.createHeaders(headers);\n\t\t\t\t\tconst cookie = Endpoint.createCookies(headers.cookie);\n\n\t\t\t\t\tset(req.event, 'body', await this.endpoint.parseInput(body, 'body'));\n\n\t\t\t\t\tset(\n\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t'query',\n\t\t\t\t\t\tawait this.endpoint.parseInput(query, 'query'),\n\t\t\t\t\t);\n\t\t\t\t\tset(\n\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t'params',\n\t\t\t\t\t\tawait this.endpoint.parseInput(params, 'params'),\n\t\t\t\t\t);\n\t\t\t\t\tset(req.event, 'header', header);\n\t\t\t\t\tset(req.event, 'cookie', cookie);\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Convert validation errors to 422 Unprocessable Entity\n\t\t\t\t\tif (error && typeof error === 'object' && Array.isArray(error)) {\n\t\t\t\t\t\tthrow new UnprocessableEntityError('Validation failed', error);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tabstract getLoggerContext(data: TEvent, context: Context): LoggerContext;\n\n\tprivate logger(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\treq.event.logger = this.endpoint.logger.child({\n\t\t\t\t\troute: this.endpoint.route,\n\t\t\t\t\thost: req.event.headers?.host,\n\t\t\t\t\tmethod: this.endpoint.method,\n\t\t\t\t\t...this.getLoggerContext(req.event, req.context),\n\t\t\t\t}) as TLogger;\n\t\t\t},\n\t\t};\n\t}\n\tprivate services(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst _logger = req.event.logger as TLogger;\n\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t>(this.envParser);\n\n\t\t\t\tconst services = await serviceDiscovery.register(\n\t\t\t\t\tthis.endpoint.services,\n\t\t\t\t);\n\n\t\t\t\treq.event.services = services;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate authorize(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst logger = req.event.logger as TLogger;\n\t\t\t\tconst services = req.event.services;\n\t\t\t\tconst header = req.event.header;\n\t\t\t\tconst cookie = req.event.cookie;\n\t\t\t\tconst session = req.event.session as TSession;\n\n\t\t\t\tconst isAuthorized = await this.endpoint.authorize({\n\t\t\t\t\theader,\n\t\t\t\t\tcookie,\n\t\t\t\t\tservices,\n\t\t\t\t\tlogger,\n\t\t\t\t\tsession,\n\t\t\t\t});\n\n\t\t\t\tif (!isAuthorized) {\n\t\t\t\t\tlogger.warn('Unauthorized access attempt');\n\t\t\t\t\tthrow new UnauthorizedError(\n\t\t\t\t\t\t'Unauthorized access to the endpoint',\n\t\t\t\t\t\t'You do not have permission to access this resource.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tif (!this.endpoint.databaseService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst _logger = req.event.logger as TLogger;\n\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t>(this.envParser);\n\n\t\t\t\tconst db = await serviceDiscovery\n\t\t\t\t\t.register([this.endpoint.databaseService])\n\t\t\t\t\t.then(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\ts[this.endpoint.databaseService?.serviceName as keyof typeof s],\n\t\t\t\t\t);\n\n\t\t\t\t(req.event as any).db = db;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate session(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst logger = req.event.logger as TLogger;\n\t\t\t\tconst services = req.event.services;\n\t\t\t\tconst db = (req.event as any).db;\n\t\t\t\treq.event.session = (await this.endpoint.getSession({\n\t\t\t\t\tlogger,\n\t\t\t\t\tservices,\n\t\t\t\t\theader: req.event.header,\n\t\t\t\t\tcookie: req.event.cookie,\n\t\t\t\t\t...(db !== undefined && { db }),\n\t\t\t\t} as any)) as TSession;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst event = req.event;\n\t\t\t\tconst response = (event as any)\n\t\t\t\t\t.__response as InferStandardSchema<TOutSchema>;\n\t\t\t\tconst statusCode = req.response?.statusCode ?? this.endpoint.status;\n\n\t\t\t\t// Only publish events on successful responses (2xx status codes)\n\t\t\t\t// Note: Audits are processed inside the handler's transaction\n\t\t\t\tif (Endpoint.isSuccessStatus(statusCode)) {\n\t\t\t\t\tconst logger = event.logger as TLogger;\n\t\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\t\tServiceRecord<TServices>,\n\t\t\t\t\t\tTLogger\n\t\t\t\t\t>(logger, this.envParser);\n\n\t\t\t\t\t// Publish events\n\t\t\t\t\tawait publishConstructEvents(\n\t\t\t\t\t\tthis.endpoint,\n\t\t\t\t\t\tresponse,\n\t\t\t\t\t\tserviceDiscovery,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler(\n\t\tevent: Event<TEvent, TInput, TServices, TLogger, TSession>,\n\t) {\n\t\tconst input = this.endpoint.refineInput(event);\n\t\tconst logger = event.logger as TLogger;\n\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\tServiceRecord<TServices>\n\t\t>(this.envParser);\n\n\t\t// Create audit context if audit storage is configured\n\t\tconst auditContext = await createAuditContext(\n\t\t\tthis.endpoint,\n\t\t\tserviceDiscovery,\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\tsession: event.session,\n\t\t\t\theader: event.header,\n\t\t\t\tcookie: event.cookie,\n\t\t\t\tservices: event.services as Record<string, unknown>,\n\t\t\t},\n\t\t);\n\n\t\t// Warn if declarative audits are configured but no audit storage\n\t\tconst audits = this.endpoint.audits as MappedAudit<\n\t\t\tTAuditAction,\n\t\t\tTOutSchema\n\t\t>[];\n\t\tif (!auditContext && audits?.length) {\n\t\t\tlogger.warn('No auditor storage service available');\n\t\t}\n\n\t\t// Get pre-resolved database from middleware\n\t\tconst rawDb = (event as any).db;\n\n\t\t// Extract RLS context if configured and not bypassed\n\t\tconst rlsActive =\n\t\t\tthis.endpoint.rlsConfig &&\n\t\t\t!this.endpoint.rlsBypass &&\n\t\t\trawDb !== undefined;\n\t\tconst rlsContext = rlsActive\n\t\t\t? await this.endpoint.rlsConfig?.extractor({\n\t\t\t\t\tservices: event.services as ServiceRecord<TServices>,\n\t\t\t\t\tsession: event.session,\n\t\t\t\t\theader: event.header,\n\t\t\t\t\tcookie: event.cookie,\n\t\t\t\t\tlogger,\n\t\t\t\t})\n\t\t\t: undefined;\n\n\t\t// Execute handler with automatic audit transaction support\n\t\tconst result = await executeWithAuditTransaction(\n\t\t\tauditContext,\n\t\t\tasync (auditor) => {\n\t\t\t\t// Use audit transaction as db only if the storage uses the same database service\n\t\t\t\tconst sameDatabase =\n\t\t\t\t\tauditContext?.storage?.databaseServiceName &&\n\t\t\t\t\tauditContext.storage.databaseServiceName ===\n\t\t\t\t\t\tthis.endpoint.databaseService?.serviceName;\n\t\t\t\tconst baseDb = sameDatabase\n\t\t\t\t\t? (auditor?.getTransaction?.() ?? rawDb)\n\t\t\t\t\t: rawDb;\n\n\t\t\t\t// Helper to execute handler with given db\n\t\t\t\tconst executeHandler = async (db: any) => {\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\theader: event.header,\n\t\t\t\t\t\t\tcookie: event.cookie,\n\t\t\t\t\t\t\tlogger: event.logger,\n\t\t\t\t\t\t\tservices: event.services,\n\t\t\t\t\t\t\tsession: event.session,\n\t\t\t\t\t\t\tauditor,\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\t...input,\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 = this.endpoint.outputSchema\n\t\t\t\t\t\t? await this.endpoint.parseOutput(data)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\treturn { output, metadata, responseBuilder };\n\t\t\t\t};\n\n\t\t\t\t// If RLS is active, wrap handler with RLS context\n\t\t\t\tif (rlsActive && rlsContext && baseDb) {\n\t\t\t\t\treturn withRlsContext(\n\t\t\t\t\t\tbaseDb,\n\t\t\t\t\t\trlsContext,\n\t\t\t\t\t\tasync (trx: any) => executeHandler(trx),\n\t\t\t\t\t\t{ prefix: this.endpoint.rlsConfig?.prefix },\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn executeHandler(baseDb);\n\t\t\t},\n\t\t\t// Process declarative audits after handler (inside transaction)\n\t\t\tasync (result, auditor) => {\n\t\t\t\tif (!audits?.length) return;\n\n\t\t\t\tfor (const audit of audits) {\n\t\t\t\t\tif (audit.when && !audit.when(result.output as any)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst payload = audit.payload(result.output as any);\n\t\t\t\t\tconst entityId = audit.entityId?.(result.output as any);\n\t\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\t\ttable: audit.table,\n\t\t\t\t\t\tentityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Pass rawDb so storage can reuse existing transactions\n\t\t\t{ db: rawDb },\n\t\t);\n\n\t\tconst { output, metadata } = result;\n\t\tconst body = output !== undefined ? JSON.stringify(output) : undefined;\n\n\t\t// Store response for middleware access\n\t\t(event as any).__response = output;\n\n\t\t// Build response with metadata\n\t\tconst lambdaResponse: AmazonApiGatewayEndpointHandlerResponse = {\n\t\t\tstatusCode: metadata.status ?? this.endpoint.status,\n\t\t\tbody,\n\t\t};\n\n\t\t// Add custom headers\n\t\tif (metadata.headers && Object.keys(metadata.headers).length > 0) {\n\t\t\tlambdaResponse.headers = { ...metadata.headers };\n\t\t}\n\n\t\t// Format cookies as Set-Cookie headers\n\t\tif (metadata.cookies && metadata.cookies.size > 0) {\n\t\t\tconst setCookieHeaders: string[] = [];\n\t\t\tfor (const [name, { value, options }] of metadata.cookies) {\n\t\t\t\tsetCookieHeaders.push(\n\t\t\t\t\tEndpoint.formatCookieHeader(name, value, options),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (setCookieHeaders.length > 0) {\n\t\t\t\tlambdaResponse.multiValueHeaders = {\n\t\t\t\t\t...lambdaResponse.multiValueHeaders,\n\t\t\t\t\t'Set-Cookie': setCookieHeaders,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn lambdaResponse;\n\t}\n\n\t/**\n\t * Convert Telemetry interface to Middy middleware\n\t */\n\tprivate telemetry(): Middleware<TEvent, TInput, TServices, TLogger> | null {\n\t\tif (!this.options.telemetry) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst telemetry = this.options.telemetry;\n\t\tlet ctx: any;\n\n\t\treturn {\n\t\t\tbefore: (request) => {\n\t\t\t\tctx = telemetry.onRequestStart({\n\t\t\t\t\tevent: request.event,\n\t\t\t\t\tcontext: request.context,\n\t\t\t\t});\n\t\t\t},\n\t\t\tafter: (request) => {\n\t\t\t\tif (ctx) {\n\t\t\t\t\ttelemetry.onRequestEnd(ctx, {\n\t\t\t\t\t\tstatusCode: request.response?.statusCode ?? 200,\n\t\t\t\t\t\tbody: request.response?.body,\n\t\t\t\t\t\theaders: request.response?.headers,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (request) => {\n\t\t\t\tif (ctx && request.error) {\n\t\t\t\t\ttelemetry.onRequestError(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\trequest.error instanceof Error\n\t\t\t\t\t\t\t? request.error\n\t\t\t\t\t\t\t: new Error(String(request.error)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tget handler() {\n\t\tconst handler = this._handler.bind(this);\n\t\tlet chain = middy(handler)\n\t\t\t.use(this.logger())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.input())\n\t\t\t.use(this.database())\n\t\t\t.use(this.session())\n\t\t\t.use(this.authorize())\n\t\t\t.use(this.events());\n\n\t\t// Add telemetry middleware if configured (runs early for span creation)\n\t\tconst telemetryMiddleware = this.telemetry();\n\t\tif (telemetryMiddleware) {\n\t\t\tchain = chain.use(telemetryMiddleware);\n\t\t}\n\n\t\t// Add Telescope middleware if configured (runs first/last in chain)\n\t\tif (this.options.telescope?.middleware) {\n\t\t\tchain = chain.use(this.options.telescope.middleware);\n\t\t}\n\n\t\t// Wrap entire Middy chain in request context for service access\n\t\tconst wrappedHandler = async (event: TEvent, context: Context) => {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst requestId = context.awsRequestId;\n\t\t\tconst logger = this.endpoint.logger.child({ requestId }) as TLogger;\n\n\t\t\treturn runWithRequestContext({ logger, requestId, startTime }, () =>\n\t\t\t\tchain(event, context),\n\t\t\t);\n\t\t};\n\n\t\treturn wrappedHandler as unknown as THandler;\n\t}\n}\n\nexport type Event<\n\tTEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n\tsession: TSession;\n} & TEvent &\n\tInferComposableStandardSchema<TInput>;\n\ntype Middleware<\n\tTEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = MiddlewareObj<Event<TEvent, TInput, TServices, TLogger, TSession>>;\n\nexport type AmazonApiGatewayEndpointHandlerResponse = {\n\tstatusCode: number;\n\tbody: string | undefined;\n\theaders?: Record<string, string>;\n\tmultiValueHeaders?: Record<string, string[]>;\n};\n\nexport type LoggerContext = {\n\tfn: {\n\t\tname: string;\n\t\tversion: string;\n\t};\n\treq: {\n\t\tid: string | undefined;\n\t\tawsRequestId: string;\n\t\tpath: string;\n\t\tip: string | undefined;\n\t\tuserAgent: string | undefined;\n\t};\n};\n\nexport type GetInputResponse = {\n\tbody: any;\n\tquery: any;\n\tparams: any;\n};\n\nexport type AmazonApiGatewayV1EndpointHandler = (\n\tevent: APIGatewayProxyEvent,\n\tcontext: Context,\n) => Promise<AmazonApiGatewayEndpointHandlerResponse>;\n\nexport type AmazonApiGatewayV2EndpointHandler = (\n\tevent: APIGatewayProxyEventV2,\n\tcontext: Context,\n) => Promise<AmazonApiGatewayEndpointHandlerResponse>;\n\nexport type HandlerEvent<T extends Function> = T extends (\n\tevent: infer E,\n\tcontext: Context,\n) => any\n\t? E\n\t: never;\n"],"mappings":"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"}
|