@geekmidas/constructs 0.6.0 → 0.7.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-BMTaCrG9.mjs → AWSLambdaFunction-BVBaBcHU.mjs} +3 -3
- package/dist/{AWSLambdaFunction-BMTaCrG9.mjs.map → AWSLambdaFunction-BVBaBcHU.mjs.map} +1 -1
- package/dist/{AWSLambdaFunction-C1gRqLO7.cjs → AWSLambdaFunction-BXg9HBxq.cjs} +3 -3
- package/dist/{AWSLambdaFunction-C1gRqLO7.cjs.map → AWSLambdaFunction-BXg9HBxq.cjs.map} +1 -1
- package/dist/{AWSLambdaFunction-BfLF5vNa.d.cts → AWSLambdaFunction-DMgUylUL.d.cts} +3 -3
- package/dist/{AWSLambdaFunction-K94K8JU2.d.mts.map → AWSLambdaFunction-DMgUylUL.d.cts.map} +1 -1
- package/dist/{AWSLambdaFunction-K94K8JU2.d.mts → AWSLambdaFunction-e4LKEbs8.d.mts} +3 -3
- package/dist/{AWSLambdaFunction-BfLF5vNa.d.cts.map → AWSLambdaFunction-e4LKEbs8.d.mts.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts → AWSLambdaSubscriberAdaptor-DqRzr-L5.d.mts} +2 -2
- package/dist/{AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts.map → AWSLambdaSubscriberAdaptor-DqRzr-L5.d.mts.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-B2Gk3fgx.d.cts → AWSLambdaSubscriberAdaptor-JRDrHRcw.d.cts} +2 -2
- package/dist/{AWSLambdaSubscriberAdaptor-QuMFwltJ.d.mts.map → AWSLambdaSubscriberAdaptor-JRDrHRcw.d.cts.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs → AmazonApiGatewayEndpointAdaptor-BEDf8_Tl.cjs} +3 -3
- package/dist/AmazonApiGatewayEndpointAdaptor-BEDf8_Tl.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs → AmazonApiGatewayEndpointAdaptor-B_Lstu10.mjs} +3 -3
- package/dist/AmazonApiGatewayEndpointAdaptor-B_Lstu10.mjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts → AmazonApiGatewayEndpointAdaptor-CwvTP1Fc.d.cts} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-C987ZCsM.d.cts.map → AmazonApiGatewayEndpointAdaptor-CwvTP1Fc.d.cts.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts → AmazonApiGatewayEndpointAdaptor-fOijCaAu.d.mts} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-DpPfO6Vj.d.mts.map → AmazonApiGatewayEndpointAdaptor-fOijCaAu.d.mts.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs → AmazonApiGatewayV1EndpointAdaptor-BRxRkgtQ.mjs} +2 -2
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-VccB6FKp.mjs.map → AmazonApiGatewayV1EndpointAdaptor-BRxRkgtQ.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs → AmazonApiGatewayV1EndpointAdaptor-BtYuuWpT.cjs} +2 -2
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-BeZMu5DZ.cjs.map → AmazonApiGatewayV1EndpointAdaptor-BtYuuWpT.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts → AmazonApiGatewayV1EndpointAdaptor-C30E2cvp.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-DkGMOpoB.d.cts.map → AmazonApiGatewayV1EndpointAdaptor-C30E2cvp.d.cts.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts → AmazonApiGatewayV1EndpointAdaptor-DFMTK33h.d.mts} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-DI_5kdqw.d.mts.map → AmazonApiGatewayV1EndpointAdaptor-DFMTK33h.d.mts.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs → AmazonApiGatewayV2EndpointAdaptor-CHsF3XLW.mjs} +2 -2
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-CljxmUfz.mjs.map → AmazonApiGatewayV2EndpointAdaptor-CHsF3XLW.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts → AmazonApiGatewayV2EndpointAdaptor-CItFK1v6.d.mts} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DnCoqlvw.d.mts.map → AmazonApiGatewayV2EndpointAdaptor-CItFK1v6.d.mts.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs → AmazonApiGatewayV2EndpointAdaptor-DGA-9XTS.cjs} +2 -2
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-BwsL9Gia.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DGA-9XTS.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts → AmazonApiGatewayV2EndpointAdaptor-Dadjyzv1.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-BtBnMJS_.d.cts.map → AmazonApiGatewayV2EndpointAdaptor-Dadjyzv1.d.cts.map} +1 -1
- package/dist/{BaseFunctionBuilder-BqZCqIeU.d.mts → BaseFunctionBuilder-BvxwyzYE.d.mts} +2 -2
- package/dist/{BaseFunctionBuilder-BqZCqIeU.d.mts.map → BaseFunctionBuilder-BvxwyzYE.d.mts.map} +1 -1
- package/dist/{BaseFunctionBuilder-Z0XwrKB5.cjs → BaseFunctionBuilder-D2eLZ4eD.cjs} +2 -2
- package/dist/{BaseFunctionBuilder-Z0XwrKB5.cjs.map → BaseFunctionBuilder-D2eLZ4eD.cjs.map} +1 -1
- package/dist/{BaseFunctionBuilder-CcK691ni.d.cts → BaseFunctionBuilder-L5zHzBJ2.d.cts} +2 -2
- package/dist/{BaseFunctionBuilder-CcK691ni.d.cts.map → BaseFunctionBuilder-L5zHzBJ2.d.cts.map} +1 -1
- package/dist/{BaseFunctionBuilder-Dsqe6pnn.mjs → BaseFunctionBuilder-yIM62QAr.mjs} +2 -2
- package/dist/{BaseFunctionBuilder-Dsqe6pnn.mjs.map → BaseFunctionBuilder-yIM62QAr.mjs.map} +1 -1
- package/dist/{Construct-Dl0l2d8d.d.cts → Construct-BwwtHYDJ.d.cts} +3 -6
- package/dist/Construct-BwwtHYDJ.d.cts.map +1 -0
- package/dist/{Construct-CPrCF8NK.cjs → Construct-C5Oko4YC.cjs} +5 -27
- package/dist/Construct-C5Oko4YC.cjs.map +1 -0
- package/dist/{Construct-BNDLJJfD.mjs → Construct-CAVc_gyw.mjs} +6 -28
- package/dist/Construct-CAVc_gyw.mjs.map +1 -0
- package/dist/{Construct-E8QPyHh4.d.mts → Construct-DXbQxP4z.d.mts} +3 -6
- package/dist/Construct-DXbQxP4z.d.mts.map +1 -0
- 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-CnmLLh3E.d.mts → Cron-CY0EwfwE.d.mts} +2 -2
- package/dist/{Cron-CnmLLh3E.d.mts.map → Cron-CY0EwfwE.d.mts.map} +1 -1
- package/dist/{Cron-BmPNTLla.cjs → Cron-D6wJcyXC.cjs} +3 -3
- package/dist/{Cron-BmPNTLla.cjs.map → Cron-D6wJcyXC.cjs.map} +1 -1
- package/dist/{Cron-BpJONaFv.mjs → Cron-GhhpemQm.mjs} +3 -3
- package/dist/{Cron-BpJONaFv.mjs.map → Cron-GhhpemQm.mjs.map} +1 -1
- package/dist/{Cron-DufAeHry.d.cts → Cron-cwBxY9gM.d.cts} +2 -2
- package/dist/{Cron-DufAeHry.d.cts.map → Cron-cwBxY9gM.d.cts.map} +1 -1
- package/dist/{CronBuilder-DC2zUS8a.cjs → CronBuilder-BpYxvqmC.cjs} +4 -4
- package/dist/{CronBuilder-DC2zUS8a.cjs.map → CronBuilder-BpYxvqmC.cjs.map} +1 -1
- package/dist/{CronBuilder-anUSbMxb.d.mts → CronBuilder-Ct1HJlXO.d.cts} +5 -5
- package/dist/{CronBuilder-anUSbMxb.d.mts.map → CronBuilder-Ct1HJlXO.d.cts.map} +1 -1
- package/dist/{CronBuilder-02HSIHJr.mjs → CronBuilder-G-Jim-32.mjs} +4 -4
- package/dist/{CronBuilder-02HSIHJr.mjs.map → CronBuilder-G-Jim-32.mjs.map} +1 -1
- package/dist/{CronBuilder-fyqf_X8n.d.cts → CronBuilder-leh74vzf.d.mts} +5 -5
- package/dist/{CronBuilder-fyqf_X8n.d.cts.map → CronBuilder-leh74vzf.d.mts.map} +1 -1
- package/dist/{Endpoint-BCWVbi8l.cjs → Endpoint-0ueQu3sb.cjs} +3 -3
- package/dist/{Endpoint-BCWVbi8l.cjs.map → Endpoint-0ueQu3sb.cjs.map} +1 -1
- package/dist/{Endpoint-BlcHiGNx.d.cts → Endpoint-D3PbUsFI.d.cts} +2 -2
- package/dist/{Endpoint-DEHuy46S.d.mts.map → Endpoint-D3PbUsFI.d.cts.map} +1 -1
- package/dist/{Endpoint-ygxv2Ia6.mjs → Endpoint-DWqfgcrY.mjs} +3 -3
- package/dist/{Endpoint-ygxv2Ia6.mjs.map → Endpoint-DWqfgcrY.mjs.map} +1 -1
- package/dist/{Endpoint-DEHuy46S.d.mts → Endpoint-DrmzJ83e.d.mts} +2 -2
- package/dist/{Endpoint-BlcHiGNx.d.cts.map → Endpoint-DrmzJ83e.d.mts.map} +1 -1
- package/dist/{EndpointBuilder-tn4zqoyw.mjs → EndpointBuilder-AnXrzD5x.mjs} +4 -4
- package/dist/{EndpointBuilder-tn4zqoyw.mjs.map → EndpointBuilder-AnXrzD5x.mjs.map} +1 -1
- package/dist/{EndpointBuilder-J5D67Y6a.cjs → EndpointBuilder-D78r9OdH.cjs} +4 -4
- package/dist/{EndpointBuilder-J5D67Y6a.cjs.map → EndpointBuilder-D78r9OdH.cjs.map} +1 -1
- package/dist/{EndpointBuilder-DaeCeneF.d.mts → EndpointBuilder-DAEoFAl8.d.mts} +3 -3
- package/dist/{EndpointBuilder-DaeCeneF.d.mts.map → EndpointBuilder-DAEoFAl8.d.mts.map} +1 -1
- package/dist/{EndpointBuilder-DPLAUHqg.d.cts → EndpointBuilder-DGsP8jY0.d.cts} +3 -3
- package/dist/{EndpointBuilder-DPLAUHqg.d.cts.map → EndpointBuilder-DGsP8jY0.d.cts.map} +1 -1
- package/dist/{EndpointFactory-DufM0t2z.d.mts → EndpointFactory-1X3rUfuX.d.mts} +3 -3
- package/dist/{EndpointFactory-CiKcb5PX.d.cts.map → EndpointFactory-1X3rUfuX.d.mts.map} +1 -1
- package/dist/{EndpointFactory-CiKcb5PX.d.cts → EndpointFactory-Cp-hAaTZ.d.cts} +3 -3
- package/dist/{EndpointFactory-DufM0t2z.d.mts.map → EndpointFactory-Cp-hAaTZ.d.cts.map} +1 -1
- package/dist/{EndpointFactory-CIUZTTAF.mjs → EndpointFactory-DM7M-dXl.mjs} +2 -2
- package/dist/{EndpointFactory-CIUZTTAF.mjs.map → EndpointFactory-DM7M-dXl.mjs.map} +1 -1
- package/dist/{EndpointFactory-d5uwWFkK.cjs → EndpointFactory-JAAwZkm1.cjs} +2 -2
- package/dist/{EndpointFactory-d5uwWFkK.cjs.map → EndpointFactory-JAAwZkm1.cjs.map} +1 -1
- package/dist/{Function-2qWSZqYB.cjs → Function-Bm4qoiYy.cjs} +2 -2
- package/dist/{Function-2qWSZqYB.cjs.map → Function-Bm4qoiYy.cjs.map} +1 -1
- package/dist/{Function-CbEohg13.d.cts → Function-Bp_qUzVD.d.mts} +3 -3
- package/dist/{Function-CbEohg13.d.cts.map → Function-Bp_qUzVD.d.mts.map} +1 -1
- package/dist/{Function-EjIOLxlh.d.mts → Function-CSZRFdGO.d.cts} +3 -3
- package/dist/{Function-EjIOLxlh.d.mts.map → Function-CSZRFdGO.d.cts.map} +1 -1
- package/dist/{Function-CdF1HmFu.mjs → Function-Cwl9ca-X.mjs} +2 -2
- package/dist/{Function-CdF1HmFu.mjs.map → Function-Cwl9ca-X.mjs.map} +1 -1
- package/dist/{FunctionBuilder-B-pbgm09.cjs → FunctionBuilder-BECHLaPA.cjs} +4 -4
- package/dist/{FunctionBuilder-B-pbgm09.cjs.map → FunctionBuilder-BECHLaPA.cjs.map} +1 -1
- package/dist/{FunctionBuilder-DaWVthAJ.mjs → FunctionBuilder-BuAHk66R.mjs} +4 -4
- package/dist/{FunctionBuilder-DaWVthAJ.mjs.map → FunctionBuilder-BuAHk66R.mjs.map} +1 -1
- package/dist/{FunctionBuilder-CX3ooNdq.d.cts → FunctionBuilder-CpV7F8QK.d.cts} +4 -4
- package/dist/{FunctionBuilder-CX3ooNdq.d.cts.map → FunctionBuilder-CpV7F8QK.d.cts.map} +1 -1
- package/dist/{FunctionBuilder-D11ytDyy.d.mts → FunctionBuilder-Cz4yHrx0.d.mts} +4 -4
- package/dist/{FunctionBuilder-D11ytDyy.d.mts.map → FunctionBuilder-Cz4yHrx0.d.mts.map} +1 -1
- package/dist/{FunctionExecutionWrapper-Dj3pmXaN.mjs → FunctionExecutionWrapper-B1ZQxtED.mjs} +2 -2
- package/dist/{FunctionExecutionWrapper-Dj3pmXaN.mjs.map → FunctionExecutionWrapper-B1ZQxtED.mjs.map} +1 -1
- package/dist/{FunctionExecutionWrapper-C6ChBNHs.cjs → FunctionExecutionWrapper-B5PRZRNk.cjs} +2 -2
- package/dist/{FunctionExecutionWrapper-C6ChBNHs.cjs.map → FunctionExecutionWrapper-B5PRZRNk.cjs.map} +1 -1
- package/dist/{FunctionExecutionWrapper-BJcRjH9Z.d.cts → FunctionExecutionWrapper-Bt6_rd-W.d.mts} +4 -4
- package/dist/{FunctionExecutionWrapper-BJcRjH9Z.d.cts.map → FunctionExecutionWrapper-Bt6_rd-W.d.mts.map} +1 -1
- package/dist/{FunctionExecutionWrapper-D3RNjGIR.d.mts → FunctionExecutionWrapper-DWGwZAXI.d.cts} +4 -4
- package/dist/{FunctionExecutionWrapper-D3RNjGIR.d.mts.map → FunctionExecutionWrapper-DWGwZAXI.d.cts.map} +1 -1
- package/dist/{HonoEndpointAdaptor-xGnDZa3a.cjs → HonoEndpointAdaptor-CyBoddKN.cjs} +3 -3
- package/dist/HonoEndpointAdaptor-CyBoddKN.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-Cc8Rnp9G.mjs → HonoEndpointAdaptor-D1U_80Ly.mjs} +3 -3
- package/dist/HonoEndpointAdaptor-D1U_80Ly.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-hrrvyfw9.d.cts → HonoEndpointAdaptor-D8wm9wxr.d.cts} +8 -8
- package/dist/HonoEndpointAdaptor-D8wm9wxr.d.cts.map +1 -0
- package/dist/{HonoEndpointAdaptor-CKP6nrG2.d.mts → HonoEndpointAdaptor-o9kpq82r.d.mts} +6 -6
- package/dist/HonoEndpointAdaptor-o9kpq82r.d.mts.map +1 -0
- package/dist/{Subscriber-BBcIOkhW.d.cts → Subscriber-BtS4KnZY.d.mts} +3 -3
- package/dist/{Subscriber-BBcIOkhW.d.cts.map → Subscriber-BtS4KnZY.d.mts.map} +1 -1
- package/dist/{Subscriber-BpTAXvbM.d.mts → Subscriber-CZUFuLrv.d.cts} +3 -3
- package/dist/{Subscriber-BpTAXvbM.d.mts.map → Subscriber-CZUFuLrv.d.cts.map} +1 -1
- package/dist/{Subscriber-CL4iYm01.cjs → Subscriber-Dch2_sA6.cjs} +2 -2
- package/dist/{Subscriber-CL4iYm01.cjs.map → Subscriber-Dch2_sA6.cjs.map} +1 -1
- package/dist/{Subscriber-CZ8Smwd2.mjs → Subscriber-DzWR7J0h.mjs} +2 -2
- package/dist/{Subscriber-CZ8Smwd2.mjs.map → Subscriber-DzWR7J0h.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-D0OS3hd7.cjs → SubscriberBuilder-89waFhqt.cjs} +2 -2
- package/dist/{SubscriberBuilder-D0OS3hd7.cjs.map → SubscriberBuilder-89waFhqt.cjs.map} +1 -1
- package/dist/{SubscriberBuilder-D7IgufwB.d.cts → SubscriberBuilder-BeHyDFDH.d.mts} +3 -3
- package/dist/{SubscriberBuilder-D7IgufwB.d.cts.map → SubscriberBuilder-BeHyDFDH.d.mts.map} +1 -1
- package/dist/{SubscriberBuilder-CxQg3TTm.mjs → SubscriberBuilder-C-2L2FCF.mjs} +2 -2
- package/dist/{SubscriberBuilder-CxQg3TTm.mjs.map → SubscriberBuilder-C-2L2FCF.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-DOFBbWLt.d.mts → SubscriberBuilder-cu4kH95n.d.cts} +3 -3
- package/dist/{SubscriberBuilder-DOFBbWLt.d.mts.map → SubscriberBuilder-cu4kH95n.d.cts.map} +1 -1
- package/dist/{TestEndpointAdaptor-CPL8ru6q.mjs → TestEndpointAdaptor-CAroN3El.mjs} +2 -2
- package/dist/TestEndpointAdaptor-CAroN3El.mjs.map +1 -0
- package/dist/{TestEndpointAdaptor-EPPTjntv.d.cts → TestEndpointAdaptor-CXaatEAn.d.cts} +3 -3
- package/dist/{TestEndpointAdaptor-BnJusjf7.d.mts.map → TestEndpointAdaptor-CXaatEAn.d.cts.map} +1 -1
- package/dist/{TestEndpointAdaptor-BnJusjf7.d.mts → TestEndpointAdaptor-DVjds7Cc.d.mts} +3 -3
- package/dist/{TestEndpointAdaptor-EPPTjntv.d.cts.map → TestEndpointAdaptor-DVjds7Cc.d.mts.map} +1 -1
- package/dist/{TestEndpointAdaptor-Ca4K26_d.cjs → TestEndpointAdaptor-D_FklTXe.cjs} +2 -2
- package/dist/TestEndpointAdaptor-D_FklTXe.cjs.map +1 -0
- package/dist/adaptors/aws.cjs +11 -11
- package/dist/adaptors/aws.d.cts +13 -13
- package/dist/adaptors/aws.d.mts +13 -13
- package/dist/adaptors/aws.mjs +11 -11
- package/dist/adaptors/hono.cjs +8 -8
- package/dist/adaptors/hono.d.cts +7 -7
- package/dist/adaptors/hono.d.mts +7 -7
- package/dist/adaptors/hono.mjs +8 -8
- package/dist/adaptors/testing.cjs +7 -7
- package/dist/adaptors/testing.d.cts +7 -7
- package/dist/adaptors/testing.d.mts +7 -7
- package/dist/adaptors/testing.mjs +7 -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.cts.map +1 -1
- package/dist/crons/index.d.mts +11 -11
- package/dist/crons/index.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/Endpoint.cjs +6 -6
- package/dist/endpoints/Endpoint.d.cts +6 -6
- package/dist/endpoints/Endpoint.d.mts +6 -6
- package/dist/endpoints/Endpoint.mjs +6 -6
- package/dist/endpoints/EndpointBuilder.cjs +7 -7
- package/dist/endpoints/EndpointBuilder.d.cts +7 -7
- package/dist/endpoints/EndpointBuilder.d.mts +7 -7
- package/dist/endpoints/EndpointBuilder.mjs +7 -7
- package/dist/endpoints/EndpointFactory.cjs +8 -8
- package/dist/endpoints/EndpointFactory.d.cts +8 -8
- package/dist/endpoints/EndpointFactory.d.mts +8 -8
- package/dist/endpoints/EndpointFactory.mjs +8 -8
- package/dist/endpoints/HonoEndpointAdaptor.cjs +8 -8
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +7 -7
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +7 -7
- package/dist/endpoints/HonoEndpointAdaptor.mjs +8 -8
- package/dist/endpoints/TestEndpointAdaptor.cjs +7 -7
- package/dist/endpoints/TestEndpointAdaptor.d.cts +7 -7
- package/dist/endpoints/TestEndpointAdaptor.d.mts +7 -7
- package/dist/endpoints/TestEndpointAdaptor.mjs +7 -7
- package/dist/endpoints/audit.d.cts +6 -6
- package/dist/endpoints/audit.d.mts +6 -6
- package/dist/endpoints/helpers.cjs +7 -7
- package/dist/endpoints/helpers.d.cts +6 -6
- package/dist/endpoints/helpers.d.mts +6 -6
- package/dist/endpoints/helpers.mjs +7 -7
- package/dist/endpoints/index.cjs +8 -8
- package/dist/endpoints/index.d.cts +12 -12
- package/dist/endpoints/index.d.mts +12 -12
- package/dist/endpoints/index.mjs +8 -8
- package/dist/endpoints/lazyAccessors.d.cts +7 -7
- package/dist/endpoints/lazyAccessors.d.mts +7 -7
- package/dist/endpoints/processAudits.d.cts +8 -8
- 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.d.cts +6 -6
- package/dist/endpoints/rls.d.mts +6 -6
- 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 +4 -4
- package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
- package/dist/functions/TestFunctionAdaptor.d.cts +3 -3
- 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 +4 -4
- 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-CbtExODi.mjs +8 -0
- package/dist/{functions-DOYBrb7n.mjs.map → functions-CbtExODi.mjs.map} +1 -1
- package/dist/{functions-CUEv5NC3.cjs → functions-HB7qwhT0.cjs} +2 -2
- package/dist/{functions-CUEv5NC3.cjs.map → functions-HB7qwhT0.cjs.map} +1 -1
- package/dist/{helpers-Dl1eszfi.mjs → helpers-BWtV9zA4.mjs} +2 -2
- package/dist/{helpers-Dl1eszfi.mjs.map → helpers-BWtV9zA4.mjs.map} +1 -1
- package/dist/{helpers-QMdfdnvU.cjs → helpers-CaNXi9c2.cjs} +2 -2
- package/dist/{helpers-QMdfdnvU.cjs.map → helpers-CaNXi9c2.cjs.map} +1 -1
- package/dist/index-BEqSUHHX.d.mts +12 -0
- package/dist/{index-BrGtMlpJ.d.cts.map → index-BEqSUHHX.d.mts.map} +1 -1
- package/dist/index-CQca-Mgc.d.cts +12 -0
- package/dist/{index-Dn4py3Db.d.mts.map → index-CQca-Mgc.d.cts.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{lazyAccessors-BFAj2-S4.d.mts → lazyAccessors-CTNhEuul.d.mts} +2 -2
- package/dist/{lazyAccessors-BFAj2-S4.d.mts.map → lazyAccessors-CTNhEuul.d.mts.map} +1 -1
- package/dist/{lazyAccessors-knaNZuTN.d.cts → lazyAccessors-CpWTbouI.d.cts} +2 -2
- package/dist/{lazyAccessors-knaNZuTN.d.cts.map → lazyAccessors-CpWTbouI.d.cts.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-BXG9YiRi.d.mts → publisher-DHEq5OHs.d.mts} +4 -4
- package/dist/publisher-DHEq5OHs.d.mts.map +1 -0
- package/dist/{publisher-D9ngDXg3.d.cts → publisher-DbiPyseG.d.cts} +4 -4
- package/dist/publisher-DbiPyseG.d.cts.map +1 -0
- package/dist/publisher-lFQleddL.cjs.map +1 -1
- package/dist/publisher.d.cts +2 -2
- package/dist/publisher.d.mts +2 -2
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +3 -3
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
- 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.cts.map +1 -1
- package/dist/subscribers/index.d.mts +5 -5
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +3 -3
- package/package.json +12 -12
- package/src/Construct.ts +10 -39
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +5 -4
- package/src/endpoints/HonoEndpointAdaptor.ts +4 -4
- package/src/endpoints/TestEndpointAdaptor.ts +3 -4
- package/src/endpoints/processAudits.ts +2 -2
- package/src/functions/TestFunctionAdaptor.ts +3 -4
- package/src/publisher.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-B4gLJ2dx.mjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-CwRKMRr_.cjs.map +0 -1
- package/dist/Construct-BNDLJJfD.mjs.map +0 -1
- package/dist/Construct-CPrCF8NK.cjs.map +0 -1
- package/dist/Construct-Dl0l2d8d.d.cts.map +0 -1
- package/dist/Construct-E8QPyHh4.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-CKP6nrG2.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-Cc8Rnp9G.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-hrrvyfw9.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-xGnDZa3a.cjs.map +0 -1
- package/dist/TestEndpointAdaptor-CPL8ru6q.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-Ca4K26_d.cjs.map +0 -1
- package/dist/functions-DOYBrb7n.mjs +0 -8
- package/dist/index-BrGtMlpJ.d.cts +0 -12
- package/dist/index-Dn4py3Db.d.mts +0 -12
- package/dist/publisher-BXG9YiRi.d.mts.map +0 -1
- package/dist/publisher-D9ngDXg3.d.cts.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "../Construct-
|
|
1
|
+
import "../Construct-CAVc_gyw.mjs";
|
|
2
2
|
import { publishEvents } from "../publisher-Bw4770Hi.mjs";
|
|
3
|
-
import "../BaseFunctionBuilder-
|
|
4
|
-
import "../Function-
|
|
5
|
-
import { FunctionBuilder } from "../FunctionBuilder-
|
|
3
|
+
import "../BaseFunctionBuilder-yIM62QAr.mjs";
|
|
4
|
+
import "../Function-Cwl9ca-X.mjs";
|
|
5
|
+
import { FunctionBuilder } from "../FunctionBuilder-BuAHk66R.mjs";
|
|
6
6
|
import { ServiceDiscovery } from "@geekmidas/services";
|
|
7
7
|
import { DefaultAuditor } from "@geekmidas/audit";
|
|
8
8
|
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestFunctionAdaptor.mjs","names":["_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","serviceDiscovery: ServiceDiscovery
|
|
1
|
+
{"version":3,"file":"TestFunctionAdaptor.mjs","names":["_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>","serviceDiscovery: ServiceDiscovery<any>","ctx: TestFunctionRequest<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>","services: ServiceRecord<TServices>","db: TDatabase | undefined","auditor: Auditor<TAuditAction> | undefined"],"sources":["../../src/functions/TestFunctionAdaptor.ts"],"sourcesContent":["import type { AuditableAction, Auditor, AuditStorage } from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n\tComposableStandardSchema,\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { publishEvents } from '../publisher';\nimport type { Function } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nexport class TestFunctionAdaptor<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\tstatic getDefaultServiceDiscovery<\n\t\tTInput extends ComposableStandardSchema | undefined = undefined,\n\t\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\t\tTServices extends Service[] = [],\n\t\tTLogger extends Logger = Logger,\n\t\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\t\tTEventPublisherServiceName extends string = string,\n\t\tTAuditStorage extends AuditStorage | undefined = undefined,\n\t\tTAuditStorageServiceName extends string = string,\n\t\tTDatabase = undefined,\n\t\tTDatabaseServiceName extends string = string,\n\t\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>,\n\t>(\n\t\t_fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>,\n\t) {\n\t\treturn ServiceDiscovery.getInstance(new EnvironmentParser({}));\n\t}\n\n\tconstructor(\n\t\tprivate readonly fn: Function<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTDatabase,\n\t\t\tTDatabaseServiceName,\n\t\t\tTAuditAction,\n\t\t\tany\n\t\t>,\n\t\tprivate serviceDiscovery: ServiceDiscovery<any> = TestFunctionAdaptor.getDefaultServiceDiscovery(\n\t\t\tfn,\n\t\t),\n\t) {}\n\n\tasync invoke(\n\t\tctx: TestFunctionRequest<\n\t\t\tTInput,\n\t\t\tTServices,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTDatabase,\n\t\t\tTAuditAction\n\t\t>,\n\t): Promise<InferStandardSchema<TOutSchema>> {\n\t\t// Parse input if schema is provided\n\n\t\tconst parsedInput = await FunctionBuilder.parseComposableStandardSchema(\n\t\t\tctx.input,\n\t\t\tthis.fn.input,\n\t\t);\n\n\t\t// Create logger with context\n\t\tconst logger = this.fn.logger.child({\n\t\t\ttest: true,\n\t\t}) as TLogger;\n\n\t\t// Register services (use provided services or register from function)\n\t\tlet services: ServiceRecord<TServices>;\n\t\tif (ctx.services) {\n\t\t\tservices = ctx.services;\n\t\t} else {\n\t\t\tservices = await this.serviceDiscovery.register(this.fn.services);\n\t\t}\n\n\t\t// Resolve database (use provided db or register from function)\n\t\tlet db: TDatabase | undefined;\n\t\tif ('db' in ctx && ctx.db !== undefined) {\n\t\t\tdb = ctx.db;\n\t\t} else if (this.fn.databaseService) {\n\t\t\tconst dbServices = await this.serviceDiscovery.register([\n\t\t\t\tthis.fn.databaseService,\n\t\t\t]);\n\t\t\tdb = dbServices[\n\t\t\t\tthis.fn.databaseService.serviceName as keyof typeof dbServices\n\t\t\t] as TDatabase;\n\t\t}\n\n\t\t// Resolve auditor (use provided auditor or create from function)\n\t\tlet auditor: Auditor<TAuditAction> | undefined;\n\t\tif ('auditor' in ctx && ctx.auditor !== undefined) {\n\t\t\tauditor = ctx.auditor;\n\t\t} else if (this.fn.auditorStorageService) {\n\t\t\tconst auditServices = await this.serviceDiscovery.register([\n\t\t\t\tthis.fn.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = auditServices[\n\t\t\t\tthis.fn.auditorStorageService.serviceName as keyof typeof auditServices\n\t\t\t] as AuditStorage;\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor: { id: 'system', type: 'system' },\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tfunction: this.fn.type,\n\t\t\t\t\ttest: true,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Execute the function\n\t\tconst response = await this.fn.fn({\n\t\t\tinput: parsedInput,\n\t\t\tservices,\n\t\t\tlogger,\n\t\t\tdb,\n\t\t\tauditor,\n\t\t} as any);\n\n\t\t// Parse output if schema is provided\n\t\tconst output = await this.fn.parseOutput(response);\n\n\t\t// Flush audits if any were recorded\n\t\tif (auditor) {\n\t\t\tconst records = auditor.getRecords();\n\t\t\tif (records.length > 0) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t{ auditCount: records.length },\n\t\t\t\t\t'Flushing function audits',\n\t\t\t\t);\n\t\t\t\tawait auditor.flush();\n\t\t\t}\n\t\t}\n\n\t\t// Register publisher service if provided in context\n\n\t\tawait publishEvents(\n\t\t\tlogger,\n\t\t\tthis.serviceDiscovery,\n\t\t\tthis.fn.events,\n\t\t\toutput,\n\t\t\tthis.fn.publisherService,\n\t\t);\n\n\t\treturn output;\n\t}\n}\n\nexport type TestFunctionRequest<\n\tTInput extends ComposableStandardSchema | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTDatabase = undefined,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> = {\n\tinput: InferComposableStandardSchema<TInput>;\n\tservices: ServiceRecord<TServices>;\n\tpublisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tdb?: TDatabase;\n\tauditor?: Auditor<TAuditAction>;\n} & InferComposableStandardSchema<{ input: TInput }>;\n"],"mappings":";;;;;;;;;;AAoBA,IAAa,sBAAb,MAAa,oBAeX;CACD,OAAO,2BAgBNA,KAcC;AACD,SAAO,iBAAiB,YAAY,IAAI,kBAAkB,CAAE,GAAE;CAC9D;CAED,YACkBC,IAcTC,mBAA0C,oBAAoB,2BACrE,GACA,EACA;EAjBgB;EAcT;CAGL;CAEJ,MAAM,OACLC,KAQ2C;EAG3C,MAAM,cAAc,MAAM,gBAAgB,8BACzC,IAAI,OACJ,KAAK,GAAG,MACR;EAGD,MAAM,SAAS,KAAK,GAAG,OAAO,MAAM,EACnC,MAAM,KACN,EAAC;EAGF,IAAIC;AACJ,MAAI,IAAI,SACP,YAAW,IAAI;MAEf,YAAW,MAAM,KAAK,iBAAiB,SAAS,KAAK,GAAG,SAAS;EAIlE,IAAIC;AACJ,MAAI,QAAQ,OAAO,IAAI,cACtB,MAAK,IAAI;WACC,KAAK,GAAG,iBAAiB;GACnC,MAAM,aAAa,MAAM,KAAK,iBAAiB,SAAS,CACvD,KAAK,GAAG,eACR,EAAC;AACF,QAAK,WACJ,KAAK,GAAG,gBAAgB;EAEzB;EAGD,IAAIC;AACJ,MAAI,aAAa,OAAO,IAAI,mBAC3B,WAAU,IAAI;WACJ,KAAK,GAAG,uBAAuB;GACzC,MAAM,gBAAgB,MAAM,KAAK,iBAAiB,SAAS,CAC1D,KAAK,GAAG,qBACR,EAAC;GACF,MAAM,UAAU,cACf,KAAK,GAAG,sBAAsB;AAG/B,aAAU,IAAI,eAA6B;IAC1C,OAAO;KAAE,IAAI;KAAU,MAAM;IAAU;IACvC;IACA,UAAU;KACT,UAAU,KAAK,GAAG;KAClB,MAAM;IACN;GACD;EACD;EAGD,MAAM,WAAW,MAAM,KAAK,GAAG,GAAG;GACjC,OAAO;GACP;GACA;GACA;GACA;EACA,EAAQ;EAGT,MAAM,SAAS,MAAM,KAAK,GAAG,YAAY,SAAS;AAGlD,MAAI,SAAS;GACZ,MAAM,UAAU,QAAQ,YAAY;AACpC,OAAI,QAAQ,SAAS,GAAG;AACvB,WAAO,MACN,EAAE,YAAY,QAAQ,OAAQ,GAC9B,2BACA;AACD,UAAM,QAAQ,OAAO;GACrB;EACD;AAID,QAAM,cACL,QACA,KAAK,kBACL,KAAK,GAAG,QACR,QACA,KAAK,GAAG,iBACR;AAED,SAAO;CACP;AACD"}
|
package/dist/functions/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require('../Construct-
|
|
2
|
-
const require_BaseFunctionBuilder = require('../BaseFunctionBuilder-
|
|
3
|
-
const require_Function = require('../Function-
|
|
4
|
-
const require_FunctionBuilder = require('../FunctionBuilder-
|
|
5
|
-
const require_functions = require('../functions-
|
|
1
|
+
require('../Construct-C5Oko4YC.cjs');
|
|
2
|
+
const require_BaseFunctionBuilder = require('../BaseFunctionBuilder-D2eLZ4eD.cjs');
|
|
3
|
+
const require_Function = require('../Function-Bm4qoiYy.cjs');
|
|
4
|
+
const require_FunctionBuilder = require('../FunctionBuilder-BECHLaPA.cjs');
|
|
5
|
+
const require_functions = require('../functions-HB7qwhT0.cjs');
|
|
6
6
|
|
|
7
7
|
exports.BaseFunctionBuilder = require_BaseFunctionBuilder.BaseFunctionBuilder;
|
|
8
8
|
exports.Function = require_Function.Function;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../Construct-
|
|
2
|
-
import { BaseFunctionBuilder } from "../BaseFunctionBuilder-
|
|
3
|
-
import { Function, FunctionContext, FunctionHandler } from "../Function-
|
|
4
|
-
import { FunctionBuilder } from "../FunctionBuilder-
|
|
5
|
-
import { f } from "../index-
|
|
1
|
+
import "../Construct-BwwtHYDJ.cjs";
|
|
2
|
+
import { BaseFunctionBuilder } from "../BaseFunctionBuilder-L5zHzBJ2.cjs";
|
|
3
|
+
import { Function, FunctionContext, FunctionHandler } from "../Function-CSZRFdGO.cjs";
|
|
4
|
+
import { FunctionBuilder } from "../FunctionBuilder-CpV7F8QK.cjs";
|
|
5
|
+
import { f } from "../index-CQca-Mgc.cjs";
|
|
6
6
|
export { BaseFunctionBuilder, Function, FunctionBuilder, FunctionContext, FunctionHandler, f };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../Construct-
|
|
2
|
-
import { BaseFunctionBuilder } from "../BaseFunctionBuilder-
|
|
3
|
-
import { Function, FunctionContext, FunctionHandler } from "../Function-
|
|
4
|
-
import { FunctionBuilder } from "../FunctionBuilder-
|
|
5
|
-
import { f } from "../index-
|
|
1
|
+
import "../Construct-DXbQxP4z.mjs";
|
|
2
|
+
import { BaseFunctionBuilder } from "../BaseFunctionBuilder-BvxwyzYE.mjs";
|
|
3
|
+
import { Function, FunctionContext, FunctionHandler } from "../Function-Bp_qUzVD.mjs";
|
|
4
|
+
import { FunctionBuilder } from "../FunctionBuilder-Cz4yHrx0.mjs";
|
|
5
|
+
import { f } from "../index-BEqSUHHX.mjs";
|
|
6
6
|
export { BaseFunctionBuilder, Function, FunctionBuilder, FunctionContext, FunctionHandler, f };
|
package/dist/functions/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../Construct-
|
|
2
|
-
import { BaseFunctionBuilder } from "../BaseFunctionBuilder-
|
|
3
|
-
import { Function } from "../Function-
|
|
4
|
-
import { FunctionBuilder } from "../FunctionBuilder-
|
|
5
|
-
import { f } from "../functions-
|
|
1
|
+
import "../Construct-CAVc_gyw.mjs";
|
|
2
|
+
import { BaseFunctionBuilder } from "../BaseFunctionBuilder-yIM62QAr.mjs";
|
|
3
|
+
import { Function } from "../Function-Cwl9ca-X.mjs";
|
|
4
|
+
import { FunctionBuilder } from "../FunctionBuilder-BuAHk66R.mjs";
|
|
5
|
+
import { f } from "../functions-CbtExODi.mjs";
|
|
6
6
|
|
|
7
7
|
export { BaseFunctionBuilder, Function, FunctionBuilder, f };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions-
|
|
1
|
+
{"version":3,"file":"functions-CbtExODi.mjs","names":[],"sources":["../src/functions/index.ts"],"sourcesContent":["export { BaseFunctionBuilder } from './BaseFunctionBuilder';\nexport {\n\tFunction,\n\ttype FunctionContext,\n\ttype FunctionHandler,\n} from './Function';\n\nimport { FunctionBuilder } from './FunctionBuilder';\n\nexport { FunctionBuilder } from './FunctionBuilder';\n\nexport const f = new FunctionBuilder();\n"],"mappings":";;;AAWA,MAAa,IAAI,IAAI"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_FunctionBuilder = require('./FunctionBuilder-
|
|
1
|
+
const require_FunctionBuilder = require('./FunctionBuilder-BECHLaPA.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/functions/index.ts
|
|
4
4
|
const f = new require_FunctionBuilder.FunctionBuilder();
|
|
@@ -10,4 +10,4 @@ Object.defineProperty(exports, 'f', {
|
|
|
10
10
|
return f;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
//# sourceMappingURL=functions-
|
|
13
|
+
//# sourceMappingURL=functions-HB7qwhT0.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions-
|
|
1
|
+
{"version":3,"file":"functions-HB7qwhT0.cjs","names":["FunctionBuilder"],"sources":["../src/functions/index.ts"],"sourcesContent":["export { BaseFunctionBuilder } from './BaseFunctionBuilder';\nexport {\n\tFunction,\n\ttype FunctionContext,\n\ttype FunctionHandler,\n} from './Function';\n\nimport { FunctionBuilder } from './FunctionBuilder';\n\nexport { FunctionBuilder } from './FunctionBuilder';\n\nexport const f = new FunctionBuilder();\n"],"mappings":";;;AAWA,MAAa,IAAI,IAAIA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Endpoint } from "./Endpoint-
|
|
1
|
+
import { Endpoint } from "./Endpoint-DWqfgcrY.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import fg from "fast-glob";
|
|
4
4
|
|
|
@@ -80,4 +80,4 @@ async function getEndpointsFromRoutes(routes, cwd) {
|
|
|
80
80
|
|
|
81
81
|
//#endregion
|
|
82
82
|
export { getEndpointsFromRoutes, getProjectRoot };
|
|
83
|
-
//# sourceMappingURL=helpers-
|
|
83
|
+
//# sourceMappingURL=helpers-BWtV9zA4.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers-
|
|
1
|
+
{"version":3,"file":"helpers-BWtV9zA4.mjs","names":["cwd: string","routes: string[]","endpoints: Endpoint<string, HttpMethod, any, any, TServices>[]"],"sources":["../src/endpoints/helpers.ts"],"sourcesContent":["import path from 'node:path';\nimport type { Service } from '@geekmidas/services';\nimport fg from 'fast-glob';\nimport type { HttpMethod } from '../types';\nimport { Endpoint } from './Endpoint';\n\n// Re-export utility functions\n\n/**\n * Recursively finds the project root directory by looking for lock files.\n * Traverses up the directory tree until it finds a package manager lock file.\n *\n * @param cwd - The current working directory to start searching from\n * @returns Promise resolving to the absolute path of the project root\n *\n * @example\n * ```typescript\n * const projectRoot = await getProjectRoot(process.cwd());\n * console.log(`Project root: ${projectRoot}`);\n * // Output: Project root: /Users/user/my-project\n * ```\n */\nexport async function getProjectRoot(cwd: string): Promise<string> {\n\tif (cwd === '/') {\n\t\treturn cwd;\n\t}\n\n\tconst stream = fg.stream(\n\t\t['yarn.lock', 'pnpm-lock.yaml', 'package-lock.json', 'deno.lock'],\n\t\t{ dot: true, cwd },\n\t);\n\n\tlet isRoot = false;\n\n\tfor await (const _ of stream) {\n\t\tisRoot = true;\n\t\tbreak;\n\t}\n\n\tif (isRoot) {\n\t\treturn cwd;\n\t}\n\n\treturn getProjectRoot(path.resolve(cwd, '..'));\n}\n\n/**\n * Discovers and imports all Endpoint instances from the specified route patterns.\n * Uses fast-glob to find files matching the patterns and extracts exported Endpoints.\n *\n * @template TServices - Array of service types used by the endpoints\n * @param routes - Array of glob patterns to match route files (e.g., ['src/routes/*.ts'])\n * @param cwd - The current working directory to resolve paths from\n * @returns Promise resolving to an array of Endpoint instances found in the matched files\n *\n * @example\n * ```typescript\n * // Find all endpoints in the routes directory\n * const endpoints = await getEndpointsFromRoutes(\n * ['src/routes/**\\/*.ts'],\n * process.cwd()\n * );\n *\n * // Register endpoints with your server\n * for (const endpoint of endpoints) {\n * server.register(endpoint);\n * }\n * ```\n *\n * @remarks\n * - Only exports that are valid Endpoint instances are included\n * - Files are imported dynamically, so they must be valid ES modules\n * - The function filters out non-Endpoint exports automatically\n */\nexport async function getEndpointsFromRoutes<TServices extends Service[]>(\n\troutes: string[],\n\tcwd: string,\n): Promise<Endpoint<string, HttpMethod, any, any, TServices>[]> {\n\tconst stream = fg.stream(routes, { cwd });\n\n\tconst endpoints: Endpoint<string, HttpMethod, any, any, TServices>[] = [];\n\n\tfor await (const f of stream) {\n\t\t// Resolve the absolute path for the route file\n\t\tconst routePath = path.resolve(cwd, f.toString());\n\t\t// Dynamically import the route module\n\t\tconst route = await import(routePath);\n\n\t\t// Filter exported values to find only Endpoint instances\n\t\tconst handlers = Object.values(route).filter((value) => {\n\t\t\treturn Endpoint.isEndpoint(value);\n\t\t}) as unknown as Endpoint<string, HttpMethod, any, any, TServices>[];\n\n\t\tendpoints.push(...handlers);\n\t}\n\n\treturn endpoints;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,eAAsB,eAAeA,KAA8B;AAClE,KAAI,QAAQ,IACX,QAAO;CAGR,MAAM,SAAS,GAAG,OACjB;EAAC;EAAa;EAAkB;EAAqB;CAAY,GACjE;EAAE,KAAK;EAAM;CAAK,EAClB;CAED,IAAI,SAAS;AAEb,YAAW,MAAM,KAAK,QAAQ;AAC7B,WAAS;AACT;CACA;AAED,KAAI,OACH,QAAO;AAGR,QAAO,eAAe,KAAK,QAAQ,KAAK,KAAK,CAAC;AAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BD,eAAsB,uBACrBC,QACAD,KAC+D;CAC/D,MAAM,SAAS,GAAG,OAAO,QAAQ,EAAE,IAAK,EAAC;CAEzC,MAAME,YAAiE,CAAE;AAEzE,YAAW,MAAM,KAAK,QAAQ;EAE7B,MAAM,YAAY,KAAK,QAAQ,KAAK,EAAE,UAAU,CAAC;EAEjD,MAAM,QAAQ,MAAM,OAAO;EAG3B,MAAM,WAAW,OAAO,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU;AACvD,UAAO,SAAS,WAAW,MAAM;EACjC,EAAC;AAEF,YAAU,KAAK,GAAG,SAAS;CAC3B;AAED,QAAO;AACP"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_Endpoint = require('./Endpoint-
|
|
2
|
+
const require_Endpoint = require('./Endpoint-0ueQu3sb.cjs');
|
|
3
3
|
const node_path = require_chunk.__toESM(require("node:path"));
|
|
4
4
|
const fast_glob = require_chunk.__toESM(require("fast-glob"));
|
|
5
5
|
|
|
@@ -92,4 +92,4 @@ Object.defineProperty(exports, 'getProjectRoot', {
|
|
|
92
92
|
return getProjectRoot;
|
|
93
93
|
}
|
|
94
94
|
});
|
|
95
|
-
//# sourceMappingURL=helpers-
|
|
95
|
+
//# sourceMappingURL=helpers-CaNXi9c2.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers-
|
|
1
|
+
{"version":3,"file":"helpers-CaNXi9c2.cjs","names":["cwd: string","routes: string[]","endpoints: Endpoint<string, HttpMethod, any, any, TServices>[]"],"sources":["../src/endpoints/helpers.ts"],"sourcesContent":["import path from 'node:path';\nimport type { Service } from '@geekmidas/services';\nimport fg from 'fast-glob';\nimport type { HttpMethod } from '../types';\nimport { Endpoint } from './Endpoint';\n\n// Re-export utility functions\n\n/**\n * Recursively finds the project root directory by looking for lock files.\n * Traverses up the directory tree until it finds a package manager lock file.\n *\n * @param cwd - The current working directory to start searching from\n * @returns Promise resolving to the absolute path of the project root\n *\n * @example\n * ```typescript\n * const projectRoot = await getProjectRoot(process.cwd());\n * console.log(`Project root: ${projectRoot}`);\n * // Output: Project root: /Users/user/my-project\n * ```\n */\nexport async function getProjectRoot(cwd: string): Promise<string> {\n\tif (cwd === '/') {\n\t\treturn cwd;\n\t}\n\n\tconst stream = fg.stream(\n\t\t['yarn.lock', 'pnpm-lock.yaml', 'package-lock.json', 'deno.lock'],\n\t\t{ dot: true, cwd },\n\t);\n\n\tlet isRoot = false;\n\n\tfor await (const _ of stream) {\n\t\tisRoot = true;\n\t\tbreak;\n\t}\n\n\tif (isRoot) {\n\t\treturn cwd;\n\t}\n\n\treturn getProjectRoot(path.resolve(cwd, '..'));\n}\n\n/**\n * Discovers and imports all Endpoint instances from the specified route patterns.\n * Uses fast-glob to find files matching the patterns and extracts exported Endpoints.\n *\n * @template TServices - Array of service types used by the endpoints\n * @param routes - Array of glob patterns to match route files (e.g., ['src/routes/*.ts'])\n * @param cwd - The current working directory to resolve paths from\n * @returns Promise resolving to an array of Endpoint instances found in the matched files\n *\n * @example\n * ```typescript\n * // Find all endpoints in the routes directory\n * const endpoints = await getEndpointsFromRoutes(\n * ['src/routes/**\\/*.ts'],\n * process.cwd()\n * );\n *\n * // Register endpoints with your server\n * for (const endpoint of endpoints) {\n * server.register(endpoint);\n * }\n * ```\n *\n * @remarks\n * - Only exports that are valid Endpoint instances are included\n * - Files are imported dynamically, so they must be valid ES modules\n * - The function filters out non-Endpoint exports automatically\n */\nexport async function getEndpointsFromRoutes<TServices extends Service[]>(\n\troutes: string[],\n\tcwd: string,\n): Promise<Endpoint<string, HttpMethod, any, any, TServices>[]> {\n\tconst stream = fg.stream(routes, { cwd });\n\n\tconst endpoints: Endpoint<string, HttpMethod, any, any, TServices>[] = [];\n\n\tfor await (const f of stream) {\n\t\t// Resolve the absolute path for the route file\n\t\tconst routePath = path.resolve(cwd, f.toString());\n\t\t// Dynamically import the route module\n\t\tconst route = await import(routePath);\n\n\t\t// Filter exported values to find only Endpoint instances\n\t\tconst handlers = Object.values(route).filter((value) => {\n\t\t\treturn Endpoint.isEndpoint(value);\n\t\t}) as unknown as Endpoint<string, HttpMethod, any, any, TServices>[];\n\n\t\tendpoints.push(...handlers);\n\t}\n\n\treturn endpoints;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,eAAsB,eAAeA,KAA8B;AAClE,KAAI,QAAQ,IACX,QAAO;CAGR,MAAM,SAAS,kBAAG,OACjB;EAAC;EAAa;EAAkB;EAAqB;CAAY,GACjE;EAAE,KAAK;EAAM;CAAK,EAClB;CAED,IAAI,SAAS;AAEb,YAAW,MAAM,KAAK,QAAQ;AAC7B,WAAS;AACT;CACA;AAED,KAAI,OACH,QAAO;AAGR,QAAO,eAAe,kBAAK,QAAQ,KAAK,KAAK,CAAC;AAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BD,eAAsB,uBACrBC,QACAD,KAC+D;CAC/D,MAAM,SAAS,kBAAG,OAAO,QAAQ,EAAE,IAAK,EAAC;CAEzC,MAAME,YAAiE,CAAE;AAEzE,YAAW,MAAM,KAAK,QAAQ;EAE7B,MAAM,YAAY,kBAAK,QAAQ,KAAK,EAAE,UAAU,CAAC;EAEjD,MAAM,QAAQ,MAAM,OAAO;EAG3B,MAAM,WAAW,OAAO,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU;AACvD,UAAO,0BAAS,WAAW,MAAM;EACjC,EAAC;AAEF,YAAU,KAAK,GAAG,SAAS;CAC3B;AAED,QAAO;AACP"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FunctionBuilder } from "./FunctionBuilder-Cz4yHrx0.mjs";
|
|
2
|
+
import * as _geekmidas_audit2 from "@geekmidas/audit";
|
|
3
|
+
import * as _geekmidas_logger1 from "@geekmidas/logger";
|
|
4
|
+
import * as _geekmidas_schema0 from "@geekmidas/schema";
|
|
5
|
+
|
|
6
|
+
//#region src/functions/index.d.ts
|
|
7
|
+
declare const f: FunctionBuilder<_geekmidas_schema0.ComposableStandardSchema, undefined, [], _geekmidas_logger1.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit2.AuditableAction<string, unknown>>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { f };
|
|
12
|
+
//# sourceMappingURL=index-BEqSUHHX.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BEqSUHHX.d.mts","names":[],"sources":["../src/functions/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAWa,GAAC,gBAAwB,kBAAA,CAAxB,wBAAA,iBAAA,kBAAA,CAAA,MAAA,2DAAA,iBAAA,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FunctionBuilder } from "./FunctionBuilder-CpV7F8QK.cjs";
|
|
2
|
+
import * as _geekmidas_audit7 from "@geekmidas/audit";
|
|
3
|
+
import * as _geekmidas_logger6 from "@geekmidas/logger";
|
|
4
|
+
import * as _geekmidas_schema5 from "@geekmidas/schema";
|
|
5
|
+
|
|
6
|
+
//#region src/functions/index.d.ts
|
|
7
|
+
declare const f: FunctionBuilder<_geekmidas_schema5.ComposableStandardSchema, undefined, [], _geekmidas_logger6.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit7.AuditableAction<string, unknown>>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { f };
|
|
12
|
+
//# sourceMappingURL=index-CQca-Mgc.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CQca-Mgc.d.cts","names":[],"sources":["../src/functions/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAWa,GAAC,gBAAwB,kBAAA,CAAxB,wBAAA,iBAAA,kBAAA,CAAA,MAAA,2DAAA,iBAAA,CAAA"}
|
package/dist/index.cjs
CHANGED
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Construct, ConstructType, sniffService, snifferContext } from "./Construct-
|
|
1
|
+
import { Construct, ConstructType, sniffService, snifferContext } from "./Construct-BwwtHYDJ.cjs";
|
|
2
2
|
import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-B5H3piDg.cjs";
|
|
3
3
|
import { Telemetry, TelemetryContext, TelemetryRequest, TelemetryResponse } from "./telemetry-BTaiRqPo.cjs";
|
|
4
4
|
import { Service, ServiceRecord } from "@geekmidas/services";
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Construct, ConstructType, sniffService, snifferContext } from "./Construct-
|
|
1
|
+
import { Construct, ConstructType, sniffService, snifferContext } from "./Construct-DXbQxP4z.mjs";
|
|
2
2
|
import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-Dw-iLd3Y.mjs";
|
|
3
3
|
import { Telemetry, TelemetryContext, TelemetryRequest, TelemetryResponse } from "./telemetry-yAHf5yDs.mjs";
|
|
4
4
|
import { Service, ServiceRecord } from "@geekmidas/services";
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CookieFn, HeaderFn } from "./Endpoint-
|
|
1
|
+
import { CookieFn, HeaderFn } from "./Endpoint-DrmzJ83e.mjs";
|
|
2
2
|
import { Context } from "hono";
|
|
3
3
|
|
|
4
4
|
//#region src/endpoints/lazyAccessors.d.ts
|
|
@@ -46,4 +46,4 @@ declare function createNoopCookies(): CookieFn;
|
|
|
46
46
|
//# sourceMappingURL=lazyAccessors.d.ts.map
|
|
47
47
|
//#endregion
|
|
48
48
|
export { createApiGatewayCookies, createApiGatewayHeaders, createCookieHeaderAccessor, createHonoCookies, createHonoHeaders, createNoopCookies, createNoopHeaders, createObjectHeaders };
|
|
49
|
-
//# sourceMappingURL=lazyAccessors-
|
|
49
|
+
//# sourceMappingURL=lazyAccessors-CTNhEuul.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyAccessors-
|
|
1
|
+
{"version":3,"file":"lazyAccessors-CTNhEuul.d.mts","names":[],"sources":["../src/endpoints/lazyAccessors.ts"],"sourcesContent":[],"mappings":";;;;;AAqCA;;;;AAAuD;AAgCvC,iBArDA,iBAAA,CAqDuB,CAAA,EArDF,OAqDE,CAAA,EArDQ,QAqDR;;;;AAE5B;AAoCX;AA+CgB,iBArHA,iBAAA,CAqHmB,CAAA,EArHE,OAqHF,CAAA,EArHY,QAqHZ;;;;AAExB;AAkCK,iBAzHA,uBAAA,CA2Hb,OAAQ,EA1HD,MA0HC,CAAA,MAAA,EAAA,MAAA,GAAA,SAAA,CAAA,GAAA,IAAA,GAAA,SAAA,CAAA,EAzHR,QAyHQ;AAiCX;AAUA;;;iBAhIgB,uBAAA,mEAGb;;;;;iBA4Ca,mBAAA,UACN,qCACP;;;;;iBAkCa,0BAAA,oCAEb;;;;iBAiCa,iBAAA,CAAA,GAAqB;;;;iBAUrB,iBAAA,CAAA,GAAqB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CookieFn, HeaderFn } from "./Endpoint-
|
|
1
|
+
import { CookieFn, HeaderFn } from "./Endpoint-D3PbUsFI.cjs";
|
|
2
2
|
import { Context } from "hono";
|
|
3
3
|
|
|
4
4
|
//#region src/endpoints/lazyAccessors.d.ts
|
|
@@ -46,4 +46,4 @@ declare function createNoopCookies(): CookieFn;
|
|
|
46
46
|
//# sourceMappingURL=lazyAccessors.d.ts.map
|
|
47
47
|
//#endregion
|
|
48
48
|
export { createApiGatewayCookies, createApiGatewayHeaders, createCookieHeaderAccessor, createHonoCookies, createHonoHeaders, createNoopCookies, createNoopHeaders, createObjectHeaders };
|
|
49
|
-
//# sourceMappingURL=lazyAccessors-
|
|
49
|
+
//# sourceMappingURL=lazyAccessors-CpWTbouI.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyAccessors-
|
|
1
|
+
{"version":3,"file":"lazyAccessors-CpWTbouI.d.cts","names":[],"sources":["../src/endpoints/lazyAccessors.ts"],"sourcesContent":[],"mappings":";;;;;AAqCA;;;;AAAuD;AAgCvC,iBArDA,iBAAA,CAqDuB,CAAA,EArDF,OAqDE,CAAA,EArDQ,QAqDR;;;;AAE5B;AAoCX;AA+CgB,iBArHA,iBAAA,CAqHmB,CAAA,EArHE,OAqHF,CAAA,EArHY,QAqHZ;;;;AAExB;AAkCK,iBAzHA,uBAAA,CA2Hb,OAAQ,EA1HD,MA0HC,CAAA,MAAA,EAAA,MAAA,GAAA,SAAA,CAAA,GAAA,IAAA,GAAA,SAAA,CAAA,EAzHR,QAyHQ;AAiCX;AAUA;;;iBAhIgB,uBAAA,mEAGb;;;;;iBA4Ca,mBAAA,UACN,qCACP;;;;;iBAkCa,0BAAA,oCAEb;;;;iBAiCa,iBAAA,CAAA,GAAqB;;;;iBAUrB,iBAAA,CAAA,GAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processAudits-CzHkPokQ.cjs","names":["endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>","response: InferStandardSchema<OutSchema>","serviceDiscovery: ServiceDiscovery<any, any>","logger: TLogger","ctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t}","existingAuditor?: Auditor<TAuditAction>","auditor: Auditor<TAuditAction>","actor: AuditActor","DefaultAuditor","endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>","auditContext: AuditExecutionContext<TAuditAction> | undefined","handler: (auditor?: Auditor<TAuditAction>) => Promise<T>","onComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>","options?: ExecuteWithAuditTransactionOptions","response"],"sources":["../src/endpoints/processAudits.ts"],"sourcesContent":["import type {\n\tAuditActor,\n\tAuditableAction,\n\tAuditor,\n\tAuditStorage,\n} from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { CookieFn, Endpoint, HeaderFn } from './Endpoint';\n\n/**\n * Process declarative audit definitions after successful endpoint execution.\n * Similar to publishConstructEvents for events.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param response - The handler response to generate audit payloads from\n * @param serviceDiscovery - Service discovery for registering audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context (session, headers, cookies, services)\n * @param existingAuditor - Optional existing auditor instance (e.g., from handler context).\n * If provided, uses this auditor (with its stored transaction).\n * If not provided, creates a new auditor.\n */\nexport async function processEndpointAudits<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\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\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any, any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n\texistingAuditor?: Auditor<TAuditAction>,\n): Promise<void> {\n\ttry {\n\t\tconst audits = endpoint.audits as MappedAudit<TAuditAction, OutSchema>[];\n\n\t\t// If we have an existing auditor (from handler context), we need to flush\n\t\t// any manual audits it collected, even if there are no declarative audits\n\t\tconst hasExistingRecords =\n\t\t\texistingAuditor && existingAuditor.getRecords().length > 0;\n\n\t\t// Skip if no declarative audits and no existing records to flush\n\t\tif (!audits?.length && !hasExistingRecords) {\n\t\t\tlogger.debug('No audits to process');\n\t\t\treturn;\n\t\t}\n\n\t\t// If no auditor storage service and we have things to process, warn\n\t\tif (!endpoint.auditorStorageService) {\n\t\t\tif (hasExistingRecords || audits?.length) {\n\t\t\t\tlogger.warn('No auditor storage service available');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Get or create auditor\n\t\tlet auditor: Auditor<TAuditAction>;\n\n\t\tif (existingAuditor) {\n\t\t\t// Use existing auditor (preserves stored transaction and manual audits)\n\t\t\tauditor = existingAuditor;\n\t\t\tlogger.debug('Using existing auditor from handler context');\n\t\t} else {\n\t\t\t// Create new auditor (backward compatibility)\n\t\t\tconst services = await serviceDiscovery.register([\n\t\t\t\tendpoint.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = services[\n\t\t\t\tendpoint.auditorStorageService.serviceName\n\t\t\t] as AuditStorage;\n\n\t\t\t// Extract actor if configured\n\t\t\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\t\t\tif (endpoint.actorExtractor) {\n\t\t\t\ttry {\n\t\t\t\t\tactor = await (\n\t\t\t\t\t\tendpoint.actorExtractor as ActorExtractor<\n\t\t\t\t\t\t\tTServices,\n\t\t\t\t\t\t\tTSession,\n\t\t\t\t\t\t\tTLogger\n\t\t\t\t\t\t>\n\t\t\t\t\t)({\n\t\t\t\t\t\tservices: ctx.services as any,\n\t\t\t\t\t\tsession: ctx.session,\n\t\t\t\t\t\theader: ctx.header,\n\t\t\t\t\t\tcookie: ctx.cookie,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t\t\t\t// Continue with system actor\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor,\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tendpoint: endpoint.route,\n\t\t\t\t\tmethod: endpoint.method,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Process each declarative audit\n\t\tif (audits?.length) {\n\t\t\tfor (const audit of audits) {\n\t\t\t\tlogger.debug({ audit: audit.type }, 'Processing declarative audit');\n\n\t\t\t\t// Check when condition\n\t\t\t\tif (audit.when && !audit.when(response as any)) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t{ audit: audit.type },\n\t\t\t\t\t\t'Audit skipped due to when condition',\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Extract payload\n\t\t\t\tconst payload = audit.payload(response as any);\n\n\t\t\t\t// Extract entityId if configured\n\t\t\t\tconst entityId = audit.entityId?.(response as any);\n\n\t\t\t\t// Record the audit\n\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\ttable: audit.table,\n\t\t\t\t\tentityId,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Flush audits to storage\n\t\t// Note: If existingAuditor has a stored transaction (via setTransaction),\n\t\t// flush() will use it automatically\n\t\tconst recordCount = auditor.getRecords().length;\n\t\tif (recordCount > 0) {\n\t\t\t// Check if auditor has a stored transaction (for logging purposes)\n\t\t\tconst trx =\n\t\t\t\t'getTransaction' in auditor\n\t\t\t\t\t? (auditor as { getTransaction(): unknown }).getTransaction()\n\t\t\t\t\t: undefined;\n\t\t\tlogger.debug(\n\t\t\t\t{ auditCount: recordCount, hasTransaction: !!trx },\n\t\t\t\t'Flushing audits',\n\t\t\t);\n\t\t\tawait auditor.flush();\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as Error, 'Failed to process audits');\n\t\t// Don't rethrow - audit failures shouldn't fail the request\n\t}\n}\n\n/**\n * Context for audit-aware handler execution.\n */\nexport interface AuditExecutionContext<\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\t/** The auditor instance for recording audits */\n\tauditor: Auditor<TAuditAction>;\n\t/** The audit storage instance */\n\tstorage: AuditStorage;\n}\n\n/**\n * Create audit context for handler execution.\n * Returns the auditor and storage for use in the handler.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param serviceDiscovery - Service discovery for getting audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context for actor extraction\n * @returns Audit context with auditor and storage, or undefined if not configured\n */\nexport async function createAuditContext<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n>(\n\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>,\n\tserviceDiscovery: ServiceDiscovery<any, any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n): Promise<AuditExecutionContext<TAuditAction> | undefined> {\n\tif (!endpoint.auditorStorageService) {\n\t\treturn undefined;\n\t}\n\n\tconst services = await serviceDiscovery.register([\n\t\tendpoint.auditorStorageService,\n\t]);\n\tconst storage = services[\n\t\tendpoint.auditorStorageService.serviceName\n\t] as AuditStorage;\n\n\t// Extract actor if configured\n\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\tif (endpoint.actorExtractor) {\n\t\ttry {\n\t\t\tactor = await (\n\t\t\t\tendpoint.actorExtractor as ActorExtractor<TServices, TSession, TLogger>\n\t\t\t)({\n\t\t\t\tservices: ctx.services as any,\n\t\t\t\tsession: ctx.session,\n\t\t\t\theader: ctx.header,\n\t\t\t\tcookie: ctx.cookie,\n\t\t\t\tlogger,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t}\n\t}\n\n\tconst auditor = new DefaultAuditor<TAuditAction>({\n\t\tactor,\n\t\tstorage,\n\t\tmetadata: {\n\t\t\tendpoint: endpoint.route,\n\t\t\tmethod: endpoint.method,\n\t\t},\n\t});\n\n\treturn { auditor, storage };\n}\n\n/**\n * Options for executeWithAuditTransaction.\n */\nexport interface ExecuteWithAuditTransactionOptions {\n\t/**\n\t * Database connection to use for the transaction.\n\t * If this is already a transaction, it will be reused instead of creating a nested one.\n\t * If not provided, the storage's internal database is used.\n\t */\n\tdb?: unknown;\n}\n\n/**\n * Execute a handler with automatic audit transaction support.\n * If the audit storage provides a withTransaction method, wraps execution\n * in a transaction so audits are atomic with handler's database operations.\n *\n * This is database-agnostic - each storage implementation provides its own\n * transaction handling based on the underlying database (Kysely, Drizzle, etc.).\n *\n * If the db parameter is provided and is already a transaction, the storage\n * will reuse it instead of creating a nested transaction (similar to\n * packages/db/src/kysely.ts#withTransaction).\n *\n * @param auditContext - The audit context from createAuditContext\n * @param handler - The handler function to execute (receives auditor)\n * @param onComplete - Called after handler with response, to process declarative audits\n * @param options - Optional configuration including database connection\n * @returns The handler result\n */\nexport async function executeWithAuditTransaction<\n\tT,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n>(\n\tauditContext: AuditExecutionContext<TAuditAction> | undefined,\n\thandler: (auditor?: Auditor<TAuditAction>) => Promise<T>,\n\tonComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>,\n\toptions?: ExecuteWithAuditTransactionOptions,\n): Promise<T> {\n\t// No audit context - just run handler\n\tif (!auditContext) {\n\t\treturn handler(undefined);\n\t}\n\n\tconst { auditor, storage } = auditContext;\n\n\t// Check if storage provides a transaction wrapper\n\tif (storage.withTransaction) {\n\t\t// Wrap in transaction - audits are atomic with handler operations\n\t\t// The storage's withTransaction handles setTransaction and flush\n\t\t// Pass db so existing transactions are reused\n\t\treturn storage.withTransaction(\n\t\t\tauditor,\n\t\t\tasync () => {\n\t\t\t\tconst response = await handler(auditor);\n\n\t\t\t\t// Process declarative audits within the transaction\n\t\t\t\tif (onComplete) {\n\t\t\t\t\tawait onComplete(response, auditor);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\toptions?.db,\n\t\t);\n\t}\n\n\t// No transaction support - run handler and flush audits after\n\tconst response = await handler(auditor);\n\n\tif (onComplete) {\n\t\tawait onComplete(response, auditor);\n\t}\n\n\t// Flush audits (no transaction)\n\tawait auditor.flush();\n\n\treturn response;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processAudits-CzHkPokQ.cjs","names":["endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>","response: InferStandardSchema<OutSchema>","serviceDiscovery: ServiceDiscovery<any>","logger: TLogger","ctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t}","existingAuditor?: Auditor<TAuditAction>","auditor: Auditor<TAuditAction>","actor: AuditActor","DefaultAuditor","endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>","auditContext: AuditExecutionContext<TAuditAction> | undefined","handler: (auditor?: Auditor<TAuditAction>) => Promise<T>","onComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>","options?: ExecuteWithAuditTransactionOptions","response"],"sources":["../src/endpoints/processAudits.ts"],"sourcesContent":["import type {\n\tAuditActor,\n\tAuditableAction,\n\tAuditor,\n\tAuditStorage,\n} from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { CookieFn, Endpoint, HeaderFn } from './Endpoint';\n\n/**\n * Process declarative audit definitions after successful endpoint execution.\n * Similar to publishConstructEvents for events.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param response - The handler response to generate audit payloads from\n * @param serviceDiscovery - Service discovery for registering audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context (session, headers, cookies, services)\n * @param existingAuditor - Optional existing auditor instance (e.g., from handler context).\n * If provided, uses this auditor (with its stored transaction).\n * If not provided, creates a new auditor.\n */\nexport async function processEndpointAudits<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\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\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n\texistingAuditor?: Auditor<TAuditAction>,\n): Promise<void> {\n\ttry {\n\t\tconst audits = endpoint.audits as MappedAudit<TAuditAction, OutSchema>[];\n\n\t\t// If we have an existing auditor (from handler context), we need to flush\n\t\t// any manual audits it collected, even if there are no declarative audits\n\t\tconst hasExistingRecords =\n\t\t\texistingAuditor && existingAuditor.getRecords().length > 0;\n\n\t\t// Skip if no declarative audits and no existing records to flush\n\t\tif (!audits?.length && !hasExistingRecords) {\n\t\t\tlogger.debug('No audits to process');\n\t\t\treturn;\n\t\t}\n\n\t\t// If no auditor storage service and we have things to process, warn\n\t\tif (!endpoint.auditorStorageService) {\n\t\t\tif (hasExistingRecords || audits?.length) {\n\t\t\t\tlogger.warn('No auditor storage service available');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Get or create auditor\n\t\tlet auditor: Auditor<TAuditAction>;\n\n\t\tif (existingAuditor) {\n\t\t\t// Use existing auditor (preserves stored transaction and manual audits)\n\t\t\tauditor = existingAuditor;\n\t\t\tlogger.debug('Using existing auditor from handler context');\n\t\t} else {\n\t\t\t// Create new auditor (backward compatibility)\n\t\t\tconst services = await serviceDiscovery.register([\n\t\t\t\tendpoint.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = services[\n\t\t\t\tendpoint.auditorStorageService.serviceName\n\t\t\t] as AuditStorage;\n\n\t\t\t// Extract actor if configured\n\t\t\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\t\t\tif (endpoint.actorExtractor) {\n\t\t\t\ttry {\n\t\t\t\t\tactor = await (\n\t\t\t\t\t\tendpoint.actorExtractor as ActorExtractor<\n\t\t\t\t\t\t\tTServices,\n\t\t\t\t\t\t\tTSession,\n\t\t\t\t\t\t\tTLogger\n\t\t\t\t\t\t>\n\t\t\t\t\t)({\n\t\t\t\t\t\tservices: ctx.services as any,\n\t\t\t\t\t\tsession: ctx.session,\n\t\t\t\t\t\theader: ctx.header,\n\t\t\t\t\t\tcookie: ctx.cookie,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t\t\t\t// Continue with system actor\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor,\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tendpoint: endpoint.route,\n\t\t\t\t\tmethod: endpoint.method,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Process each declarative audit\n\t\tif (audits?.length) {\n\t\t\tfor (const audit of audits) {\n\t\t\t\tlogger.debug({ audit: audit.type }, 'Processing declarative audit');\n\n\t\t\t\t// Check when condition\n\t\t\t\tif (audit.when && !audit.when(response as any)) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t{ audit: audit.type },\n\t\t\t\t\t\t'Audit skipped due to when condition',\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Extract payload\n\t\t\t\tconst payload = audit.payload(response as any);\n\n\t\t\t\t// Extract entityId if configured\n\t\t\t\tconst entityId = audit.entityId?.(response as any);\n\n\t\t\t\t// Record the audit\n\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\ttable: audit.table,\n\t\t\t\t\tentityId,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Flush audits to storage\n\t\t// Note: If existingAuditor has a stored transaction (via setTransaction),\n\t\t// flush() will use it automatically\n\t\tconst recordCount = auditor.getRecords().length;\n\t\tif (recordCount > 0) {\n\t\t\t// Check if auditor has a stored transaction (for logging purposes)\n\t\t\tconst trx =\n\t\t\t\t'getTransaction' in auditor\n\t\t\t\t\t? (auditor as { getTransaction(): unknown }).getTransaction()\n\t\t\t\t\t: undefined;\n\t\t\tlogger.debug(\n\t\t\t\t{ auditCount: recordCount, hasTransaction: !!trx },\n\t\t\t\t'Flushing audits',\n\t\t\t);\n\t\t\tawait auditor.flush();\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as Error, 'Failed to process audits');\n\t\t// Don't rethrow - audit failures shouldn't fail the request\n\t}\n}\n\n/**\n * Context for audit-aware handler execution.\n */\nexport interface AuditExecutionContext<\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\t/** The auditor instance for recording audits */\n\tauditor: Auditor<TAuditAction>;\n\t/** The audit storage instance */\n\tstorage: AuditStorage;\n}\n\n/**\n * Create audit context for handler execution.\n * Returns the auditor and storage for use in the handler.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param serviceDiscovery - Service discovery for getting audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context for actor extraction\n * @returns Audit context with auditor and storage, or undefined if not configured\n */\nexport async function createAuditContext<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n>(\n\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n): Promise<AuditExecutionContext<TAuditAction> | undefined> {\n\tif (!endpoint.auditorStorageService) {\n\t\treturn undefined;\n\t}\n\n\tconst services = await serviceDiscovery.register([\n\t\tendpoint.auditorStorageService,\n\t]);\n\tconst storage = services[\n\t\tendpoint.auditorStorageService.serviceName\n\t] as AuditStorage;\n\n\t// Extract actor if configured\n\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\tif (endpoint.actorExtractor) {\n\t\ttry {\n\t\t\tactor = await (\n\t\t\t\tendpoint.actorExtractor as ActorExtractor<TServices, TSession, TLogger>\n\t\t\t)({\n\t\t\t\tservices: ctx.services as any,\n\t\t\t\tsession: ctx.session,\n\t\t\t\theader: ctx.header,\n\t\t\t\tcookie: ctx.cookie,\n\t\t\t\tlogger,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t}\n\t}\n\n\tconst auditor = new DefaultAuditor<TAuditAction>({\n\t\tactor,\n\t\tstorage,\n\t\tmetadata: {\n\t\t\tendpoint: endpoint.route,\n\t\t\tmethod: endpoint.method,\n\t\t},\n\t});\n\n\treturn { auditor, storage };\n}\n\n/**\n * Options for executeWithAuditTransaction.\n */\nexport interface ExecuteWithAuditTransactionOptions {\n\t/**\n\t * Database connection to use for the transaction.\n\t * If this is already a transaction, it will be reused instead of creating a nested one.\n\t * If not provided, the storage's internal database is used.\n\t */\n\tdb?: unknown;\n}\n\n/**\n * Execute a handler with automatic audit transaction support.\n * If the audit storage provides a withTransaction method, wraps execution\n * in a transaction so audits are atomic with handler's database operations.\n *\n * This is database-agnostic - each storage implementation provides its own\n * transaction handling based on the underlying database (Kysely, Drizzle, etc.).\n *\n * If the db parameter is provided and is already a transaction, the storage\n * will reuse it instead of creating a nested transaction (similar to\n * packages/db/src/kysely.ts#withTransaction).\n *\n * @param auditContext - The audit context from createAuditContext\n * @param handler - The handler function to execute (receives auditor)\n * @param onComplete - Called after handler with response, to process declarative audits\n * @param options - Optional configuration including database connection\n * @returns The handler result\n */\nexport async function executeWithAuditTransaction<\n\tT,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n>(\n\tauditContext: AuditExecutionContext<TAuditAction> | undefined,\n\thandler: (auditor?: Auditor<TAuditAction>) => Promise<T>,\n\tonComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>,\n\toptions?: ExecuteWithAuditTransactionOptions,\n): Promise<T> {\n\t// No audit context - just run handler\n\tif (!auditContext) {\n\t\treturn handler(undefined);\n\t}\n\n\tconst { auditor, storage } = auditContext;\n\n\t// Check if storage provides a transaction wrapper\n\tif (storage.withTransaction) {\n\t\t// Wrap in transaction - audits are atomic with handler operations\n\t\t// The storage's withTransaction handles setTransaction and flush\n\t\t// Pass db so existing transactions are reused\n\t\treturn storage.withTransaction(\n\t\t\tauditor,\n\t\t\tasync () => {\n\t\t\t\tconst response = await handler(auditor);\n\n\t\t\t\t// Process declarative audits within the transaction\n\t\t\t\tif (onComplete) {\n\t\t\t\t\tawait onComplete(response, auditor);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\toptions?.db,\n\t\t);\n\t}\n\n\t// No transaction support - run handler and flush audits after\n\tconst response = await handler(auditor);\n\n\tif (onComplete) {\n\t\tawait onComplete(response, auditor);\n\t}\n\n\t// Flush audits (no transaction)\n\tawait auditor.flush();\n\n\treturn response;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processAudits-Dj8UGqcW.mjs","names":["endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>","response: InferStandardSchema<OutSchema>","serviceDiscovery: ServiceDiscovery<any, any>","logger: TLogger","ctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t}","existingAuditor?: Auditor<TAuditAction>","auditor: Auditor<TAuditAction>","actor: AuditActor","endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>","auditContext: AuditExecutionContext<TAuditAction> | undefined","handler: (auditor?: Auditor<TAuditAction>) => Promise<T>","onComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>","options?: ExecuteWithAuditTransactionOptions","response"],"sources":["../src/endpoints/processAudits.ts"],"sourcesContent":["import type {\n\tAuditActor,\n\tAuditableAction,\n\tAuditor,\n\tAuditStorage,\n} from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { CookieFn, Endpoint, HeaderFn } from './Endpoint';\n\n/**\n * Process declarative audit definitions after successful endpoint execution.\n * Similar to publishConstructEvents for events.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param response - The handler response to generate audit payloads from\n * @param serviceDiscovery - Service discovery for registering audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context (session, headers, cookies, services)\n * @param existingAuditor - Optional existing auditor instance (e.g., from handler context).\n * If provided, uses this auditor (with its stored transaction).\n * If not provided, creates a new auditor.\n */\nexport async function processEndpointAudits<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\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\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any, any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n\texistingAuditor?: Auditor<TAuditAction>,\n): Promise<void> {\n\ttry {\n\t\tconst audits = endpoint.audits as MappedAudit<TAuditAction, OutSchema>[];\n\n\t\t// If we have an existing auditor (from handler context), we need to flush\n\t\t// any manual audits it collected, even if there are no declarative audits\n\t\tconst hasExistingRecords =\n\t\t\texistingAuditor && existingAuditor.getRecords().length > 0;\n\n\t\t// Skip if no declarative audits and no existing records to flush\n\t\tif (!audits?.length && !hasExistingRecords) {\n\t\t\tlogger.debug('No audits to process');\n\t\t\treturn;\n\t\t}\n\n\t\t// If no auditor storage service and we have things to process, warn\n\t\tif (!endpoint.auditorStorageService) {\n\t\t\tif (hasExistingRecords || audits?.length) {\n\t\t\t\tlogger.warn('No auditor storage service available');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Get or create auditor\n\t\tlet auditor: Auditor<TAuditAction>;\n\n\t\tif (existingAuditor) {\n\t\t\t// Use existing auditor (preserves stored transaction and manual audits)\n\t\t\tauditor = existingAuditor;\n\t\t\tlogger.debug('Using existing auditor from handler context');\n\t\t} else {\n\t\t\t// Create new auditor (backward compatibility)\n\t\t\tconst services = await serviceDiscovery.register([\n\t\t\t\tendpoint.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = services[\n\t\t\t\tendpoint.auditorStorageService.serviceName\n\t\t\t] as AuditStorage;\n\n\t\t\t// Extract actor if configured\n\t\t\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\t\t\tif (endpoint.actorExtractor) {\n\t\t\t\ttry {\n\t\t\t\t\tactor = await (\n\t\t\t\t\t\tendpoint.actorExtractor as ActorExtractor<\n\t\t\t\t\t\t\tTServices,\n\t\t\t\t\t\t\tTSession,\n\t\t\t\t\t\t\tTLogger\n\t\t\t\t\t\t>\n\t\t\t\t\t)({\n\t\t\t\t\t\tservices: ctx.services as any,\n\t\t\t\t\t\tsession: ctx.session,\n\t\t\t\t\t\theader: ctx.header,\n\t\t\t\t\t\tcookie: ctx.cookie,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t\t\t\t// Continue with system actor\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor,\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tendpoint: endpoint.route,\n\t\t\t\t\tmethod: endpoint.method,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Process each declarative audit\n\t\tif (audits?.length) {\n\t\t\tfor (const audit of audits) {\n\t\t\t\tlogger.debug({ audit: audit.type }, 'Processing declarative audit');\n\n\t\t\t\t// Check when condition\n\t\t\t\tif (audit.when && !audit.when(response as any)) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t{ audit: audit.type },\n\t\t\t\t\t\t'Audit skipped due to when condition',\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Extract payload\n\t\t\t\tconst payload = audit.payload(response as any);\n\n\t\t\t\t// Extract entityId if configured\n\t\t\t\tconst entityId = audit.entityId?.(response as any);\n\n\t\t\t\t// Record the audit\n\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\ttable: audit.table,\n\t\t\t\t\tentityId,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Flush audits to storage\n\t\t// Note: If existingAuditor has a stored transaction (via setTransaction),\n\t\t// flush() will use it automatically\n\t\tconst recordCount = auditor.getRecords().length;\n\t\tif (recordCount > 0) {\n\t\t\t// Check if auditor has a stored transaction (for logging purposes)\n\t\t\tconst trx =\n\t\t\t\t'getTransaction' in auditor\n\t\t\t\t\t? (auditor as { getTransaction(): unknown }).getTransaction()\n\t\t\t\t\t: undefined;\n\t\t\tlogger.debug(\n\t\t\t\t{ auditCount: recordCount, hasTransaction: !!trx },\n\t\t\t\t'Flushing audits',\n\t\t\t);\n\t\t\tawait auditor.flush();\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as Error, 'Failed to process audits');\n\t\t// Don't rethrow - audit failures shouldn't fail the request\n\t}\n}\n\n/**\n * Context for audit-aware handler execution.\n */\nexport interface AuditExecutionContext<\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\t/** The auditor instance for recording audits */\n\tauditor: Auditor<TAuditAction>;\n\t/** The audit storage instance */\n\tstorage: AuditStorage;\n}\n\n/**\n * Create audit context for handler execution.\n * Returns the auditor and storage for use in the handler.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param serviceDiscovery - Service discovery for getting audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context for actor extraction\n * @returns Audit context with auditor and storage, or undefined if not configured\n */\nexport async function createAuditContext<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n>(\n\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>,\n\tserviceDiscovery: ServiceDiscovery<any, any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n): Promise<AuditExecutionContext<TAuditAction> | undefined> {\n\tif (!endpoint.auditorStorageService) {\n\t\treturn undefined;\n\t}\n\n\tconst services = await serviceDiscovery.register([\n\t\tendpoint.auditorStorageService,\n\t]);\n\tconst storage = services[\n\t\tendpoint.auditorStorageService.serviceName\n\t] as AuditStorage;\n\n\t// Extract actor if configured\n\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\tif (endpoint.actorExtractor) {\n\t\ttry {\n\t\t\tactor = await (\n\t\t\t\tendpoint.actorExtractor as ActorExtractor<TServices, TSession, TLogger>\n\t\t\t)({\n\t\t\t\tservices: ctx.services as any,\n\t\t\t\tsession: ctx.session,\n\t\t\t\theader: ctx.header,\n\t\t\t\tcookie: ctx.cookie,\n\t\t\t\tlogger,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t}\n\t}\n\n\tconst auditor = new DefaultAuditor<TAuditAction>({\n\t\tactor,\n\t\tstorage,\n\t\tmetadata: {\n\t\t\tendpoint: endpoint.route,\n\t\t\tmethod: endpoint.method,\n\t\t},\n\t});\n\n\treturn { auditor, storage };\n}\n\n/**\n * Options for executeWithAuditTransaction.\n */\nexport interface ExecuteWithAuditTransactionOptions {\n\t/**\n\t * Database connection to use for the transaction.\n\t * If this is already a transaction, it will be reused instead of creating a nested one.\n\t * If not provided, the storage's internal database is used.\n\t */\n\tdb?: unknown;\n}\n\n/**\n * Execute a handler with automatic audit transaction support.\n * If the audit storage provides a withTransaction method, wraps execution\n * in a transaction so audits are atomic with handler's database operations.\n *\n * This is database-agnostic - each storage implementation provides its own\n * transaction handling based on the underlying database (Kysely, Drizzle, etc.).\n *\n * If the db parameter is provided and is already a transaction, the storage\n * will reuse it instead of creating a nested transaction (similar to\n * packages/db/src/kysely.ts#withTransaction).\n *\n * @param auditContext - The audit context from createAuditContext\n * @param handler - The handler function to execute (receives auditor)\n * @param onComplete - Called after handler with response, to process declarative audits\n * @param options - Optional configuration including database connection\n * @returns The handler result\n */\nexport async function executeWithAuditTransaction<\n\tT,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n>(\n\tauditContext: AuditExecutionContext<TAuditAction> | undefined,\n\thandler: (auditor?: Auditor<TAuditAction>) => Promise<T>,\n\tonComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>,\n\toptions?: ExecuteWithAuditTransactionOptions,\n): Promise<T> {\n\t// No audit context - just run handler\n\tif (!auditContext) {\n\t\treturn handler(undefined);\n\t}\n\n\tconst { auditor, storage } = auditContext;\n\n\t// Check if storage provides a transaction wrapper\n\tif (storage.withTransaction) {\n\t\t// Wrap in transaction - audits are atomic with handler operations\n\t\t// The storage's withTransaction handles setTransaction and flush\n\t\t// Pass db so existing transactions are reused\n\t\treturn storage.withTransaction(\n\t\t\tauditor,\n\t\t\tasync () => {\n\t\t\t\tconst response = await handler(auditor);\n\n\t\t\t\t// Process declarative audits within the transaction\n\t\t\t\tif (onComplete) {\n\t\t\t\t\tawait onComplete(response, auditor);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\toptions?.db,\n\t\t);\n\t}\n\n\t// No transaction support - run handler and flush audits after\n\tconst response = await handler(auditor);\n\n\tif (onComplete) {\n\t\tawait onComplete(response, auditor);\n\t}\n\n\t// Flush audits (no transaction)\n\tawait auditor.flush();\n\n\treturn response;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processAudits-Dj8UGqcW.mjs","names":["endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>","response: InferStandardSchema<OutSchema>","serviceDiscovery: ServiceDiscovery<any>","logger: TLogger","ctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t}","existingAuditor?: Auditor<TAuditAction>","auditor: Auditor<TAuditAction>","actor: AuditActor","endpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>","auditContext: AuditExecutionContext<TAuditAction> | undefined","handler: (auditor?: Auditor<TAuditAction>) => Promise<T>","onComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>","options?: ExecuteWithAuditTransactionOptions","response"],"sources":["../src/endpoints/processAudits.ts"],"sourcesContent":["import type {\n\tAuditActor,\n\tAuditableAction,\n\tAuditor,\n\tAuditStorage,\n} from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { CookieFn, Endpoint, HeaderFn } from './Endpoint';\n\n/**\n * Process declarative audit definitions after successful endpoint execution.\n * Similar to publishConstructEvents for events.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param response - The handler response to generate audit payloads from\n * @param serviceDiscovery - Service discovery for registering audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context (session, headers, cookies, services)\n * @param existingAuditor - Optional existing auditor instance (e.g., from handler context).\n * If provided, uses this auditor (with its stored transaction).\n * If not provided, creates a new auditor.\n */\nexport async function processEndpointAudits<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\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\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n\texistingAuditor?: Auditor<TAuditAction>,\n): Promise<void> {\n\ttry {\n\t\tconst audits = endpoint.audits as MappedAudit<TAuditAction, OutSchema>[];\n\n\t\t// If we have an existing auditor (from handler context), we need to flush\n\t\t// any manual audits it collected, even if there are no declarative audits\n\t\tconst hasExistingRecords =\n\t\t\texistingAuditor && existingAuditor.getRecords().length > 0;\n\n\t\t// Skip if no declarative audits and no existing records to flush\n\t\tif (!audits?.length && !hasExistingRecords) {\n\t\t\tlogger.debug('No audits to process');\n\t\t\treturn;\n\t\t}\n\n\t\t// If no auditor storage service and we have things to process, warn\n\t\tif (!endpoint.auditorStorageService) {\n\t\t\tif (hasExistingRecords || audits?.length) {\n\t\t\t\tlogger.warn('No auditor storage service available');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Get or create auditor\n\t\tlet auditor: Auditor<TAuditAction>;\n\n\t\tif (existingAuditor) {\n\t\t\t// Use existing auditor (preserves stored transaction and manual audits)\n\t\t\tauditor = existingAuditor;\n\t\t\tlogger.debug('Using existing auditor from handler context');\n\t\t} else {\n\t\t\t// Create new auditor (backward compatibility)\n\t\t\tconst services = await serviceDiscovery.register([\n\t\t\t\tendpoint.auditorStorageService,\n\t\t\t]);\n\t\t\tconst storage = services[\n\t\t\t\tendpoint.auditorStorageService.serviceName\n\t\t\t] as AuditStorage;\n\n\t\t\t// Extract actor if configured\n\t\t\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\t\t\tif (endpoint.actorExtractor) {\n\t\t\t\ttry {\n\t\t\t\t\tactor = await (\n\t\t\t\t\t\tendpoint.actorExtractor as ActorExtractor<\n\t\t\t\t\t\t\tTServices,\n\t\t\t\t\t\t\tTSession,\n\t\t\t\t\t\t\tTLogger\n\t\t\t\t\t\t>\n\t\t\t\t\t)({\n\t\t\t\t\t\tservices: ctx.services as any,\n\t\t\t\t\t\tsession: ctx.session,\n\t\t\t\t\t\theader: ctx.header,\n\t\t\t\t\t\tcookie: ctx.cookie,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t\t\t\t// Continue with system actor\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tauditor = new DefaultAuditor<TAuditAction>({\n\t\t\t\tactor,\n\t\t\t\tstorage,\n\t\t\t\tmetadata: {\n\t\t\t\t\tendpoint: endpoint.route,\n\t\t\t\t\tmethod: endpoint.method,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\t// Process each declarative audit\n\t\tif (audits?.length) {\n\t\t\tfor (const audit of audits) {\n\t\t\t\tlogger.debug({ audit: audit.type }, 'Processing declarative audit');\n\n\t\t\t\t// Check when condition\n\t\t\t\tif (audit.when && !audit.when(response as any)) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t{ audit: audit.type },\n\t\t\t\t\t\t'Audit skipped due to when condition',\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Extract payload\n\t\t\t\tconst payload = audit.payload(response as any);\n\n\t\t\t\t// Extract entityId if configured\n\t\t\t\tconst entityId = audit.entityId?.(response as any);\n\n\t\t\t\t// Record the audit\n\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\ttable: audit.table,\n\t\t\t\t\tentityId,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Flush audits to storage\n\t\t// Note: If existingAuditor has a stored transaction (via setTransaction),\n\t\t// flush() will use it automatically\n\t\tconst recordCount = auditor.getRecords().length;\n\t\tif (recordCount > 0) {\n\t\t\t// Check if auditor has a stored transaction (for logging purposes)\n\t\t\tconst trx =\n\t\t\t\t'getTransaction' in auditor\n\t\t\t\t\t? (auditor as { getTransaction(): unknown }).getTransaction()\n\t\t\t\t\t: undefined;\n\t\t\tlogger.debug(\n\t\t\t\t{ auditCount: recordCount, hasTransaction: !!trx },\n\t\t\t\t'Flushing audits',\n\t\t\t);\n\t\t\tawait auditor.flush();\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as Error, 'Failed to process audits');\n\t\t// Don't rethrow - audit failures shouldn't fail the request\n\t}\n}\n\n/**\n * Context for audit-aware handler execution.\n */\nexport interface AuditExecutionContext<\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\t/** The auditor instance for recording audits */\n\tauditor: Auditor<TAuditAction>;\n\t/** The audit storage instance */\n\tstorage: AuditStorage;\n}\n\n/**\n * Create audit context for handler execution.\n * Returns the auditor and storage for use in the handler.\n *\n * @param endpoint - The endpoint with audit configuration\n * @param serviceDiscovery - Service discovery for getting audit storage\n * @param logger - Logger for debug/error messages\n * @param ctx - Request context for actor extraction\n * @returns Audit context with auditor and storage, or undefined if not configured\n */\nexport async function createAuditContext<\n\tTServices extends Service[] = [],\n\tTSession = unknown,\n\tTLogger extends Logger = Logger,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n\tTDatabase = undefined,\n\tTDatabaseServiceName extends string = string,\n>(\n\tendpoint: Endpoint<\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tany,\n\t\tTServices,\n\t\tTLogger,\n\t\tTSession,\n\t\tany,\n\t\tany,\n\t\tTAuditStorage,\n\t\tTAuditStorageServiceName,\n\t\tTAuditAction,\n\t\tTDatabase,\n\t\tTDatabaseServiceName\n\t>,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tlogger: TLogger,\n\tctx: {\n\t\tsession: TSession;\n\t\theader: HeaderFn;\n\t\tcookie: CookieFn;\n\t\tservices: Record<string, unknown>;\n\t},\n): Promise<AuditExecutionContext<TAuditAction> | undefined> {\n\tif (!endpoint.auditorStorageService) {\n\t\treturn undefined;\n\t}\n\n\tconst services = await serviceDiscovery.register([\n\t\tendpoint.auditorStorageService,\n\t]);\n\tconst storage = services[\n\t\tendpoint.auditorStorageService.serviceName\n\t] as AuditStorage;\n\n\t// Extract actor if configured\n\tlet actor: AuditActor = { id: 'system', type: 'system' };\n\tif (endpoint.actorExtractor) {\n\t\ttry {\n\t\t\tactor = await (\n\t\t\t\tendpoint.actorExtractor as ActorExtractor<TServices, TSession, TLogger>\n\t\t\t)({\n\t\t\t\tservices: ctx.services as any,\n\t\t\t\tsession: ctx.session,\n\t\t\t\theader: ctx.header,\n\t\t\t\tcookie: ctx.cookie,\n\t\t\t\tlogger,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.error(error as Error, 'Failed to extract actor for audits');\n\t\t}\n\t}\n\n\tconst auditor = new DefaultAuditor<TAuditAction>({\n\t\tactor,\n\t\tstorage,\n\t\tmetadata: {\n\t\t\tendpoint: endpoint.route,\n\t\t\tmethod: endpoint.method,\n\t\t},\n\t});\n\n\treturn { auditor, storage };\n}\n\n/**\n * Options for executeWithAuditTransaction.\n */\nexport interface ExecuteWithAuditTransactionOptions {\n\t/**\n\t * Database connection to use for the transaction.\n\t * If this is already a transaction, it will be reused instead of creating a nested one.\n\t * If not provided, the storage's internal database is used.\n\t */\n\tdb?: unknown;\n}\n\n/**\n * Execute a handler with automatic audit transaction support.\n * If the audit storage provides a withTransaction method, wraps execution\n * in a transaction so audits are atomic with handler's database operations.\n *\n * This is database-agnostic - each storage implementation provides its own\n * transaction handling based on the underlying database (Kysely, Drizzle, etc.).\n *\n * If the db parameter is provided and is already a transaction, the storage\n * will reuse it instead of creating a nested transaction (similar to\n * packages/db/src/kysely.ts#withTransaction).\n *\n * @param auditContext - The audit context from createAuditContext\n * @param handler - The handler function to execute (receives auditor)\n * @param onComplete - Called after handler with response, to process declarative audits\n * @param options - Optional configuration including database connection\n * @returns The handler result\n */\nexport async function executeWithAuditTransaction<\n\tT,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n>(\n\tauditContext: AuditExecutionContext<TAuditAction> | undefined,\n\thandler: (auditor?: Auditor<TAuditAction>) => Promise<T>,\n\tonComplete?: (response: T, auditor: Auditor<TAuditAction>) => Promise<void>,\n\toptions?: ExecuteWithAuditTransactionOptions,\n): Promise<T> {\n\t// No audit context - just run handler\n\tif (!auditContext) {\n\t\treturn handler(undefined);\n\t}\n\n\tconst { auditor, storage } = auditContext;\n\n\t// Check if storage provides a transaction wrapper\n\tif (storage.withTransaction) {\n\t\t// Wrap in transaction - audits are atomic with handler operations\n\t\t// The storage's withTransaction handles setTransaction and flush\n\t\t// Pass db so existing transactions are reused\n\t\treturn storage.withTransaction(\n\t\t\tauditor,\n\t\t\tasync () => {\n\t\t\t\tconst response = await handler(auditor);\n\n\t\t\t\t// Process declarative audits within the transaction\n\t\t\t\tif (onComplete) {\n\t\t\t\t\tawait onComplete(response, auditor);\n\t\t\t\t}\n\n\t\t\t\treturn response;\n\t\t\t},\n\t\t\toptions?.db,\n\t\t);\n\t}\n\n\t// No transaction support - run handler and flush audits after\n\tconst response = await handler(auditor);\n\n\tif (onComplete) {\n\t\tawait onComplete(response, auditor);\n\t}\n\n\t// Flush audits (no transaction)\n\tawait auditor.flush();\n\n\treturn response;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher-Bw4770Hi.mjs","names":["logger: Logger","serviceDiscovery: ServiceDiscovery<any
|
|
1
|
+
{"version":3,"file":"publisher-Bw4770Hi.mjs","names":["logger: Logger","serviceDiscovery: ServiceDiscovery<any>","ev: MappedEvent<T, OutSchema>[]","response: InferStandardSchema<OutSchema>","publisherService: TPublisherService","events: MappedEvent<T, OutSchema>[]","construct: Construct<\n\t\tLogger,\n\t\tTServiceName,\n\t\tT,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTAuditStorageServiceName,\n\t\tTAuditStorage\n\t>"],"sources":["../src/publisher.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceDiscovery } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { Construct } from './Construct';\n\nexport async function publishEvents<\n\tT extends EventPublisher<any> | undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServiceName extends string = string,\n\tTPublisherService extends Service<TServiceName, T> | undefined = undefined,\n>(\n\tlogger: Logger,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tev: MappedEvent<T, OutSchema>[] = [],\n\tresponse: InferStandardSchema<OutSchema>,\n\tpublisherService: TPublisherService,\n) {\n\ttry {\n\t\tif (!ev?.length) {\n\t\t\tlogger.debug('No events to publish');\n\t\t\treturn;\n\t\t}\n\t\tif (!publisherService) {\n\t\t\tlogger.warn('No publisher service available');\n\t\t\treturn;\n\t\t}\n\n\t\tconst services = await serviceDiscovery.register([publisherService]);\n\n\t\tconst publisher = services[\n\t\t\tpublisherService.serviceName\n\t\t] as EventPublisher<any>;\n\n\t\tconst events: MappedEvent<T, OutSchema>[] = [];\n\n\t\tfor (const { when, payload, type, ...e } of ev) {\n\t\t\tlogger.debug({ event: type }, 'Processing event');\n\t\t\tconst resolvedPayload = await payload(response);\n\t\t\tconst event = {\n\t\t\t\t...e,\n\t\t\t\ttype,\n\t\t\t\tpayload: resolvedPayload,\n\t\t\t};\n\n\t\t\tif (!when || when(response as any)) {\n\t\t\t\tevents.push(event);\n\t\t\t}\n\t\t}\n\n\t\tif (events.length) {\n\t\t\tlogger.debug({ eventCount: ev.length }, 'Publishing events');\n\n\t\t\tawait publisher.publish(events).catch((err) => {\n\t\t\t\tlogger.error(err, 'Failed to publish events');\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tlogger.error(error as any, 'Something went wrong publishing events');\n\t}\n}\n\nexport async function publishConstructEvents<\n\tT extends EventPublisher<any> | undefined,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServiceName extends string = string,\n\tTServices extends Service[] = [],\n\tTAuditStorageServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n>(\n\tconstruct: Construct<\n\t\tLogger,\n\t\tTServiceName,\n\t\tT,\n\t\tOutSchema,\n\t\tTServices,\n\t\tTAuditStorageServiceName,\n\t\tTAuditStorage\n\t>,\n\tresponse: InferStandardSchema<OutSchema>,\n\tserviceDiscovery: ServiceDiscovery<any>,\n\tlogger: Logger = construct.logger,\n) {\n\treturn publishEvents(\n\t\tlogger,\n\t\tserviceDiscovery,\n\t\tconstruct.events,\n\t\tresponse,\n\t\tconstruct.publisherService,\n\t);\n}\n"],"mappings":";AAQA,eAAsB,cAMrBA,QACAC,kBACAC,KAAkC,CAAE,GACpCC,UACAC,kBACC;AACD,KAAI;AACH,OAAK,IAAI,QAAQ;AAChB,UAAO,MAAM,uBAAuB;AACpC;EACA;AACD,OAAK,kBAAkB;AACtB,UAAO,KAAK,iCAAiC;AAC7C;EACA;EAED,MAAM,WAAW,MAAM,iBAAiB,SAAS,CAAC,gBAAiB,EAAC;EAEpE,MAAM,YAAY,SACjB,iBAAiB;EAGlB,MAAMC,SAAsC,CAAE;AAE9C,OAAK,MAAM,EAAE,MAAM,SAAS,KAAM,GAAG,GAAG,IAAI,IAAI;AAC/C,UAAO,MAAM,EAAE,OAAO,KAAM,GAAE,mBAAmB;GACjD,MAAM,kBAAkB,MAAM,QAAQ,SAAS;GAC/C,MAAM,QAAQ;IACb,GAAG;IACH;IACA,SAAS;GACT;AAED,QAAK,QAAQ,KAAK,SAAgB,CACjC,QAAO,KAAK,MAAM;EAEnB;AAED,MAAI,OAAO,QAAQ;AAClB,UAAO,MAAM,EAAE,YAAY,GAAG,OAAQ,GAAE,oBAAoB;AAE5D,SAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9C,WAAO,MAAM,KAAK,2BAA2B;GAC7C,EAAC;EACF;CACD,SAAQ,OAAO;AACf,SAAO,MAAM,OAAc,yCAAyC;CACpE;AACD;AAED,eAAsB,uBAQrBC,WASAH,UACAF,kBACAD,SAAiB,UAAU,QAC1B;AACD,QAAO,cACN,QACA,kBACA,UAAU,QACV,UACA,UAAU,iBACV;AACD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Construct } from "./Construct-
|
|
1
|
+
import { Construct } from "./Construct-DXbQxP4z.mjs";
|
|
2
2
|
import { Service, ServiceDiscovery } from "@geekmidas/services";
|
|
3
3
|
import { AuditStorage } from "@geekmidas/audit";
|
|
4
4
|
import { EventPublisher, MappedEvent } from "@geekmidas/events";
|
|
@@ -7,10 +7,10 @@ import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
|
7
7
|
import { InferStandardSchema } from "@geekmidas/schema";
|
|
8
8
|
|
|
9
9
|
//#region src/publisher.d.ts
|
|
10
|
-
declare function publishEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TPublisherService extends Service<TServiceName, T> | undefined = undefined>(logger: Logger, serviceDiscovery: ServiceDiscovery<any
|
|
11
|
-
declare function publishConstructEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TServices extends Service[] = [], TAuditStorageServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined>(construct: Construct<Logger, TServiceName, T, OutSchema, TServices, TAuditStorageServiceName, TAuditStorage>, response: InferStandardSchema<OutSchema>, serviceDiscovery: ServiceDiscovery<any
|
|
10
|
+
declare function publishEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TPublisherService extends Service<TServiceName, T> | undefined = undefined>(logger: Logger, serviceDiscovery: ServiceDiscovery<any>, ev: MappedEvent<T, OutSchema>[] | undefined, response: InferStandardSchema<OutSchema>, publisherService: TPublisherService): Promise<void>;
|
|
11
|
+
declare function publishConstructEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TServices extends Service[] = [], TAuditStorageServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined>(construct: Construct<Logger, TServiceName, T, OutSchema, TServices, TAuditStorageServiceName, TAuditStorage>, response: InferStandardSchema<OutSchema>, serviceDiscovery: ServiceDiscovery<any>, logger?: Logger): Promise<void>;
|
|
12
12
|
//# sourceMappingURL=publisher.d.ts.map
|
|
13
13
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { publishConstructEvents, publishEvents };
|
|
16
|
-
//# sourceMappingURL=publisher-
|
|
16
|
+
//# sourceMappingURL=publisher-DHEq5OHs.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-DHEq5OHs.d.mts","names":[],"sources":["../src/publisher.ts"],"sourcesContent":[],"mappings":";;;;;;;;;iBAQsB,wBACX,mDACQ,0GAEQ,QAAQ,cAAc,oCAExC,0BACU,2BACd,YAAY,GAAG,oCACT,oBAAoB,8BACZ,oBAAiB;iBA8Cd,iCACX,mDACQ,kGAEA,wFAEI,iDAEX,UACV,QACA,cACA,GACA,WACA,WACA,0BACA,0BAES,oBAAoB,8BACZ,gCACV,SAAyB;AA3ElC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Construct } from "./Construct-
|
|
1
|
+
import { Construct } from "./Construct-BwwtHYDJ.cjs";
|
|
2
2
|
import { AuditStorage } from "@geekmidas/audit";
|
|
3
3
|
import { EventPublisher, MappedEvent } from "@geekmidas/events";
|
|
4
4
|
import { Logger } from "@geekmidas/logger";
|
|
@@ -7,10 +7,10 @@ import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
|
7
7
|
import { InferStandardSchema } from "@geekmidas/schema";
|
|
8
8
|
|
|
9
9
|
//#region src/publisher.d.ts
|
|
10
|
-
declare function publishEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TPublisherService extends Service<TServiceName, T> | undefined = undefined>(logger: Logger, serviceDiscovery: ServiceDiscovery<any
|
|
11
|
-
declare function publishConstructEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TServices extends Service[] = [], TAuditStorageServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined>(construct: Construct<Logger, TServiceName, T, OutSchema, TServices, TAuditStorageServiceName, TAuditStorage>, response: InferStandardSchema<OutSchema>, serviceDiscovery: ServiceDiscovery<any
|
|
10
|
+
declare function publishEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TPublisherService extends Service<TServiceName, T> | undefined = undefined>(logger: Logger, serviceDiscovery: ServiceDiscovery<any>, ev: MappedEvent<T, OutSchema>[] | undefined, response: InferStandardSchema<OutSchema>, publisherService: TPublisherService): Promise<void>;
|
|
11
|
+
declare function publishConstructEvents<T extends EventPublisher<any> | undefined, OutSchema extends StandardSchemaV1 | undefined = undefined, TServiceName extends string = string, TServices extends Service[] = [], TAuditStorageServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined>(construct: Construct<Logger, TServiceName, T, OutSchema, TServices, TAuditStorageServiceName, TAuditStorage>, response: InferStandardSchema<OutSchema>, serviceDiscovery: ServiceDiscovery<any>, logger?: Logger): Promise<void>;
|
|
12
12
|
//# sourceMappingURL=publisher.d.ts.map
|
|
13
13
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { publishConstructEvents, publishEvents };
|
|
16
|
-
//# sourceMappingURL=publisher-
|
|
16
|
+
//# sourceMappingURL=publisher-DbiPyseG.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher-DbiPyseG.d.cts","names":[],"sources":["../src/publisher.ts"],"sourcesContent":[],"mappings":";;;;;;;;;iBAQsB,wBACX,mDACQ,0GAEQ,QAAQ,cAAc,oCAExC,0BACU,2BACd,YAAY,GAAG,oCACT,oBAAoB,8BACZ,oBAAiB;iBA8Cd,iCACX,mDACQ,kGAEA,wFAEI,iDAEX,UACV,QACA,cACA,GACA,WACA,WACA,0BACA,0BAES,oBAAoB,8BACZ,gCACV,SAAyB;AA3ElC"}
|