@geekmidas/constructs 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +448 -0
- package/dist/AWSLambdaFunction-B-Oxr8qt.d.cts +30 -0
- package/dist/{AWSLambdaFunction-DcI_77u8.cjs → AWSLambdaFunction-C-fuCLA3.cjs} +28 -5
- package/dist/AWSLambdaFunction-C-fuCLA3.cjs.map +1 -0
- package/dist/AWSLambdaFunction-CAm9r5ZX.d.mts +30 -0
- package/dist/{AWSLambdaFunction-BTSGYZSx.mjs → AWSLambdaFunction-H65WfXLt.mjs} +28 -5
- package/dist/AWSLambdaFunction-H65WfXLt.mjs.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-mLOpS63x.d.mts → AWSLambdaSubscriberAdaptor-Cknp_nn1.d.cts} +4 -4
- package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs → AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs.map → AWSLambdaSubscriberAdaptor-CyFh7MN8.mjs.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-DX5NFdWf.d.cts → AWSLambdaSubscriberAdaptor-DpHzp-AM.d.mts} +4 -4
- package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs → AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs.map → AWSLambdaSubscriberAdaptor-Dum5bkw3.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-CATWBIJo.d.mts → AmazonApiGatewayEndpointAdaptor-4hPy5vty.d.mts} +9 -8
- package/dist/{AmazonApiGatewayEndpointAdaptor-vi0D3dWg.mjs → AmazonApiGatewayEndpointAdaptor-C6Jk5HSy.mjs} +51 -16
- package/dist/AmazonApiGatewayEndpointAdaptor-C6Jk5HSy.mjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-BTqB3c1_.cjs → AmazonApiGatewayEndpointAdaptor-CI9L7Ucn.cjs} +51 -16
- package/dist/AmazonApiGatewayEndpointAdaptor-CI9L7Ucn.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-BwtDtS-i.d.cts → AmazonApiGatewayEndpointAdaptor-ro0RMLzr.d.cts} +8 -7
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-D2_u_zR6.mjs → AmazonApiGatewayV1EndpointAdaptor-BMy8DdNJ.mjs} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-D2_u_zR6.mjs.map → AmazonApiGatewayV1EndpointAdaptor-BMy8DdNJ.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-B1AVk2MM.d.cts → AmazonApiGatewayV1EndpointAdaptor-BWJWKqQT.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-nwrtG5L9.cjs → AmazonApiGatewayV1EndpointAdaptor-DYL1bCBS.cjs} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-nwrtG5L9.cjs.map → AmazonApiGatewayV1EndpointAdaptor-DYL1bCBS.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-2Rd0LLz4.d.mts → AmazonApiGatewayV1EndpointAdaptor-hyR-WwyP.d.mts} +4 -4
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DoWAJ9oN.mjs → AmazonApiGatewayV2EndpointAdaptor-BU5wQMOe.mjs} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DoWAJ9oN.mjs.map → AmazonApiGatewayV2EndpointAdaptor-BU5wQMOe.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-FSIdXYV6.cjs → AmazonApiGatewayV2EndpointAdaptor-CPLCMeaN.cjs} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-FSIdXYV6.cjs.map → AmazonApiGatewayV2EndpointAdaptor-CPLCMeaN.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DmY_QfjO.d.cts → AmazonApiGatewayV2EndpointAdaptor-D1Irdggp.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-cBDfwdBx.d.mts → AmazonApiGatewayV2EndpointAdaptor-DX3SuI5S.d.mts} +4 -4
- package/dist/{Authorizer-Bbk9ziuG.d.mts → Authorizer-BTmly8ps.d.cts} +1 -1
- package/dist/{Authorizer-iXsSB600.d.cts → Authorizer-pmPvIVgv.d.mts} +1 -1
- package/dist/{BaseFunctionBuilder-DSqF1r3a.mjs → BaseFunctionBuilder-B5gkW0Kt.mjs} +16 -2
- package/dist/BaseFunctionBuilder-B5gkW0Kt.mjs.map +1 -0
- package/dist/{BaseFunctionBuilder-bTDKP7bd.cjs → BaseFunctionBuilder-C5Se7pdL.cjs} +16 -2
- package/dist/BaseFunctionBuilder-C5Se7pdL.cjs.map +1 -0
- package/dist/{BaseFunctionBuilder-DOcm1heZ.d.mts → BaseFunctionBuilder-CbDnPZpD.d.mts} +13 -4
- package/dist/{BaseFunctionBuilder-hWNVKXQB.d.cts → BaseFunctionBuilder-DUZMbEr3.d.cts} +13 -4
- package/dist/{Construct-XCGKof_O.cjs → Construct-BYSPikVm.cjs} +8 -3
- package/dist/Construct-BYSPikVm.cjs.map +1 -0
- package/dist/{Construct-rZQg2yus.mjs → Construct-LWeB1rSQ.mjs} +8 -3
- package/dist/Construct-LWeB1rSQ.mjs.map +1 -0
- package/dist/{Construct-iDmbkZ3o.d.mts → Construct-ZPqE0vhn.d.mts} +5 -3
- package/dist/{Construct-zc8BkRSp.d.cts → Construct-dI_rgdSp.d.cts} +5 -3
- package/dist/Construct.cjs +1 -1
- package/dist/Construct.d.cts +1 -1
- package/dist/Construct.d.mts +1 -1
- package/dist/Construct.mjs +1 -1
- package/dist/{Cron-CYIhd0VE.cjs → Cron-Bi3QOge_.cjs} +5 -5
- package/dist/Cron-Bi3QOge_.cjs.map +1 -0
- package/dist/{Cron-D5HGEt6g.d.mts → Cron-COdfP0Jd.d.cts} +5 -5
- package/dist/{Cron-DbJNPTbP.d.cts → Cron-D8cn_ahj.d.mts} +5 -5
- package/dist/{Cron-BnO1uXhh.mjs → Cron-Dy_HW2Vv.mjs} +5 -5
- package/dist/Cron-Dy_HW2Vv.mjs.map +1 -0
- package/dist/{CronBuilder-BxKwHCdJ.mjs → CronBuilder-Bl3A2Zp4.mjs} +15 -6
- package/dist/CronBuilder-Bl3A2Zp4.mjs.map +1 -0
- package/dist/{CronBuilder-D-546XtP.d.cts → CronBuilder-DntF6H3A.d.cts} +17 -12
- package/dist/{CronBuilder-vRiZb1_N.d.mts → CronBuilder-DoMnSs_0.d.mts} +17 -12
- package/dist/{CronBuilder-D_3AiPFO.cjs → CronBuilder-Dv_w7Yri.cjs} +15 -6
- package/dist/CronBuilder-Dv_w7Yri.cjs.map +1 -0
- package/dist/{Endpoint-DqZkc6ft.d.mts → Endpoint-Bbs_sFvg.d.mts} +120 -23
- package/dist/{Endpoint-BpTSQn7W.d.cts → Endpoint-Bu8Phz6y.d.cts} +120 -23
- package/dist/{Endpoint-BdIGWw1H.cjs → Endpoint-DDpF7NO1.cjs} +22 -10
- package/dist/Endpoint-DDpF7NO1.cjs.map +1 -0
- package/dist/{Endpoint-ChzcIFdV.mjs → Endpoint-S6Yh2_PN.mjs} +22 -10
- package/dist/Endpoint-S6Yh2_PN.mjs.map +1 -0
- package/dist/EndpointBuilder-CPxmF_w7.d.cts +103 -0
- package/dist/EndpointBuilder-Csfyfjd7.d.mts +103 -0
- package/dist/{EndpointBuilder-dmMiNRm9.cjs → EndpointBuilder-DpGmObMb.cjs} +68 -5
- package/dist/EndpointBuilder-DpGmObMb.cjs.map +1 -0
- package/dist/{EndpointBuilder-yo40Qkf_.mjs → EndpointBuilder-aE2E6WTx.mjs} +68 -5
- package/dist/EndpointBuilder-aE2E6WTx.mjs.map +1 -0
- package/dist/{EndpointFactory-D_mmO7Gu.d.mts → EndpointFactory-Bf9JSWzI.d.cts} +12 -11
- package/dist/{EndpointFactory-CNbcr8u_.cjs → EndpointFactory-BfH6mjJ3.cjs} +3 -3
- package/dist/EndpointFactory-BfH6mjJ3.cjs.map +1 -0
- package/dist/{EndpointFactory-JPhk0Qom.d.cts → EndpointFactory-Cgk1R0oO.d.mts} +12 -11
- package/dist/{EndpointFactory-LD3upVQK.mjs → EndpointFactory-D4leYk1N.mjs} +3 -3
- package/dist/EndpointFactory-D4leYk1N.mjs.map +1 -0
- package/dist/{Function-DDaSfL_E.cjs → Function-DagDbeXo.cjs} +7 -6
- package/dist/Function-DagDbeXo.cjs.map +1 -0
- package/dist/{Function-Cl9fiR3a.mjs → Function-DfKsM5Kx.mjs} +7 -6
- package/dist/Function-DfKsM5Kx.mjs.map +1 -0
- package/dist/{Function-C-5_23Wi.d.mts → Function-V9M9UVHp.d.mts} +25 -7
- package/dist/{Function-CW-WcZTu.d.cts → Function-VI1TB3Mh.d.cts} +25 -7
- package/dist/{FunctionBuilder-vW12WFOw.mjs → FunctionBuilder-CVT7bG2o.mjs} +27 -6
- package/dist/FunctionBuilder-CVT7bG2o.mjs.map +1 -0
- package/dist/FunctionBuilder-CjVEFTYC.d.cts +38 -0
- package/dist/FunctionBuilder-D1ofSeMd.d.mts +38 -0
- package/dist/{FunctionBuilder-LQuBiqRc.cjs → FunctionBuilder-DXvG_XD-.cjs} +27 -6
- package/dist/FunctionBuilder-DXvG_XD-.cjs.map +1 -0
- package/dist/FunctionExecutionWrapper-Bubnr0zA.mjs +101 -0
- package/dist/FunctionExecutionWrapper-Bubnr0zA.mjs.map +1 -0
- package/dist/FunctionExecutionWrapper-CwtwYozd.d.cts +48 -0
- package/dist/FunctionExecutionWrapper-DkNycmOh.cjs +107 -0
- package/dist/FunctionExecutionWrapper-DkNycmOh.cjs.map +1 -0
- package/dist/FunctionExecutionWrapper-rhbIYT0Q.d.mts +48 -0
- package/dist/{HonoEndpointAdaptor-BVQtyvna.d.cts → HonoEndpointAdaptor-B34kNobH.d.cts} +8 -7
- package/dist/{HonoEndpointAdaptor-W-disJnm.d.mts → HonoEndpointAdaptor-BDpi32mH.d.mts} +9 -8
- package/dist/{HonoEndpointAdaptor-Bc61IS6Q.cjs → HonoEndpointAdaptor-CfLRHHFw.cjs} +55 -20
- package/dist/HonoEndpointAdaptor-CfLRHHFw.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-NR3h5gml.mjs → HonoEndpointAdaptor-DuyE06nH.mjs} +55 -20
- package/dist/HonoEndpointAdaptor-DuyE06nH.mjs.map +1 -0
- package/dist/{Subscriber-C2OPATI8.cjs → Subscriber-Bdh8rMSL.cjs} +2 -2
- package/dist/{Subscriber-C2OPATI8.cjs.map → Subscriber-Bdh8rMSL.cjs.map} +1 -1
- package/dist/{Subscriber-BVq3ST4C.d.cts → Subscriber-BhzqUzs-.d.cts} +2 -2
- package/dist/{Subscriber-BKftCzwT.mjs → Subscriber-CJOWwaw1.mjs} +2 -2
- package/dist/{Subscriber-BKftCzwT.mjs.map → Subscriber-CJOWwaw1.mjs.map} +1 -1
- package/dist/{Subscriber-BuHaqWo4.d.mts → Subscriber-s6yfjeOc.d.mts} +2 -2
- package/dist/{SubscriberBuilder-2asHtGbl.d.mts → SubscriberBuilder-BCVkp-ga.d.cts} +3 -3
- package/dist/{SubscriberBuilder-yDfpHPZE.mjs → SubscriberBuilder-BWQmiYd8.mjs} +2 -2
- package/dist/{SubscriberBuilder-yDfpHPZE.mjs.map → SubscriberBuilder-BWQmiYd8.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-yikoQ8ND.cjs → SubscriberBuilder-DieD_60p.cjs} +2 -2
- package/dist/{SubscriberBuilder-yikoQ8ND.cjs.map → SubscriberBuilder-DieD_60p.cjs.map} +1 -1
- package/dist/{SubscriberBuilder-CHIRyNjy.d.cts → SubscriberBuilder-aCua5_wA.d.mts} +3 -3
- package/dist/{TestEndpointAdaptor-DpmNXp7G.mjs → TestEndpointAdaptor-BEyZa0Yg.mjs} +51 -18
- package/dist/TestEndpointAdaptor-BEyZa0Yg.mjs.map +1 -0
- package/dist/{TestEndpointAdaptor-DA1D6l-U.cjs → TestEndpointAdaptor-C8425RJ0.cjs} +51 -18
- package/dist/TestEndpointAdaptor-C8425RJ0.cjs.map +1 -0
- package/dist/{TestEndpointAdaptor-BrE5Rs4U.d.cts → TestEndpointAdaptor-H5To8PH7.d.cts} +6 -5
- package/dist/{TestEndpointAdaptor-B10J-cI-.d.mts → TestEndpointAdaptor-jxn68ayg.d.mts} +7 -6
- package/dist/adaptors/aws.cjs +14 -13
- package/dist/adaptors/aws.d.cts +14 -14
- package/dist/adaptors/aws.d.mts +15 -15
- package/dist/adaptors/aws.mjs +14 -13
- package/dist/adaptors/hono.cjs +10 -9
- package/dist/adaptors/hono.d.cts +8 -8
- 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 +8 -8
- 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 +6 -6
- 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 +7 -7
- 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.d.cts +11 -11
- package/dist/crons/index.d.mts +8 -8
- package/dist/crons/index.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +8 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -8
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +8 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +10 -9
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +9 -9
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -10
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +10 -9
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +10 -9
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -9
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -10
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +10 -9
- package/dist/endpoints/Authorizer.d.cts +1 -1
- package/dist/endpoints/Authorizer.d.mts +1 -1
- package/dist/endpoints/Endpoint.cjs +6 -6
- package/dist/endpoints/Endpoint.d.cts +7 -7
- package/dist/endpoints/Endpoint.d.mts +8 -8
- package/dist/endpoints/Endpoint.mjs +6 -6
- package/dist/endpoints/EndpointBuilder.cjs +7 -7
- package/dist/endpoints/EndpointBuilder.d.cts +8 -8
- package/dist/endpoints/EndpointBuilder.d.mts +9 -9
- package/dist/endpoints/EndpointBuilder.mjs +7 -7
- package/dist/endpoints/EndpointFactory.cjs +8 -8
- package/dist/endpoints/EndpointFactory.d.cts +9 -9
- package/dist/endpoints/EndpointFactory.d.mts +10 -10
- package/dist/endpoints/EndpointFactory.mjs +8 -8
- package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +8 -8
- 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 +8 -8
- package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
- package/dist/endpoints/audit.cjs +0 -0
- package/dist/endpoints/audit.d.cts +9 -0
- package/dist/endpoints/audit.d.mts +9 -0
- package/dist/endpoints/audit.mjs +0 -0
- package/dist/endpoints/helpers.cjs +7 -7
- package/dist/endpoints/helpers.d.cts +7 -7
- package/dist/endpoints/helpers.d.mts +8 -8
- package/dist/endpoints/helpers.mjs +7 -7
- package/dist/endpoints/index.cjs +8 -8
- package/dist/endpoints/index.cjs.map +1 -1
- package/dist/endpoints/index.d.cts +12 -12
- package/dist/endpoints/index.d.mts +13 -13
- package/dist/endpoints/index.mjs +8 -8
- package/dist/endpoints/index.mjs.map +1 -1
- package/dist/endpoints/parseHonoQuery.cjs +1 -1
- package/dist/endpoints/parseHonoQuery.mjs +1 -1
- package/dist/endpoints/parseQueryParams.cjs +1 -1
- package/dist/endpoints/parseQueryParams.mjs +1 -1
- package/dist/endpoints/processAudits.cjs +5 -0
- package/dist/endpoints/processAudits.d.cts +74 -0
- package/dist/endpoints/processAudits.d.mts +74 -0
- package/dist/endpoints/processAudits.mjs +3 -0
- package/dist/functions/AWSLambdaFunction.cjs +6 -6
- package/dist/functions/AWSLambdaFunction.d.cts +4 -4
- 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.cts +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 +2 -2
- 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 +4 -4
- 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 +3 -3
- package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
- package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
- package/dist/functions/TestFunctionAdaptor.cjs +38 -5
- package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
- package/dist/functions/TestFunctionAdaptor.d.cts +10 -7
- package/dist/functions/TestFunctionAdaptor.d.mts +10 -7
- package/dist/functions/TestFunctionAdaptor.mjs +38 -5
- package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
- package/dist/functions/index.cjs +5 -5
- package/dist/functions/index.d.cts +5 -5
- package/dist/functions/index.d.mts +5 -5
- package/dist/functions/index.mjs +5 -5
- package/dist/{functions-yg097ymU.cjs → functions-FCb-wWFC.cjs} +2 -2
- package/dist/{functions-yg097ymU.cjs.map → functions-FCb-wWFC.cjs.map} +1 -1
- package/dist/functions-JhRsNoAZ.mjs +8 -0
- package/dist/{functions-HCoZ4YKF.mjs.map → functions-JhRsNoAZ.mjs.map} +1 -1
- package/dist/{helpers-CHsIWAEx.mjs → helpers-2CLKTnRm.mjs} +2 -2
- package/dist/{helpers-CHsIWAEx.mjs.map → helpers-2CLKTnRm.mjs.map} +1 -1
- package/dist/{helpers-Cq6wjo7s.cjs → helpers-Khuhi_Qx.cjs} +2 -2
- package/dist/{helpers-Cq6wjo7s.cjs.map → helpers-Khuhi_Qx.cjs.map} +1 -1
- package/dist/index-Bomy7R9z.d.mts +10 -0
- package/dist/index-DRYfZHb3.d.cts +10 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{parseHonoQuery-DopC24vB.cjs → parseHonoQuery-CT8Cvin-.cjs} +1 -1
- package/dist/{parseHonoQuery-DopC24vB.cjs.map → parseHonoQuery-CT8Cvin-.cjs.map} +1 -1
- package/dist/{parseHonoQuery-znDKBhdE.mjs → parseHonoQuery-CwFKw2ua.mjs} +1 -1
- package/dist/{parseHonoQuery-znDKBhdE.mjs.map → parseHonoQuery-CwFKw2ua.mjs.map} +1 -1
- package/dist/{parseQueryParams-BJaRh3OB.mjs → parseQueryParams-CHINupbZ.mjs} +1 -1
- package/dist/{parseQueryParams-BJaRh3OB.mjs.map → parseQueryParams-CHINupbZ.mjs.map} +1 -1
- package/dist/{parseQueryParams-BzPop4I1.cjs → parseQueryParams-CwvXXwkW.cjs} +1 -1
- package/dist/{parseQueryParams-BzPop4I1.cjs.map → parseQueryParams-CwvXXwkW.cjs.map} +1 -1
- package/dist/processAudits-BFokHhCO.cjs +174 -0
- package/dist/processAudits-BFokHhCO.cjs.map +1 -0
- package/dist/processAudits-DfcB-X-4.mjs +156 -0
- package/dist/processAudits-DfcB-X-4.mjs.map +1 -0
- package/dist/publisher-Bw4770Hi.mjs.map +1 -1
- package/dist/publisher-lFQleddL.cjs.map +1 -1
- package/dist/publisher.d.cts +3 -2
- package/dist/publisher.d.mts +3 -2
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
- 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 +2 -2
- 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 +3 -3
- 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.d.cts +5 -5
- package/dist/subscribers/index.d.mts +5 -5
- package/dist/subscribers/index.mjs +3 -3
- package/dist/{types-CVq20-fE.d.mts → types-DKf0juBf.d.mts} +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +15 -11
- package/src/Construct.ts +8 -0
- package/src/crons/Cron.ts +12 -3
- package/src/crons/CronBuilder.ts +85 -13
- package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +2 -2
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +112 -20
- package/src/endpoints/Endpoint.ts +208 -39
- package/src/endpoints/EndpointBuilder.ts +291 -21
- package/src/endpoints/EndpointFactory.ts +5 -1
- package/src/endpoints/HonoEndpointAdaptor.ts +144 -33
- package/src/endpoints/TestEndpointAdaptor.ts +116 -21
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +8 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +29 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +626 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +9 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +757 -0
- package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +3 -1
- package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +1 -1
- package/src/endpoints/__tests__/Endpoint.spec.ts +19 -0
- package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +448 -0
- package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +51 -14
- package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +8 -8
- package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +11 -11
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +703 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +632 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +8 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1063 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +4 -0
- package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +25 -0
- package/src/endpoints/audit.ts +87 -0
- package/src/endpoints/index.ts +1 -0
- package/src/endpoints/processAudits.ts +348 -0
- package/src/functions/AWSLambdaFunction.ts +125 -12
- package/src/functions/BaseFunctionBuilder.ts +98 -7
- package/src/functions/Function.ts +83 -15
- package/src/functions/FunctionBuilder.ts +217 -17
- package/src/functions/FunctionExecutionWrapper.ts +133 -2
- package/src/functions/TestFunctionAdaptor.ts +94 -8
- package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +82 -0
- package/src/functions/__tests__/Function.audits.spec.ts +393 -0
- package/src/functions/__tests__/Function.spec.ts +76 -0
- package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +54 -7
- package/src/publisher.ts +12 -1
- package/dist/AWSLambdaFunction-BTSGYZSx.mjs.map +0 -1
- package/dist/AWSLambdaFunction-Bel0NFTl.d.mts +0 -27
- package/dist/AWSLambdaFunction-DcI_77u8.cjs.map +0 -1
- package/dist/AWSLambdaFunction-xyCenuD7.d.cts +0 -27
- package/dist/AmazonApiGatewayEndpointAdaptor-BTqB3c1_.cjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-vi0D3dWg.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-DSqF1r3a.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-bTDKP7bd.cjs.map +0 -1
- package/dist/Construct-XCGKof_O.cjs.map +0 -1
- package/dist/Construct-rZQg2yus.mjs.map +0 -1
- package/dist/Cron-BnO1uXhh.mjs.map +0 -1
- package/dist/Cron-CYIhd0VE.cjs.map +0 -1
- package/dist/CronBuilder-BxKwHCdJ.mjs.map +0 -1
- package/dist/CronBuilder-D_3AiPFO.cjs.map +0 -1
- package/dist/Endpoint-BdIGWw1H.cjs.map +0 -1
- package/dist/Endpoint-ChzcIFdV.mjs.map +0 -1
- package/dist/EndpointBuilder-Cx6pUcCn.d.mts +0 -55
- package/dist/EndpointBuilder-Xka8ULR1.d.cts +0 -55
- package/dist/EndpointBuilder-dmMiNRm9.cjs.map +0 -1
- package/dist/EndpointBuilder-yo40Qkf_.mjs.map +0 -1
- package/dist/EndpointFactory-CNbcr8u_.cjs.map +0 -1
- package/dist/EndpointFactory-LD3upVQK.mjs.map +0 -1
- package/dist/Function-Cl9fiR3a.mjs.map +0 -1
- package/dist/Function-DDaSfL_E.cjs.map +0 -1
- package/dist/FunctionBuilder-LQuBiqRc.cjs.map +0 -1
- package/dist/FunctionBuilder-fU1H7tFN.d.cts +0 -26
- package/dist/FunctionBuilder-udObIGV0.d.mts +0 -26
- package/dist/FunctionBuilder-vW12WFOw.mjs.map +0 -1
- package/dist/FunctionExecutionWrapper-BBIoHUt6.cjs +0 -42
- package/dist/FunctionExecutionWrapper-BBIoHUt6.cjs.map +0 -1
- package/dist/FunctionExecutionWrapper-DYBy9OP3.d.mts +0 -24
- package/dist/FunctionExecutionWrapper-Dtyhid1Q.mjs +0 -36
- package/dist/FunctionExecutionWrapper-Dtyhid1Q.mjs.map +0 -1
- package/dist/FunctionExecutionWrapper-Dwr2ZKzC.d.cts +0 -24
- package/dist/HonoEndpointAdaptor-Bc61IS6Q.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-NR3h5gml.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-DA1D6l-U.cjs.map +0 -1
- package/dist/TestEndpointAdaptor-DpmNXp7G.mjs.map +0 -1
- package/dist/functions-HCoZ4YKF.mjs +0 -8
- package/dist/index-RtxMVjUZ.d.mts +0 -9
- package/dist/index-fiIGH95t.d.cts +0 -9
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import type { AuditStorage, AuditableAction } from '@geekmidas/audit';
|
|
2
|
+
import type { EventPublisher } from '@geekmidas/events';
|
|
1
3
|
import type { Logger } from '@geekmidas/logger';
|
|
2
4
|
import { ConsoleLogger } from '@geekmidas/logger/console';
|
|
5
|
+
import type { ComposableStandardSchema } from '@geekmidas/schema';
|
|
3
6
|
import type { Service } from '@geekmidas/services';
|
|
4
7
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
5
8
|
import uniqBy from 'lodash.uniqby';
|
|
@@ -7,9 +10,6 @@ import { ConstructType } from '../Construct';
|
|
|
7
10
|
import { BaseFunctionBuilder } from './BaseFunctionBuilder';
|
|
8
11
|
import { Function, type FunctionHandler } from './Function';
|
|
9
12
|
|
|
10
|
-
import type { EventPublisher } from '@geekmidas/events';
|
|
11
|
-
import type { ComposableStandardSchema } from '@geekmidas/schema';
|
|
12
|
-
|
|
13
13
|
const DEFAULT_LOGGER = new ConsoleLogger() as any;
|
|
14
14
|
|
|
15
15
|
export class FunctionBuilder<
|
|
@@ -19,13 +19,25 @@ export class FunctionBuilder<
|
|
|
19
19
|
TLogger extends Logger = Logger,
|
|
20
20
|
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
21
21
|
TEventPublisherServiceName extends string = string,
|
|
22
|
+
TAuditStorage extends AuditStorage | undefined = undefined,
|
|
23
|
+
TAuditStorageServiceName extends string = string,
|
|
24
|
+
TDatabase = undefined,
|
|
25
|
+
TDatabaseServiceName extends string = string,
|
|
26
|
+
TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
|
|
27
|
+
string,
|
|
28
|
+
unknown
|
|
29
|
+
>,
|
|
22
30
|
> extends BaseFunctionBuilder<
|
|
23
31
|
TInput,
|
|
24
32
|
OutSchema,
|
|
25
33
|
TServices,
|
|
26
34
|
TLogger,
|
|
27
35
|
TEventPublisher,
|
|
28
|
-
TEventPublisherServiceName
|
|
36
|
+
TEventPublisherServiceName,
|
|
37
|
+
TAuditStorage,
|
|
38
|
+
TAuditStorageServiceName,
|
|
39
|
+
TDatabase,
|
|
40
|
+
TDatabaseServiceName
|
|
29
41
|
> {
|
|
30
42
|
protected _memorySize?: number;
|
|
31
43
|
|
|
@@ -51,7 +63,12 @@ export class FunctionBuilder<
|
|
|
51
63
|
TServices,
|
|
52
64
|
TLogger,
|
|
53
65
|
TEventPublisher,
|
|
54
|
-
TEventPublisherServiceName
|
|
66
|
+
TEventPublisherServiceName,
|
|
67
|
+
TAuditStorage,
|
|
68
|
+
TAuditStorageServiceName,
|
|
69
|
+
TDatabase,
|
|
70
|
+
TDatabaseServiceName,
|
|
71
|
+
TAuditAction
|
|
55
72
|
> {
|
|
56
73
|
this.outputSchema = schema as unknown as OutSchema;
|
|
57
74
|
|
|
@@ -61,7 +78,12 @@ export class FunctionBuilder<
|
|
|
61
78
|
TServices,
|
|
62
79
|
TLogger,
|
|
63
80
|
TEventPublisher,
|
|
64
|
-
TEventPublisherServiceName
|
|
81
|
+
TEventPublisherServiceName,
|
|
82
|
+
TAuditStorage,
|
|
83
|
+
TAuditStorageServiceName,
|
|
84
|
+
TDatabase,
|
|
85
|
+
TDatabaseServiceName,
|
|
86
|
+
TAuditAction
|
|
65
87
|
>;
|
|
66
88
|
}
|
|
67
89
|
|
|
@@ -73,7 +95,12 @@ export class FunctionBuilder<
|
|
|
73
95
|
TServices,
|
|
74
96
|
TLogger,
|
|
75
97
|
TEventPublisher,
|
|
76
|
-
TEventPublisherServiceName
|
|
98
|
+
TEventPublisherServiceName,
|
|
99
|
+
TAuditStorage,
|
|
100
|
+
TAuditStorageServiceName,
|
|
101
|
+
TDatabase,
|
|
102
|
+
TDatabaseServiceName,
|
|
103
|
+
TAuditAction
|
|
77
104
|
> {
|
|
78
105
|
this.inputSchema = schema as unknown as TInput;
|
|
79
106
|
|
|
@@ -83,7 +110,12 @@ export class FunctionBuilder<
|
|
|
83
110
|
TServices,
|
|
84
111
|
TLogger,
|
|
85
112
|
TEventPublisher,
|
|
86
|
-
TEventPublisherServiceName
|
|
113
|
+
TEventPublisherServiceName,
|
|
114
|
+
TAuditStorage,
|
|
115
|
+
TAuditStorageServiceName,
|
|
116
|
+
TDatabase,
|
|
117
|
+
TDatabaseServiceName,
|
|
118
|
+
TAuditAction
|
|
87
119
|
>;
|
|
88
120
|
}
|
|
89
121
|
|
|
@@ -95,7 +127,12 @@ export class FunctionBuilder<
|
|
|
95
127
|
[...TServices, ...T],
|
|
96
128
|
TLogger,
|
|
97
129
|
TEventPublisher,
|
|
98
|
-
TEventPublisherServiceName
|
|
130
|
+
TEventPublisherServiceName,
|
|
131
|
+
TAuditStorage,
|
|
132
|
+
TAuditStorageServiceName,
|
|
133
|
+
TDatabase,
|
|
134
|
+
TDatabaseServiceName,
|
|
135
|
+
TAuditAction
|
|
99
136
|
> {
|
|
100
137
|
this._services = uniqBy(
|
|
101
138
|
[...this._services, ...services],
|
|
@@ -108,7 +145,12 @@ export class FunctionBuilder<
|
|
|
108
145
|
[...TServices, ...T],
|
|
109
146
|
TLogger,
|
|
110
147
|
TEventPublisher,
|
|
111
|
-
TEventPublisherServiceName
|
|
148
|
+
TEventPublisherServiceName,
|
|
149
|
+
TAuditStorage,
|
|
150
|
+
TAuditStorageServiceName,
|
|
151
|
+
TDatabase,
|
|
152
|
+
TDatabaseServiceName,
|
|
153
|
+
TAuditAction
|
|
112
154
|
>;
|
|
113
155
|
}
|
|
114
156
|
|
|
@@ -120,7 +162,12 @@ export class FunctionBuilder<
|
|
|
120
162
|
TServices,
|
|
121
163
|
T,
|
|
122
164
|
TEventPublisher,
|
|
123
|
-
TEventPublisherServiceName
|
|
165
|
+
TEventPublisherServiceName,
|
|
166
|
+
TAuditStorage,
|
|
167
|
+
TAuditStorageServiceName,
|
|
168
|
+
TDatabase,
|
|
169
|
+
TDatabaseServiceName,
|
|
170
|
+
TAuditAction
|
|
124
171
|
> {
|
|
125
172
|
this._logger = logger as unknown as TLogger;
|
|
126
173
|
|
|
@@ -130,13 +177,30 @@ export class FunctionBuilder<
|
|
|
130
177
|
TServices,
|
|
131
178
|
T,
|
|
132
179
|
TEventPublisher,
|
|
133
|
-
TEventPublisherServiceName
|
|
180
|
+
TEventPublisherServiceName,
|
|
181
|
+
TAuditStorage,
|
|
182
|
+
TAuditStorageServiceName,
|
|
183
|
+
TDatabase,
|
|
184
|
+
TDatabaseServiceName,
|
|
185
|
+
TAuditAction
|
|
134
186
|
>;
|
|
135
187
|
}
|
|
136
188
|
|
|
137
189
|
publisher<T extends EventPublisher<any>, TName extends string>(
|
|
138
190
|
publisher: Service<TName, T>,
|
|
139
|
-
): FunctionBuilder<
|
|
191
|
+
): FunctionBuilder<
|
|
192
|
+
TInput,
|
|
193
|
+
OutSchema,
|
|
194
|
+
TServices,
|
|
195
|
+
TLogger,
|
|
196
|
+
T,
|
|
197
|
+
TName,
|
|
198
|
+
TAuditStorage,
|
|
199
|
+
TAuditStorageServiceName,
|
|
200
|
+
TDatabase,
|
|
201
|
+
TDatabaseServiceName,
|
|
202
|
+
TAuditAction
|
|
203
|
+
> {
|
|
140
204
|
this._publisher = publisher as unknown as Service<
|
|
141
205
|
TEventPublisherServiceName,
|
|
142
206
|
TEventPublisher
|
|
@@ -148,20 +212,152 @@ export class FunctionBuilder<
|
|
|
148
212
|
TServices,
|
|
149
213
|
TLogger,
|
|
150
214
|
T,
|
|
151
|
-
TName
|
|
215
|
+
TName,
|
|
216
|
+
TAuditStorage,
|
|
217
|
+
TAuditStorageServiceName,
|
|
218
|
+
TDatabase,
|
|
219
|
+
TDatabaseServiceName,
|
|
220
|
+
TAuditAction
|
|
221
|
+
>;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
auditor<T extends AuditStorage, TName extends string>(
|
|
225
|
+
storage: Service<TName, T>,
|
|
226
|
+
): FunctionBuilder<
|
|
227
|
+
TInput,
|
|
228
|
+
OutSchema,
|
|
229
|
+
TServices,
|
|
230
|
+
TLogger,
|
|
231
|
+
TEventPublisher,
|
|
232
|
+
TEventPublisherServiceName,
|
|
233
|
+
T,
|
|
234
|
+
TName,
|
|
235
|
+
TDatabase,
|
|
236
|
+
TDatabaseServiceName,
|
|
237
|
+
TAuditAction
|
|
238
|
+
> {
|
|
239
|
+
this._auditorStorage = storage as unknown as Service<
|
|
240
|
+
TAuditStorageServiceName,
|
|
241
|
+
TAuditStorage
|
|
242
|
+
>;
|
|
243
|
+
|
|
244
|
+
return this as unknown as FunctionBuilder<
|
|
245
|
+
TInput,
|
|
246
|
+
OutSchema,
|
|
247
|
+
TServices,
|
|
248
|
+
TLogger,
|
|
249
|
+
TEventPublisher,
|
|
250
|
+
TEventPublisherServiceName,
|
|
251
|
+
T,
|
|
252
|
+
TName,
|
|
253
|
+
TDatabase,
|
|
254
|
+
TDatabaseServiceName,
|
|
255
|
+
TAuditAction
|
|
256
|
+
>;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Set the audit action types for this function.
|
|
261
|
+
* This provides type-safety for the auditor in the handler context.
|
|
262
|
+
*/
|
|
263
|
+
actions<T extends AuditableAction<string, unknown>>(): FunctionBuilder<
|
|
264
|
+
TInput,
|
|
265
|
+
OutSchema,
|
|
266
|
+
TServices,
|
|
267
|
+
TLogger,
|
|
268
|
+
TEventPublisher,
|
|
269
|
+
TEventPublisherServiceName,
|
|
270
|
+
TAuditStorage,
|
|
271
|
+
TAuditStorageServiceName,
|
|
272
|
+
TDatabase,
|
|
273
|
+
TDatabaseServiceName,
|
|
274
|
+
T
|
|
275
|
+
> {
|
|
276
|
+
return this as unknown as FunctionBuilder<
|
|
277
|
+
TInput,
|
|
278
|
+
OutSchema,
|
|
279
|
+
TServices,
|
|
280
|
+
TLogger,
|
|
281
|
+
TEventPublisher,
|
|
282
|
+
TEventPublisherServiceName,
|
|
283
|
+
TAuditStorage,
|
|
284
|
+
TAuditStorageServiceName,
|
|
285
|
+
TDatabase,
|
|
286
|
+
TDatabaseServiceName,
|
|
287
|
+
T
|
|
288
|
+
>;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Set the database service for this function.
|
|
293
|
+
* The database will be available in the handler context as `db`.
|
|
294
|
+
*/
|
|
295
|
+
database<T, TName extends string>(
|
|
296
|
+
service: Service<TName, T>,
|
|
297
|
+
): FunctionBuilder<
|
|
298
|
+
TInput,
|
|
299
|
+
OutSchema,
|
|
300
|
+
TServices,
|
|
301
|
+
TLogger,
|
|
302
|
+
TEventPublisher,
|
|
303
|
+
TEventPublisherServiceName,
|
|
304
|
+
TAuditStorage,
|
|
305
|
+
TAuditStorageServiceName,
|
|
306
|
+
T,
|
|
307
|
+
TName,
|
|
308
|
+
TAuditAction
|
|
309
|
+
> {
|
|
310
|
+
this._databaseService = service as unknown as Service<
|
|
311
|
+
TDatabaseServiceName,
|
|
312
|
+
TDatabase
|
|
313
|
+
>;
|
|
314
|
+
|
|
315
|
+
return this as unknown as FunctionBuilder<
|
|
316
|
+
TInput,
|
|
317
|
+
OutSchema,
|
|
318
|
+
TServices,
|
|
319
|
+
TLogger,
|
|
320
|
+
TEventPublisher,
|
|
321
|
+
TEventPublisherServiceName,
|
|
322
|
+
TAuditStorage,
|
|
323
|
+
TAuditStorageServiceName,
|
|
324
|
+
T,
|
|
325
|
+
TName,
|
|
326
|
+
TAuditAction
|
|
152
327
|
>;
|
|
153
328
|
}
|
|
154
329
|
|
|
155
330
|
handle(
|
|
156
|
-
fn: FunctionHandler<
|
|
331
|
+
fn: FunctionHandler<
|
|
332
|
+
TInput,
|
|
333
|
+
TServices,
|
|
334
|
+
TLogger,
|
|
335
|
+
OutSchema,
|
|
336
|
+
TDatabase,
|
|
337
|
+
TAuditStorage,
|
|
338
|
+
TAuditAction
|
|
339
|
+
>,
|
|
157
340
|
): Function<
|
|
158
341
|
TInput,
|
|
159
342
|
TServices,
|
|
160
343
|
TLogger,
|
|
161
344
|
OutSchema,
|
|
162
|
-
FunctionHandler<TInput, TServices, TLogger, OutSchema>,
|
|
163
345
|
TEventPublisher,
|
|
164
|
-
TEventPublisherServiceName
|
|
346
|
+
TEventPublisherServiceName,
|
|
347
|
+
TAuditStorage,
|
|
348
|
+
TAuditStorageServiceName,
|
|
349
|
+
TDatabase,
|
|
350
|
+
TDatabaseServiceName,
|
|
351
|
+
TAuditAction,
|
|
352
|
+
FunctionHandler<
|
|
353
|
+
TInput,
|
|
354
|
+
TServices,
|
|
355
|
+
TLogger,
|
|
356
|
+
OutSchema,
|
|
357
|
+
TDatabase,
|
|
358
|
+
TAuditStorage,
|
|
359
|
+
TAuditAction
|
|
360
|
+
>
|
|
165
361
|
> {
|
|
166
362
|
const func = new Function(
|
|
167
363
|
fn,
|
|
@@ -174,6 +370,8 @@ export class FunctionBuilder<
|
|
|
174
370
|
this._publisher,
|
|
175
371
|
this._events,
|
|
176
372
|
this._memorySize,
|
|
373
|
+
this._auditorStorage,
|
|
374
|
+
this._databaseService,
|
|
177
375
|
);
|
|
178
376
|
|
|
179
377
|
// Reset builder state after creating the function to prevent pollution
|
|
@@ -181,6 +379,8 @@ export class FunctionBuilder<
|
|
|
181
379
|
this._logger = DEFAULT_LOGGER;
|
|
182
380
|
this._events = [];
|
|
183
381
|
this._publisher = undefined;
|
|
382
|
+
this._auditorStorage = undefined;
|
|
383
|
+
this._databaseService = undefined;
|
|
184
384
|
this.inputSchema = undefined;
|
|
185
385
|
this.outputSchema = undefined;
|
|
186
386
|
this._timeout = undefined;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';
|
|
2
|
+
import { DefaultAuditor } from '@geekmidas/audit';
|
|
3
|
+
import { withAuditableTransaction } from '@geekmidas/audit/kysely';
|
|
1
4
|
import type { EnvironmentParser } from '@geekmidas/envkit';
|
|
2
5
|
import type { EventPublisher } from '@geekmidas/events';
|
|
3
6
|
import type { Logger } from '@geekmidas/logger';
|
|
@@ -23,6 +26,14 @@ export abstract class FunctionExecutionWrapper<
|
|
|
23
26
|
TLogger extends Logger = Logger,
|
|
24
27
|
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
25
28
|
TEventPublisherServiceName extends string = string,
|
|
29
|
+
TAuditStorage extends AuditStorage | undefined = undefined,
|
|
30
|
+
TAuditStorageServiceName extends string = string,
|
|
31
|
+
TDatabase = undefined,
|
|
32
|
+
TDatabaseServiceName extends string = string,
|
|
33
|
+
TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
|
|
34
|
+
string,
|
|
35
|
+
unknown
|
|
36
|
+
>,
|
|
26
37
|
> {
|
|
27
38
|
constructor(
|
|
28
39
|
protected envParser: EnvironmentParser<{}>,
|
|
@@ -31,9 +42,22 @@ export abstract class FunctionExecutionWrapper<
|
|
|
31
42
|
TServices,
|
|
32
43
|
TLogger,
|
|
33
44
|
TOutSchema,
|
|
34
|
-
FunctionHandler<TInput, TServices, TLogger, TOutSchema>,
|
|
35
45
|
TEventPublisher,
|
|
36
|
-
TEventPublisherServiceName
|
|
46
|
+
TEventPublisherServiceName,
|
|
47
|
+
TAuditStorage,
|
|
48
|
+
TAuditStorageServiceName,
|
|
49
|
+
TDatabase,
|
|
50
|
+
TDatabaseServiceName,
|
|
51
|
+
TAuditAction,
|
|
52
|
+
FunctionHandler<
|
|
53
|
+
TInput,
|
|
54
|
+
TServices,
|
|
55
|
+
TLogger,
|
|
56
|
+
TOutSchema,
|
|
57
|
+
TDatabase,
|
|
58
|
+
TAuditStorage,
|
|
59
|
+
TAuditAction
|
|
60
|
+
>
|
|
37
61
|
>,
|
|
38
62
|
) {}
|
|
39
63
|
|
|
@@ -56,6 +80,113 @@ export abstract class FunctionExecutionWrapper<
|
|
|
56
80
|
return this.serviceDiscovery.register(this.fn.services);
|
|
57
81
|
}
|
|
58
82
|
|
|
83
|
+
async getDatabase(): Promise<TDatabase | undefined> {
|
|
84
|
+
if (!this.fn.databaseService) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const services = await this.serviceDiscovery.register([
|
|
89
|
+
this.fn.databaseService,
|
|
90
|
+
]);
|
|
91
|
+
|
|
92
|
+
return services[
|
|
93
|
+
this.fn.databaseService.serviceName as keyof typeof services
|
|
94
|
+
] as TDatabase;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Get the audit storage service if configured.
|
|
99
|
+
* Returns undefined if no auditor storage is configured.
|
|
100
|
+
*/
|
|
101
|
+
async getAuditStorage(): Promise<TAuditStorage | undefined> {
|
|
102
|
+
if (!this.fn.auditorStorageService) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const services = await this.serviceDiscovery.register([
|
|
107
|
+
this.fn.auditorStorageService,
|
|
108
|
+
]);
|
|
109
|
+
|
|
110
|
+
return services[
|
|
111
|
+
this.fn.auditorStorageService.serviceName as keyof typeof services
|
|
112
|
+
] as TAuditStorage;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Create an auditor instance for the function.
|
|
117
|
+
* Returns undefined if no auditor storage is configured.
|
|
118
|
+
*/
|
|
119
|
+
async createAuditor(): Promise<Auditor<TAuditAction> | undefined> {
|
|
120
|
+
const storage = await this.getAuditStorage();
|
|
121
|
+
if (!storage) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return new DefaultAuditor<TAuditAction>({
|
|
126
|
+
actor: { id: 'system', type: 'system' },
|
|
127
|
+
storage: storage as AuditStorage,
|
|
128
|
+
metadata: {
|
|
129
|
+
function: this.fn.type,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Execute handler with audit transaction support.
|
|
136
|
+
* If the audit storage has a database (via getDatabase()), wraps execution
|
|
137
|
+
* in a transaction so audits are atomic with handler's database operations.
|
|
138
|
+
*
|
|
139
|
+
* @param handler - The handler function to execute (receives auditor and db)
|
|
140
|
+
* @returns The handler result
|
|
141
|
+
*/
|
|
142
|
+
async executeWithAudit<T>(
|
|
143
|
+
handler: (ctx: {
|
|
144
|
+
auditor?: Auditor<TAuditAction>;
|
|
145
|
+
db?: TDatabase;
|
|
146
|
+
}) => Promise<T>,
|
|
147
|
+
): Promise<T> {
|
|
148
|
+
const auditor = await this.createAuditor();
|
|
149
|
+
const storage = await this.getAuditStorage();
|
|
150
|
+
|
|
151
|
+
// No audit context - just run handler with regular db
|
|
152
|
+
if (!auditor || !storage) {
|
|
153
|
+
const db = await this.getDatabase();
|
|
154
|
+
return handler({ db });
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Check if storage has a database and db service names match
|
|
158
|
+
const storageDb = (storage as AuditStorage).getDatabase?.();
|
|
159
|
+
const databaseServiceName = this.fn.databaseService?.serviceName;
|
|
160
|
+
const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
|
|
161
|
+
|
|
162
|
+
// If the audit storage has a database and we're using the same database service
|
|
163
|
+
// (or the audit storage provides the database), use transactional execution
|
|
164
|
+
if (storageDb && databaseServiceName && auditDbServiceName) {
|
|
165
|
+
return withAuditableTransaction(
|
|
166
|
+
storageDb as any,
|
|
167
|
+
auditor as any,
|
|
168
|
+
async (trx) => {
|
|
169
|
+
// Use transaction as db
|
|
170
|
+
const response = await handler({
|
|
171
|
+
auditor,
|
|
172
|
+
db: trx as TDatabase,
|
|
173
|
+
});
|
|
174
|
+
// Audits are flushed by withAuditableTransaction before commit
|
|
175
|
+
return response;
|
|
176
|
+
},
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// No database on storage or service names don't match - run handler and flush audits after
|
|
181
|
+
const db = await this.getDatabase();
|
|
182
|
+
const response = await handler({ auditor, db });
|
|
183
|
+
|
|
184
|
+
// Flush audits (no transaction)
|
|
185
|
+
await auditor.flush();
|
|
186
|
+
|
|
187
|
+
return response;
|
|
188
|
+
}
|
|
189
|
+
|
|
59
190
|
async getFunctionInput<TEvent>(
|
|
60
191
|
event: TEvent,
|
|
61
192
|
): Promise<InferComposableStandardSchema<TInput>> {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';
|
|
2
|
+
import { DefaultAuditor } from '@geekmidas/audit';
|
|
1
3
|
import { EnvironmentParser } from '@geekmidas/envkit';
|
|
2
4
|
import type { EventPublisher } from '@geekmidas/events';
|
|
3
5
|
import type { Logger } from '@geekmidas/logger';
|
|
@@ -17,12 +19,20 @@ import type { Function } from './Function';
|
|
|
17
19
|
import { FunctionBuilder } from './FunctionBuilder';
|
|
18
20
|
|
|
19
21
|
export class TestFunctionAdaptor<
|
|
20
|
-
TInput extends
|
|
22
|
+
TInput extends ComposableStandardSchema | undefined = undefined,
|
|
21
23
|
TOutSchema extends StandardSchemaV1 | undefined = undefined,
|
|
22
24
|
TServices extends Service[] = [],
|
|
23
25
|
TLogger extends Logger = Logger,
|
|
24
26
|
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
25
27
|
TEventPublisherServiceName extends string = string,
|
|
28
|
+
TAuditStorage extends AuditStorage | undefined = undefined,
|
|
29
|
+
TAuditStorageServiceName extends string = string,
|
|
30
|
+
TDatabase = undefined,
|
|
31
|
+
TDatabaseServiceName extends string = string,
|
|
32
|
+
TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
|
|
33
|
+
string,
|
|
34
|
+
unknown
|
|
35
|
+
>,
|
|
26
36
|
> {
|
|
27
37
|
static getDefaultServiceDiscovery<
|
|
28
38
|
TInput extends ComposableStandardSchema | undefined = undefined,
|
|
@@ -31,15 +41,28 @@ export class TestFunctionAdaptor<
|
|
|
31
41
|
TLogger extends Logger = Logger,
|
|
32
42
|
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
33
43
|
TEventPublisherServiceName extends string = string,
|
|
44
|
+
TAuditStorage extends AuditStorage | undefined = undefined,
|
|
45
|
+
TAuditStorageServiceName extends string = string,
|
|
46
|
+
TDatabase = undefined,
|
|
47
|
+
TDatabaseServiceName extends string = string,
|
|
48
|
+
TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
|
|
49
|
+
string,
|
|
50
|
+
unknown
|
|
51
|
+
>,
|
|
34
52
|
>(
|
|
35
53
|
fn: Function<
|
|
36
54
|
TInput,
|
|
37
55
|
TServices,
|
|
38
56
|
TLogger,
|
|
39
57
|
TOutSchema,
|
|
40
|
-
any,
|
|
41
58
|
TEventPublisher,
|
|
42
|
-
TEventPublisherServiceName
|
|
59
|
+
TEventPublisherServiceName,
|
|
60
|
+
TAuditStorage,
|
|
61
|
+
TAuditStorageServiceName,
|
|
62
|
+
TDatabase,
|
|
63
|
+
TDatabaseServiceName,
|
|
64
|
+
TAuditAction,
|
|
65
|
+
any
|
|
43
66
|
>,
|
|
44
67
|
) {
|
|
45
68
|
return ServiceDiscovery.getInstance(fn.logger, new EnvironmentParser({}));
|
|
@@ -51,9 +74,14 @@ export class TestFunctionAdaptor<
|
|
|
51
74
|
TServices,
|
|
52
75
|
TLogger,
|
|
53
76
|
TOutSchema,
|
|
54
|
-
any,
|
|
55
77
|
TEventPublisher,
|
|
56
|
-
TEventPublisherServiceName
|
|
78
|
+
TEventPublisherServiceName,
|
|
79
|
+
TAuditStorage,
|
|
80
|
+
TAuditStorageServiceName,
|
|
81
|
+
TDatabase,
|
|
82
|
+
TDatabaseServiceName,
|
|
83
|
+
TAuditAction,
|
|
84
|
+
any
|
|
57
85
|
>,
|
|
58
86
|
private serviceDiscovery: ServiceDiscovery<
|
|
59
87
|
any,
|
|
@@ -66,7 +94,9 @@ export class TestFunctionAdaptor<
|
|
|
66
94
|
TInput,
|
|
67
95
|
TServices,
|
|
68
96
|
TEventPublisher,
|
|
69
|
-
TEventPublisherServiceName
|
|
97
|
+
TEventPublisherServiceName,
|
|
98
|
+
TDatabase,
|
|
99
|
+
TAuditAction
|
|
70
100
|
>,
|
|
71
101
|
): Promise<InferStandardSchema<TOutSchema>> {
|
|
72
102
|
// Parse input if schema is provided
|
|
@@ -89,16 +119,65 @@ export class TestFunctionAdaptor<
|
|
|
89
119
|
services = await this.serviceDiscovery.register(this.fn.services);
|
|
90
120
|
}
|
|
91
121
|
|
|
122
|
+
// Resolve database (use provided db or register from function)
|
|
123
|
+
let db: TDatabase | undefined;
|
|
124
|
+
if ('db' in ctx && ctx.db !== undefined) {
|
|
125
|
+
db = ctx.db;
|
|
126
|
+
} else if (this.fn.databaseService) {
|
|
127
|
+
const dbServices = await this.serviceDiscovery.register([
|
|
128
|
+
this.fn.databaseService,
|
|
129
|
+
]);
|
|
130
|
+
db = dbServices[
|
|
131
|
+
this.fn.databaseService.serviceName as keyof typeof dbServices
|
|
132
|
+
] as TDatabase;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Resolve auditor (use provided auditor or create from function)
|
|
136
|
+
let auditor: Auditor<TAuditAction> | undefined;
|
|
137
|
+
if ('auditor' in ctx && ctx.auditor !== undefined) {
|
|
138
|
+
auditor = ctx.auditor;
|
|
139
|
+
} else if (this.fn.auditorStorageService) {
|
|
140
|
+
const auditServices = await this.serviceDiscovery.register([
|
|
141
|
+
this.fn.auditorStorageService,
|
|
142
|
+
]);
|
|
143
|
+
const storage = auditServices[
|
|
144
|
+
this.fn.auditorStorageService.serviceName as keyof typeof auditServices
|
|
145
|
+
] as AuditStorage;
|
|
146
|
+
|
|
147
|
+
auditor = new DefaultAuditor<TAuditAction>({
|
|
148
|
+
actor: { id: 'system', type: 'system' },
|
|
149
|
+
storage,
|
|
150
|
+
metadata: {
|
|
151
|
+
function: this.fn.type,
|
|
152
|
+
test: true,
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
92
157
|
// Execute the function
|
|
93
158
|
const response = await this.fn['fn']({
|
|
94
159
|
input: parsedInput,
|
|
95
160
|
services,
|
|
96
161
|
logger,
|
|
97
|
-
|
|
162
|
+
db,
|
|
163
|
+
auditor,
|
|
164
|
+
} as any);
|
|
98
165
|
|
|
99
166
|
// Parse output if schema is provided
|
|
100
167
|
const output = await this.fn.parseOutput(response);
|
|
101
168
|
|
|
169
|
+
// Flush audits if any were recorded
|
|
170
|
+
if (auditor) {
|
|
171
|
+
const records = auditor.getRecords();
|
|
172
|
+
if (records.length > 0) {
|
|
173
|
+
logger.debug(
|
|
174
|
+
{ auditCount: records.length },
|
|
175
|
+
'Flushing function audits',
|
|
176
|
+
);
|
|
177
|
+
await auditor.flush();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
102
181
|
// Register publisher service if provided in context
|
|
103
182
|
|
|
104
183
|
await publishEvents(
|
|
@@ -114,12 +193,19 @@ export class TestFunctionAdaptor<
|
|
|
114
193
|
}
|
|
115
194
|
|
|
116
195
|
export type TestFunctionRequest<
|
|
117
|
-
TInput extends
|
|
196
|
+
TInput extends ComposableStandardSchema | undefined = undefined,
|
|
118
197
|
TServices extends Service[] = [],
|
|
119
198
|
TEventPublisher extends EventPublisher<any> | undefined = undefined,
|
|
120
199
|
TEventPublisherServiceName extends string = string,
|
|
200
|
+
TDatabase = undefined,
|
|
201
|
+
TAuditAction extends AuditableAction<string, unknown> = AuditableAction<
|
|
202
|
+
string,
|
|
203
|
+
unknown
|
|
204
|
+
>,
|
|
121
205
|
> = {
|
|
122
206
|
input: InferComposableStandardSchema<TInput>;
|
|
123
207
|
services: ServiceRecord<TServices>;
|
|
124
208
|
publisher?: Service<TEventPublisherServiceName, TEventPublisher>;
|
|
209
|
+
db?: TDatabase;
|
|
210
|
+
auditor?: Auditor<TAuditAction>;
|
|
125
211
|
} & InferComposableStandardSchema<{ input: TInput }>;
|