@geekmidas/constructs 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AWSLambdaFunction-EPGY4s7i.cjs → AWSLambdaFunction-Ba1DcsW2.cjs} +6 -6
- package/dist/AWSLambdaFunction-Ba1DcsW2.cjs.map +1 -0
- package/dist/{AWSLambdaFunction-BdebRMUh.d.mts → AWSLambdaFunction-CKe73Qr0.d.cts} +6 -6
- package/dist/AWSLambdaFunction-CKe73Qr0.d.cts.map +1 -0
- package/dist/{AWSLambdaFunction-D0tEOTXQ.d.cts → AWSLambdaFunction-CuG3HNZx.d.mts} +6 -6
- package/dist/AWSLambdaFunction-CuG3HNZx.d.mts.map +1 -0
- package/dist/{AWSLambdaFunction-C54a1doJ.mjs → AWSLambdaFunction-DnMm4xvz.mjs} +6 -6
- package/dist/AWSLambdaFunction-DnMm4xvz.mjs.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts → AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts} +4 -4
- package/dist/AWSLambdaSubscriberAdaptor-B4HH-WuQ.d.mts.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-BLfO612H.mjs → AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs} +3 -3
- package/dist/AWSLambdaSubscriberAdaptor-BD3FwGUb.mjs.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts → AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts} +4 -4
- package/dist/AWSLambdaSubscriberAdaptor-BEqQ96VJ.d.cts.map +1 -0
- package/dist/{AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs → AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs} +3 -3
- package/dist/AWSLambdaSubscriberAdaptor-DQDnt1Xk.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs → AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs} +56 -14
- package/dist/AmazonApiGatewayEndpointAdaptor-Bvy-Hgjf.mjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs → AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs} +55 -13
- package/dist/AmazonApiGatewayEndpointAdaptor-Cpxluhfg.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts → AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts} +52 -6
- package/dist/AmazonApiGatewayEndpointAdaptor-DTgdZ8I1.d.mts.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts → AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts} +51 -5
- package/dist/AmazonApiGatewayEndpointAdaptor-DsWnO6x9.d.cts.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts → AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts} +4 -4
- package/dist/AmazonApiGatewayV1EndpointAdaptor-7ELXUBFK.d.cts.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs → AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs} +4 -4
- package/dist/AmazonApiGatewayV1EndpointAdaptor-B8vIYYNh.cjs.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs → AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs} +4 -4
- package/dist/AmazonApiGatewayV1EndpointAdaptor-ByXGIju8.mjs.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts → AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts} +5 -5
- package/dist/AmazonApiGatewayV1EndpointAdaptor-RWRmFPrN.d.mts.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs → AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs} +4 -4
- package/dist/AmazonApiGatewayV2EndpointAdaptor-DIetspUm.cjs.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs → AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs} +4 -4
- package/dist/AmazonApiGatewayV2EndpointAdaptor-DWemCZvl.mjs.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts → AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts} +4 -6
- package/dist/AmazonApiGatewayV2EndpointAdaptor-D_uMTmuJ.d.cts.map +1 -0
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts → AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts} +5 -7
- package/dist/AmazonApiGatewayV2EndpointAdaptor-wnOMDv6o.d.mts.map +1 -0
- package/dist/{Authorizer-C0ge_tc8.cjs → Authorizer-BXxBee2P.cjs} +1 -1
- package/dist/Authorizer-BXxBee2P.cjs.map +1 -0
- package/dist/{Authorizer-r9U3y_ms.mjs → Authorizer-BgjU8-z6.mjs} +1 -1
- package/dist/Authorizer-BgjU8-z6.mjs.map +1 -0
- package/dist/{Authorizer-gWxYsGEp.d.mts → Authorizer-DCcYOx3h.d.mts} +1 -1
- package/dist/Authorizer-DCcYOx3h.d.mts.map +1 -0
- package/dist/{Authorizer-B-btowNd.d.cts → Authorizer-DWtwC8we.d.cts} +1 -1
- package/dist/Authorizer-DWtwC8we.d.cts.map +1 -0
- package/dist/{BaseFunctionBuilder-Czi1Jwza.mjs → BaseFunctionBuilder-0qlenb9z.mjs} +2 -2
- package/dist/BaseFunctionBuilder-0qlenb9z.mjs.map +1 -0
- package/dist/BaseFunctionBuilder-BAtutR6q.d.cts.map +1 -1
- package/dist/{BaseFunctionBuilder-DRY419e7.d.mts → BaseFunctionBuilder-CDfDWWAQ.d.mts} +2 -2
- package/dist/BaseFunctionBuilder-CDfDWWAQ.d.mts.map +1 -0
- package/dist/{BaseFunctionBuilder-MYG3C9ug.cjs → BaseFunctionBuilder-D7o93EGv.cjs} +2 -2
- package/dist/BaseFunctionBuilder-D7o93EGv.cjs.map +1 -0
- package/dist/{Construct-Ba5cMxib.cjs → Construct-BlnyYtJC.cjs} +31 -2
- package/dist/Construct-BlnyYtJC.cjs.map +1 -0
- package/dist/Construct-C4rPE67v.d.cts.map +1 -1
- package/dist/{Construct-DdyGHuag.mjs → Construct-D5dCvxZ3.mjs} +31 -2
- package/dist/Construct-D5dCvxZ3.mjs.map +1 -0
- package/dist/{Construct-XrijZFFh.d.mts → Construct-dZiwVo0q.d.mts} +1 -1
- package/dist/Construct-dZiwVo0q.d.mts.map +1 -0
- package/dist/Construct.cjs +1 -1
- package/dist/Construct.d.mts +1 -1
- package/dist/Construct.mjs +1 -1
- package/dist/{Cron-bDLcTvV5.d.cts → Cron-B6FnTu7k.d.cts} +2 -2
- package/dist/Cron-B6FnTu7k.d.cts.map +1 -0
- package/dist/{Cron-CGF4YAfM.cjs → Cron-BAPQetlC.cjs} +3 -3
- package/dist/Cron-BAPQetlC.cjs.map +1 -0
- package/dist/{Cron-BxhGs5up.mjs → Cron-CAk_ddH8.mjs} +3 -3
- package/dist/Cron-CAk_ddH8.mjs.map +1 -0
- package/dist/{Cron-cdjlSKNp.d.mts → Cron-D3bEljxQ.d.mts} +2 -2
- package/dist/Cron-D3bEljxQ.d.mts.map +1 -0
- package/dist/{CronBuilder-DKVXyE0Q.d.cts → CronBuilder-CA8euP0z.d.cts} +4 -4
- package/dist/CronBuilder-CA8euP0z.d.cts.map +1 -0
- package/dist/{CronBuilder-BC4m5-p1.d.mts → CronBuilder-DvdiKzhq.d.mts} +4 -4
- package/dist/CronBuilder-DvdiKzhq.d.mts.map +1 -0
- package/dist/{CronBuilder-CcxKRtVP.cjs → CronBuilder-DxXA5ymv.cjs} +4 -4
- package/dist/CronBuilder-DxXA5ymv.cjs.map +1 -0
- package/dist/{CronBuilder-d2jh-IB2.mjs → CronBuilder-e8TaHPYm.mjs} +4 -4
- package/dist/CronBuilder-e8TaHPYm.mjs.map +1 -0
- package/dist/{Endpoint-BPv9_-m_.d.cts → Endpoint-BOlbY5iq.d.cts} +3 -3
- package/dist/Endpoint-BOlbY5iq.d.cts.map +1 -0
- package/dist/{Endpoint-CuOEswxJ.mjs → Endpoint-BbdNmtlM.mjs} +6 -6
- package/dist/Endpoint-BbdNmtlM.mjs.map +1 -0
- package/dist/{Endpoint-BdwG75G_.d.mts → Endpoint-Dlv7nxgj.d.mts} +4 -4
- package/dist/Endpoint-Dlv7nxgj.d.mts.map +1 -0
- package/dist/{Endpoint-BVGZXFyV.cjs → Endpoint-DxvnlfXg.cjs} +6 -6
- package/dist/Endpoint-DxvnlfXg.cjs.map +1 -0
- package/dist/{EndpointBuilder-Cgj1P_ra.cjs → EndpointBuilder-40Iz5CjY.cjs} +6 -6
- package/dist/EndpointBuilder-40Iz5CjY.cjs.map +1 -0
- package/dist/{EndpointBuilder-DnCB1h1j.mjs → EndpointBuilder-BaVvhW9m.mjs} +6 -6
- package/dist/EndpointBuilder-BaVvhW9m.mjs.map +1 -0
- package/dist/{EndpointBuilder-DIy_m1bu.d.cts → EndpointBuilder-CFfWWjUa.d.cts} +3 -3
- package/dist/EndpointBuilder-CFfWWjUa.d.cts.map +1 -0
- package/dist/{EndpointBuilder-B3az942t.d.mts → EndpointBuilder-T_K2NLWw.d.mts} +5 -5
- package/dist/EndpointBuilder-T_K2NLWw.d.mts.map +1 -0
- package/dist/{EndpointFactory-CyPbm3AD.d.cts → EndpointFactory-ChzBVEM9.d.cts} +4 -4
- package/dist/EndpointFactory-ChzBVEM9.d.cts.map +1 -0
- package/dist/{EndpointFactory-CbdxPCIH.mjs → EndpointFactory-DfNjSgVG.mjs} +7 -7
- package/dist/EndpointFactory-DfNjSgVG.mjs.map +1 -0
- package/dist/{EndpointFactory-C-0nE6Jg.d.mts → EndpointFactory-GAL_tuPf.d.mts} +4 -4
- package/dist/EndpointFactory-GAL_tuPf.d.mts.map +1 -0
- package/dist/{EndpointFactory-CYj6BYok.cjs → EndpointFactory-r6jxPvQ8.cjs} +7 -7
- package/dist/EndpointFactory-r6jxPvQ8.cjs.map +1 -0
- package/dist/{Function-BVHqIDp9.mjs → Function-D8tBamM3.mjs} +3 -3
- package/dist/Function-D8tBamM3.mjs.map +1 -0
- package/dist/{Function-DN2G6OT5.d.mts → Function-DBmU3uGI.d.mts} +3 -3
- package/dist/Function-DBmU3uGI.d.mts.map +1 -0
- package/dist/{Function-Cf7f_kCz.d.cts → Function-PNW4HdNE.d.cts} +2 -2
- package/dist/Function-PNW4HdNE.d.cts.map +1 -0
- package/dist/{Function-DDZb1525.cjs → Function-iLKrUXuw.cjs} +3 -3
- package/dist/Function-iLKrUXuw.cjs.map +1 -0
- package/dist/{FunctionBuilder-DswJ-9sD.cjs → FunctionBuilder-BEpPgeho.cjs} +4 -4
- package/dist/FunctionBuilder-BEpPgeho.cjs.map +1 -0
- package/dist/{FunctionBuilder-Cxx8D2na.d.mts → FunctionBuilder-Bv4H2I1a.d.mts} +4 -4
- package/dist/FunctionBuilder-Bv4H2I1a.d.mts.map +1 -0
- package/dist/{FunctionBuilder-CrDYgfiI.mjs → FunctionBuilder-BwNF99AB.mjs} +4 -4
- package/dist/FunctionBuilder-BwNF99AB.mjs.map +1 -0
- package/dist/{FunctionBuilder-CJBzzXL3.d.cts → FunctionBuilder-DCqXIHaq.d.cts} +2 -2
- package/dist/FunctionBuilder-DCqXIHaq.d.cts.map +1 -0
- package/dist/{FunctionExecutionWrapper-CLDh7Z2_.mjs → FunctionExecutionWrapper-B__HE_B-.mjs} +3 -3
- package/dist/FunctionExecutionWrapper-B__HE_B-.mjs.map +1 -0
- package/dist/{FunctionExecutionWrapper-DF260Aaj.d.mts → FunctionExecutionWrapper-BclgIztn.d.cts} +5 -5
- package/dist/FunctionExecutionWrapper-BclgIztn.d.cts.map +1 -0
- package/dist/{FunctionExecutionWrapper-BYI2bGTL.cjs → FunctionExecutionWrapper-BjF6t9Hb.cjs} +3 -3
- package/dist/FunctionExecutionWrapper-BjF6t9Hb.cjs.map +1 -0
- package/dist/{FunctionExecutionWrapper-Qy8bmgFR.d.cts → FunctionExecutionWrapper-Dq21c6vt.d.mts} +5 -5
- package/dist/FunctionExecutionWrapper-Dq21c6vt.d.mts.map +1 -0
- package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs +251 -0
- package/dist/HonoEndpointAdaptor-C_ym_Sbr.mjs.map +1 -0
- package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs +257 -0
- package/dist/HonoEndpointAdaptor-DiQH0eTb.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-YcRHYALH.d.cts → HonoEndpointAdaptor-Dkkemmbo.d.cts} +10 -5
- package/dist/HonoEndpointAdaptor-Dkkemmbo.d.cts.map +1 -0
- package/dist/{HonoEndpointAdaptor-BaPlUhz0.d.mts → HonoEndpointAdaptor-HukjdF6M.d.mts} +11 -6
- package/dist/HonoEndpointAdaptor-HukjdF6M.d.mts.map +1 -0
- package/dist/{Subscriber-COYMSevD.d.cts → Subscriber--zUjZDR6.d.cts} +1 -1
- package/dist/Subscriber--zUjZDR6.d.cts.map +1 -0
- package/dist/{Subscriber-ikctpU3I.d.mts → Subscriber-0Ac7cXID.d.mts} +2 -2
- package/dist/Subscriber-0Ac7cXID.d.mts.map +1 -0
- package/dist/{Subscriber-BmPf9GFb.mjs → Subscriber-BgZ8T-O2.mjs} +2 -2
- package/dist/Subscriber-BgZ8T-O2.mjs.map +1 -0
- package/dist/{Subscriber-BiHjVXtM.cjs → Subscriber-CoFmHMIM.cjs} +2 -2
- package/dist/Subscriber-CoFmHMIM.cjs.map +1 -0
- package/dist/{SubscriberBuilder-D_9zzllj.d.mts → SubscriberBuilder-D8cmUHee.d.mts} +2 -2
- package/dist/SubscriberBuilder-D8cmUHee.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-DJPEeYDJ.mjs → SubscriberBuilder-DWXWZBPo.mjs} +2 -2
- package/dist/SubscriberBuilder-DWXWZBPo.mjs.map +1 -0
- package/dist/{SubscriberBuilder-ivHAGIVi.d.cts → SubscriberBuilder-DciTqb-7.d.cts} +2 -2
- package/dist/SubscriberBuilder-DciTqb-7.d.cts.map +1 -0
- package/dist/{SubscriberBuilder-Cp1C-xtT.cjs → SubscriberBuilder-JlxhyqGp.cjs} +2 -2
- package/dist/SubscriberBuilder-JlxhyqGp.cjs.map +1 -0
- package/dist/{TestEndpointAdaptor-DB7bREhS.d.mts → TestEndpointAdaptor-Boijwbmz.d.mts} +4 -4
- package/dist/TestEndpointAdaptor-Boijwbmz.d.mts.map +1 -0
- package/dist/{TestEndpointAdaptor-C10xBI--.d.cts → TestEndpointAdaptor-DdwpRyNh.d.cts} +3 -3
- package/dist/TestEndpointAdaptor-DdwpRyNh.d.cts.map +1 -0
- package/dist/TestEndpointAdaptor-Dk75ExxE.cjs +176 -0
- package/dist/TestEndpointAdaptor-Dk75ExxE.cjs.map +1 -0
- package/dist/TestEndpointAdaptor-OiA2JLDp.mjs +170 -0
- package/dist/TestEndpointAdaptor-OiA2JLDp.mjs.map +1 -0
- package/dist/adaptors/aws.cjs +12 -12
- package/dist/adaptors/aws.d.cts +13 -12
- package/dist/adaptors/aws.d.mts +16 -15
- package/dist/adaptors/aws.mjs +12 -12
- package/dist/adaptors/hono.cjs +10 -9
- package/dist/adaptors/hono.d.cts +6 -6
- package/dist/adaptors/hono.d.mts +9 -9
- package/dist/adaptors/hono.mjs +10 -9
- package/dist/adaptors/testing.cjs +8 -7
- package/dist/adaptors/testing.d.cts +6 -6
- package/dist/adaptors/testing.d.mts +9 -9
- package/dist/adaptors/testing.mjs +8 -7
- package/dist/crons/Cron.cjs +6 -6
- package/dist/crons/Cron.d.cts +4 -4
- package/dist/crons/Cron.d.mts +6 -6
- package/dist/crons/Cron.mjs +6 -6
- package/dist/crons/CronBuilder.cjs +7 -7
- package/dist/crons/CronBuilder.d.cts +5 -5
- package/dist/crons/CronBuilder.d.mts +7 -7
- package/dist/crons/CronBuilder.mjs +7 -7
- package/dist/crons/index.cjs +7 -7
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +9 -9
- package/dist/crons/index.d.mts +7 -7
- package/dist/crons/index.mjs +7 -7
- package/dist/crons/index.mjs.map +1 -1
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +8 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +11 -10
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +8 -7
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +11 -10
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +9 -8
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +12 -11
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
- package/dist/endpoints/Authorizer.cjs +1 -1
- package/dist/endpoints/Authorizer.d.cts +1 -1
- package/dist/endpoints/Authorizer.d.mts +1 -1
- package/dist/endpoints/Authorizer.mjs +1 -1
- package/dist/endpoints/Endpoint.cjs +6 -6
- package/dist/endpoints/Endpoint.d.cts +5 -5
- package/dist/endpoints/Endpoint.d.mts +8 -8
- package/dist/endpoints/Endpoint.mjs +6 -6
- package/dist/endpoints/EndpointBuilder.cjs +9 -9
- package/dist/endpoints/EndpointBuilder.d.cts +6 -6
- package/dist/endpoints/EndpointBuilder.d.mts +9 -9
- package/dist/endpoints/EndpointBuilder.mjs +9 -9
- package/dist/endpoints/EndpointFactory.cjs +10 -10
- package/dist/endpoints/EndpointFactory.d.cts +7 -7
- package/dist/endpoints/EndpointFactory.d.mts +10 -10
- package/dist/endpoints/EndpointFactory.mjs +10 -10
- package/dist/endpoints/HonoEndpointAdaptor.cjs +10 -9
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +6 -6
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/HonoEndpointAdaptor.mjs +10 -9
- package/dist/endpoints/TestEndpointAdaptor.cjs +8 -7
- package/dist/endpoints/TestEndpointAdaptor.d.cts +6 -6
- package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/TestEndpointAdaptor.mjs +8 -7
- package/dist/endpoints/audit.d.cts +5 -5
- package/dist/endpoints/audit.d.mts +8 -8
- package/dist/endpoints/helpers.cjs +7 -7
- package/dist/endpoints/helpers.d.cts +5 -5
- package/dist/endpoints/helpers.d.cts.map +1 -1
- package/dist/endpoints/helpers.d.mts +8 -8
- package/dist/endpoints/helpers.d.mts.map +1 -1
- package/dist/endpoints/helpers.mjs +7 -7
- package/dist/endpoints/index.cjs +20 -10
- package/dist/endpoints/index.cjs.map +1 -1
- package/dist/endpoints/index.d.cts +12 -10
- package/dist/endpoints/index.d.cts.map +1 -1
- package/dist/endpoints/index.d.mts +15 -13
- package/dist/endpoints/index.d.mts.map +1 -1
- package/dist/endpoints/index.mjs +13 -11
- package/dist/endpoints/index.mjs.map +1 -1
- package/dist/endpoints/lazyAccessors.cjs +10 -0
- package/dist/endpoints/lazyAccessors.d.cts +10 -0
- package/dist/endpoints/lazyAccessors.d.mts +10 -0
- package/dist/endpoints/lazyAccessors.mjs +3 -0
- package/dist/endpoints/parseHonoQuery.cjs +1 -1
- package/dist/endpoints/parseHonoQuery.mjs +1 -1
- package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
- package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
- package/dist/endpoints/processAudits.d.cts +5 -5
- package/dist/endpoints/processAudits.d.cts.map +1 -1
- package/dist/endpoints/processAudits.d.mts +8 -8
- package/dist/endpoints/processAudits.d.mts.map +1 -1
- package/dist/endpoints/rls.cjs +1 -1
- package/dist/endpoints/rls.d.cts +5 -5
- package/dist/endpoints/rls.d.mts +8 -8
- package/dist/endpoints/rls.mjs +1 -1
- package/dist/functions/AWSLambdaFunction.cjs +6 -6
- package/dist/functions/AWSLambdaFunction.d.cts +3 -3
- package/dist/functions/AWSLambdaFunction.d.mts +4 -4
- package/dist/functions/AWSLambdaFunction.mjs +6 -6
- package/dist/functions/BaseFunctionBuilder.cjs +2 -2
- package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
- package/dist/functions/BaseFunctionBuilder.mjs +2 -2
- package/dist/functions/Function.cjs +2 -2
- package/dist/functions/Function.d.cts +1 -1
- package/dist/functions/Function.d.mts +2 -2
- package/dist/functions/Function.mjs +2 -2
- package/dist/functions/FunctionBuilder.cjs +4 -4
- package/dist/functions/FunctionBuilder.d.cts +2 -2
- package/dist/functions/FunctionBuilder.d.mts +4 -4
- package/dist/functions/FunctionBuilder.mjs +4 -4
- package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
- package/dist/functions/FunctionExecutionWrapper.d.cts +2 -2
- package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
- package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
- package/dist/functions/TestFunctionAdaptor.cjs +7 -7
- package/dist/functions/TestFunctionAdaptor.cjs.map +1 -1
- package/dist/functions/TestFunctionAdaptor.d.cts +2 -2
- package/dist/functions/TestFunctionAdaptor.d.cts.map +1 -1
- package/dist/functions/TestFunctionAdaptor.d.mts +3 -3
- package/dist/functions/TestFunctionAdaptor.d.mts.map +1 -1
- package/dist/functions/TestFunctionAdaptor.mjs +7 -7
- package/dist/functions/TestFunctionAdaptor.mjs.map +1 -1
- package/dist/functions/index.cjs +5 -5
- package/dist/functions/index.d.cts +3 -3
- package/dist/functions/index.d.mts +5 -5
- package/dist/functions/index.mjs +5 -5
- package/dist/{functions-fTid0RMK.cjs → functions-BkKXVeHm.cjs} +2 -2
- package/dist/functions-BkKXVeHm.cjs.map +1 -0
- package/dist/functions-C3A1vMRW.mjs +8 -0
- package/dist/functions-C3A1vMRW.mjs.map +1 -0
- package/dist/{helpers-BcP1tXAi.cjs → helpers-BelEzV4U.cjs} +2 -2
- package/dist/helpers-BelEzV4U.cjs.map +1 -0
- package/dist/{helpers-ByRTDO_m.mjs → helpers-DgsMFMUV.mjs} +2 -2
- package/dist/helpers-DgsMFMUV.mjs.map +1 -0
- package/dist/{index-BWzGIj06.d.mts → index-CgAQHr3f.d.mts} +2 -2
- package/dist/index-CgAQHr3f.d.mts.map +1 -0
- package/dist/index-D0fp_IK1.d.cts +12 -0
- package/dist/index-D0fp_IK1.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.mjs +1 -1
- package/dist/lazyAccessors-B-Jgkg2o.mjs +175 -0
- package/dist/lazyAccessors-B-Jgkg2o.mjs.map +1 -0
- package/dist/lazyAccessors-B2ILzU-j.d.mts +49 -0
- package/dist/lazyAccessors-B2ILzU-j.d.mts.map +1 -0
- package/dist/lazyAccessors-B8Hhras9.cjs +223 -0
- package/dist/lazyAccessors-B8Hhras9.cjs.map +1 -0
- package/dist/lazyAccessors-Bcpi06ed.d.cts +49 -0
- package/dist/lazyAccessors-Bcpi06ed.d.cts.map +1 -0
- package/dist/{parseHonoQuery-CZC5_97v.cjs → parseHonoQuery-D4MhxTRc.cjs} +1 -1
- package/dist/parseHonoQuery-D4MhxTRc.cjs.map +1 -0
- package/dist/{parseHonoQuery-DDgIkTO4.mjs → parseHonoQuery-DpK3sGPc.mjs} +1 -1
- package/dist/parseHonoQuery-DpK3sGPc.mjs.map +1 -0
- package/dist/parseQueryParams-BSNkjmZ9.cjs.map +1 -1
- package/dist/parseQueryParams-UMTRnRrW.mjs.map +1 -1
- package/dist/processAudits-CzHkPokQ.cjs.map +1 -1
- package/dist/processAudits-Dj8UGqcW.mjs.map +1 -1
- package/dist/publisher-Bw4770Hi.mjs.map +1 -1
- package/dist/publisher-C4BhHB5I.d.cts +16 -0
- package/dist/publisher-C4BhHB5I.d.cts.map +1 -0
- package/dist/publisher-NE-GnXL8.d.mts +16 -0
- package/dist/publisher-NE-GnXL8.d.mts.map +1 -0
- package/dist/publisher-lFQleddL.cjs.map +1 -1
- package/dist/publisher.d.cts +3 -16
- package/dist/publisher.d.mts +3 -16
- package/dist/{rls-CmJ7bRsz.cjs → rls-BrywnrQb.cjs} +1 -1
- package/dist/{rls-CmJ7bRsz.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
- package/dist/{rls-Bf3FRwto.mjs → rls-C0cWOnk4.mjs} +1 -1
- package/dist/{rls-Bf3FRwto.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +2 -2
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
- package/dist/subscribers/Subscriber.cjs +2 -2
- package/dist/subscribers/Subscriber.d.cts +1 -1
- package/dist/subscribers/Subscriber.d.mts +2 -2
- package/dist/subscribers/Subscriber.mjs +2 -2
- package/dist/subscribers/SubscriberBuilder.cjs +3 -3
- package/dist/subscribers/SubscriberBuilder.d.cts +2 -2
- package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
- package/dist/subscribers/SubscriberBuilder.mjs +3 -3
- package/dist/subscribers/index.cjs +3 -3
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +4 -4
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +3 -3
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +3 -3
- package/dist/subscribers/index.mjs.map +1 -1
- package/dist/telemetry-BTaiRqPo.d.cts +95 -0
- package/dist/telemetry-BTaiRqPo.d.cts.map +1 -0
- package/dist/telemetry-yAHf5yDs.d.mts +95 -0
- package/dist/telemetry-yAHf5yDs.d.mts.map +1 -0
- package/dist/telemetry.cjs +0 -0
- package/dist/telemetry.d.cts +2 -0
- package/dist/telemetry.d.mts +2 -0
- package/dist/telemetry.mjs +0 -0
- package/dist/types-B5H3piDg.d.cts.map +1 -1
- package/dist/{types-DdIlpxAd.d.mts → types-Dw-iLd3Y.d.mts} +1 -1
- package/dist/types-Dw-iLd3Y.d.mts.map +1 -0
- package/dist/types.d.mts +1 -1
- package/package.json +18 -18
- package/src/Construct.ts +117 -86
- package/src/__benchmarks__/build-time-optimization.bench.ts +274 -0
- package/src/__benchmarks__/endpoint.bench.ts +375 -375
- package/src/__benchmarks__/fixtures.ts +241 -0
- package/src/__benchmarks__/hono-adaptor.bench.ts +533 -0
- package/src/__benchmarks__/hono-server.bench.ts +206 -206
- package/src/__benchmarks__/response-builder.bench.ts +428 -0
- package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +319 -0
- package/src/__benchmarks__/strategies/strategy-c-middleware.ts +530 -0
- package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +567 -0
- package/src/__tests__/Construct.environment.spec.ts +349 -350
- package/src/__tests__/publisher.setting.spec.ts +496 -499
- package/src/__tests__/publisher.spec.ts +440 -442
- package/src/crons/Cron.ts +117 -117
- package/src/crons/CronBuilder.ts +237 -238
- package/src/crons/__tests__/Cron.spec.ts +448 -448
- package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +214 -214
- package/src/crons/index.ts +4 -4
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +571 -463
- package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +86 -86
- package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +85 -81
- package/src/endpoints/Authorizer.ts +100 -100
- package/src/endpoints/Endpoint.ts +921 -937
- package/src/endpoints/EndpointBuilder.ts +703 -703
- package/src/endpoints/EndpointFactory.ts +1054 -1056
- package/src/endpoints/HonoEndpointAdaptor.ts +621 -548
- package/src/endpoints/TestEndpointAdaptor.ts +372 -353
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +499 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +541 -542
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +1172 -1174
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +599 -599
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +710 -710
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +280 -280
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +924 -730
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +307 -0
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +408 -408
- package/src/endpoints/__tests__/Authorizer.spec.ts +286 -0
- package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +162 -162
- package/src/endpoints/__tests__/Endpoint.headers.spec.ts +182 -182
- package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +158 -159
- package/src/endpoints/__tests__/Endpoint.spec.ts +819 -822
- package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +427 -427
- package/src/endpoints/__tests__/EndpointBuilder.spec.ts +478 -478
- package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +426 -426
- package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +501 -501
- package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +177 -177
- package/src/endpoints/__tests__/EndpointFactory.spec.ts +471 -471
- package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +143 -143
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +663 -663
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +608 -608
- package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +561 -561
- package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +1036 -1036
- package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +278 -278
- package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +1093 -1093
- package/src/endpoints/__tests__/ResponseBuilder.spec.ts +230 -230
- package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +569 -569
- package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +841 -841
- package/src/endpoints/__tests__/endpoint-types.test.ts +68 -68
- package/src/endpoints/__tests__/helpers.spec.ts +37 -0
- package/src/endpoints/__tests__/lazyAccessors.spec.ts +330 -0
- package/src/endpoints/__tests__/processAudits.spec.ts +631 -0
- package/src/endpoints/audit.ts +51 -51
- package/src/endpoints/helpers.ts +34 -35
- package/src/endpoints/index.ts +33 -23
- package/src/endpoints/lazyAccessors.ts +241 -0
- package/src/endpoints/parseHonoQuery.ts +41 -41
- package/src/endpoints/parseQueryParams.ts +36 -36
- package/src/endpoints/processAudits.ts +269 -269
- package/src/endpoints/rls.ts +16 -16
- package/src/functions/AWSLambdaFunction.ts +294 -295
- package/src/functions/BaseFunctionBuilder.ts +185 -185
- package/src/functions/Function.ts +190 -190
- package/src/functions/FunctionBuilder.ts +353 -353
- package/src/functions/FunctionExecutionWrapper.ts +199 -200
- package/src/functions/TestFunctionAdaptor.ts +191 -191
- package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +424 -424
- package/src/functions/__tests__/Function.audits.spec.ts +364 -364
- package/src/functions/__tests__/Function.spec.ts +453 -454
- package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +179 -179
- package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +369 -369
- package/src/functions/index.ts +6 -4
- package/src/index.ts +13 -9
- package/src/publisher.ts +71 -72
- package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +244 -248
- package/src/subscribers/Subscriber.ts +82 -84
- package/src/subscribers/SubscriberBuilder.ts +129 -129
- package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +589 -589
- package/src/subscribers/__tests__/Subscriber.spec.ts +402 -404
- package/src/subscribers/index.ts +1 -0
- package/src/telemetry.ts +103 -0
- package/src/types.ts +7 -7
- package/test.ts +58 -59
- package/dist/AWSLambdaFunction-BdebRMUh.d.mts.map +0 -1
- package/dist/AWSLambdaFunction-C54a1doJ.mjs.map +0 -1
- package/dist/AWSLambdaFunction-D0tEOTXQ.d.cts.map +0 -1
- package/dist/AWSLambdaFunction-EPGY4s7i.cjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-BLfO612H.mjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-BNcYYZ-P.cjs.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-DrFAvHOp.d.mts.map +0 -1
- package/dist/AWSLambdaSubscriberAdaptor-Dx-Ks1Jp.d.cts.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DLqnYQ4E.d.cts.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-qlKXuZxy.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-CShQI8Gk.mjs.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-Ccl8B8kG.cjs.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-DyUaJIhB.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV1EndpointAdaptor-MRUxs3Xi.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-D8-0Aab4.cjs.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-M1-w0U5R.d.cts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-fuLM6M9k.d.mts.map +0 -1
- package/dist/AmazonApiGatewayV2EndpointAdaptor-lCRzGE4q.mjs.map +0 -1
- package/dist/Authorizer-B-btowNd.d.cts.map +0 -1
- package/dist/Authorizer-C0ge_tc8.cjs.map +0 -1
- package/dist/Authorizer-gWxYsGEp.d.mts.map +0 -1
- package/dist/Authorizer-r9U3y_ms.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-Czi1Jwza.mjs.map +0 -1
- package/dist/BaseFunctionBuilder-DRY419e7.d.mts.map +0 -1
- package/dist/BaseFunctionBuilder-MYG3C9ug.cjs.map +0 -1
- package/dist/Construct-Ba5cMxib.cjs.map +0 -1
- package/dist/Construct-DdyGHuag.mjs.map +0 -1
- package/dist/Construct-XrijZFFh.d.mts.map +0 -1
- package/dist/Cron-BxhGs5up.mjs.map +0 -1
- package/dist/Cron-CGF4YAfM.cjs.map +0 -1
- package/dist/Cron-bDLcTvV5.d.cts.map +0 -1
- package/dist/Cron-cdjlSKNp.d.mts.map +0 -1
- package/dist/CronBuilder-BC4m5-p1.d.mts.map +0 -1
- package/dist/CronBuilder-CcxKRtVP.cjs.map +0 -1
- package/dist/CronBuilder-DKVXyE0Q.d.cts.map +0 -1
- package/dist/CronBuilder-d2jh-IB2.mjs.map +0 -1
- package/dist/Endpoint-BPv9_-m_.d.cts.map +0 -1
- package/dist/Endpoint-BVGZXFyV.cjs.map +0 -1
- package/dist/Endpoint-BdwG75G_.d.mts.map +0 -1
- package/dist/Endpoint-CuOEswxJ.mjs.map +0 -1
- package/dist/EndpointBuilder-B3az942t.d.mts.map +0 -1
- package/dist/EndpointBuilder-Cgj1P_ra.cjs.map +0 -1
- package/dist/EndpointBuilder-DIy_m1bu.d.cts.map +0 -1
- package/dist/EndpointBuilder-DnCB1h1j.mjs.map +0 -1
- package/dist/EndpointFactory-C-0nE6Jg.d.mts.map +0 -1
- package/dist/EndpointFactory-CYj6BYok.cjs.map +0 -1
- package/dist/EndpointFactory-CbdxPCIH.mjs.map +0 -1
- package/dist/EndpointFactory-CyPbm3AD.d.cts.map +0 -1
- package/dist/Function-BVHqIDp9.mjs.map +0 -1
- package/dist/Function-Cf7f_kCz.d.cts.map +0 -1
- package/dist/Function-DDZb1525.cjs.map +0 -1
- package/dist/Function-DN2G6OT5.d.mts.map +0 -1
- package/dist/FunctionBuilder-CJBzzXL3.d.cts.map +0 -1
- package/dist/FunctionBuilder-CrDYgfiI.mjs.map +0 -1
- package/dist/FunctionBuilder-Cxx8D2na.d.mts.map +0 -1
- package/dist/FunctionBuilder-DswJ-9sD.cjs.map +0 -1
- package/dist/FunctionExecutionWrapper-BYI2bGTL.cjs.map +0 -1
- package/dist/FunctionExecutionWrapper-CLDh7Z2_.mjs.map +0 -1
- package/dist/FunctionExecutionWrapper-DF260Aaj.d.mts.map +0 -1
- package/dist/FunctionExecutionWrapper-Qy8bmgFR.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-BaPlUhz0.d.mts.map +0 -1
- package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs +0 -234
- package/dist/HonoEndpointAdaptor-CQe2FqMR.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs +0 -228
- package/dist/HonoEndpointAdaptor-Ce-2HBxn.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-YcRHYALH.d.cts.map +0 -1
- package/dist/Subscriber-BiHjVXtM.cjs.map +0 -1
- package/dist/Subscriber-BmPf9GFb.mjs.map +0 -1
- package/dist/Subscriber-COYMSevD.d.cts.map +0 -1
- package/dist/Subscriber-ikctpU3I.d.mts.map +0 -1
- package/dist/SubscriberBuilder-Cp1C-xtT.cjs.map +0 -1
- package/dist/SubscriberBuilder-DJPEeYDJ.mjs.map +0 -1
- package/dist/SubscriberBuilder-D_9zzllj.d.mts.map +0 -1
- package/dist/SubscriberBuilder-ivHAGIVi.d.cts.map +0 -1
- package/dist/TestEndpointAdaptor-C10xBI--.d.cts.map +0 -1
- package/dist/TestEndpointAdaptor-DB7bREhS.d.mts.map +0 -1
- package/dist/TestEndpointAdaptor-DJgik2Wj.mjs +0 -160
- package/dist/TestEndpointAdaptor-DJgik2Wj.mjs.map +0 -1
- package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs +0 -166
- package/dist/TestEndpointAdaptor-ZbtQiuHE.cjs.map +0 -1
- package/dist/functions-C6EK1xL6.mjs +0 -8
- package/dist/functions-C6EK1xL6.mjs.map +0 -1
- package/dist/functions-fTid0RMK.cjs.map +0 -1
- package/dist/helpers-BcP1tXAi.cjs.map +0 -1
- package/dist/helpers-ByRTDO_m.mjs.map +0 -1
- package/dist/index-BWzGIj06.d.mts.map +0 -1
- package/dist/index-DmFozqLd.d.cts +0 -12
- package/dist/index-DmFozqLd.d.cts.map +0 -1
- package/dist/parseHonoQuery-CZC5_97v.cjs.map +0 -1
- package/dist/parseHonoQuery-DDgIkTO4.mjs.map +0 -1
- package/dist/publisher.d.cts.map +0 -1
- package/dist/publisher.d.mts.map +0 -1
- package/dist/types-DdIlpxAd.d.mts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointBuilder-Cgj1P_ra.cjs","names":["BaseFunctionBuilder","route: TRoute","method: TMethod","ConstructType","publisher: Service<TEventPublisherServiceName, TEventPublisher>","storage: Service<TAuditStorageServiceName, TAuditStorage>","service: Service<TDatabaseServiceName, TDatabase>","description: string","status: SuccessStatus","event: TEvent","tags: string[]","memorySize: number","publisher: Service<TName, T>","schema: T","config: RateLimitConfig","name: TAuthorizers[number] | 'none'","services: T","logger: T","storage: Service<TName, T>","extractor: ActorExtractor<TServices, TSession, TLogger>","audits: MappedAudit<TAuditAction, OutSchema>[]","service: Service<TName, T>","config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass","RLS_BYPASS","_schema: any","fn: EndpointHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >","authorizer: Authorizer | undefined","Endpoint"],"sources":["../src/endpoints/EndpointBuilder.ts"],"sourcesContent":["import type {\n AuditStorage,\n AuditableAction,\n ExtractStorageAuditAction,\n} from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { RateLimitConfig } from '@geekmidas/rate-limit';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { BaseFunctionBuilder } from '../functions';\nimport type { HttpMethod } from '../types';\nimport type { Authorizer, SecurityScheme } from './Authorizer';\nimport { getSecurityScheme } from './Authorizer';\nimport { Endpoint, type EndpointSchemas } from './Endpoint';\nimport type {\n AuthorizeFn,\n EndpointHandler,\n SessionFn,\n SuccessStatus,\n} from './Endpoint';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { RlsBypass, RlsConfig } from './rls';\nimport { RLS_BYPASS } from './rls';\n\nexport class EndpointBuilder<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuthorizers extends readonly string[] = readonly string[],\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n> {\n protected schemas: TInput = {} as TInput;\n protected _description?: string;\n protected _status?: SuccessStatus;\n protected _tags?: string[];\n protected _memorySize?: number;\n _getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>\n ({}) as TSession;\n _authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;\n _rateLimit?: RateLimitConfig;\n _availableAuthorizers: Authorizer[] = [];\n _authorizerName?: TAuthorizers[number];\n _actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n _audits: MappedAudit<TAuditAction, OutSchema>[] = [];\n _customSecuritySchemes: Record<string, SecurityScheme> = {};\n _rlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n _rlsBypass?: boolean;\n\n constructor(\n readonly route: TRoute,\n readonly method: TMethod,\n ) {\n super(ConstructType.Endpoint);\n }\n\n // Internal setter for EndpointFactory to set default publisher\n _setPublisher(\n publisher: Service<TEventPublisherServiceName, TEventPublisher>,\n ) {\n this._publisher = publisher;\n }\n\n // Internal setter for EndpointFactory to set default auditor storage\n _setAuditorStorage(\n storage: Service<TAuditStorageServiceName, TAuditStorage>,\n ) {\n this._auditorStorage = storage;\n }\n\n // Internal setter for EndpointFactory to set default database service\n _setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>) {\n this._databaseService = service;\n }\n\n description(description: string): this {\n this._description = description;\n return this;\n }\n\n status(status: SuccessStatus): this {\n this._status = status;\n return this;\n }\n\n override event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(\n event: TEvent,\n ): this {\n this._events.push(event);\n return this;\n }\n\n tags(tags: string[]): this {\n this._tags = tags;\n return this;\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n override publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n T,\n TName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n T,\n TName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n body<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'body'> & { body: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.schemas.body = schema as unknown as T;\n // @ts-ignore\n return this;\n }\n\n search<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'query'> & { query: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.schemas.query = schema as unknown as T;\n // @ts-ignore\n return this;\n }\n\n query<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'query'> & { query: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n return this.search(schema);\n }\n\n params<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'params'> & { params: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.schemas.params = schema as unknown as T;\n // @ts-ignore\n return this;\n }\n\n rateLimit(config: RateLimitConfig): this {\n this._rateLimit = config;\n return this;\n }\n\n authorizer(\n name: TAuthorizers[number] | 'none',\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n // Special case: 'none' explicitly marks endpoint as having no authorizer\n if (name === 'none') {\n this._authorizerName = undefined;\n return this;\n }\n\n // Validate that the authorizer exists in available authorizers\n const authorizerExists = this._availableAuthorizers.some(\n (a) => a.name === name,\n );\n if (!authorizerExists && this._availableAuthorizers.length > 0) {\n const available = this._availableAuthorizers\n .map((a) => a.name)\n .join(', ');\n throw new Error(\n `Authorizer \"${name as string}\" not found in available authorizers: ${available}`,\n );\n }\n this._authorizerName = name;\n return this;\n }\n\n services<T extends Service[]>(\n services: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n T,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n T,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n T,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n T,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the auditor storage service for this endpoint.\n * This enables audit functionality and makes `auditor` available in the handler context.\n * The audit action type is automatically inferred from the storage's generic parameter.\n */\n override auditor<T extends AuditStorage<any>, TName extends string>(\n storage: Service<TName, T>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName\n > {\n this._auditorStorage = storage as unknown as Service<\n TAuditStorageServiceName,\n TAuditStorage\n >;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the actor extractor function for audit records.\n * The actor is extracted from the request context and attached to all audits.\n */\n actor(\n extractor: ActorExtractor<TServices, TSession, TLogger>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._actorExtractor = extractor;\n return this;\n }\n\n /**\n * Add declarative audit definitions that are processed after the handler executes.\n * Similar to `.event()` for events, but for audits.\n *\n * @example\n * ```typescript\n * .audit<AppAuditAction>([\n * {\n * type: 'user.created',\n * payload: (response) => ({ userId: response.id, email: response.email }),\n * when: (response) => response.active,\n * entityId: (response) => response.id,\n * table: 'users',\n * },\n * ])\n * ```\n */\n audit(audits: MappedAudit<TAuditAction, OutSchema>[]): this {\n this._audits = audits;\n return this;\n }\n\n /**\n * Set the database service for this endpoint.\n * The database will be available in the handler context as `db`.\n * When audit storage is configured and uses the same database,\n * `db` will automatically be the transaction for ACID compliance.\n *\n * @example\n * ```typescript\n * .database(databaseService)\n * .handle(async ({ db }) => {\n * // db is the raw database or transaction (when auditor uses same db)\n * return await db.selectFrom('users').selectAll().execute();\n * })\n * ```\n */\n override database<T, TName extends string>(\n service: Service<TName, T>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName\n >;\n }\n\n /**\n * Configure RLS (Row-Level Security) context for this endpoint.\n * Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.\n *\n * @example\n * ```typescript\n * // Custom RLS config for this endpoint\n * .rls({\n * extractor: ({ session }) => ({\n * user_id: session.userId,\n * tenant_id: session.tenantId,\n * }),\n * prefix: 'app',\n * })\n *\n * // Bypass RLS (for admin endpoints)\n * .rls(false)\n * ```\n */\n rls(\n config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass,\n ): this {\n if (config === false || config === RLS_BYPASS) {\n this._rlsBypass = true;\n this._rlsConfig = undefined;\n } else {\n this._rlsConfig = config;\n this._rlsBypass = false;\n }\n return this;\n }\n\n /**\n * Explicitly bypass RLS for this endpoint.\n * Useful for admin operations that need unrestricted database access.\n *\n * @example\n * ```typescript\n * .rlsBypass()\n * .handle(async ({ db }) => {\n * // Full access, no RLS filtering\n * return db.selectFrom('orders').selectAll().execute();\n * })\n * ```\n */\n rlsBypass(): this {\n this._rlsBypass = true;\n this._rlsConfig = undefined;\n return this;\n }\n\n // EndpointBuilder doesn't have a generic input method - it uses body, query, params instead\n input(_schema: any): any {\n throw new Error(\n 'EndpointBuilder does not support generic input. Use body(), query(), or params() instead.',\n );\n }\n\n handle(\n fn: EndpointHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n ): Endpoint<\n TRoute,\n TMethod,\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n // Find authorizer metadata if name is set\n // If the authorizer name is set but not in availableAuthorizers, create a simple authorizer object\n let authorizer: Authorizer | undefined;\n if (this._authorizerName) {\n const existingAuthorizer = this._availableAuthorizers.find(\n (a) => a.name === this._authorizerName,\n );\n\n if (existingAuthorizer) {\n authorizer = existingAuthorizer;\n } else {\n // Create authorizer with security scheme if available (built-in or custom)\n const securityScheme = getSecurityScheme(\n this._authorizerName as string,\n this._customSecuritySchemes,\n );\n authorizer = {\n name: this._authorizerName as string,\n securityScheme,\n };\n }\n }\n\n return new Endpoint({\n fn,\n method: this.method,\n route: this.route,\n description: this._description,\n tags: this._tags,\n input: this.schemas,\n output: this.outputSchema,\n services: this._services,\n logger: this._logger,\n timeout: this._timeout,\n memorySize: this._memorySize,\n authorize: this._authorize,\n status: this._status,\n getSession: this._getSession,\n rateLimit: this._rateLimit,\n publisherService: this._publisher,\n events: this._events,\n authorizer,\n auditorStorageService: this._auditorStorage,\n actorExtractor: this._actorExtractor,\n audits: this._audits,\n databaseService: this._databaseService,\n rlsConfig: this._rlsConfig,\n rlsBypass: this._rlsBypass,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointBuilder-DIy_m1bu.d.cts","names":[],"sources":["../src/endpoints/EndpointBuilder.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointBuilder-DnCB1h1j.mjs","names":["route: TRoute","method: TMethod","publisher: Service<TEventPublisherServiceName, TEventPublisher>","storage: Service<TAuditStorageServiceName, TAuditStorage>","service: Service<TDatabaseServiceName, TDatabase>","description: string","status: SuccessStatus","event: TEvent","tags: string[]","memorySize: number","publisher: Service<TName, T>","schema: T","config: RateLimitConfig","name: TAuthorizers[number] | 'none'","services: T","logger: T","storage: Service<TName, T>","extractor: ActorExtractor<TServices, TSession, TLogger>","audits: MappedAudit<TAuditAction, OutSchema>[]","service: Service<TName, T>","config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass","_schema: any","fn: EndpointHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >","authorizer: Authorizer | undefined"],"sources":["../src/endpoints/EndpointBuilder.ts"],"sourcesContent":["import type {\n AuditStorage,\n AuditableAction,\n ExtractStorageAuditAction,\n} from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { RateLimitConfig } from '@geekmidas/rate-limit';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { BaseFunctionBuilder } from '../functions';\nimport type { HttpMethod } from '../types';\nimport type { Authorizer, SecurityScheme } from './Authorizer';\nimport { getSecurityScheme } from './Authorizer';\nimport { Endpoint, type EndpointSchemas } from './Endpoint';\nimport type {\n AuthorizeFn,\n EndpointHandler,\n SessionFn,\n SuccessStatus,\n} from './Endpoint';\nimport type { ActorExtractor, MappedAudit } from './audit';\nimport type { RlsBypass, RlsConfig } from './rls';\nimport { RLS_BYPASS } from './rls';\n\nexport class EndpointBuilder<\n TRoute extends string,\n TMethod extends HttpMethod,\n TInput extends EndpointSchemas = {},\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuthorizers extends readonly string[] = readonly string[],\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n> {\n protected schemas: TInput = {} as TInput;\n protected _description?: string;\n protected _status?: SuccessStatus;\n protected _tags?: string[];\n protected _memorySize?: number;\n _getSession: SessionFn<TServices, TLogger, TSession, TDatabase> = () =>\n ({}) as TSession;\n _authorize: AuthorizeFn<TServices, TLogger, TSession> = () => true;\n _rateLimit?: RateLimitConfig;\n _availableAuthorizers: Authorizer[] = [];\n _authorizerName?: TAuthorizers[number];\n _actorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n _audits: MappedAudit<TAuditAction, OutSchema>[] = [];\n _customSecuritySchemes: Record<string, SecurityScheme> = {};\n _rlsConfig?: RlsConfig<TServices, TSession, TLogger>;\n _rlsBypass?: boolean;\n\n constructor(\n readonly route: TRoute,\n readonly method: TMethod,\n ) {\n super(ConstructType.Endpoint);\n }\n\n // Internal setter for EndpointFactory to set default publisher\n _setPublisher(\n publisher: Service<TEventPublisherServiceName, TEventPublisher>,\n ) {\n this._publisher = publisher;\n }\n\n // Internal setter for EndpointFactory to set default auditor storage\n _setAuditorStorage(\n storage: Service<TAuditStorageServiceName, TAuditStorage>,\n ) {\n this._auditorStorage = storage;\n }\n\n // Internal setter for EndpointFactory to set default database service\n _setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>) {\n this._databaseService = service;\n }\n\n description(description: string): this {\n this._description = description;\n return this;\n }\n\n status(status: SuccessStatus): this {\n this._status = status;\n return this;\n }\n\n override event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(\n event: TEvent,\n ): this {\n this._events.push(event);\n return this;\n }\n\n tags(tags: string[]): this {\n this._tags = tags;\n return this;\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n override publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n T,\n TName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n T,\n TName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n body<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'body'> & { body: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.schemas.body = schema as unknown as T;\n // @ts-ignore\n return this;\n }\n\n search<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'query'> & { query: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.schemas.query = schema as unknown as T;\n // @ts-ignore\n return this;\n }\n\n query<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'query'> & { query: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n return this.search(schema);\n }\n\n params<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n Omit<TInput, 'params'> & { params: T },\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.schemas.params = schema as unknown as T;\n // @ts-ignore\n return this;\n }\n\n rateLimit(config: RateLimitConfig): this {\n this._rateLimit = config;\n return this;\n }\n\n authorizer(\n name: TAuthorizers[number] | 'none',\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n // Special case: 'none' explicitly marks endpoint as having no authorizer\n if (name === 'none') {\n this._authorizerName = undefined;\n return this;\n }\n\n // Validate that the authorizer exists in available authorizers\n const authorizerExists = this._availableAuthorizers.some(\n (a) => a.name === name,\n );\n if (!authorizerExists && this._availableAuthorizers.length > 0) {\n const available = this._availableAuthorizers\n .map((a) => a.name)\n .join(', ');\n throw new Error(\n `Authorizer \"${name as string}\" not found in available authorizers: ${available}`,\n );\n }\n this._authorizerName = name;\n return this;\n }\n\n services<T extends Service[]>(\n services: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n T,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n T,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n T,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n T,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the auditor storage service for this endpoint.\n * This enables audit functionality and makes `auditor` available in the handler context.\n * The audit action type is automatically inferred from the storage's generic parameter.\n */\n override auditor<T extends AuditStorage<any>, TName extends string>(\n storage: Service<TName, T>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName\n > {\n this._auditorStorage = storage as unknown as Service<\n TAuditStorageServiceName,\n TAuditStorage\n >;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the actor extractor function for audit records.\n * The actor is extracted from the request context and attached to all audits.\n */\n actor(\n extractor: ActorExtractor<TServices, TSession, TLogger>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n this._actorExtractor = extractor;\n return this;\n }\n\n /**\n * Add declarative audit definitions that are processed after the handler executes.\n * Similar to `.event()` for events, but for audits.\n *\n * @example\n * ```typescript\n * .audit<AppAuditAction>([\n * {\n * type: 'user.created',\n * payload: (response) => ({ userId: response.id, email: response.email }),\n * when: (response) => response.active,\n * entityId: (response) => response.id,\n * table: 'users',\n * },\n * ])\n * ```\n */\n audit(audits: MappedAudit<TAuditAction, OutSchema>[]): this {\n this._audits = audits;\n return this;\n }\n\n /**\n * Set the database service for this endpoint.\n * The database will be available in the handler context as `db`.\n * When audit storage is configured and uses the same database,\n * `db` will automatically be the transaction for ACID compliance.\n *\n * @example\n * ```typescript\n * .database(databaseService)\n * .handle(async ({ db }) => {\n * // db is the raw database or transaction (when auditor uses same db)\n * return await db.selectFrom('users').selectAll().execute();\n * })\n * ```\n */\n override database<T, TName extends string>(\n service: Service<TName, T>,\n ): EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as EndpointBuilder<\n TRoute,\n TMethod,\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName\n >;\n }\n\n /**\n * Configure RLS (Row-Level Security) context for this endpoint.\n * Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.\n *\n * @example\n * ```typescript\n * // Custom RLS config for this endpoint\n * .rls({\n * extractor: ({ session }) => ({\n * user_id: session.userId,\n * tenant_id: session.tenantId,\n * }),\n * prefix: 'app',\n * })\n *\n * // Bypass RLS (for admin endpoints)\n * .rls(false)\n * ```\n */\n rls(\n config: RlsConfig<TServices, TSession, TLogger> | false | RlsBypass,\n ): this {\n if (config === false || config === RLS_BYPASS) {\n this._rlsBypass = true;\n this._rlsConfig = undefined;\n } else {\n this._rlsConfig = config;\n this._rlsBypass = false;\n }\n return this;\n }\n\n /**\n * Explicitly bypass RLS for this endpoint.\n * Useful for admin operations that need unrestricted database access.\n *\n * @example\n * ```typescript\n * .rlsBypass()\n * .handle(async ({ db }) => {\n * // Full access, no RLS filtering\n * return db.selectFrom('orders').selectAll().execute();\n * })\n * ```\n */\n rlsBypass(): this {\n this._rlsBypass = true;\n this._rlsConfig = undefined;\n return this;\n }\n\n // EndpointBuilder doesn't have a generic input method - it uses body, query, params instead\n input(_schema: any): any {\n throw new Error(\n 'EndpointBuilder does not support generic input. Use body(), query(), or params() instead.',\n );\n }\n\n handle(\n fn: EndpointHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TSession,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n ): Endpoint<\n TRoute,\n TMethod,\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n // Find authorizer metadata if name is set\n // If the authorizer name is set but not in availableAuthorizers, create a simple authorizer object\n let authorizer: Authorizer | undefined;\n if (this._authorizerName) {\n const existingAuthorizer = this._availableAuthorizers.find(\n (a) => a.name === this._authorizerName,\n );\n\n if (existingAuthorizer) {\n authorizer = existingAuthorizer;\n } else {\n // Create authorizer with security scheme if available (built-in or custom)\n const securityScheme = getSecurityScheme(\n this._authorizerName as string,\n this._customSecuritySchemes,\n );\n authorizer = {\n name: this._authorizerName as string,\n securityScheme,\n };\n }\n }\n\n return new Endpoint({\n fn,\n method: this.method,\n route: this.route,\n description: this._description,\n tags: this._tags,\n input: this.schemas,\n output: this.outputSchema,\n services: this._services,\n logger: this._logger,\n timeout: this._timeout,\n memorySize: this._memorySize,\n authorize: this._authorize,\n status: this._status,\n getSession: this._getSession,\n rateLimit: this._rateLimit,\n publisherService: this._publisher,\n events: this._events,\n authorizer,\n auditorStorageService: this._auditorStorage,\n actorExtractor: this._actorExtractor,\n audits: this._audits,\n databaseService: this._databaseService,\n rlsConfig: this._rlsConfig,\n rlsBypass: this._rlsBypass,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointFactory-C-0nE6Jg.d.mts","names":[],"sources":["../src/endpoints/EndpointFactory.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointFactory-CYj6BYok.cjs","names":["ConsoleLogger","path: P","basePath: TBasePath","authorizers: T","schemes: T","name:\n | BuiltInSecuritySchemeId\n | keyof TSecuritySchemes\n | TAuthorizers[number]\n | 'none'","path: TPath","fn: AuthorizeFn<TServices, TLogger, TSession>","services: S","logger: L","publisher: Service<TServiceName, T>","session: SessionFn<TServices, TLogger, T, TDatabase>","service: Service<TName, T>","storage: Service<TName, T>","extractor: ActorExtractor<TServices, TSession, TLogger>","config: TConfig","method: TMethod","EndpointBuilder"],"sources":["../src/endpoints/EndpointFactory.ts"],"sourcesContent":["import type {\n AuditStorage,\n AuditableAction,\n ExtractStorageAuditAction,\n} from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport uniqBy from 'lodash.uniqby';\nimport type { HttpMethod } from '../types';\nimport type {\n Authorizer,\n BuiltInSecuritySchemeId,\n SecurityScheme,\n} from './Authorizer';\nimport type { AuthorizeFn, SessionFn } from './Endpoint';\nimport { EndpointBuilder } from './EndpointBuilder';\nimport type { ActorExtractor } from './audit';\nimport type { RlsConfig } from './rls';\n\n// Re-export SecurityScheme to make the type portable in declaration files\nexport type { SecurityScheme } from './Authorizer';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class EndpointFactory<\n TServices extends Service[] = [],\n TBasePath extends string = '',\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuthorizers extends readonly string[] = readonly string[],\n TAuditStorage extends AuditStorage<any> | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TAuditAction extends AuditableAction<\n string,\n unknown\n > = ExtractStorageAuditAction<NonNullable<TAuditStorage>>,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TSecuritySchemes extends Record<string, SecurityScheme> = Record<\n string,\n SecurityScheme\n >,\n TRlsConfig extends\n | RlsConfig<TServices, TSession, TLogger>\n | undefined = undefined,\n> {\n // @ts-ignore\n private defaultServices: TServices;\n private basePath: TBasePath = '' as TBasePath;\n private defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;\n private defaultEventPublisher:\n | Service<TEventPublisherServiceName, TEventPublisher>\n | undefined;\n private defaultSessionExtractor?: SessionFn<\n TServices,\n TLogger,\n TSession,\n TDatabase\n >;\n private defaultLogger: TLogger = DEFAULT_LOGGER;\n private availableAuthorizers: Authorizer[] = [];\n private defaultAuthorizerName?: TAuthorizers[number];\n private defaultAuditorStorage:\n | Service<TAuditStorageServiceName, TAuditStorage>\n | undefined;\n private defaultDatabaseService:\n | Service<TDatabaseServiceName, TDatabase>\n | undefined;\n private defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n private customSecuritySchemes: TSecuritySchemes = {} as TSecuritySchemes;\n private defaultRlsConfig?: TRlsConfig;\n\n constructor({\n basePath,\n defaultAuthorizeFn,\n defaultLogger,\n defaultSessionExtractor,\n // @ts-ignore\n defaultServices = [] as TServices,\n defaultEventPublisher,\n availableAuthorizers = [],\n defaultAuthorizerName,\n defaultAuditorStorage,\n defaultDatabaseService,\n defaultActorExtractor,\n customSecuritySchemes = {} as TSecuritySchemes,\n defaultRlsConfig,\n }: EndpointFactoryOptions<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > = {}) {\n // Initialize default services\n this.defaultServices = uniqBy(\n defaultServices,\n (s) => s.serviceName,\n ) as TServices;\n\n this.basePath = basePath || ('' as TBasePath);\n this.defaultAuthorizeFn = defaultAuthorizeFn;\n this.defaultLogger = defaultLogger || (DEFAULT_LOGGER as TLogger);\n this.defaultSessionExtractor = defaultSessionExtractor;\n this.defaultEventPublisher = defaultEventPublisher;\n this.availableAuthorizers = availableAuthorizers;\n this.defaultAuthorizerName = defaultAuthorizerName;\n this.defaultAuditorStorage = defaultAuditorStorage;\n this.defaultDatabaseService = defaultDatabaseService;\n this.defaultActorExtractor = defaultActorExtractor;\n this.customSecuritySchemes = customSecuritySchemes;\n this.defaultRlsConfig = defaultRlsConfig;\n }\n\n static joinPaths<TBasePath extends string, P extends string>(\n path: P,\n basePath: TBasePath = '' as TBasePath,\n ): JoinPaths<TBasePath, P> {\n // Handle empty cases\n if (!basePath && !path) return '/' as JoinPaths<TBasePath, P>;\n if (!basePath)\n return (path.startsWith('/') ? path : '/' + path) as JoinPaths<\n TBasePath,\n P\n >;\n if (!path)\n return (\n basePath.startsWith('/') ? basePath : '/' + basePath\n ) as JoinPaths<TBasePath, P>;\n\n const base = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;\n const segment = path.startsWith('/') ? path : '/' + path;\n\n let result = base + segment;\n\n // Ensure leading slash\n if (!result.startsWith('/')) {\n result = '/' + result;\n }\n\n // Normalize multiple slashes (except in the middle of the path where they might be intentional)\n result = result.replace(/^\\/+/g, '/');\n\n // Remove trailing slash unless it's the root path \"/\"\n if (result.length > 1 && result.endsWith('/')) {\n result = result.slice(0, -1);\n }\n\n return result as JoinPaths<TBasePath, P>;\n }\n\n // Configure available authorizers\n authorizers<const T extends readonly string[]>(\n authorizers: T,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n const authorizerConfigs = authorizers.map((name) => ({\n name,\n }));\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: authorizerConfigs,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Define custom security schemes for this factory.\n * These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).\n *\n * @example\n * ```typescript\n * const router = e.securitySchemes({\n * awsIamSigV4: {\n * type: 'apiKey',\n * in: 'header',\n * name: 'Authorization',\n * 'x-amazon-apigateway-authtype': 'awsSigv4',\n * },\n * });\n * ```\n */\n securitySchemes<T extends Record<string, SecurityScheme>>(\n schemes: T,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes & T,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes & T,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: {\n ...this.customSecuritySchemes,\n ...schemes,\n } as TSecuritySchemes & T,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the default authorizer for all endpoints created from this factory.\n * Individual endpoints can override this by calling `.authorizer()` on the builder.\n * Use `'none'` to explicitly disable authorization for all endpoints.\n *\n * Accepts:\n * - Built-in security scheme names: 'jwt', 'bearer', 'apiKey', 'oauth2', 'oidc'\n * - Custom security scheme names defined via `.securitySchemes()`\n * - 'none' to disable authorization\n */\n authorizer(\n name:\n | BuiltInSecuritySchemeId\n | keyof TSecuritySchemes\n | TAuthorizers[number]\n | 'none',\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n // Validate that the authorizer exists in available authorizers (if authorizers() was called)\n if (name !== 'none' && this.availableAuthorizers.length > 0) {\n const authorizerExists = this.availableAuthorizers.some(\n (a) => a.name === name,\n );\n if (!authorizerExists) {\n const available = this.availableAuthorizers\n .map((a) => a.name)\n .join(', ');\n throw new Error(\n `Authorizer \"${name as string}\" not found in available authorizers: ${available}`,\n );\n }\n }\n\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName:\n name === 'none' ? undefined : (name as TAuthorizers[number]),\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n // Create a sub-router with a path prefix\n route<TPath extends string>(\n path: TPath,\n ): EndpointFactory<\n TServices,\n JoinPaths<TBasePath, TPath>,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n const newBasePath = EndpointFactory.joinPaths(path, this.basePath);\n return new EndpointFactory<\n TServices,\n JoinPaths<TBasePath, TPath>,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: newBasePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n // Create a new factory with authorization\n authorize(\n fn: AuthorizeFn<TServices, TLogger, TSession>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: fn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n // Create a new factory with services\n services<S extends Service[]>(\n services: S,\n ): EndpointFactory<\n [...S, ...TServices],\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined // Reset RLS config when services change - user should call .rls() after .services()\n > {\n return new EndpointFactory<\n [...S, ...TServices],\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined\n >({\n defaultServices: [...services, ...this.defaultServices],\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<\n [...S, ...TServices],\n TLogger,\n TSession\n >,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor as unknown as\n | SessionFn<[...S, ...TServices], TLogger, TSession, TDatabase>\n | undefined,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor as unknown as\n | ActorExtractor<[...S, ...TServices], TSession, TLogger>\n | undefined,\n customSecuritySchemes: this.customSecuritySchemes,\n // Reset RLS config when services change since it depends on TServices\n defaultRlsConfig: undefined,\n });\n }\n\n logger<L extends Logger>(\n logger: L,\n ): EndpointFactory<\n TServices,\n TBasePath,\n L,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined // Reset RLS config when logger type changes - user should call .rls() after .logger()\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n L,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<\n TServices,\n L,\n TSession\n >,\n defaultLogger: logger,\n defaultSessionExtractor: this\n .defaultSessionExtractor as unknown as SessionFn<\n TServices,\n L,\n TSession\n >,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this\n .defaultActorExtractor as unknown as ActorExtractor<\n TServices,\n TSession,\n L\n >,\n customSecuritySchemes: this.customSecuritySchemes,\n // Reset RLS config when logger type changes since it depends on TLogger\n defaultRlsConfig: undefined,\n });\n }\n\n publisher<\n T extends EventPublisher<any>,\n TServiceName extends string = string,\n >(\n publisher: Service<TServiceName, T>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n T,\n TServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n T,\n TServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: publisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n session<T>(\n session: SessionFn<TServices, TLogger, T, TDatabase>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined // Reset RLS config when session type changes - user should call .rls() after .session()\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<\n TServices,\n TLogger,\n T\n >,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: session,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this\n .defaultActorExtractor as unknown as ActorExtractor<\n TServices,\n T,\n TLogger\n >,\n customSecuritySchemes: this.customSecuritySchemes,\n // Reset RLS config when session type changes since it depends on TSession\n defaultRlsConfig: undefined,\n });\n }\n\n /**\n * Set the database service for endpoints created from this factory.\n * The database will be available in handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n // Reset session extractor when database changes - user should call .session() after .database()\n // to get proper type inference for the new database type\n defaultSessionExtractor: this.defaultSessionExtractor as unknown as\n | SessionFn<TServices, TLogger, TSession, T>\n | undefined,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: service,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the auditor storage service for endpoints created from this factory.\n * This enables audit functionality and makes `auditor` available in handler context.\n * The audit action type is automatically inferred from the storage's generic parameter.\n */\n auditor<T extends AuditStorage<any>, TName extends string>(\n storage: Service<TName, T>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: storage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this\n .defaultActorExtractor as unknown as ActorExtractor<\n TServices,\n TSession,\n TLogger\n >,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the actor extractor function for endpoints created from this factory.\n * The actor is extracted from the request context and attached to all audits.\n */\n actor(\n extractor: ActorExtractor<TServices, TSession, TLogger>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: extractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the RLS (Row-Level Security) configuration for endpoints created from this factory.\n * This enables automatic PostgreSQL session variable setting for RLS policies.\n *\n * @example\n * ```typescript\n * const api = new EndpointFactory()\n * .database(databaseService)\n * .session(extractSession)\n * .rls({\n * extractor: ({ session }) => ({\n * user_id: session.userId,\n * tenant_id: session.tenantId,\n * }),\n * prefix: 'app',\n * });\n * ```\n */\n rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(\n config: TConfig,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: config,\n });\n }\n\n private createBuilder<TMethod extends HttpMethod, TPath extends string>(\n method: TMethod,\n path: TPath,\n ): EndpointBuilder<\n JoinPaths<TBasePath, TPath>,\n TMethod,\n {},\n TServices,\n TLogger,\n undefined,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n const fullPath = EndpointFactory.joinPaths(path, this.basePath);\n const builder = new EndpointBuilder<\n JoinPaths<TBasePath, TPath>,\n TMethod,\n {},\n TServices,\n TLogger,\n undefined,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >(fullPath, method);\n\n if (this.defaultAuthorizeFn) {\n // @ts-ignore\n builder._authorize = this.defaultAuthorizeFn;\n }\n if (this.defaultServices.length) {\n // Create a copy to avoid sharing references between builders\n builder._services = [...this.defaultServices] as TServices;\n }\n\n if (this.defaultLogger) {\n builder._logger = this.defaultLogger as TLogger;\n }\n\n if (this.defaultSessionExtractor) {\n builder._getSession = this.defaultSessionExtractor as SessionFn<\n TServices,\n TLogger,\n TSession\n >;\n }\n\n if (this.defaultEventPublisher) {\n builder._setPublisher(this.defaultEventPublisher);\n }\n\n // Set available authorizers and default\n builder._availableAuthorizers = this.availableAuthorizers;\n if (this.defaultAuthorizerName) {\n builder._authorizerName = this.defaultAuthorizerName;\n }\n\n // Set auditor storage if configured\n if (this.defaultAuditorStorage) {\n builder._setAuditorStorage(this.defaultAuditorStorage as any);\n }\n\n // Set database service if configured\n if (this.defaultDatabaseService) {\n builder._setDatabaseService(this.defaultDatabaseService as any);\n }\n\n // Set actor extractor if configured\n if (this.defaultActorExtractor) {\n builder._actorExtractor = this.defaultActorExtractor;\n }\n\n // Set custom security schemes\n builder._customSecuritySchemes = this.customSecuritySchemes;\n\n // Set RLS config if configured\n if (this.defaultRlsConfig) {\n builder._rlsConfig = this.defaultRlsConfig as any;\n }\n\n return builder;\n }\n\n post<TPath extends string>(path: TPath) {\n return this.createBuilder('POST', path);\n }\n\n get<TPath extends string>(path: TPath) {\n return this.createBuilder('GET', path);\n }\n\n put<TPath extends string>(path: TPath) {\n return this.createBuilder('PUT', path);\n }\n\n delete<TPath extends string>(path: TPath) {\n return this.createBuilder('DELETE', path);\n }\n\n patch<TPath extends string>(path: TPath) {\n return this.createBuilder('PATCH', path);\n }\n\n options<TPath extends string>(path: TPath) {\n return this.createBuilder('OPTIONS', path);\n }\n}\n\nexport type RemoveTrailingSlash<T extends string> = T extends `${infer Rest}/`\n ? Rest extends ''\n ? T // Keep \"/\" as is\n : Rest\n : T;\n\nexport type JoinPaths<\n TBasePath extends string,\n TPath extends string,\n> = RemoveTrailingSlash<\n TBasePath extends ''\n ? TPath\n : TPath extends ''\n ? TBasePath\n : TBasePath extends '/'\n ? TPath extends `/${string}`\n ? TPath\n : `/${TPath}`\n : TBasePath extends `${infer Base}/`\n ? TPath extends `/${infer Rest}`\n ? `${Base}/${Rest}`\n : `${Base}/${TPath}`\n : TPath extends `/${infer Rest}`\n ? `${TBasePath}/${Rest}`\n : `${TBasePath}/${TPath}`\n>;\n\nexport interface EndpointFactoryOptions<\n TServices extends Service[] = [],\n TBasePath extends string = '',\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuthorizers extends readonly string[] = readonly string[],\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TSecuritySchemes extends Record<string, SecurityScheme> = Record<\n string,\n SecurityScheme\n >,\n TRlsConfig extends\n | RlsConfig<TServices, TSession, TLogger>\n | undefined = undefined,\n> {\n defaultServices?: TServices;\n basePath?: TBasePath;\n defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;\n defaultLogger?: TLogger;\n defaultSessionExtractor?: SessionFn<TServices, TLogger, TSession, TDatabase>;\n defaultEventPublisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n defaultEvents?: MappedEvent<TEventPublisher, undefined>[];\n availableAuthorizers?: Authorizer[];\n defaultAuthorizerName?: TAuthorizers[number];\n defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;\n defaultDatabaseService?: Service<TDatabaseServiceName, TDatabase>;\n defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n customSecuritySchemes?: TSecuritySchemes;\n defaultRlsConfig?: TRlsConfig;\n}\n\nexport const e = new EndpointFactory();\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointFactory-CbdxPCIH.mjs","names":["DEFAULT_LOGGER","path: P","basePath: TBasePath","authorizers: T","schemes: T","name:\n | BuiltInSecuritySchemeId\n | keyof TSecuritySchemes\n | TAuthorizers[number]\n | 'none'","path: TPath","fn: AuthorizeFn<TServices, TLogger, TSession>","services: S","logger: L","publisher: Service<TServiceName, T>","session: SessionFn<TServices, TLogger, T, TDatabase>","service: Service<TName, T>","storage: Service<TName, T>","extractor: ActorExtractor<TServices, TSession, TLogger>","config: TConfig","method: TMethod"],"sources":["../src/endpoints/EndpointFactory.ts"],"sourcesContent":["import type {\n AuditStorage,\n AuditableAction,\n ExtractStorageAuditAction,\n} from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport uniqBy from 'lodash.uniqby';\nimport type { HttpMethod } from '../types';\nimport type {\n Authorizer,\n BuiltInSecuritySchemeId,\n SecurityScheme,\n} from './Authorizer';\nimport type { AuthorizeFn, SessionFn } from './Endpoint';\nimport { EndpointBuilder } from './EndpointBuilder';\nimport type { ActorExtractor } from './audit';\nimport type { RlsConfig } from './rls';\n\n// Re-export SecurityScheme to make the type portable in declaration files\nexport type { SecurityScheme } from './Authorizer';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class EndpointFactory<\n TServices extends Service[] = [],\n TBasePath extends string = '',\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuthorizers extends readonly string[] = readonly string[],\n TAuditStorage extends AuditStorage<any> | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TAuditAction extends AuditableAction<\n string,\n unknown\n > = ExtractStorageAuditAction<NonNullable<TAuditStorage>>,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TSecuritySchemes extends Record<string, SecurityScheme> = Record<\n string,\n SecurityScheme\n >,\n TRlsConfig extends\n | RlsConfig<TServices, TSession, TLogger>\n | undefined = undefined,\n> {\n // @ts-ignore\n private defaultServices: TServices;\n private basePath: TBasePath = '' as TBasePath;\n private defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;\n private defaultEventPublisher:\n | Service<TEventPublisherServiceName, TEventPublisher>\n | undefined;\n private defaultSessionExtractor?: SessionFn<\n TServices,\n TLogger,\n TSession,\n TDatabase\n >;\n private defaultLogger: TLogger = DEFAULT_LOGGER;\n private availableAuthorizers: Authorizer[] = [];\n private defaultAuthorizerName?: TAuthorizers[number];\n private defaultAuditorStorage:\n | Service<TAuditStorageServiceName, TAuditStorage>\n | undefined;\n private defaultDatabaseService:\n | Service<TDatabaseServiceName, TDatabase>\n | undefined;\n private defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n private customSecuritySchemes: TSecuritySchemes = {} as TSecuritySchemes;\n private defaultRlsConfig?: TRlsConfig;\n\n constructor({\n basePath,\n defaultAuthorizeFn,\n defaultLogger,\n defaultSessionExtractor,\n // @ts-ignore\n defaultServices = [] as TServices,\n defaultEventPublisher,\n availableAuthorizers = [],\n defaultAuthorizerName,\n defaultAuditorStorage,\n defaultDatabaseService,\n defaultActorExtractor,\n customSecuritySchemes = {} as TSecuritySchemes,\n defaultRlsConfig,\n }: EndpointFactoryOptions<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > = {}) {\n // Initialize default services\n this.defaultServices = uniqBy(\n defaultServices,\n (s) => s.serviceName,\n ) as TServices;\n\n this.basePath = basePath || ('' as TBasePath);\n this.defaultAuthorizeFn = defaultAuthorizeFn;\n this.defaultLogger = defaultLogger || (DEFAULT_LOGGER as TLogger);\n this.defaultSessionExtractor = defaultSessionExtractor;\n this.defaultEventPublisher = defaultEventPublisher;\n this.availableAuthorizers = availableAuthorizers;\n this.defaultAuthorizerName = defaultAuthorizerName;\n this.defaultAuditorStorage = defaultAuditorStorage;\n this.defaultDatabaseService = defaultDatabaseService;\n this.defaultActorExtractor = defaultActorExtractor;\n this.customSecuritySchemes = customSecuritySchemes;\n this.defaultRlsConfig = defaultRlsConfig;\n }\n\n static joinPaths<TBasePath extends string, P extends string>(\n path: P,\n basePath: TBasePath = '' as TBasePath,\n ): JoinPaths<TBasePath, P> {\n // Handle empty cases\n if (!basePath && !path) return '/' as JoinPaths<TBasePath, P>;\n if (!basePath)\n return (path.startsWith('/') ? path : '/' + path) as JoinPaths<\n TBasePath,\n P\n >;\n if (!path)\n return (\n basePath.startsWith('/') ? basePath : '/' + basePath\n ) as JoinPaths<TBasePath, P>;\n\n const base = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;\n const segment = path.startsWith('/') ? path : '/' + path;\n\n let result = base + segment;\n\n // Ensure leading slash\n if (!result.startsWith('/')) {\n result = '/' + result;\n }\n\n // Normalize multiple slashes (except in the middle of the path where they might be intentional)\n result = result.replace(/^\\/+/g, '/');\n\n // Remove trailing slash unless it's the root path \"/\"\n if (result.length > 1 && result.endsWith('/')) {\n result = result.slice(0, -1);\n }\n\n return result as JoinPaths<TBasePath, P>;\n }\n\n // Configure available authorizers\n authorizers<const T extends readonly string[]>(\n authorizers: T,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n const authorizerConfigs = authorizers.map((name) => ({\n name,\n }));\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: authorizerConfigs,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Define custom security schemes for this factory.\n * These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).\n *\n * @example\n * ```typescript\n * const router = e.securitySchemes({\n * awsIamSigV4: {\n * type: 'apiKey',\n * in: 'header',\n * name: 'Authorization',\n * 'x-amazon-apigateway-authtype': 'awsSigv4',\n * },\n * });\n * ```\n */\n securitySchemes<T extends Record<string, SecurityScheme>>(\n schemes: T,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes & T,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes & T,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: {\n ...this.customSecuritySchemes,\n ...schemes,\n } as TSecuritySchemes & T,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the default authorizer for all endpoints created from this factory.\n * Individual endpoints can override this by calling `.authorizer()` on the builder.\n * Use `'none'` to explicitly disable authorization for all endpoints.\n *\n * Accepts:\n * - Built-in security scheme names: 'jwt', 'bearer', 'apiKey', 'oauth2', 'oidc'\n * - Custom security scheme names defined via `.securitySchemes()`\n * - 'none' to disable authorization\n */\n authorizer(\n name:\n | BuiltInSecuritySchemeId\n | keyof TSecuritySchemes\n | TAuthorizers[number]\n | 'none',\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n // Validate that the authorizer exists in available authorizers (if authorizers() was called)\n if (name !== 'none' && this.availableAuthorizers.length > 0) {\n const authorizerExists = this.availableAuthorizers.some(\n (a) => a.name === name,\n );\n if (!authorizerExists) {\n const available = this.availableAuthorizers\n .map((a) => a.name)\n .join(', ');\n throw new Error(\n `Authorizer \"${name as string}\" not found in available authorizers: ${available}`,\n );\n }\n }\n\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName:\n name === 'none' ? undefined : (name as TAuthorizers[number]),\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n // Create a sub-router with a path prefix\n route<TPath extends string>(\n path: TPath,\n ): EndpointFactory<\n TServices,\n JoinPaths<TBasePath, TPath>,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n const newBasePath = EndpointFactory.joinPaths(path, this.basePath);\n return new EndpointFactory<\n TServices,\n JoinPaths<TBasePath, TPath>,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: newBasePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n // Create a new factory with authorization\n authorize(\n fn: AuthorizeFn<TServices, TLogger, TSession>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: fn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n // Create a new factory with services\n services<S extends Service[]>(\n services: S,\n ): EndpointFactory<\n [...S, ...TServices],\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined // Reset RLS config when services change - user should call .rls() after .services()\n > {\n return new EndpointFactory<\n [...S, ...TServices],\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined\n >({\n defaultServices: [...services, ...this.defaultServices],\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<\n [...S, ...TServices],\n TLogger,\n TSession\n >,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor as unknown as\n | SessionFn<[...S, ...TServices], TLogger, TSession, TDatabase>\n | undefined,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor as unknown as\n | ActorExtractor<[...S, ...TServices], TSession, TLogger>\n | undefined,\n customSecuritySchemes: this.customSecuritySchemes,\n // Reset RLS config when services change since it depends on TServices\n defaultRlsConfig: undefined,\n });\n }\n\n logger<L extends Logger>(\n logger: L,\n ): EndpointFactory<\n TServices,\n TBasePath,\n L,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined // Reset RLS config when logger type changes - user should call .rls() after .logger()\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n L,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<\n TServices,\n L,\n TSession\n >,\n defaultLogger: logger,\n defaultSessionExtractor: this\n .defaultSessionExtractor as unknown as SessionFn<\n TServices,\n L,\n TSession\n >,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this\n .defaultActorExtractor as unknown as ActorExtractor<\n TServices,\n TSession,\n L\n >,\n customSecuritySchemes: this.customSecuritySchemes,\n // Reset RLS config when logger type changes since it depends on TLogger\n defaultRlsConfig: undefined,\n });\n }\n\n publisher<\n T extends EventPublisher<any>,\n TServiceName extends string = string,\n >(\n publisher: Service<TServiceName, T>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n T,\n TServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n T,\n TServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: publisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n session<T>(\n session: SessionFn<TServices, TLogger, T, TDatabase>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined // Reset RLS config when session type changes - user should call .rls() after .session()\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n undefined\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn as unknown as AuthorizeFn<\n TServices,\n TLogger,\n T\n >,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: session,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this\n .defaultActorExtractor as unknown as ActorExtractor<\n TServices,\n T,\n TLogger\n >,\n customSecuritySchemes: this.customSecuritySchemes,\n // Reset RLS config when session type changes since it depends on TSession\n defaultRlsConfig: undefined,\n });\n }\n\n /**\n * Set the database service for endpoints created from this factory.\n * The database will be available in handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n T,\n TName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n // Reset session extractor when database changes - user should call .session() after .database()\n // to get proper type inference for the new database type\n defaultSessionExtractor: this.defaultSessionExtractor as unknown as\n | SessionFn<TServices, TLogger, TSession, T>\n | undefined,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: service,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the auditor storage service for endpoints created from this factory.\n * This enables audit functionality and makes `auditor` available in handler context.\n * The audit action type is automatically inferred from the storage's generic parameter.\n */\n auditor<T extends AuditStorage<any>, TName extends string>(\n storage: Service<TName, T>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n T,\n TName,\n ExtractStorageAuditAction<T>,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: storage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this\n .defaultActorExtractor as unknown as ActorExtractor<\n TServices,\n TSession,\n TLogger\n >,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the actor extractor function for endpoints created from this factory.\n * The actor is extracted from the request context and attached to all audits.\n */\n actor(\n extractor: ActorExtractor<TServices, TSession, TLogger>,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TRlsConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: extractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: this.defaultRlsConfig,\n });\n }\n\n /**\n * Set the RLS (Row-Level Security) configuration for endpoints created from this factory.\n * This enables automatic PostgreSQL session variable setting for RLS policies.\n *\n * @example\n * ```typescript\n * const api = new EndpointFactory()\n * .database(databaseService)\n * .session(extractSession)\n * .rls({\n * extractor: ({ session }) => ({\n * user_id: session.userId,\n * tenant_id: session.tenantId,\n * }),\n * prefix: 'app',\n * });\n * ```\n */\n rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(\n config: TConfig,\n ): EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TConfig\n > {\n return new EndpointFactory<\n TServices,\n TBasePath,\n TLogger,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName,\n TSecuritySchemes,\n TConfig\n >({\n defaultServices: this.defaultServices,\n basePath: this.basePath,\n defaultAuthorizeFn: this.defaultAuthorizeFn,\n defaultLogger: this.defaultLogger,\n defaultSessionExtractor: this.defaultSessionExtractor,\n defaultEventPublisher: this.defaultEventPublisher,\n availableAuthorizers: this.availableAuthorizers,\n defaultAuthorizerName: this.defaultAuthorizerName,\n defaultAuditorStorage: this.defaultAuditorStorage,\n defaultDatabaseService: this.defaultDatabaseService,\n defaultActorExtractor: this.defaultActorExtractor,\n customSecuritySchemes: this.customSecuritySchemes,\n defaultRlsConfig: config,\n });\n }\n\n private createBuilder<TMethod extends HttpMethod, TPath extends string>(\n method: TMethod,\n path: TPath,\n ): EndpointBuilder<\n JoinPaths<TBasePath, TPath>,\n TMethod,\n {},\n TServices,\n TLogger,\n undefined,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n > {\n const fullPath = EndpointFactory.joinPaths(path, this.basePath);\n const builder = new EndpointBuilder<\n JoinPaths<TBasePath, TPath>,\n TMethod,\n {},\n TServices,\n TLogger,\n undefined,\n TSession,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuthorizers,\n TAuditStorage,\n TAuditStorageServiceName,\n TAuditAction,\n TDatabase,\n TDatabaseServiceName\n >(fullPath, method);\n\n if (this.defaultAuthorizeFn) {\n // @ts-ignore\n builder._authorize = this.defaultAuthorizeFn;\n }\n if (this.defaultServices.length) {\n // Create a copy to avoid sharing references between builders\n builder._services = [...this.defaultServices] as TServices;\n }\n\n if (this.defaultLogger) {\n builder._logger = this.defaultLogger as TLogger;\n }\n\n if (this.defaultSessionExtractor) {\n builder._getSession = this.defaultSessionExtractor as SessionFn<\n TServices,\n TLogger,\n TSession\n >;\n }\n\n if (this.defaultEventPublisher) {\n builder._setPublisher(this.defaultEventPublisher);\n }\n\n // Set available authorizers and default\n builder._availableAuthorizers = this.availableAuthorizers;\n if (this.defaultAuthorizerName) {\n builder._authorizerName = this.defaultAuthorizerName;\n }\n\n // Set auditor storage if configured\n if (this.defaultAuditorStorage) {\n builder._setAuditorStorage(this.defaultAuditorStorage as any);\n }\n\n // Set database service if configured\n if (this.defaultDatabaseService) {\n builder._setDatabaseService(this.defaultDatabaseService as any);\n }\n\n // Set actor extractor if configured\n if (this.defaultActorExtractor) {\n builder._actorExtractor = this.defaultActorExtractor;\n }\n\n // Set custom security schemes\n builder._customSecuritySchemes = this.customSecuritySchemes;\n\n // Set RLS config if configured\n if (this.defaultRlsConfig) {\n builder._rlsConfig = this.defaultRlsConfig as any;\n }\n\n return builder;\n }\n\n post<TPath extends string>(path: TPath) {\n return this.createBuilder('POST', path);\n }\n\n get<TPath extends string>(path: TPath) {\n return this.createBuilder('GET', path);\n }\n\n put<TPath extends string>(path: TPath) {\n return this.createBuilder('PUT', path);\n }\n\n delete<TPath extends string>(path: TPath) {\n return this.createBuilder('DELETE', path);\n }\n\n patch<TPath extends string>(path: TPath) {\n return this.createBuilder('PATCH', path);\n }\n\n options<TPath extends string>(path: TPath) {\n return this.createBuilder('OPTIONS', path);\n }\n}\n\nexport type RemoveTrailingSlash<T extends string> = T extends `${infer Rest}/`\n ? Rest extends ''\n ? T // Keep \"/\" as is\n : Rest\n : T;\n\nexport type JoinPaths<\n TBasePath extends string,\n TPath extends string,\n> = RemoveTrailingSlash<\n TBasePath extends ''\n ? TPath\n : TPath extends ''\n ? TBasePath\n : TBasePath extends '/'\n ? TPath extends `/${string}`\n ? TPath\n : `/${TPath}`\n : TBasePath extends `${infer Base}/`\n ? TPath extends `/${infer Rest}`\n ? `${Base}/${Rest}`\n : `${Base}/${TPath}`\n : TPath extends `/${infer Rest}`\n ? `${TBasePath}/${Rest}`\n : `${TBasePath}/${TPath}`\n>;\n\nexport interface EndpointFactoryOptions<\n TServices extends Service[] = [],\n TBasePath extends string = '',\n TLogger extends Logger = Logger,\n TSession = unknown,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuthorizers extends readonly string[] = readonly string[],\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TSecuritySchemes extends Record<string, SecurityScheme> = Record<\n string,\n SecurityScheme\n >,\n TRlsConfig extends\n | RlsConfig<TServices, TSession, TLogger>\n | undefined = undefined,\n> {\n defaultServices?: TServices;\n basePath?: TBasePath;\n defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession>;\n defaultLogger?: TLogger;\n defaultSessionExtractor?: SessionFn<TServices, TLogger, TSession, TDatabase>;\n defaultEventPublisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n defaultEvents?: MappedEvent<TEventPublisher, undefined>[];\n availableAuthorizers?: Authorizer[];\n defaultAuthorizerName?: TAuthorizers[number];\n defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;\n defaultDatabaseService?: Service<TDatabaseServiceName, TDatabase>;\n defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;\n customSecuritySchemes?: TSecuritySchemes;\n defaultRlsConfig?: TRlsConfig;\n}\n\nexport const e = new EndpointFactory();\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointFactory-CyPbm3AD.d.cts","names":[],"sources":["../src/endpoints/EndpointFactory.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AA0B4B,cAAf,eAAe,CAAA,kBACR,OADQ,EAAA,GAAA,EAAA,EAAA,kBAAA,MAAA,GAAA,EAAA,EAAA,gBAGV,MAHU,GAGD,MAHC,EAAA,WAAA,OAAA,EAAA,wBAKF,cALE,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,qBAAA,SAAA,MAAA,EAAA,GAAA,SAAA,MAAA,EAAA,EAAA,sBAQJ,YARI,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,qBAUL,eAVK,CAAA,MAAA,EAAA,OAAA,CAAA,GAatB,yBAbsB,CAaI,WAbJ,CAagB,aAbhB,CAAA,CAAA,EAAA,YAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,yBAgBD,MAhBC,CAAA,MAAA,EAgBc,cAhBd,CAAA,GAgBgC,MAhBhC,CAAA,MAAA,EAkBxB,cAlBwB,CAAA,EAAA,mBAqBtB,SArBsB,CAqBZ,SArBY,EAqBD,QArBC,EAqBS,OArBT,CAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAAA,QACR,eAAA;EAAO,QAET,QAAA;EAAM,QAAG,kBAAA;EAAM,QAEP,qBAAA;EAAc,QAGhB,uBAAA;EAAY,QAEb,aAAA;EAAe,QAGM,oBAAA;EAAa,QAAzB,qBAAA;EAAW,QAArC,qBAAA;EAAyB,QAGW,sBAAA;EAAc,QAA7B,qBAAA;EAAM,QAE7B,qBAAA;EAAc,QAF0C,gBAAA;EAAM,WAKlD,CAAA;IAAA,QAAA;IAAA,kBAAA;IAAA,aAAA;IAAA,uBAAA;IAAA,eAAA;IAAA,qBAAA;IAAA,oBAAA;IAAA,qBAAA;IAAA,qBAAA;IAAA,sBAAA;IAAA,qBAAA;IAAA,qBAAA;IAAA;EAAA,CAAA,CAAA,EA4CX,sBA5CW,CA6CZ,SA7CY,EA8CZ,SA9CY,EA+CZ,OA/CY,EAgDZ,QAhDY,EAiDZ,eAjDY,EAkDZ,0BAlDY,EAmDZ,YAnDY,EAoDZ,aApDY,EAqDZ,wBArDY,EAsDZ,SAtDY,EAuDZ,oBAvDY,EAwDZ,gBAxDY,EAyDZ,UAzDY,CAAA;EAAS,OAAE,SAAA,CAAA,kBAAA,MAAA,EAAA,UAAA,MAAA,CAAA,CAAA,IAAA,EAgFjB,CAhFiB,EAAA,QAAA,CAAA,EAiFb,SAjFa,CAAA,EAkFtB,SAlFsB,CAkFZ,SAlFY,EAkFD,CAlFC,CAAA;EAAQ,WAAE,CAAA,gBAAA,SAAA,MAAA,EAAA,CAAA,CAAA,WAAA,EAsHpB,CAtHoB,CAAA,EAuHhC,eAvHgC,CAwHjC,SAxHiC,EAyHjC,SAzHiC,EA0HjC,OA1HiC,EA2HjC,QA3HiC,EA4HjC,eA5HiC,EA6HjC,0BA7HiC,EA8HjC,CA9HiC,EA+HjC,aA/HiC,EAgIjC,wBAhIiC,EAiIjC,YAjIiC,EAkIjC,SAlIiC,EAmIjC,oBAnIiC,EAoIjC,gBApIiC,EAqIjC,UArIiC,CAAA;EAAO;;;;;;;;;;;;;;;;EA8C/B,eACT,CAAA,UA2IwB,MA3IxB,CAAA,MAAA,EA2IuC,cA3IvC,CAAA,CAAA,CAAA,OAAA,EA4IS,CA5IT,CAAA,EA6IC,eA7ID,CA8IA,SA9IA,EA+IA,SA/IA,EAgJA,OAhJA,EAiJA,QAjJA,EAkJA,eAlJA,EAmJA,0BAnJA,EAoJA,YApJA,EAqJA,aArJA,EAsJA,wBAtJA,EAuJA,YAvJA,EAwJA,SAxJA,EAyJA,oBAzJA,EA0JA,gBA1JA,GA0JmB,CA1JnB,EA2JA,UA3JA,CAAA;EAAO;;;;;;;;;;EAUG,UAbT,CAAA,IAAA,EA+MG,uBA/MH,GAAA,MAgNS,gBAhNT,GAiNG,YAjNH,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA,EAmNA,eAnNA,CAoND,SApNC,EAqND,SArNC,EAsND,OAtNC,EAuND,QAvNC,EAwND,eAxNC,EAyND,0BAzNC,EA0ND,YA1NC,EA2ND,aA3NC,EA4ND,wBA5NC,EA6ND,YA7NC,EA8ND,SA9NC,EA+ND,oBA/NC,EAgOD,gBAhOC,EAiOD,UAjOC,CAAA;EAAsB,KAoCjB,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EAiPA,KAjPA,CAAA,EAkPL,eAlPK,CAmPN,SAnPM,EAoPN,SApPM,CAoPI,SApPJ,EAoPe,KApPf,CAAA,EAqPN,OArPM,EAsPN,QAtPM,EAuPN,eAvPM,EAwPN,0BAxPM,EAyPN,YAzPM,EA0PN,aA1PM,EA2PN,wBA3PM,EA4PN,YA5PM,EA6PN,SA7PM,EA8PN,oBA9PM,EA+PN,gBA/PM,EAgQN,UAhQM,CAAA;EAAC,SACG,CAAA,EAAA,EAoSN,WApSM,CAoSM,SApSN,EAoSiB,OApSjB,EAoS0B,QApS1B,CAAA,CAAA,EAqST,eArSS,CAsSV,SAtSU,EAuSV,SAvSU,EAwSV,OAxSU,EAySV,QAzSU,EA0SV,eA1SU,EA2SV,0BA3SU,EA4SV,YA5SU,EA6SV,aA7SU,EA8SV,wBA9SU,EA+SV,YA/SU,EAgTV,SAhTU,EAiTV,oBAjTU,EAkTV,gBAlTU,EAmTV,UAnTU,CAAA;EAA2B,QAC1B,CAAA,UAqVM,OArVN,EAAA,CAAA,CAAA,QAAA,EAsVD,CAtVC,CAAA,EAuVV,eAvVU,CAAA,CAAW,GAwVlB,CAxVkB,EAArB,GAwVS,SAxVT,CAAS,EAyVV,SArTa,EAsTb,OAtTa,EAuTb,QAvTa,EAwTb,eAxTa,EAyTb,0BAzTa,EA0Tb,YA1Ta,EA2Tb,aA3Ta,EA4Tb,wBA5Ta,EA6Tb,YA7Ta,EA8Tb,SA9Ta,EA+Tb,oBA/Ta,EAgUb,gBAhUa,EAAA,SAAA,CAAA;EAAC,MAEd,CAAA,UA0We,MA1Wf,CAAA,CAAA,MAAA,EA2WQ,CA3WR,CAAA,EA4WC,eA5WD,CA6WA,SA7WA,EA8WA,SA9WA,EA+WA,CA/WA,EAgXA,QAhXA,EAiXA,eAjXA,EAkXA,0BAlXA,EAmXA,YAnXA,EAoXA,aApXA,EAqXA,wBArXA,EAsXA,YAtXA,EAuXA,SAvXA,EAwXA,oBAxXA,EAyXA,gBAzXA,EAAA,SAAA,CAAA;EAAS,SACT,CAAA,UA2aU,cA3aV,CAAA,GAAA,CAAA,EAAA,qBAAA,MAAA,GAAA,MAAA,CAAA,CAAA,SAAA,EA8aW,OA9aX,CA8amB,YA9anB,EA8aiC,CA9ajC,CAAA,CAAA,EA+aC,eA/aD,CAgbA,SAhbA,EAibA,SAjbA,EAkbA,OAlbA,EAmbA,QAnbA,EAobA,CApbA,EAqbA,YArbA,EAsbA,YAtbA,EAubA,aAvbA,EAwbA,wBAxbA,EAybA,YAzbA,EA0bA,SA1bA,EA2bA,oBA3bA,EA4bA,gBA5bA,EA6bA,UA7bA,CAAA;EAAS,OACT,CAAA,CAAA,CAAA,CAAA,OAAA,EA+dS,SA/dT,CA+dmB,SA/dnB,EA+d8B,OA/d9B,EA+duC,CA/dvC,EA+d0C,SA/d1C,CAAA,CAAA,EAgeC,eAheD,CAieA,SAjeA,EAkeA,SAleA,EAmeA,OAneA,EAoeA,CApeA,EAqeA,eAreA,EAseA,0BAteA,EAueA,YAveA,EAweA,aAxeA,EAyeA,wBAzeA,EA0eA,YA1eA,EA2eA,SA3eA,EA4eA,oBA5eA,EA6eA,gBA7eA,EAAA,SAAA,CAAA;EAAO;;;;EAIN,QACD,CAAA,CAAA,EAAA,cAAA,MAAA,CAAA,CAAA,OAAA,EA0hBS,OA1hBT,CA0hBiB,KA1hBjB,EA0hBwB,CA1hBxB,CAAA,CAAA,EA2hBC,eA3hBD,CA4hBA,SA5hBA,EA6hBA,SA7hBA,EA8hBA,OA9hBA,EA+hBA,QA/hBA,EAgiBA,eAhiBA,EAiiBA,0BAjiBA,EAkiBA,YAliBA,EAmiBA,aAniBA,EAoiBA,wBApiBA,EAqiBA,YAriBA,EAsiBA,CAtiBA,EAuiBA,KAviBA,EAwiBA,gBAxiBA,EAyiBA,UAziBA,CAAA;EAAa;;;;;EAKG,OAChB,CAAA,UA6kBgB,YA7kBhB,CAAA,GAAA,CAAA,EAAA,cAAA,MAAA,CAAA,CAAA,OAAA,EA8kBS,OA9kBT,CA8kBiB,KA9kBjB,EA8kBwB,CA9kBxB,CAAA,CAAA,EA+kBC,eA/kBD,CAglBA,SAhlBA,EAilBA,SAjlBA,EAklBA,OAllBA,EAmlBA,QAnlBA,EAolBA,eAplBA,EAqlBA,0BArlBA,EAslBA,YAtlBA,EAulBA,CAvlBA,EAwlBA,KAxlBA,EAylBA,yBAzlBA,CAylB0B,CAzlB1B,CAAA,EA0lBA,SA1lBA,EA2lBA,oBA3lBA,EA4lBA,gBA5lBA,EA6lBA,UA7lBA,CAAA;EAAU;;;;EAsDA,KAEV,CAAA,SAAA,EAilBW,cAjlBX,CAilB0B,SAjlB1B,EAilBqC,QAjlBrC,EAilB+C,OAjlB/C,CAAA,CAAA,EAklBC,eAllBD,CAmlBA,SAnlBA,EAolBA,SAplBA,EAqlBA,OArlBA,EAslBA,QAtlBA,EAulBA,eAvlBA,EAwlBA,0BAxlBA,EAylBA,YAzlBA,EA0lBA,aA1lBA,EA2lBA,wBA3lBA,EA4lBA,YA5lBA,EA6lBA,SA7lBA,EA8lBA,oBA9lBA,EA+lBA,gBA/lBA,EAgmBA,UAhmBA,CAAA;EAAS;;;;;;;;;;;;;;;;;;EAgEO,GAGhB,CAAA,gBAilBkB,SAjlBlB,CAilB4B,SAjlB5B,EAilBuC,QAjlBvC,EAilBiD,OAjlBjD,CAAA,CAAA,CAAA,MAAA,EAklBQ,OAllBR,CAAA,EAmlBC,eAnlBD,CAolBA,SAplBA,EAqlBA,SArlBA,EAslBA,OAtlBA,EAulBA,QAvlBA,EAwlBA,eAxlBA,EAylBA,0BAzlBA,EA0lBA,YA1lBA,EA2lBA,aA3lBA,EA4lBA,wBA5lBA,EA6lBA,YA7lBA,EA8lBA,SA9lBA,EA+lBA,oBA/lBA,EAgmBA,gBAhmBA,EAimBA,OAjmBA,CAAA;EAAS,QACT,aAAA;EAAS,IACT,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EAiuB+B,KAjuB/B,CAAA,EAiuBoC,eAjuBpC,CAiuBoC,mBAjuBpC,CAiuBoC,SAjuBpC,SAAA,EAAA,GAiuBoC,KAjuBpC,GAiuBoC,KAjuBpC,SAAA,EAAA,GAiuBoC,SAjuBpC,GAiuBoC,SAjuBpC,SAAA,GAAA,GAiuBoC,KAjuBpC,SAAA,IAAA,MAAA,EAAA,GAiuBoC,KAjuBpC,GAAA,IAiuBoC,KAjuBpC,EAAA,GAiuBoC,SAjuBpC,SAAA,GAAA,KAAA,KAAA,GAAA,GA4wBqC,KA5wBrC,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GA6wBoC,IA7wBpC,IA6wBoC,IA7wBpC,EAAA,GAAA,GA6wBoC,IA7wBpC,IA6wBoC,KA7wBpC,EAAA,GA6wBoC,KA7wBpC,SAAA,IAAA,KAAA,OAAA,EAAA,GAAA,GA6wBoC,SA7wBpC,IA6wBoC,MA7wBpC,EAAA,GAAA,GA6wBoC,SA7wBpC,IA6wBoC,KA7wBpC,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EA6wBoC,SA7wBpC,EA6wBoC,OA7wBpC,EAAA,SAAA,EA6wBoC,QA7wBpC,EA6wBoC,eA7wBpC,EA6wBoC,0BA7wBpC,EA6wBoC,YA7wBpC,EA6wBoC,aA7wBpC,EA6wBoC,wBA7wBpC,EA6wBoC,YA7wBpC,EA6wBoC,SA7wBpC,EA6wBoC,oBA7wBpC,CAAA;EAAO,GACP,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EAouB8B,KApuB9B,CAAA,EAouBmC,eApuBnC,CAouBmC,mBApuBnC,CAouBmC,SApuBnC,SAAA,EAAA,GAouBmC,KApuBnC,GAouBmC,KApuBnC,SAAA,EAAA,GAouBmC,SApuBnC,GAouBmC,SApuBnC,SAAA,GAAA,GAouBmC,KApuBnC,SAAA,IAAA,MAAA,EAAA,GAouBmC,KApuBnC,GAAA,IAouBmC,KApuBnC,EAAA,GAouBmC,SApuBnC,SAAA,GAAA,KAAA,KAAA,GAAA,GA2wBqC,KA3wBrC,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GA4wBoC,IA5wBpC,IA4wBoC,IA5wBpC,EAAA,GAAA,GA4wBoC,IA5wBpC,IA4wBoC,KA5wBpC,EAAA,GA4wBoC,KA5wBpC,SAAA,IAAA,KAAA,OAAA,EAAA,GAAA,GA4wBoC,SA5wBpC,IA4wBoC,MA5wBpC,EAAA,GAAA,GA4wBoC,SA5wBpC,IA4wBoC,KA5wBpC,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EA4wBoC,SA5wBpC,EA4wBoC,OA5wBpC,EAAA,SAAA,EA4wBoC,QA5wBpC,EA4wBoC,eA5wBpC,EA4wBoC,0BA5wBpC,EA4wBoC,YA5wBpC,EA4wBoC,aA5wBpC,EA4wBoC,wBA5wBpC,EA4wBoC,YA5wBpC,EA4wBoC,SA5wBpC,EA4wBoC,oBA5wBpC,CAAA;EAAQ,GACR,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EAuuB8B,KAvuB9B,CAAA,EAuuBmC,eAvuBnC,CAuuBmC,mBAvuBnC,CAuuBmC,SAvuBnC,SAAA,EAAA,GAuuBmC,KAvuBnC,GAuuBmC,KAvuBnC,SAAA,EAAA,GAuuBmC,SAvuBnC,GAuuBmC,SAvuBnC,SAAA,GAAA,GAuuBmC,KAvuBnC,SAAA,IAAA,MAAA,EAAA,GAuuBmC,KAvuBnC,GAAA,IAuuBmC,KAvuBnC,EAAA,GAuuBmC,SAvuBnC,SAAA,GAAA,KAAA,KAAA,GAAA,GA0wBqC,KA1wBrC,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GA2wBoC,IA3wBpC,IA2wBoC,IA3wBpC,EAAA,GAAA,GA2wBoC,IA3wBpC,IA2wBoC,KA3wBpC,EAAA,GA2wBoC,KA3wBpC,SAAA,IAAA,KAAA,OAAA,EAAA,GAAA,GA2wBoC,SA3wBpC,IA2wBoC,MA3wBpC,EAAA,GAAA,GA2wBoC,SA3wBpC,IA2wBoC,KA3wBpC,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EA2wBoC,SA3wBpC,EA2wBoC,OA3wBpC,EAAA,SAAA,EA2wBoC,QA3wBpC,EA2wBoC,eA3wBpC,EA2wBoC,0BA3wBpC,EA2wBoC,YA3wBpC,EA2wBoC,aA3wBpC,EA2wBoC,wBA3wBpC,EA2wBoC,YA3wBpC,EA2wBoC,SA3wBpC,EA2wBoC,oBA3wBpC,CAAA;EAAe,MACf,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EA0uBiC,KA1uBjC,CAAA,EA0uBsC,eA1uBtC,CA0uBsC,mBA1uBtC,CA0uBsC,SA1uBtC,SAAA,EAAA,GA0uBsC,KA1uBtC,GA0uBsC,KA1uBtC,SAAA,EAAA,GA0uBsC,SA1uBtC,GA0uBsC,SA1uBtC,SAAA,GAAA,GA0uBsC,KA1uBtC,SAAA,IAAA,MAAA,EAAA,GA0uBsC,KA1uBtC,GAAA,IA0uBsC,KA1uBtC,EAAA,GA0uBsC,SA1uBtC,SAAA,GAAA,KAAA,KAAA,GAAA,GAywBqC,KAzwBrC,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GA0wBoC,IA1wBpC,IA0wBoC,IA1wBpC,EAAA,GAAA,GA0wBoC,IA1wBpC,IA0wBoC,KA1wBpC,EAAA,GA0wBoC,KA1wBpC,SAAA,IAAA,KAAA,OAAA,EAAA,GAAA,GA0wBoC,SA1wBpC,IA0wBoC,MA1wBpC,EAAA,GAAA,GA0wBoC,SA1wBpC,IA0wBoC,KA1wBpC,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EA0wBoC,SA1wBpC,EA0wBoC,OA1wBpC,EAAA,SAAA,EA0wBoC,QA1wBpC,EA0wBoC,eA1wBpC,EA0wBoC,0BA1wBpC,EA0wBoC,YA1wBpC,EA0wBoC,aA1wBpC,EA0wBoC,wBA1wBpC,EA0wBoC,YA1wBpC,EA0wBoC,SA1wBpC,EA0wBoC,oBA1wBpC,CAAA;EAA0B,KAC1B,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EA6uBgC,KA7uBhC,CAAA,EA6uBqC,eA7uBrC,CA6uBqC,mBA7uBrC,CA6uBqC,SA7uBrC,SAAA,EAAA,GA6uBqC,KA7uBrC,GA6uBqC,KA7uBrC,SAAA,EAAA,GA6uBqC,SA7uBrC,GA6uBqC,SA7uBrC,SAAA,GAAA,GA6uBqC,KA7uBrC,SAAA,IAAA,MAAA,EAAA,GA6uBqC,KA7uBrC,GAAA,IA6uBqC,KA7uBrC,EAAA,GA6uBqC,SA7uBrC,SAAA,GAAA,KAAA,KAAA,GAAA,GAwwBqC,KAxwBrC,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GAywBoC,IAzwBpC,IAywBoC,IAzwBpC,EAAA,GAAA,GAywBoC,IAzwBpC,IAywBoC,KAzwBpC,EAAA,GAywBoC,KAzwBpC,SAAA,IAAA,KAAA,OAAA,EAAA,GAAA,GAywBoC,SAzwBpC,IAywBoC,MAzwBpC,EAAA,GAAA,GAywBoC,SAzwBpC,IAywBoC,KAzwBpC,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,EAywBoC,SAzwBpC,EAywBoC,OAzwBpC,EAAA,SAAA,EAywBoC,QAzwBpC,EAywBoC,eAzwBpC,EAywBoC,0BAzwBpC,EAywBoC,YAzwBpC,EAywBoC,aAzwBpC,EAywBoC,wBAzwBpC,EAywBoC,YAzwBpC,EAywBoC,SAzwBpC,EAywBoC,oBAzwBpC,CAAA;EAAY,OACZ,CAAA,cAAA,MAAA,CAAA,CAAA,IAAA,EAgvBkC,KAhvBlC,CAAA,EAgvBuC,eAhvBvC,CAgvBuC,mBAhvBvC,CAgvBuC,SAhvBvC,SAAA,EAAA,GAgvBuC,KAhvBvC,GAgvBuC,KAhvBvC,SAAA,EAAA,GAgvBuC,SAhvBvC,GAgvBuC,SAhvBvC,SAAA,GAAA,GAgvBuC,KAhvBvC,SAAA,IAAA,MAAA,EAAA,GAgvBuC,KAhvBvC,GAAA,IAgvBuC,KAhvBvC,EAAA,GAgvBuC,SAhvBvC,SAAA,GAAA,KAAA,KAAA,GAAA,GAuwBqC,KAvwBrC,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GAwwBoC,IAxwBpC,IAwwBoC,IAxwBpC,EAAA,GAAA,GAwwBoC,IAxwBpC,IAwwBoC,KAxwBpC,EAAA,GAwwBoC,KAxwBpC,SAAA,IAAA,KAAA,OAAA,EAAA,GAAA,GAwwBoC,SAxwBpC,IAwwBoC,MAxwBpC,EAAA,GAAA,GAwwBoC,SAxwBpC,IAwwBoC,KAxwBpC,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,CAAA,EAwwBoC,SAxwBpC,EAwwBoC,OAxwBpC,EAAA,SAAA,EAwwBoC,QAxwBpC,EAwwBoC,eAxwBpC,EAwwBoC,0BAxwBpC,EAwwBoC,YAxwBpC,EAwwBoC,aAxwBpC,EAwwBoC,wBAxwBpC,EAwwBoC,YAxwBpC,EAwwBoC,SAxwBpC,EAwwBoC,oBAxwBpC,CAAA;;AAEA,KAmvBQ,mBAnvBR,CAAA,UAAA,MAAA,CAAA,GAmvBgD,CAnvBhD,SAAA,GAAA,KAAA,KAAA,GAAA,GAovBA,IApvBA,SAAA,EAAA,GAqvBE,CArvBF,GAsvBE,IAtvBF,GAuvBA,CAvvBA;AACA,KAwvBQ,SAxvBR,CAAA,kBAAA,MAAA,EAAA,cAAA,MAAA,CAAA,GA2vBA,mBA3vBA,CA4vBF,SA5vBE,SAAA,EAAA,GA6vBE,KA7vBF,GA8vBE,KA9vBF,SAAA,EAAA,GA+vBI,SA/vBJ,GAgwBI,SAhwBJ,SAAA,GAAA,GAiwBM,KAjwBN,SAAA,IAAA,MAAA,EAAA,GAkwBQ,KAlwBR,GAAA,IAmwBY,KAnwBZ,EAAA,GAowBM,SApwBN,SAAA,GAAA,KAAA,KAAA,GAAA,GAqwBQ,KArwBR,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GAswBa,IAtwBb,IAswBqB,IAtwBrB,EAAA,GAAA,GAuwBa,IAvwBb,IAuwBqB,KAvwBrB,EAAA,GAwwBQ,KAxwBR,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GAywBa,SAzwBb,IAywB0B,IAzwB1B,EAAA,GAAA,GA0wBa,SA1wBb,IA0wB0B,KA1wB1B,EAAA,CAAA;AACA,UA4wBa,sBA5wBb,CAAA,kBA6wBgB,OA7wBhB,EAAA,GAAA,EAAA,EAAA,kBAAA,MAAA,GAAA,EAAA,EAAA,gBA+wBc,MA/wBd,GA+wBuB,MA/wBvB,EAAA,WAAA,OAAA,EAAA,wBAixBsB,cAjxBtB,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,qBAAA,SAAA,MAAA,EAAA,GAAA,SAAA,MAAA,EAAA,EAAA,sBAoxBoB,YApxBpB,GAAA,SAAA,GAAA,SAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,YAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,yBAwxBuB,MAxxBvB,CAAA,MAAA,EAwxBsC,cAxxBtC,CAAA,GAwxBwD,MAxxBxD,CAAA,MAAA,EA0xBA,cA1xBA,CAAA,EAAA,mBA6xBE,SA7xBF,CA6xBY,SA7xBZ,EA6xBuB,QA7xBvB,EA6xBiC,OA7xBjC,CAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAAoB,eACpB,CAAA,EA+xBgB,SA/xBhB;EAAgB,QAChB,CAAA,EA+xBS,SA/xBT;EAAU,kBAdT,CAAA,EA8yBkB,WA9yBlB,CA8yB8B,SA9yB9B,EA8yByC,OA9yBzC,EA8yBkD,QA9yBlD,CAAA;EAAe,aAkEV,CAAA,EA6uBQ,OA7uBR;EAAK,uBAEX,CAAA,EA4uBwB,SA5uBxB,CA4uBkC,SA5uBlC,EA4uB6C,OA5uB7C,EA4uBsD,QA5uBtD,EA4uBgE,SA5uBhE,CAAA;EAAS,qBACC,CAAA,EA4uBY,OA5uBZ,CA4uBoB,0BA5uBpB,EA4uBgD,eA5uBhD,CAAA;EAAS,aAAE,CAAA,EA6uBP,WA7uBO,CA6uBK,eA7uBL,EAAA,SAAA,CAAA,EAAA;EAAK,oBAA1B,CAAA,EA8uBqB,UA9uBrB,EAAA;EAAS,qBACT,CAAA,EA8uBsB,YA9uBtB,CAAA,MAAA,CAAA;EAAO,qBACP,CAAA,EA8uBsB,OA9uBtB,CA8uB8B,wBA9uB9B,EA8uBwD,aA9uBxD,CAAA;EAAQ,sBACR,CAAA,EA8uBuB,OA9uBvB,CA8uB+B,oBA9uB/B,EA8uBqD,SA9uBrD,CAAA;EAAe,qBACf,CAAA,EA8uBsB,cA9uBtB,CA8uBqC,SA9uBrC,EA8uBgD,QA9uBhD,EA8uB0D,OA9uB1D,CAAA;EAA0B,qBAC1B,CAAA,EA8uBsB,gBA9uBtB;EAAY,gBACZ,CAAA,EA8uBiB,UA9uBjB;;AAEA,cA+uBS,CA/uBT,EA+uBU,eA/uBV,CAAA,EAAA,EAAA,EAAA,EA+uBU,MA/uBV,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,MAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,SAAA,EAAA,MAAA,EA+uBU,MA/uBV,CAAA,MAAA,EA+uBU,cA/uBV,CAAA,EAAA,SAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Function-BVHqIDp9.mjs","names":["DEFAULT_LOGGER","defaultServices: TServices","defaultLogger: TLogger","services: S","logger: L","obj: any","schema: T","data: unknown","output: unknown","fn: Fn","type: ConstructType","input?: TInput","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<TEventPublisherServiceName, TEventPublisher>","events: MappedEvent<TEventPublisher, OutSchema>[]","memorySize?: number","auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>","databaseService?: Service<TDatabaseServiceName, TDatabase>"],"sources":["../src/functions/Function.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport { UnprocessableEntityError } from '@geekmidas/errors';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport { parseSchema } from '@geekmidas/schema/parser';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { Construct, ConstructType } from '../Construct';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class FunctionFactory<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n> {\n private defaultServices: TServices;\n constructor(\n defaultServices: TServices,\n private defaultLogger: TLogger = DEFAULT_LOGGER,\n ) {\n // Initialize default services\n this.defaultServices = uniqBy(\n defaultServices,\n (s) => s.serviceName,\n ) as TServices;\n }\n\n // Create a new factory with services\n services<S extends Service[]>(\n services: S,\n ): FunctionFactory<[...S, ...TServices], TLogger> {\n return new FunctionFactory<[...S, ...TServices], TLogger>(\n [...services, ...this.defaultServices],\n this.defaultLogger,\n );\n }\n\n logger<L extends Logger>(logger: L): FunctionFactory<TServices, L> {\n return new FunctionFactory<TServices, L>(this.defaultServices, logger);\n }\n}\n\nexport class Function<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n Fn extends FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n > = FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n> extends Construct<\n TLogger,\n TEventPublisherServiceName,\n TEventPublisher,\n OutSchema,\n TServices,\n TAuditStorageServiceName,\n TAuditStorage\n> {\n __IS_FUNCTION__ = true;\n\n static isFunction(obj: any): obj is Function<any, any, any, any, any> {\n return Boolean(\n obj &&\n obj.__IS_FUNCTION__ === true &&\n obj.type === ConstructType.Function,\n );\n }\n\n /**\n * Validates data against a StandardSchema.\n *\n * @param schema - The StandardSchema to validate against\n * @param data - The data to validate\n * @returns Validation result with value or issues\n */\n static validate<T extends StandardSchemaV1>(schema: T, data: unknown) {\n return schema['~standard'].validate(data);\n }\n\n /**\n * Parses and validates data against a schema, throwing an error if validation fails.\n *\n * @param schema - The StandardSchema to validate against\n * @param data - The data to parse and validate\n * @returns The validated data with proper typing\n * @throws {UnprocessableEntityError} When validation fails\n */\n static async parseSchema<T extends StandardSchemaV1>(\n schema: T,\n data: unknown,\n ): Promise<InferStandardSchema<T>> {\n try {\n return await parseSchema(schema, data);\n } catch (issues) {\n throw new UnprocessableEntityError('Validation failed', issues);\n }\n }\n\n /**\n * Parses and validates the endpoint output against the output schema.\n *\n * @param output - The raw output data to validate\n * @returns The validated output data\n * @throws {UnprocessableEntityError} When output validation fails\n */\n async parseOutput(output: unknown): Promise<InferStandardSchema<OutSchema>> {\n return Function.parseSchema(\n this.outputSchema as StandardSchemaV1,\n output,\n ) as Promise<InferStandardSchema<OutSchema>>;\n }\n\n constructor(\n protected readonly fn: Fn,\n timeout = 30000, // Default timeout of 30 seconds\n type: ConstructType = ConstructType.Function,\n public input?: TInput,\n outputSchema?: OutSchema,\n services: TServices = [] as unknown as TServices,\n logger: TLogger = DEFAULT_LOGGER,\n publisherService?: Service<TEventPublisherServiceName, TEventPublisher>,\n events: MappedEvent<TEventPublisher, OutSchema>[] = [],\n memorySize?: number,\n auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>,\n public databaseService?: Service<TDatabaseServiceName, TDatabase>,\n ) {\n super(\n type,\n logger,\n services,\n events,\n publisherService,\n outputSchema,\n timeout,\n memorySize,\n auditorStorageService,\n );\n }\n}\n\nexport type FunctionHandler<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TDatabase = undefined,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = (\n ctx: FunctionContext<\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n) => OutSchema extends StandardSchemaV1\n ? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n : any | Promise<any>;\n\n/**\n * Conditional type that adds `db` property only when TDatabase is configured.\n */\ntype DatabaseContext<TDatabase> = TDatabase extends undefined\n ? {}\n : { db: TDatabase };\n\n/**\n * Conditional auditor context - only present when audit storage is configured.\n */\ntype AuditorContext<\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n TAuditStorage = undefined,\n> = TAuditStorage extends undefined\n ? {}\n : {\n /**\n * Auditor instance for recording audit events.\n * Only present when audit storage is configured on the function.\n */\n auditor: Auditor<TAuditAction>;\n };\n\nexport type FunctionContext<\n Input extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TDatabase = undefined,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = {\n services: ServiceRecord<TServices>;\n logger: TLogger;\n input: InferComposableStandardSchema<Input>;\n} & DatabaseContext<TDatabase> &\n AuditorContext<TAuditAction, TAuditStorage>;\n"],"mappings":";;;;;;;AAgBA,MAAMA,mBAAiB,IAAI;AAE3B,IAAa,kBAAb,MAAa,gBAGX;CACA,AAAQ;CACR,YACEC,iBACQC,gBAAyBF,kBACjC;EADQ;AAGR,OAAK,kBAAkB,OACrB,iBACA,CAAC,MAAM,EAAE,YACV;CACF;CAGD,SACEG,UACgD;AAChD,SAAO,IAAI,gBACT,CAAC,GAAG,UAAU,GAAG,KAAK,eAAgB,GACtC,KAAK;CAER;CAED,OAAyBC,QAA0C;AACjE,SAAO,IAAI,gBAA8B,KAAK,iBAAiB;CAChE;AACF;AAED,IAAa,WAAb,MAAa,iBAgCH,UAQR;CACA,kBAAkB;CAElB,OAAO,WAAWC,KAAoD;AACpE,SAAO,QACL,OACE,IAAI,oBAAoB,QACxB,IAAI,SAAS,cAAc,SAC9B;CACF;;;;;;;;CASD,OAAO,SAAqCC,QAAWC,MAAe;AACpE,SAAO,OAAO,aAAa,SAAS,KAAK;CAC1C;;;;;;;;;CAUD,aAAa,YACXD,QACAC,MACiC;AACjC,MAAI;AACF,UAAO,MAAM,YAAY,QAAQ,KAAK;EACvC,SAAQ,QAAQ;AACf,SAAM,IAAI,yBAAyB,qBAAqB;EACzD;CACF;;;;;;;;CASD,MAAM,YAAYC,QAA0D;AAC1E,SAAO,SAAS,YACd,KAAK,cACL,OACD;CACF;CAED,YACqBC,IACnB,UAAU,KACVC,OAAsB,cAAc,UAC7BC,OACPC,cACAC,WAAsB,CAAE,GACxBC,SAAkBd,kBAClBe,kBACAC,SAAoD,CAAE,GACtDC,YACAC,uBACOC,iBACP;AACA,QACE,MACA,QACA,UACA,QACA,kBACA,cACA,SACA,YACA,sBACD;EAvBkB;EAGZ;EAQA;CAaR;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Function-Cf7f_kCz.d.cts","names":[],"sources":["../src/functions/Function.ts"],"sourcesContent":[],"mappings":";;;;;;;;;cAkBa,kCACO,gCACF,SAAS;;EAFd,QAAA,eAAe;EAAA,WAAA,CAAA,eAAA,EAMP,SANO,EAAA,aAAA,CAAA,EAOD,OAPC;EAAA,QACR,CAAA,UAgBC,OAhBD,EAAA,CAAA,CAAA,QAAA,EAiBN,CAjBM,CAAA,EAkBf,eAlBe,CAAA,CAAA,GAkBK,CAlBL,EAAA,GAkBW,SAlBX,CAAA,EAkBuB,OAlBvB,CAAA;EAAO,MACT,CAAA,UAwBC,MAxBD,CAAA,CAAA,MAAA,EAwBiB,CAxBjB,CAAA,EAwBqB,eAxBrB,CAwBqC,SAxBrC,EAwBgD,CAxBhD,CAAA;;AAIG,cAyBR,QAzBQ,CAAA,eA0BJ,wBA1BI,GAAA,SAAA,GAAA,SAAA,EAAA,kBA2BD,OA3BC,EAAA,GAAA,EAAA,EAAA,gBA4BH,MA5BG,GA4BM,MA5BN,EAAA,kBA6BD,gBA7BC,GAAA,SAAA,GAAA,SAAA,EAAA,wBA8BK,cA9BL,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,sBAgCG,YAhCH,GAAA,SAAA,GAAA,SAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,YAAA,SAAA,EAAA,6BAAA,MAAA,GAAA,MAAA,EAAA,qBAoCE,eApCF,CAAA,MAAA,EAAA,OAAA,CAAA,GAoCqC,eApCrC,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,WAwCR,eAxCQ,CAyCjB,MAzCiB,EA0CjB,SA1CiB,EA2CjB,OA3CiB,EA4CjB,SA5CiB,EA6CjB,SA7CiB,EA8CjB,aA9CiB,EA+CjB,YA/CiB,CAAA,GAgDf,eAhDe,CAiDjB,MAjDiB,EAkDjB,SAlDiB,EAmDjB,OAnDiB,EAoDjB,SApDiB,EAqDjB,SArDiB,EAsDjB,aAtDiB,EAuDjB,YAvDiB,CAAA,CAAA,SAyDX,SAzDW,CA0DnB,OA1DmB,EA2DnB,0BA3DmB,EA4DnB,eA5DmB,EA6DnB,SA7DmB,EA8DnB,SA9DmB,EA+DnB,wBA/DmB,EAgEnB,aAhEmB,CAAA,CAAA;EAAS,mBACH,EAAA,EAwHA,EAxHA;EAAwB,KAU9B,CAAA,EAiHF,MAjHE,GAAA,SAAA;EAAO,eACd,CAAA,EAwHe,OAxHf,CAwHuB,oBAxHvB,EAwH6C,SAxH7C,CAAA,GAAA,SAAA;EAAC,eACU,EAAA,OAAA;EAAC,OAAK,UAAA,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAuDO,QAvDP,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA;EAAS;;;;;;;EAOc,OAAA,QAAA,CAAA,UA+D1B,gBA/D0B,CAAA,CAAA,MAAA,EA+DA,CA/DA,EAAA,IAAA,EAAA,OAAA,CAAA,EA+DgB,gBAAA,CAAA,MA/DhB,CAAA,OAAA,CAAA,GA+DgB,OA/DhB,CA+DgB,gBAAA,CAAA,MA/DhB,CAAA,OAAA,CAAA,CAAA;EAKzC;;;;;;;;EAK2B,OAEhB,WAAA,CAAA,UA+Da,gBA/Db,CAAA,CAAA,MAAA,EAgEZ,CAhEY,EAAA,IAAA,EAAA,OAAA,CAAA,EAkEnB,OAlEmB,CAkEX,mBAlEW,CAkES,CAlET,CAAA,CAAA;EAAY;;;;;;;EAavB,WACT,CAAA,MAAA,EAAA,OAAA,CAAA,EAmEkC,OAnElC,CAmE0C,mBAnE1C,CAmE8D,SAnE9D,CAAA,CAAA;EAAa,WACb,CAAA,EAAA,EA0EuB,EA1EvB,EAAA,OAAA,CAAA,EAAA,MAAA;EAAA;EAAY,IAPH,CAAA,EAmFH,aAnFG,EAAA,KAAA,CAAA,EAoFM,MApFN,GAAA,SAAA,EAAA,YAAA,CAAA,EAqFM,SArFN,EAAA,QAAA,CAAA,EAsFC,SAtFD,EAAA,MAAA,CAAA,EAuFD,OAvFC,EAAA,gBAAA,CAAA,EAwFU,OAxFV,CAwFkB,0BAxFlB,EAwF8C,eAxF9C,CAAA,EAAA,MAAA,CAAA,EAyFD,WAzFC,CAyFW,eAzFX,EAyF4B,SAzF5B,CAAA,EAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,EA2Fe,OA3Ff,CA2FuB,wBA3FvB,EA2FiD,aA3FjD,CAAA,EAAA,eAAA,CAAA,EA4FgB,OA5FhB,CA4FwB,oBA5FxB,EA4F8C,SA5F9C,CAAA,GAAA,SAAA;;AAUT,KAkGQ,eAlGR,CAAA,eAmGa,wBAnGb,GAAA,SAAA,GAAA,SAAA,EAAA,kBAoGgB,OApGhB,EAAA,GAAA,EAAA,EAAA,gBAqGc,MArGd,GAqGuB,MArGvB,EAAA,kBAsGgB,gBAtGhB,GAAA,SAAA,GAAA,SAAA,EAAA,YAAA,SAAA,EAAA,sBAwGoB,YAxGpB,GAAA,SAAA,GAAA,SAAA,EAAA,qBAyGmB,eAzGnB,CAAA,MAAA,EAAA,OAAA,CAAA,GAyGsD,eAzGtD,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,EA8GG,eA9GH,CA+GA,MA/GA,EAgHA,SAhHA,EAiHA,OAjHA,EAkHA,SAlHA,EAmHA,aAnHA,EAoHA,YApHA,CAAA,EAAA,GAsHC,SAtHD,SAsHmB,gBAtHnB,GAuHA,mBAvHA,CAuHoB,SAvHpB,CAAA,GAuHiC,OAvHjC,CAuHyC,mBAvHzC,CAuH6D,SAvH7D,CAAA,CAAA,GAAA,GAAA,GAwHM,OAxHN,CAAA,GAAA,CAAA;;;;KA6HC,eAzHD,CAAA,SAAA,CAAA,GAyH8B,SAzH9B,SAAA,SAAA,GAAA,CAAA,CAAA,GAAA;EAAa,EAAA,EA2HP,SA1HN;CAAY;;;;KA+HX,cAzHH,CAAA,qBA0HqB,eA1HrB,CAAA,MAAA,EAAA,OAAA,CAAA,GA0HwD,eA1HxD,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,gBAAA,SAAA,CAAA,GA+HE,aA/HF,SAAA,SAAA,GAAA,CAAA,CAAA,GAAA;EAAS;;;;EA4DkB,OAGV,EAuEJ,OAvEI,CAuEI,YAvEJ,CAAA;CAAM;AAQkC,KAkE/C,eAlE+C,CAAA,cAmE3C,wBAnE2C,GAAA,SAAA,GAAA,SAAA,EAAA,kBAoEvC,OApEuC,EAAA,GAAA,EAAA,EAAA,gBAqEzC,MArEyC,GAqEhC,MArEgC,EAAA,YAAA,SAAA,EAAA,sBAuEnC,YAvEmC,GAAA,SAAA,GAAA,SAAA,EAAA,qBAwEpC,eAxEoC,CAAA,MAAA,EAAA,OAAA,CAAA,GAwED,eAxEC,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA;EAAS,QAAvC,EA6EjB,aA7EiB,CA6EH,SA7EG,CAAA;EAAO,MAhEE,EA8I5B,OA9I4B;EAAQ,KAelB,EAgInB,6BAhImB,CAgIW,KAhIX,CAAA;CAAgB,GAiIxC,eAjIkD,CAiIlC,SAjIkC,CAAA,GAkIpD,cAlIoD,CAkIrC,YAlIqC,EAkIvB,aAlIuB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Function-DDZb1525.cjs","names":["ConsoleLogger","defaultServices: TServices","defaultLogger: TLogger","services: S","logger: L","Construct","obj: any","ConstructType","schema: T","data: unknown","UnprocessableEntityError","output: unknown","fn: Fn","type: ConstructType","input?: TInput","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<TEventPublisherServiceName, TEventPublisher>","events: MappedEvent<TEventPublisher, OutSchema>[]","memorySize?: number","auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>","databaseService?: Service<TDatabaseServiceName, TDatabase>"],"sources":["../src/functions/Function.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport { UnprocessableEntityError } from '@geekmidas/errors';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport { parseSchema } from '@geekmidas/schema/parser';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { Construct, ConstructType } from '../Construct';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class FunctionFactory<\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n> {\n private defaultServices: TServices;\n constructor(\n defaultServices: TServices,\n private defaultLogger: TLogger = DEFAULT_LOGGER,\n ) {\n // Initialize default services\n this.defaultServices = uniqBy(\n defaultServices,\n (s) => s.serviceName,\n ) as TServices;\n }\n\n // Create a new factory with services\n services<S extends Service[]>(\n services: S,\n ): FunctionFactory<[...S, ...TServices], TLogger> {\n return new FunctionFactory<[...S, ...TServices], TLogger>(\n [...services, ...this.defaultServices],\n this.defaultLogger,\n );\n }\n\n logger<L extends Logger>(logger: L): FunctionFactory<TServices, L> {\n return new FunctionFactory<TServices, L>(this.defaultServices, logger);\n }\n}\n\nexport class Function<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n Fn extends FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n > = FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n> extends Construct<\n TLogger,\n TEventPublisherServiceName,\n TEventPublisher,\n OutSchema,\n TServices,\n TAuditStorageServiceName,\n TAuditStorage\n> {\n __IS_FUNCTION__ = true;\n\n static isFunction(obj: any): obj is Function<any, any, any, any, any> {\n return Boolean(\n obj &&\n obj.__IS_FUNCTION__ === true &&\n obj.type === ConstructType.Function,\n );\n }\n\n /**\n * Validates data against a StandardSchema.\n *\n * @param schema - The StandardSchema to validate against\n * @param data - The data to validate\n * @returns Validation result with value or issues\n */\n static validate<T extends StandardSchemaV1>(schema: T, data: unknown) {\n return schema['~standard'].validate(data);\n }\n\n /**\n * Parses and validates data against a schema, throwing an error if validation fails.\n *\n * @param schema - The StandardSchema to validate against\n * @param data - The data to parse and validate\n * @returns The validated data with proper typing\n * @throws {UnprocessableEntityError} When validation fails\n */\n static async parseSchema<T extends StandardSchemaV1>(\n schema: T,\n data: unknown,\n ): Promise<InferStandardSchema<T>> {\n try {\n return await parseSchema(schema, data);\n } catch (issues) {\n throw new UnprocessableEntityError('Validation failed', issues);\n }\n }\n\n /**\n * Parses and validates the endpoint output against the output schema.\n *\n * @param output - The raw output data to validate\n * @returns The validated output data\n * @throws {UnprocessableEntityError} When output validation fails\n */\n async parseOutput(output: unknown): Promise<InferStandardSchema<OutSchema>> {\n return Function.parseSchema(\n this.outputSchema as StandardSchemaV1,\n output,\n ) as Promise<InferStandardSchema<OutSchema>>;\n }\n\n constructor(\n protected readonly fn: Fn,\n timeout = 30000, // Default timeout of 30 seconds\n type: ConstructType = ConstructType.Function,\n public input?: TInput,\n outputSchema?: OutSchema,\n services: TServices = [] as unknown as TServices,\n logger: TLogger = DEFAULT_LOGGER,\n publisherService?: Service<TEventPublisherServiceName, TEventPublisher>,\n events: MappedEvent<TEventPublisher, OutSchema>[] = [],\n memorySize?: number,\n auditorStorageService?: Service<TAuditStorageServiceName, TAuditStorage>,\n public databaseService?: Service<TDatabaseServiceName, TDatabase>,\n ) {\n super(\n type,\n logger,\n services,\n events,\n publisherService,\n outputSchema,\n timeout,\n memorySize,\n auditorStorageService,\n );\n }\n}\n\nexport type FunctionHandler<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TDatabase = undefined,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = (\n ctx: FunctionContext<\n TInput,\n TServices,\n TLogger,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n) => OutSchema extends StandardSchemaV1\n ? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n : any | Promise<any>;\n\n/**\n * Conditional type that adds `db` property only when TDatabase is configured.\n */\ntype DatabaseContext<TDatabase> = TDatabase extends undefined\n ? {}\n : { db: TDatabase };\n\n/**\n * Conditional auditor context - only present when audit storage is configured.\n */\ntype AuditorContext<\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n TAuditStorage = undefined,\n> = TAuditStorage extends undefined\n ? {}\n : {\n /**\n * Auditor instance for recording audit events.\n * Only present when audit storage is configured on the function.\n */\n auditor: Auditor<TAuditAction>;\n };\n\nexport type FunctionContext<\n Input extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TDatabase = undefined,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> = {\n services: ServiceRecord<TServices>;\n logger: TLogger;\n input: InferComposableStandardSchema<Input>;\n} & DatabaseContext<TDatabase> &\n AuditorContext<TAuditAction, TAuditStorage>;\n"],"mappings":";;;;;;;;AAgBA,MAAM,iBAAiB,IAAIA;AAE3B,IAAa,kBAAb,MAAa,gBAGX;CACA,AAAQ;CACR,YACEC,iBACQC,gBAAyB,gBACjC;EADQ;AAGR,OAAK,kBAAkB,2BACrB,iBACA,CAAC,MAAM,EAAE,YACV;CACF;CAGD,SACEC,UACgD;AAChD,SAAO,IAAI,gBACT,CAAC,GAAG,UAAU,GAAG,KAAK,eAAgB,GACtC,KAAK;CAER;CAED,OAAyBC,QAA0C;AACjE,SAAO,IAAI,gBAA8B,KAAK,iBAAiB;CAChE;AACF;AAED,IAAa,WAAb,MAAa,iBAgCHC,4BAQR;CACA,kBAAkB;CAElB,OAAO,WAAWC,KAAoD;AACpE,SAAO,QACL,OACE,IAAI,oBAAoB,QACxB,IAAI,SAASC,gCAAc,SAC9B;CACF;;;;;;;;CASD,OAAO,SAAqCC,QAAWC,MAAe;AACpE,SAAO,OAAO,aAAa,SAAS,KAAK;CAC1C;;;;;;;;;CAUD,aAAa,YACXD,QACAC,MACiC;AACjC,MAAI;AACF,UAAO,MAAM,2CAAY,QAAQ,KAAK;EACvC,SAAQ,QAAQ;AACf,SAAM,IAAIC,4CAAyB,qBAAqB;EACzD;CACF;;;;;;;;CASD,MAAM,YAAYC,QAA0D;AAC1E,SAAO,SAAS,YACd,KAAK,cACL,OACD;CACF;CAED,YACqBC,IACnB,UAAU,KACVC,OAAsBN,gCAAc,UAC7BO,OACPC,cACAC,WAAsB,CAAE,GACxBC,SAAkB,gBAClBC,kBACAC,SAAoD,CAAE,GACtDC,YACAC,uBACOC,iBACP;AACA,QACE,MACA,QACA,UACA,QACA,kBACA,cACA,SACA,YACA,sBACD;EAvBkB;EAGZ;EAQA;CAaR;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Function-DN2G6OT5.d.mts","names":[],"sources":["../src/functions/Function.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionBuilder-CJBzzXL3.d.cts","names":[],"sources":["../src/functions/FunctionBuilder.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionBuilder-CrDYgfiI.mjs","names":["DEFAULT_LOGGER","timeout: number","memorySize: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","storage: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >"],"sources":["../src/functions/FunctionBuilder.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction } from '@geekmidas/audit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { BaseFunctionBuilder } from './BaseFunctionBuilder';\nimport { Function, type FunctionHandler } from './Function';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class FunctionBuilder<\n TInput extends ComposableStandardSchema,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> extends BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n> {\n protected _memorySize?: number;\n\n constructor(public override type = ConstructType.Function) {\n super(type);\n }\n\n override timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): FunctionBuilder<\n TInput,\n T,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as FunctionBuilder<\n TInput,\n T,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n input<T extends ComposableStandardSchema>(\n schema: T,\n ): FunctionBuilder<\n T,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this.inputSchema = schema as unknown as TInput;\n\n return this as unknown as FunctionBuilder<\n T,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n services<T extends Service[]>(\n services: T,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n [...TServices, ...T],\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n [...TServices, ...T],\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n override publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n override auditor<T extends AuditStorage, TName extends string>(\n storage: Service<TName, T>,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._auditorStorage = storage as unknown as Service<\n TAuditStorageServiceName,\n TAuditStorage\n >;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n /**\n * Set the audit action types for this function.\n * This provides type-safety for the auditor in the handler context.\n */\n actions<T extends AuditableAction<string, unknown>>(): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n T\n > {\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n T\n >;\n }\n\n /**\n * Set the database service for this function.\n * The database will be available in the handler context as `db`.\n */\n override database<T, TName extends string>(\n service: Service<TName, T>,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName,\n TAuditAction\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName,\n TAuditAction\n >;\n }\n\n handle(\n fn: FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n ): Function<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n > {\n const func = new Function(\n fn,\n this._timeout,\n this.type,\n this.inputSchema,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n this._events,\n this._memorySize,\n this._auditorStorage,\n this._databaseService,\n );\n\n // Reset builder state after creating the function to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._events = [];\n this._publisher = undefined;\n this._auditorStorage = undefined;\n this._databaseService = undefined;\n this.inputSchema = undefined;\n this.outputSchema = undefined;\n this._timeout = undefined;\n this._memorySize = undefined;\n\n return func;\n }\n}\n"],"mappings":";;;;;;;AAYA,MAAMA,mBAAiB,IAAI;AAE3B,IAAa,kBAAb,cAeU,oBAWR;CACA,AAAU;CAEV,YAA4B,OAAO,cAAc,UAAU;AACzD,QAAM,KAAK;EADe;CAE3B;CAED,AAAS,QAAQC,SAAuB;AACtC,OAAK,WAAW;AAChB,SAAO;CACR;CAED,WAAWC,YAA0B;AACnC,OAAK,cAAc;AACnB,SAAO;CACR;CAED,OACEC,QAaA;AACA,OAAK,eAAe;AAEpB,SAAO;CAaR;CAED,MACEA,QAaA;AACA,OAAK,cAAc;AAEnB,SAAO;CAaR;CAED,SACEC,UAaA;AACA,OAAK,YAAY,OACf,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACV;AAED,SAAO;CAaR;CAED,OACEC,QAaA;AACA,OAAK,UAAU;AAEf,SAAO;CAaR;CAED,AAAS,UACPC,WAaA;AACA,OAAK,aAAa;AAKlB,SAAO;CAaR;CAED,AAAS,QACPC,SAaA;AACA,OAAK,kBAAkB;AAKvB,SAAO;CAaR;;;;;CAMD,UAYE;AACA,SAAO;CAaR;;;;;CAMD,AAAS,SACPC,SAaA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAaR;CAED,OACEC,IA8BA;EACA,MAAM,OAAO,IAAI,SACf,IACA,KAAK,UACL,KAAK,MACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK,iBACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUT;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACR;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionBuilder-Cxx8D2na.d.mts","names":[],"sources":["../src/functions/FunctionBuilder.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionBuilder-DswJ-9sD.cjs","names":["ConsoleLogger","BaseFunctionBuilder","ConstructType","timeout: number","memorySize: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","storage: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >","Function"],"sources":["../src/functions/FunctionBuilder.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction } from '@geekmidas/audit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { BaseFunctionBuilder } from './BaseFunctionBuilder';\nimport { Function, type FunctionHandler } from './Function';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class FunctionBuilder<\n TInput extends ComposableStandardSchema,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> extends BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n> {\n protected _memorySize?: number;\n\n constructor(public override type = ConstructType.Function) {\n super(type);\n }\n\n override timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): FunctionBuilder<\n TInput,\n T,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as FunctionBuilder<\n TInput,\n T,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n input<T extends ComposableStandardSchema>(\n schema: T,\n ): FunctionBuilder<\n T,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this.inputSchema = schema as unknown as TInput;\n\n return this as unknown as FunctionBuilder<\n T,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n services<T extends Service[]>(\n services: T,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n [...TServices, ...T],\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n [...TServices, ...T],\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n override publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n override auditor<T extends AuditStorage, TName extends string>(\n storage: Service<TName, T>,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n > {\n this._auditorStorage = storage as unknown as Service<\n TAuditStorageServiceName,\n TAuditStorage\n >;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction\n >;\n }\n\n /**\n * Set the audit action types for this function.\n * This provides type-safety for the auditor in the handler context.\n */\n actions<T extends AuditableAction<string, unknown>>(): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n T\n > {\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n T\n >;\n }\n\n /**\n * Set the database service for this function.\n * The database will be available in the handler context as `db`.\n */\n override database<T, TName extends string>(\n service: Service<TName, T>,\n ): FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName,\n TAuditAction\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName,\n TAuditAction\n >;\n }\n\n handle(\n fn: FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >,\n ): Function<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n > {\n const func = new Function(\n fn,\n this._timeout,\n this.type,\n this.inputSchema,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n this._events,\n this._memorySize,\n this._auditorStorage,\n this._databaseService,\n );\n\n // Reset builder state after creating the function to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._events = [];\n this._publisher = undefined;\n this._auditorStorage = undefined;\n this._databaseService = undefined;\n this.inputSchema = undefined;\n this.outputSchema = undefined;\n this._timeout = undefined;\n this._memorySize = undefined;\n\n return func;\n }\n}\n"],"mappings":";;;;;;;;AAYA,MAAM,iBAAiB,IAAIA;AAE3B,IAAa,kBAAb,cAeUC,gDAWR;CACA,AAAU;CAEV,YAA4B,OAAOC,gCAAc,UAAU;AACzD,QAAM,KAAK;EADe;CAE3B;CAED,AAAS,QAAQC,SAAuB;AACtC,OAAK,WAAW;AAChB,SAAO;CACR;CAED,WAAWC,YAA0B;AACnC,OAAK,cAAc;AACnB,SAAO;CACR;CAED,OACEC,QAaA;AACA,OAAK,eAAe;AAEpB,SAAO;CAaR;CAED,MACEA,QAaA;AACA,OAAK,cAAc;AAEnB,SAAO;CAaR;CAED,SACEC,UAaA;AACA,OAAK,YAAY,2BACf,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACV;AAED,SAAO;CAaR;CAED,OACEC,QAaA;AACA,OAAK,UAAU;AAEf,SAAO;CAaR;CAED,AAAS,UACPC,WAaA;AACA,OAAK,aAAa;AAKlB,SAAO;CAaR;CAED,AAAS,QACPC,SAaA;AACA,OAAK,kBAAkB;AAKvB,SAAO;CAaR;;;;;CAMD,UAYE;AACA,SAAO;CAaR;;;;;CAMD,AAAS,SACPC,SAaA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAaR;CAED,OACEC,IA8BA;EACA,MAAM,OAAO,IAAIC,0BACf,IACA,KAAK,UACL,KAAK,MACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK,iBACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAU;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACR;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionExecutionWrapper-BYI2bGTL.cjs","names":["envParser: EnvironmentParser<{}>","fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >","DefaultAuditor","handler: (ctx: {\n auditor?: Auditor<TAuditAction>;\n db?: TDatabase;\n }) => Promise<T>","db","response","event: TEvent","response: InferStandardSchema<TOutSchema>","data: unknown","schema: T"],"sources":["../src/functions/FunctionExecutionWrapper.ts"],"sourcesContent":["import type { AuditStorage, AuditableAction, Auditor } from '@geekmidas/audit';\nimport { DefaultAuditor } from '@geekmidas/audit';\nimport { withAuditableTransaction } from '@geekmidas/audit/kysely';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n InferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n type Service,\n ServiceDiscovery,\n type ServiceRecord,\n} from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { publishEvents } from '../publisher';\nimport type { Function, FunctionHandler } from './Function';\nimport { FunctionBuilder } from './FunctionBuilder';\n\nexport abstract class FunctionExecutionWrapper<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TOutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n TAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n string,\n unknown\n >,\n> {\n constructor(\n protected envParser: EnvironmentParser<{}>,\n protected readonly fn: Function<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName,\n TAuditAction,\n FunctionHandler<\n TInput,\n TServices,\n TLogger,\n TOutSchema,\n TDatabase,\n TAuditStorage,\n TAuditAction\n >\n >,\n ) {}\n\n protected _logger?: TLogger;\n\n get logger(): TLogger {\n return this._logger || this.fn.logger;\n }\n\n get serviceDiscovery(): ServiceDiscovery<ServiceRecord<TServices>, Logger> {\n const serviceDiscovery = ServiceDiscovery.getInstance<\n ServiceRecord<TServices>,\n TLogger\n >(this.logger, this.envParser);\n\n return serviceDiscovery;\n }\n\n getServices(): Promise<ServiceRecord<TServices>> {\n return this.serviceDiscovery.register(this.fn.services);\n }\n\n async getDatabase(): Promise<TDatabase | undefined> {\n if (!this.fn.databaseService) {\n return undefined;\n }\n\n const services = await this.serviceDiscovery.register([\n this.fn.databaseService,\n ]);\n\n return services[\n this.fn.databaseService.serviceName as keyof typeof services\n ] as TDatabase;\n }\n\n /**\n * Get the audit storage service if configured.\n * Returns undefined if no auditor storage is configured.\n */\n async getAuditStorage(): Promise<TAuditStorage | undefined> {\n if (!this.fn.auditorStorageService) {\n return undefined;\n }\n\n const services = await this.serviceDiscovery.register([\n this.fn.auditorStorageService,\n ]);\n\n return services[\n this.fn.auditorStorageService.serviceName as keyof typeof services\n ] as TAuditStorage;\n }\n\n /**\n * Create an auditor instance for the function.\n * Returns undefined if no auditor storage is configured.\n */\n async createAuditor(): Promise<Auditor<TAuditAction> | undefined> {\n const storage = await this.getAuditStorage();\n if (!storage) {\n return undefined;\n }\n\n return new DefaultAuditor<TAuditAction>({\n actor: { id: 'system', type: 'system' },\n storage: storage as AuditStorage,\n metadata: {\n function: this.fn.type,\n },\n });\n }\n\n /**\n * Execute handler with audit transaction support.\n * If the audit storage has a database (via getDatabase()), wraps execution\n * in a transaction so audits are atomic with handler's database operations.\n *\n * @param handler - The handler function to execute (receives auditor and db)\n * @returns The handler result\n */\n async executeWithAudit<T>(\n handler: (ctx: {\n auditor?: Auditor<TAuditAction>;\n db?: TDatabase;\n }) => Promise<T>,\n ): Promise<T> {\n const auditor = await this.createAuditor();\n const storage = await this.getAuditStorage();\n\n // No audit context - just run handler with regular db\n if (!auditor || !storage) {\n const db = await this.getDatabase();\n return handler({ db });\n }\n\n // Check if storage has a database and db service names match\n const storageDb = (storage as AuditStorage).getDatabase?.();\n const databaseServiceName = this.fn.databaseService?.serviceName;\n const auditDbServiceName = this.fn.auditorStorageService?.serviceName;\n\n // If the audit storage has a database and we're using the same database service\n // (or the audit storage provides the database), use transactional execution\n if (storageDb && databaseServiceName && auditDbServiceName) {\n return withAuditableTransaction(\n storageDb as any,\n auditor as any,\n async (trx) => {\n // Use transaction as db\n const response = await handler({\n auditor,\n db: trx as TDatabase,\n });\n // Audits are flushed by withAuditableTransaction before commit\n return response;\n },\n );\n }\n\n // No database on storage or service names don't match - run handler and flush audits after\n const db = await this.getDatabase();\n const response = await handler({ auditor, db });\n\n // Flush audits (no transaction)\n await auditor.flush();\n\n return response;\n }\n\n async getFunctionInput<TEvent>(\n event: TEvent,\n ): Promise<InferComposableStandardSchema<TInput>> {\n const parsedInput = await FunctionBuilder.parseComposableStandardSchema(\n event,\n this.fn.input,\n );\n\n return parsedInput as InferComposableStandardSchema<TInput>;\n }\n\n async publishEvents(response: InferStandardSchema<TOutSchema>) {\n await publishEvents(\n this.logger,\n this.serviceDiscovery,\n this.fn.events,\n response,\n this.fn.publisherService,\n );\n }\n\n async parseComposableStandardSchema<T extends ComposableStandardSchema>(\n data: unknown,\n schema: T,\n ): Promise<InferComposableStandardSchema<T>> {\n return FunctionBuilder.parseComposableStandardSchema(data, schema);\n }\n}\n"],"mappings":";;;;;;;;AAqBA,IAAsB,2BAAtB,MAeE;CACA,YACYA,WACSC,IAsBnB;EAvBU;EACS;CAsBjB;CAEJ,AAAU;CAEV,IAAI,SAAkB;AACpB,SAAO,KAAK,WAAW,KAAK,GAAG;CAChC;CAED,IAAI,mBAAuE;EACzE,MAAM,mBAAmB,sCAAiB,YAGxC,KAAK,QAAQ,KAAK,UAAU;AAE9B,SAAO;CACR;CAED,cAAiD;AAC/C,SAAO,KAAK,iBAAiB,SAAS,KAAK,GAAG,SAAS;CACxD;CAED,MAAM,cAA8C;AAClD,OAAK,KAAK,GAAG,gBACX;EAGF,MAAM,WAAW,MAAM,KAAK,iBAAiB,SAAS,CACpD,KAAK,GAAG,eACT,EAAC;AAEF,SAAO,SACL,KAAK,GAAG,gBAAgB;CAE3B;;;;;CAMD,MAAM,kBAAsD;AAC1D,OAAK,KAAK,GAAG,sBACX;EAGF,MAAM,WAAW,MAAM,KAAK,iBAAiB,SAAS,CACpD,KAAK,GAAG,qBACT,EAAC;AAEF,SAAO,SACL,KAAK,GAAG,sBAAsB;CAEjC;;;;;CAMD,MAAM,gBAA4D;EAChE,MAAM,UAAU,MAAM,KAAK,iBAAiB;AAC5C,OAAK,QACH;AAGF,SAAO,IAAIC,iCAA6B;GACtC,OAAO;IAAE,IAAI;IAAU,MAAM;GAAU;GAC9B;GACT,UAAU,EACR,UAAU,KAAK,GAAG,KACnB;EACF;CACF;;;;;;;;;CAUD,MAAM,iBACJC,SAIY;EACZ,MAAM,UAAU,MAAM,KAAK,eAAe;EAC1C,MAAM,UAAU,MAAM,KAAK,iBAAiB;AAG5C,OAAK,YAAY,SAAS;GACxB,MAAMC,OAAK,MAAM,KAAK,aAAa;AACnC,UAAO,QAAQ,EAAE,SAAI,EAAC;EACvB;EAGD,MAAM,YAAY,AAAC,QAAyB,eAAe;EAC3D,MAAM,sBAAsB,KAAK,GAAG,iBAAiB;EACrD,MAAM,qBAAqB,KAAK,GAAG,uBAAuB;AAI1D,MAAI,aAAa,uBAAuB,mBACtC,QAAO,uDACL,WACA,SACA,OAAO,QAAQ;GAEb,MAAMC,aAAW,MAAM,QAAQ;IAC7B;IACA,IAAI;GACL,EAAC;AAEF,UAAOA;EACR,EACF;EAIH,MAAM,KAAK,MAAM,KAAK,aAAa;EACnC,MAAM,WAAW,MAAM,QAAQ;GAAE;GAAS;EAAI,EAAC;AAG/C,QAAM,QAAQ,OAAO;AAErB,SAAO;CACR;CAED,MAAM,iBACJC,OACgD;EAChD,MAAM,cAAc,MAAM,wCAAgB,8BACxC,OACA,KAAK,GAAG,MACT;AAED,SAAO;CACR;CAED,MAAM,cAAcC,UAA2C;AAC7D,QAAM,gCACJ,KAAK,QACL,KAAK,kBACL,KAAK,GAAG,QACR,UACA,KAAK,GAAG,iBACT;CACF;CAED,MAAM,8BACJC,MACAC,QAC2C;AAC3C,SAAO,wCAAgB,8BAA8B,MAAM,OAAO;CACnE;AACF"}
|