@geekmidas/constructs 0.0.22 → 0.2.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/README.md +90 -0
- package/dist/{AWSLambdaFunction-qWpalqfr.d.mts → AWSLambdaFunction-D9RZhm0N.d.mts} +3 -3
- package/dist/{AWSLambdaSubscriberAdaptor-CWbBNRz3.d.mts → AWSLambdaSubscriberAdaptor-C0aZBU64.d.mts} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-DXssXsJi.cjs → AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs} +40 -27
- package/dist/AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs.map +1 -0
- package/dist/{AmazonApiGatewayEndpointAdaptor-Da9BR5On.d.cts → AmazonApiGatewayEndpointAdaptor-CbJqLU6I.d.cts} +2 -2
- package/dist/{AmazonApiGatewayEndpointAdaptor-BQ0IJdaI.d.mts → AmazonApiGatewayEndpointAdaptor-DC3N7zY_.d.mts} +3 -3
- package/dist/{AmazonApiGatewayEndpointAdaptor-CacGag6F.mjs → AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs} +40 -27
- package/dist/AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs.map +1 -0
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-C4_AZ1ek.d.mts → AmazonApiGatewayV1EndpointAdaptor-BVxgQ-7J.d.mts} +4 -4
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-CSm3NsWz.d.cts → AmazonApiGatewayV1EndpointAdaptor-CVwJ5k16.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-BpnG55R7.mjs → AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs} +2 -2
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-BpnG55R7.mjs.map → AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-Df4kszio.cjs → AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs} +2 -2
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-Df4kszio.cjs.map → AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-6hsBFVLf.d.cts → AmazonApiGatewayV2EndpointAdaptor-1oBZdQH3.d.cts} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-DdM8Tr1X.d.mts → AmazonApiGatewayV2EndpointAdaptor-C3H8Hpv7.d.mts} +4 -4
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-ZORzMEET.mjs → AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs} +2 -2
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-ZORzMEET.mjs.map → AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-5SIvqPby.cjs → AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs} +2 -2
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-5SIvqPby.cjs.map → AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs.map} +1 -1
- package/dist/Authorizer-C0ge_tc8.cjs +92 -0
- package/dist/Authorizer-C0ge_tc8.cjs.map +1 -0
- package/dist/Authorizer-CpSUMTIs.d.cts +125 -0
- package/dist/Authorizer-Cpx59w_q.d.mts +125 -0
- package/dist/Authorizer-r9U3y_ms.mjs +68 -0
- package/dist/Authorizer-r9U3y_ms.mjs.map +1 -0
- package/dist/{BaseFunctionBuilder-Ct6zY6Jq.d.mts → BaseFunctionBuilder-CoV7J45W.d.mts} +2 -2
- package/dist/{Construct-DDR0295I.d.mts → Construct-jBKqb-Zi.d.mts} +1 -1
- package/dist/Construct.d.mts +1 -1
- package/dist/{Cron-DnMRWPFR.d.mts → Cron-JZkp_fHy.d.mts} +2 -2
- package/dist/{CronBuilder-RLDitFmP.d.mts → CronBuilder-BmFDO0Dm.d.mts} +4 -4
- package/dist/{Endpoint-DbPsw13b.mjs → Endpoint-B70_KKhu.mjs} +8 -2
- package/dist/Endpoint-B70_KKhu.mjs.map +1 -0
- package/dist/{Endpoint-CA-byrDr.cjs → Endpoint-BJo9Hhwm.cjs} +8 -2
- package/dist/Endpoint-BJo9Hhwm.cjs.map +1 -0
- package/dist/{Endpoint-PtQ-wLIS.d.mts → Endpoint-C5djXyae.d.mts} +69 -6
- package/dist/{Endpoint-D2Imgihs.d.cts → Endpoint-CC2RGjkl.d.cts} +67 -4
- package/dist/{EndpointBuilder-BPHpUekp.d.mts → EndpointBuilder-CD8LkBda.d.mts} +43 -5
- package/dist/{EndpointBuilder-CYkeYpsL.cjs → EndpointBuilder-DeswNQdG.cjs} +69 -4
- package/dist/EndpointBuilder-DeswNQdG.cjs.map +1 -0
- package/dist/{EndpointBuilder-W5fdXxYQ.mjs → EndpointBuilder-FyyoFTJ5.mjs} +69 -4
- package/dist/EndpointBuilder-FyyoFTJ5.mjs.map +1 -0
- package/dist/{EndpointBuilder-TApJQhtG.d.cts → EndpointBuilder-vXk6eIJk.d.cts} +41 -3
- package/dist/{EndpointFactory-CNlfBDuD.d.mts → EndpointFactory-3g-7Rznt.d.cts} +68 -21
- package/dist/{EndpointFactory-B5fOINuc.d.cts → EndpointFactory-DaFR9LQG.d.mts} +68 -21
- package/dist/{EndpointFactory-D5lFZXqY.cjs → EndpointFactory-DcT_g9M_.cjs} +117 -14
- package/dist/EndpointFactory-DcT_g9M_.cjs.map +1 -0
- package/dist/{EndpointFactory-B27nfeiE.mjs → EndpointFactory-KJAjBWmO.mjs} +117 -14
- package/dist/EndpointFactory-KJAjBWmO.mjs.map +1 -0
- package/dist/{Function-CD3rXWfa.d.mts → Function-Vh1t-Qjj.d.mts} +2 -2
- package/dist/{FunctionBuilder-j2VkwuGf.d.mts → FunctionBuilder-3jsoFffg.d.mts} +4 -4
- package/dist/{FunctionExecutionWrapper-B0WP-Vec.d.mts → FunctionExecutionWrapper-CI3CaoCo.d.mts} +2 -2
- package/dist/{HonoEndpointAdaptor-CLOpobdq.d.cts → HonoEndpointAdaptor-BJh4J-J9.d.cts} +4 -4
- package/dist/{HonoEndpointAdaptor-Bg_vTyA5.mjs → HonoEndpointAdaptor-CcvXzoYV.mjs} +43 -30
- package/dist/HonoEndpointAdaptor-CcvXzoYV.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-B_gJPWGD.cjs → HonoEndpointAdaptor-DodwLM0-.cjs} +43 -30
- package/dist/HonoEndpointAdaptor-DodwLM0-.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-C9gYYBWu.d.mts → HonoEndpointAdaptor-kb1ByjUL.d.mts} +5 -5
- package/dist/{Subscriber-D-FPWts6.cjs → Subscriber-DOt3svUC.cjs} +1 -1
- package/dist/{Subscriber-D-FPWts6.cjs.map → Subscriber-DOt3svUC.cjs.map} +1 -1
- package/dist/{Subscriber-itwm7ugy.d.mts → Subscriber-aNr1qkxR.d.mts} +2 -2
- package/dist/{Subscriber-CGb8LjZa.mjs → Subscriber-kCHbH2fZ.mjs} +1 -1
- package/dist/{Subscriber-CGb8LjZa.mjs.map → Subscriber-kCHbH2fZ.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-9j3JCu8-.d.mts → SubscriberBuilder-CWS4tdbp.d.mts} +2 -2
- package/dist/{SubscriberBuilder-BfE2cL1q.cjs → SubscriberBuilder-Cj2u9k5Q.cjs} +2 -2
- package/dist/{SubscriberBuilder-BfE2cL1q.cjs.map → SubscriberBuilder-Cj2u9k5Q.cjs.map} +1 -1
- package/dist/{SubscriberBuilder-BcAspHv9.mjs → SubscriberBuilder-DmxMU89X.mjs} +2 -2
- package/dist/{SubscriberBuilder-BcAspHv9.mjs.map → SubscriberBuilder-DmxMU89X.mjs.map} +1 -1
- package/dist/{TestEndpointAdaptor-JONQJeXc.mjs → TestEndpointAdaptor-1pPixE6y.mjs} +4 -4
- package/dist/{TestEndpointAdaptor-JONQJeXc.mjs.map → TestEndpointAdaptor-1pPixE6y.mjs.map} +1 -1
- package/dist/{TestEndpointAdaptor-C-c8v7VI.d.mts → TestEndpointAdaptor-5-unBV8O.d.mts} +3 -3
- package/dist/{TestEndpointAdaptor-BYCwwiYk.d.cts → TestEndpointAdaptor-Bm0UjDtV.d.cts} +2 -2
- package/dist/{TestEndpointAdaptor-Bew9lWsx.cjs → TestEndpointAdaptor-wA-fmq4v.cjs} +4 -4
- package/dist/{TestEndpointAdaptor-Bew9lWsx.cjs.map → TestEndpointAdaptor-wA-fmq4v.cjs.map} +1 -1
- package/dist/adaptors/aws.cjs +5 -5
- package/dist/adaptors/aws.d.cts +5 -5
- package/dist/adaptors/aws.d.mts +15 -15
- package/dist/adaptors/aws.mjs +5 -5
- package/dist/adaptors/hono.cjs +4 -4
- package/dist/adaptors/hono.d.cts +3 -3
- package/dist/adaptors/hono.d.mts +9 -9
- package/dist/adaptors/hono.mjs +4 -4
- package/dist/adaptors/testing.cjs +3 -3
- package/dist/adaptors/testing.d.cts +3 -3
- package/dist/adaptors/testing.d.mts +9 -9
- package/dist/adaptors/testing.mjs +3 -3
- package/dist/crons/Cron.d.mts +6 -6
- package/dist/crons/CronBuilder.d.mts +7 -7
- package/dist/crons/index.d.cts +4 -4
- package/dist/crons/index.d.mts +7 -7
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +3 -3
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +3 -3
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +3 -3
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +4 -4
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +4 -4
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +10 -10
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +4 -4
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +4 -4
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +4 -4
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +10 -10
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +4 -4
- package/dist/endpoints/Authorizer.cjs +5 -14
- package/dist/endpoints/Authorizer.d.cts +2 -2
- package/dist/endpoints/Authorizer.d.mts +2 -2
- package/dist/endpoints/Authorizer.mjs +2 -13
- package/dist/endpoints/Endpoint.cjs +1 -1
- package/dist/endpoints/Endpoint.d.cts +2 -2
- package/dist/endpoints/Endpoint.d.mts +8 -8
- package/dist/endpoints/Endpoint.mjs +1 -1
- package/dist/endpoints/EndpointBuilder.cjs +4 -2
- package/dist/endpoints/EndpointBuilder.d.cts +3 -3
- package/dist/endpoints/EndpointBuilder.d.mts +9 -9
- package/dist/endpoints/EndpointBuilder.mjs +4 -2
- package/dist/endpoints/EndpointFactory.cjs +5 -3
- package/dist/endpoints/EndpointFactory.d.cts +4 -4
- package/dist/endpoints/EndpointFactory.d.mts +10 -10
- package/dist/endpoints/EndpointFactory.mjs +5 -3
- package/dist/endpoints/HonoEndpointAdaptor.cjs +4 -4
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +3 -3
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/HonoEndpointAdaptor.mjs +4 -4
- package/dist/endpoints/TestEndpointAdaptor.cjs +3 -3
- package/dist/endpoints/TestEndpointAdaptor.d.cts +3 -3
- package/dist/endpoints/TestEndpointAdaptor.d.mts +9 -9
- package/dist/endpoints/TestEndpointAdaptor.mjs +3 -3
- package/dist/endpoints/audit.d.cts +2 -2
- package/dist/endpoints/audit.d.mts +8 -8
- package/dist/endpoints/helpers.cjs +2 -2
- package/dist/endpoints/helpers.d.cts +2 -2
- package/dist/endpoints/helpers.d.mts +8 -8
- package/dist/endpoints/helpers.mjs +2 -2
- package/dist/endpoints/index.cjs +6 -3
- package/dist/endpoints/index.cjs.map +1 -1
- package/dist/endpoints/index.d.cts +7 -7
- package/dist/endpoints/index.d.mts +13 -13
- package/dist/endpoints/index.mjs +6 -4
- package/dist/endpoints/index.mjs.map +1 -1
- package/dist/endpoints/processAudits.cjs +1 -1
- package/dist/endpoints/processAudits.d.cts +24 -5
- package/dist/endpoints/processAudits.d.mts +30 -11
- package/dist/endpoints/processAudits.mjs +1 -1
- package/dist/endpoints/rls.cjs +3 -0
- package/dist/endpoints/rls.d.cts +9 -0
- package/dist/endpoints/rls.d.mts +9 -0
- package/dist/endpoints/rls.mjs +3 -0
- package/dist/functions/AWSLambdaFunction.d.mts +4 -4
- package/dist/functions/BaseFunctionBuilder.d.mts +2 -2
- package/dist/functions/Function.d.mts +2 -2
- package/dist/functions/FunctionBuilder.d.mts +4 -4
- package/dist/functions/FunctionExecutionWrapper.d.mts +3 -3
- package/dist/functions/TestFunctionAdaptor.d.mts +2 -2
- package/dist/functions/index.d.mts +5 -5
- package/dist/{helpers-CrrdyA04.mjs → helpers-C3B2lVrM.mjs} +2 -2
- package/dist/{helpers-CrrdyA04.mjs.map → helpers-C3B2lVrM.mjs.map} +1 -1
- package/dist/{helpers-DiPZVJQC.cjs → helpers-DxxSpLfw.cjs} +2 -2
- package/dist/{helpers-DiPZVJQC.cjs.map → helpers-DxxSpLfw.cjs.map} +1 -1
- package/dist/index-CFyaRrck.d.mts +10 -0
- package/dist/index.d.mts +2 -2
- package/dist/{processAudits-BFokHhCO.cjs → processAudits-CzHkPokQ.cjs} +13 -7
- package/dist/processAudits-CzHkPokQ.cjs.map +1 -0
- package/dist/{processAudits-DfcB-X-4.mjs → processAudits-Dj8UGqcW.mjs} +13 -7
- package/dist/processAudits-Dj8UGqcW.mjs.map +1 -0
- package/dist/publisher.d.mts +1 -1
- package/dist/rls-Bf3FRwto.mjs +9 -0
- package/dist/rls-Bf3FRwto.mjs.map +1 -0
- package/dist/rls-CmJ7bRsz.cjs +15 -0
- package/dist/rls-CmJ7bRsz.cjs.map +1 -0
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +3 -3
- package/dist/subscribers/Subscriber.cjs +1 -1
- package/dist/subscribers/Subscriber.d.mts +2 -2
- package/dist/subscribers/Subscriber.mjs +1 -1
- package/dist/subscribers/SubscriberBuilder.cjs +2 -2
- package/dist/subscribers/SubscriberBuilder.d.mts +3 -3
- package/dist/subscribers/SubscriberBuilder.mjs +2 -2
- package/dist/subscribers/index.cjs +2 -2
- package/dist/subscribers/index.d.cts +2 -2
- package/dist/subscribers/index.d.mts +5 -5
- package/dist/subscribers/index.mjs +2 -2
- package/dist/{types-DKf0juBf.d.mts → types-CScirkHt.d.mts} +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +4 -3
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +59 -26
- package/src/endpoints/Authorizer.ts +119 -1
- package/src/endpoints/Endpoint.ts +19 -0
- package/src/endpoints/EndpointBuilder.ts +80 -6
- package/src/endpoints/EndpointFactory.ts +263 -27
- package/src/endpoints/HonoEndpointAdaptor.ts +68 -37
- package/src/endpoints/TestEndpointAdaptor.ts +2 -0
- package/src/endpoints/index.ts +7 -0
- package/src/endpoints/processAudits.ts +39 -16
- package/src/endpoints/rls.ts +67 -0
- package/dist/AmazonApiGatewayEndpointAdaptor-CacGag6F.mjs.map +0 -1
- package/dist/AmazonApiGatewayEndpointAdaptor-DXssXsJi.cjs.map +0 -1
- package/dist/Authorizer-BTmly8ps.d.cts +0 -29
- package/dist/Authorizer-pmPvIVgv.d.mts +0 -29
- package/dist/Endpoint-CA-byrDr.cjs.map +0 -1
- package/dist/Endpoint-DbPsw13b.mjs.map +0 -1
- package/dist/EndpointBuilder-CYkeYpsL.cjs.map +0 -1
- package/dist/EndpointBuilder-W5fdXxYQ.mjs.map +0 -1
- package/dist/EndpointFactory-B27nfeiE.mjs.map +0 -1
- package/dist/EndpointFactory-D5lFZXqY.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-B_gJPWGD.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-Bg_vTyA5.mjs.map +0 -1
- package/dist/endpoints/Authorizer.cjs.map +0 -1
- package/dist/endpoints/Authorizer.mjs.map +0 -1
- package/dist/index-licEVXjh.d.mts +0 -10
- package/dist/processAudits-BFokHhCO.cjs.map +0 -1
- package/dist/processAudits-DfcB-X-4.mjs.map +0 -1
|
@@ -9,10 +9,15 @@ import { ConsoleLogger } from '@geekmidas/logger/console';
|
|
|
9
9
|
import type { Service } from '@geekmidas/services';
|
|
10
10
|
import uniqBy from 'lodash.uniqby';
|
|
11
11
|
import type { HttpMethod } from '../types';
|
|
12
|
-
import type {
|
|
12
|
+
import type {
|
|
13
|
+
Authorizer,
|
|
14
|
+
BuiltInSecuritySchemeId,
|
|
15
|
+
SecurityScheme,
|
|
16
|
+
} from './Authorizer';
|
|
13
17
|
import type { AuthorizeFn, SessionFn } from './Endpoint';
|
|
14
18
|
import { EndpointBuilder } from './EndpointBuilder';
|
|
15
19
|
import type { ActorExtractor } from './audit';
|
|
20
|
+
import type { RlsConfig } from './rls';
|
|
16
21
|
|
|
17
22
|
const DEFAULT_LOGGER = new ConsoleLogger() as any;
|
|
18
23
|
|
|
@@ -32,6 +37,13 @@ export class EndpointFactory<
|
|
|
32
37
|
> = ExtractStorageAuditAction<NonNullable<TAuditStorage>>,
|
|
33
38
|
TDatabase = undefined,
|
|
34
39
|
TDatabaseServiceName extends string = string,
|
|
40
|
+
TSecuritySchemes extends Record<string, SecurityScheme> = Record<
|
|
41
|
+
string,
|
|
42
|
+
SecurityScheme
|
|
43
|
+
>,
|
|
44
|
+
TRlsConfig extends
|
|
45
|
+
| RlsConfig<TServices, TSession, TLogger>
|
|
46
|
+
| undefined = undefined,
|
|
35
47
|
> {
|
|
36
48
|
// @ts-ignore
|
|
37
49
|
private defaultServices: TServices;
|
|
@@ -56,6 +68,8 @@ export class EndpointFactory<
|
|
|
56
68
|
| Service<TDatabaseServiceName, TDatabase>
|
|
57
69
|
| undefined;
|
|
58
70
|
private defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
|
|
71
|
+
private customSecuritySchemes: TSecuritySchemes = {} as TSecuritySchemes;
|
|
72
|
+
private defaultRlsConfig?: TRlsConfig;
|
|
59
73
|
|
|
60
74
|
constructor({
|
|
61
75
|
basePath,
|
|
@@ -70,6 +84,8 @@ export class EndpointFactory<
|
|
|
70
84
|
defaultAuditorStorage,
|
|
71
85
|
defaultDatabaseService,
|
|
72
86
|
defaultActorExtractor,
|
|
87
|
+
customSecuritySchemes = {} as TSecuritySchemes,
|
|
88
|
+
defaultRlsConfig,
|
|
73
89
|
}: EndpointFactoryOptions<
|
|
74
90
|
TServices,
|
|
75
91
|
TBasePath,
|
|
@@ -81,7 +97,9 @@ export class EndpointFactory<
|
|
|
81
97
|
TAuditStorage,
|
|
82
98
|
TAuditStorageServiceName,
|
|
83
99
|
TDatabase,
|
|
84
|
-
TDatabaseServiceName
|
|
100
|
+
TDatabaseServiceName,
|
|
101
|
+
TSecuritySchemes,
|
|
102
|
+
TRlsConfig
|
|
85
103
|
> = {}) {
|
|
86
104
|
// Initialize default services
|
|
87
105
|
this.defaultServices = uniqBy(
|
|
@@ -99,6 +117,8 @@ export class EndpointFactory<
|
|
|
99
117
|
this.defaultAuditorStorage = defaultAuditorStorage;
|
|
100
118
|
this.defaultDatabaseService = defaultDatabaseService;
|
|
101
119
|
this.defaultActorExtractor = defaultActorExtractor;
|
|
120
|
+
this.customSecuritySchemes = customSecuritySchemes;
|
|
121
|
+
this.defaultRlsConfig = defaultRlsConfig;
|
|
102
122
|
}
|
|
103
123
|
|
|
104
124
|
static joinPaths<TBasePath extends string, P extends string>(
|
|
@@ -153,7 +173,8 @@ export class EndpointFactory<
|
|
|
153
173
|
TAuditStorageServiceName,
|
|
154
174
|
TAuditAction,
|
|
155
175
|
TDatabase,
|
|
156
|
-
TDatabaseServiceName
|
|
176
|
+
TDatabaseServiceName,
|
|
177
|
+
TSecuritySchemes
|
|
157
178
|
> {
|
|
158
179
|
const authorizerConfigs = authorizers.map((name) => ({
|
|
159
180
|
name,
|
|
@@ -170,7 +191,9 @@ export class EndpointFactory<
|
|
|
170
191
|
TAuditStorageServiceName,
|
|
171
192
|
TAuditAction,
|
|
172
193
|
TDatabase,
|
|
173
|
-
TDatabaseServiceName
|
|
194
|
+
TDatabaseServiceName,
|
|
195
|
+
TSecuritySchemes,
|
|
196
|
+
TRlsConfig
|
|
174
197
|
>({
|
|
175
198
|
defaultServices: this.defaultServices,
|
|
176
199
|
basePath: this.basePath,
|
|
@@ -183,6 +206,74 @@ export class EndpointFactory<
|
|
|
183
206
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
184
207
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
185
208
|
defaultActorExtractor: this.defaultActorExtractor,
|
|
209
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
210
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Define custom security schemes for this factory.
|
|
216
|
+
* These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* const router = e.securitySchemes({
|
|
221
|
+
* awsIamSigV4: {
|
|
222
|
+
* type: 'apiKey',
|
|
223
|
+
* in: 'header',
|
|
224
|
+
* name: 'Authorization',
|
|
225
|
+
* 'x-amazon-apigateway-authtype': 'awsSigv4',
|
|
226
|
+
* },
|
|
227
|
+
* });
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
securitySchemes<T extends Record<string, SecurityScheme>>(
|
|
231
|
+
schemes: T,
|
|
232
|
+
): EndpointFactory<
|
|
233
|
+
TServices,
|
|
234
|
+
TBasePath,
|
|
235
|
+
TLogger,
|
|
236
|
+
TSession,
|
|
237
|
+
TEventPublisher,
|
|
238
|
+
TEventPublisherServiceName,
|
|
239
|
+
TAuthorizers,
|
|
240
|
+
TAuditStorage,
|
|
241
|
+
TAuditStorageServiceName,
|
|
242
|
+
TAuditAction,
|
|
243
|
+
TDatabase,
|
|
244
|
+
TDatabaseServiceName,
|
|
245
|
+
TSecuritySchemes & T
|
|
246
|
+
> {
|
|
247
|
+
return new EndpointFactory<
|
|
248
|
+
TServices,
|
|
249
|
+
TBasePath,
|
|
250
|
+
TLogger,
|
|
251
|
+
TSession,
|
|
252
|
+
TEventPublisher,
|
|
253
|
+
TEventPublisherServiceName,
|
|
254
|
+
TAuthorizers,
|
|
255
|
+
TAuditStorage,
|
|
256
|
+
TAuditStorageServiceName,
|
|
257
|
+
TAuditAction,
|
|
258
|
+
TDatabase,
|
|
259
|
+
TDatabaseServiceName,
|
|
260
|
+
TSecuritySchemes & T
|
|
261
|
+
>({
|
|
262
|
+
defaultServices: this.defaultServices,
|
|
263
|
+
basePath: this.basePath,
|
|
264
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
265
|
+
defaultLogger: this.defaultLogger,
|
|
266
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
267
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
268
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
269
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
270
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
271
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
272
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
273
|
+
customSecuritySchemes: {
|
|
274
|
+
...this.customSecuritySchemes,
|
|
275
|
+
...schemes,
|
|
276
|
+
} as TSecuritySchemes & T,
|
|
186
277
|
});
|
|
187
278
|
}
|
|
188
279
|
|
|
@@ -190,9 +281,18 @@ export class EndpointFactory<
|
|
|
190
281
|
* Set the default authorizer for all endpoints created from this factory.
|
|
191
282
|
* Individual endpoints can override this by calling `.authorizer()` on the builder.
|
|
192
283
|
* Use `'none'` to explicitly disable authorization for all endpoints.
|
|
284
|
+
*
|
|
285
|
+
* Accepts:
|
|
286
|
+
* - Built-in security scheme names: 'jwt', 'bearer', 'apiKey', 'oauth2', 'oidc'
|
|
287
|
+
* - Custom security scheme names defined via `.securitySchemes()`
|
|
288
|
+
* - 'none' to disable authorization
|
|
193
289
|
*/
|
|
194
290
|
authorizer(
|
|
195
|
-
name:
|
|
291
|
+
name:
|
|
292
|
+
| BuiltInSecuritySchemeId
|
|
293
|
+
| keyof TSecuritySchemes
|
|
294
|
+
| TAuthorizers[number]
|
|
295
|
+
| 'none',
|
|
196
296
|
): EndpointFactory<
|
|
197
297
|
TServices,
|
|
198
298
|
TBasePath,
|
|
@@ -205,9 +305,10 @@ export class EndpointFactory<
|
|
|
205
305
|
TAuditStorageServiceName,
|
|
206
306
|
TAuditAction,
|
|
207
307
|
TDatabase,
|
|
208
|
-
TDatabaseServiceName
|
|
308
|
+
TDatabaseServiceName,
|
|
309
|
+
TSecuritySchemes
|
|
209
310
|
> {
|
|
210
|
-
// Validate that the authorizer exists in available authorizers
|
|
311
|
+
// Validate that the authorizer exists in available authorizers (if authorizers() was called)
|
|
211
312
|
if (name !== 'none' && this.availableAuthorizers.length > 0) {
|
|
212
313
|
const authorizerExists = this.availableAuthorizers.some(
|
|
213
314
|
(a) => a.name === name,
|
|
@@ -234,7 +335,9 @@ export class EndpointFactory<
|
|
|
234
335
|
TAuditStorageServiceName,
|
|
235
336
|
TAuditAction,
|
|
236
337
|
TDatabase,
|
|
237
|
-
TDatabaseServiceName
|
|
338
|
+
TDatabaseServiceName,
|
|
339
|
+
TSecuritySchemes,
|
|
340
|
+
TRlsConfig
|
|
238
341
|
>({
|
|
239
342
|
defaultServices: this.defaultServices,
|
|
240
343
|
basePath: this.basePath,
|
|
@@ -243,10 +346,13 @@ export class EndpointFactory<
|
|
|
243
346
|
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
244
347
|
defaultEventPublisher: this.defaultEventPublisher,
|
|
245
348
|
availableAuthorizers: this.availableAuthorizers,
|
|
246
|
-
defaultAuthorizerName:
|
|
349
|
+
defaultAuthorizerName:
|
|
350
|
+
name === 'none' ? undefined : (name as TAuthorizers[number]),
|
|
247
351
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
248
352
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
249
353
|
defaultActorExtractor: this.defaultActorExtractor,
|
|
354
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
355
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
250
356
|
});
|
|
251
357
|
}
|
|
252
358
|
|
|
@@ -265,7 +371,8 @@ export class EndpointFactory<
|
|
|
265
371
|
TAuditStorageServiceName,
|
|
266
372
|
TAuditAction,
|
|
267
373
|
TDatabase,
|
|
268
|
-
TDatabaseServiceName
|
|
374
|
+
TDatabaseServiceName,
|
|
375
|
+
TSecuritySchemes
|
|
269
376
|
> {
|
|
270
377
|
const newBasePath = EndpointFactory.joinPaths(path, this.basePath);
|
|
271
378
|
return new EndpointFactory<
|
|
@@ -280,7 +387,9 @@ export class EndpointFactory<
|
|
|
280
387
|
TAuditStorageServiceName,
|
|
281
388
|
TAuditAction,
|
|
282
389
|
TDatabase,
|
|
283
|
-
TDatabaseServiceName
|
|
390
|
+
TDatabaseServiceName,
|
|
391
|
+
TSecuritySchemes,
|
|
392
|
+
TRlsConfig
|
|
284
393
|
>({
|
|
285
394
|
defaultServices: this.defaultServices,
|
|
286
395
|
basePath: newBasePath,
|
|
@@ -293,6 +402,8 @@ export class EndpointFactory<
|
|
|
293
402
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
294
403
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
295
404
|
defaultActorExtractor: this.defaultActorExtractor,
|
|
405
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
406
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
296
407
|
});
|
|
297
408
|
}
|
|
298
409
|
|
|
@@ -311,7 +422,8 @@ export class EndpointFactory<
|
|
|
311
422
|
TAuditStorageServiceName,
|
|
312
423
|
TAuditAction,
|
|
313
424
|
TDatabase,
|
|
314
|
-
TDatabaseServiceName
|
|
425
|
+
TDatabaseServiceName,
|
|
426
|
+
TSecuritySchemes
|
|
315
427
|
> {
|
|
316
428
|
return new EndpointFactory<
|
|
317
429
|
TServices,
|
|
@@ -325,7 +437,9 @@ export class EndpointFactory<
|
|
|
325
437
|
TAuditStorageServiceName,
|
|
326
438
|
TAuditAction,
|
|
327
439
|
TDatabase,
|
|
328
|
-
TDatabaseServiceName
|
|
440
|
+
TDatabaseServiceName,
|
|
441
|
+
TSecuritySchemes,
|
|
442
|
+
TRlsConfig
|
|
329
443
|
>({
|
|
330
444
|
defaultServices: this.defaultServices,
|
|
331
445
|
basePath: this.basePath,
|
|
@@ -338,6 +452,8 @@ export class EndpointFactory<
|
|
|
338
452
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
339
453
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
340
454
|
defaultActorExtractor: this.defaultActorExtractor,
|
|
455
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
456
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
341
457
|
});
|
|
342
458
|
}
|
|
343
459
|
|
|
@@ -356,7 +472,8 @@ export class EndpointFactory<
|
|
|
356
472
|
TAuditStorageServiceName,
|
|
357
473
|
TAuditAction,
|
|
358
474
|
TDatabase,
|
|
359
|
-
TDatabaseServiceName
|
|
475
|
+
TDatabaseServiceName,
|
|
476
|
+
TSecuritySchemes
|
|
360
477
|
> {
|
|
361
478
|
return new EndpointFactory<
|
|
362
479
|
[...S, ...TServices],
|
|
@@ -370,7 +487,9 @@ export class EndpointFactory<
|
|
|
370
487
|
TAuditStorageServiceName,
|
|
371
488
|
TAuditAction,
|
|
372
489
|
TDatabase,
|
|
373
|
-
TDatabaseServiceName
|
|
490
|
+
TDatabaseServiceName,
|
|
491
|
+
TSecuritySchemes,
|
|
492
|
+
TRlsConfig
|
|
374
493
|
>({
|
|
375
494
|
defaultServices: [...services, ...this.defaultServices],
|
|
376
495
|
basePath: this.basePath,
|
|
@@ -383,6 +502,8 @@ export class EndpointFactory<
|
|
|
383
502
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
384
503
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
385
504
|
defaultActorExtractor: this.defaultActorExtractor,
|
|
505
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
506
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
386
507
|
});
|
|
387
508
|
}
|
|
388
509
|
|
|
@@ -400,7 +521,8 @@ export class EndpointFactory<
|
|
|
400
521
|
TAuditStorageServiceName,
|
|
401
522
|
TAuditAction,
|
|
402
523
|
TDatabase,
|
|
403
|
-
TDatabaseServiceName
|
|
524
|
+
TDatabaseServiceName,
|
|
525
|
+
TSecuritySchemes
|
|
404
526
|
> {
|
|
405
527
|
return new EndpointFactory<
|
|
406
528
|
TServices,
|
|
@@ -414,7 +536,9 @@ export class EndpointFactory<
|
|
|
414
536
|
TAuditStorageServiceName,
|
|
415
537
|
TAuditAction,
|
|
416
538
|
TDatabase,
|
|
417
|
-
TDatabaseServiceName
|
|
539
|
+
TDatabaseServiceName,
|
|
540
|
+
TSecuritySchemes,
|
|
541
|
+
TRlsConfig
|
|
418
542
|
>({
|
|
419
543
|
defaultServices: this.defaultServices,
|
|
420
544
|
basePath: this.basePath,
|
|
@@ -441,6 +565,8 @@ export class EndpointFactory<
|
|
|
441
565
|
TSession,
|
|
442
566
|
L
|
|
443
567
|
>,
|
|
568
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
569
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
444
570
|
});
|
|
445
571
|
}
|
|
446
572
|
|
|
@@ -461,7 +587,8 @@ export class EndpointFactory<
|
|
|
461
587
|
TAuditStorageServiceName,
|
|
462
588
|
TAuditAction,
|
|
463
589
|
TDatabase,
|
|
464
|
-
TDatabaseServiceName
|
|
590
|
+
TDatabaseServiceName,
|
|
591
|
+
TSecuritySchemes
|
|
465
592
|
> {
|
|
466
593
|
return new EndpointFactory<
|
|
467
594
|
TServices,
|
|
@@ -475,7 +602,9 @@ export class EndpointFactory<
|
|
|
475
602
|
TAuditStorageServiceName,
|
|
476
603
|
TAuditAction,
|
|
477
604
|
TDatabase,
|
|
478
|
-
TDatabaseServiceName
|
|
605
|
+
TDatabaseServiceName,
|
|
606
|
+
TSecuritySchemes,
|
|
607
|
+
TRlsConfig
|
|
479
608
|
>({
|
|
480
609
|
defaultServices: this.defaultServices,
|
|
481
610
|
basePath: this.basePath,
|
|
@@ -488,6 +617,8 @@ export class EndpointFactory<
|
|
|
488
617
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
489
618
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
490
619
|
defaultActorExtractor: this.defaultActorExtractor,
|
|
620
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
621
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
491
622
|
});
|
|
492
623
|
}
|
|
493
624
|
|
|
@@ -505,7 +636,8 @@ export class EndpointFactory<
|
|
|
505
636
|
TAuditStorageServiceName,
|
|
506
637
|
TAuditAction,
|
|
507
638
|
TDatabase,
|
|
508
|
-
TDatabaseServiceName
|
|
639
|
+
TDatabaseServiceName,
|
|
640
|
+
TSecuritySchemes
|
|
509
641
|
> {
|
|
510
642
|
return new EndpointFactory<
|
|
511
643
|
TServices,
|
|
@@ -519,7 +651,9 @@ export class EndpointFactory<
|
|
|
519
651
|
TAuditStorageServiceName,
|
|
520
652
|
TAuditAction,
|
|
521
653
|
TDatabase,
|
|
522
|
-
TDatabaseServiceName
|
|
654
|
+
TDatabaseServiceName,
|
|
655
|
+
TSecuritySchemes,
|
|
656
|
+
TRlsConfig
|
|
523
657
|
>({
|
|
524
658
|
defaultServices: this.defaultServices,
|
|
525
659
|
basePath: this.basePath,
|
|
@@ -541,6 +675,8 @@ export class EndpointFactory<
|
|
|
541
675
|
T,
|
|
542
676
|
TLogger
|
|
543
677
|
>,
|
|
678
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
679
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
544
680
|
});
|
|
545
681
|
}
|
|
546
682
|
|
|
@@ -562,7 +698,8 @@ export class EndpointFactory<
|
|
|
562
698
|
TAuditStorageServiceName,
|
|
563
699
|
TAuditAction,
|
|
564
700
|
T,
|
|
565
|
-
TName
|
|
701
|
+
TName,
|
|
702
|
+
TSecuritySchemes
|
|
566
703
|
> {
|
|
567
704
|
return new EndpointFactory<
|
|
568
705
|
TServices,
|
|
@@ -576,7 +713,9 @@ export class EndpointFactory<
|
|
|
576
713
|
TAuditStorageServiceName,
|
|
577
714
|
TAuditAction,
|
|
578
715
|
T,
|
|
579
|
-
TName
|
|
716
|
+
TName,
|
|
717
|
+
TSecuritySchemes,
|
|
718
|
+
TRlsConfig
|
|
580
719
|
>({
|
|
581
720
|
defaultServices: this.defaultServices,
|
|
582
721
|
basePath: this.basePath,
|
|
@@ -592,6 +731,8 @@ export class EndpointFactory<
|
|
|
592
731
|
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
593
732
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
594
733
|
defaultDatabaseService: service,
|
|
734
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
735
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
595
736
|
});
|
|
596
737
|
}
|
|
597
738
|
|
|
@@ -614,7 +755,8 @@ export class EndpointFactory<
|
|
|
614
755
|
TName,
|
|
615
756
|
ExtractStorageAuditAction<T>,
|
|
616
757
|
TDatabase,
|
|
617
|
-
TDatabaseServiceName
|
|
758
|
+
TDatabaseServiceName,
|
|
759
|
+
TSecuritySchemes
|
|
618
760
|
> {
|
|
619
761
|
return new EndpointFactory<
|
|
620
762
|
TServices,
|
|
@@ -628,7 +770,9 @@ export class EndpointFactory<
|
|
|
628
770
|
TName,
|
|
629
771
|
ExtractStorageAuditAction<T>,
|
|
630
772
|
TDatabase,
|
|
631
|
-
TDatabaseServiceName
|
|
773
|
+
TDatabaseServiceName,
|
|
774
|
+
TSecuritySchemes,
|
|
775
|
+
TRlsConfig
|
|
632
776
|
>({
|
|
633
777
|
defaultServices: this.defaultServices,
|
|
634
778
|
basePath: this.basePath,
|
|
@@ -646,6 +790,8 @@ export class EndpointFactory<
|
|
|
646
790
|
TSession,
|
|
647
791
|
TLogger
|
|
648
792
|
>,
|
|
793
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
794
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
649
795
|
});
|
|
650
796
|
}
|
|
651
797
|
|
|
@@ -667,7 +813,8 @@ export class EndpointFactory<
|
|
|
667
813
|
TAuditStorageServiceName,
|
|
668
814
|
TAuditAction,
|
|
669
815
|
TDatabase,
|
|
670
|
-
TDatabaseServiceName
|
|
816
|
+
TDatabaseServiceName,
|
|
817
|
+
TSecuritySchemes
|
|
671
818
|
> {
|
|
672
819
|
return new EndpointFactory<
|
|
673
820
|
TServices,
|
|
@@ -681,7 +828,9 @@ export class EndpointFactory<
|
|
|
681
828
|
TAuditStorageServiceName,
|
|
682
829
|
TAuditAction,
|
|
683
830
|
TDatabase,
|
|
684
|
-
TDatabaseServiceName
|
|
831
|
+
TDatabaseServiceName,
|
|
832
|
+
TSecuritySchemes,
|
|
833
|
+
TRlsConfig
|
|
685
834
|
>({
|
|
686
835
|
defaultServices: this.defaultServices,
|
|
687
836
|
basePath: this.basePath,
|
|
@@ -694,6 +843,76 @@ export class EndpointFactory<
|
|
|
694
843
|
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
695
844
|
defaultDatabaseService: this.defaultDatabaseService,
|
|
696
845
|
defaultActorExtractor: extractor,
|
|
846
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
847
|
+
defaultRlsConfig: this.defaultRlsConfig,
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Set the RLS (Row-Level Security) configuration for endpoints created from this factory.
|
|
853
|
+
* This enables automatic PostgreSQL session variable setting for RLS policies.
|
|
854
|
+
*
|
|
855
|
+
* @example
|
|
856
|
+
* ```typescript
|
|
857
|
+
* const api = new EndpointFactory()
|
|
858
|
+
* .database(databaseService)
|
|
859
|
+
* .session(extractSession)
|
|
860
|
+
* .rls({
|
|
861
|
+
* extractor: ({ session }) => ({
|
|
862
|
+
* user_id: session.userId,
|
|
863
|
+
* tenant_id: session.tenantId,
|
|
864
|
+
* }),
|
|
865
|
+
* prefix: 'app',
|
|
866
|
+
* });
|
|
867
|
+
* ```
|
|
868
|
+
*/
|
|
869
|
+
rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(
|
|
870
|
+
config: TConfig,
|
|
871
|
+
): EndpointFactory<
|
|
872
|
+
TServices,
|
|
873
|
+
TBasePath,
|
|
874
|
+
TLogger,
|
|
875
|
+
TSession,
|
|
876
|
+
TEventPublisher,
|
|
877
|
+
TEventPublisherServiceName,
|
|
878
|
+
TAuthorizers,
|
|
879
|
+
TAuditStorage,
|
|
880
|
+
TAuditStorageServiceName,
|
|
881
|
+
TAuditAction,
|
|
882
|
+
TDatabase,
|
|
883
|
+
TDatabaseServiceName,
|
|
884
|
+
TSecuritySchemes,
|
|
885
|
+
TConfig
|
|
886
|
+
> {
|
|
887
|
+
return new EndpointFactory<
|
|
888
|
+
TServices,
|
|
889
|
+
TBasePath,
|
|
890
|
+
TLogger,
|
|
891
|
+
TSession,
|
|
892
|
+
TEventPublisher,
|
|
893
|
+
TEventPublisherServiceName,
|
|
894
|
+
TAuthorizers,
|
|
895
|
+
TAuditStorage,
|
|
896
|
+
TAuditStorageServiceName,
|
|
897
|
+
TAuditAction,
|
|
898
|
+
TDatabase,
|
|
899
|
+
TDatabaseServiceName,
|
|
900
|
+
TSecuritySchemes,
|
|
901
|
+
TConfig
|
|
902
|
+
>({
|
|
903
|
+
defaultServices: this.defaultServices,
|
|
904
|
+
basePath: this.basePath,
|
|
905
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
906
|
+
defaultLogger: this.defaultLogger,
|
|
907
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
908
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
909
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
910
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
911
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
912
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
913
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
914
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
915
|
+
defaultRlsConfig: config,
|
|
697
916
|
});
|
|
698
917
|
}
|
|
699
918
|
|
|
@@ -782,6 +1001,14 @@ export class EndpointFactory<
|
|
|
782
1001
|
builder._actorExtractor = this.defaultActorExtractor;
|
|
783
1002
|
}
|
|
784
1003
|
|
|
1004
|
+
// Set custom security schemes
|
|
1005
|
+
builder._customSecuritySchemes = this.customSecuritySchemes;
|
|
1006
|
+
|
|
1007
|
+
// Set RLS config if configured
|
|
1008
|
+
if (this.defaultRlsConfig) {
|
|
1009
|
+
builder._rlsConfig = this.defaultRlsConfig as any;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
785
1012
|
return builder;
|
|
786
1013
|
}
|
|
787
1014
|
|
|
@@ -849,6 +1076,13 @@ export interface EndpointFactoryOptions<
|
|
|
849
1076
|
TAuditStorageServiceName extends string = string,
|
|
850
1077
|
TDatabase = undefined,
|
|
851
1078
|
TDatabaseServiceName extends string = string,
|
|
1079
|
+
TSecuritySchemes extends Record<string, SecurityScheme> = Record<
|
|
1080
|
+
string,
|
|
1081
|
+
SecurityScheme
|
|
1082
|
+
>,
|
|
1083
|
+
TRlsConfig extends
|
|
1084
|
+
| RlsConfig<TServices, TSession, TLogger>
|
|
1085
|
+
| undefined = undefined,
|
|
852
1086
|
> {
|
|
853
1087
|
defaultServices?: TServices;
|
|
854
1088
|
basePath?: TBasePath;
|
|
@@ -862,6 +1096,8 @@ export interface EndpointFactoryOptions<
|
|
|
862
1096
|
defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;
|
|
863
1097
|
defaultDatabaseService?: Service<TDatabaseServiceName, TDatabase>;
|
|
864
1098
|
defaultActorExtractor?: ActorExtractor<TServices, TSession, TLogger>;
|
|
1099
|
+
customSecuritySchemes?: TSecuritySchemes;
|
|
1100
|
+
defaultRlsConfig?: TRlsConfig;
|
|
865
1101
|
}
|
|
866
1102
|
|
|
867
1103
|
export const e = new EndpointFactory();
|