@geekmidas/constructs 10.0.0-alpha.37 → 10.0.0-alpha.39
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 +156 -155
- package/dist/{Construct-Detz65RA.mjs → Construct-BO1X-kt9.mjs} +3 -6
- package/dist/Construct-BO1X-kt9.mjs.map +1 -0
- package/dist/Construct-BQALFCh2.d.cts +230 -0
- package/dist/Construct-BQALFCh2.d.cts.map +1 -0
- package/dist/{Construct-yG9Sw-5p.cjs → Construct-DmvXceVY.cjs} +3 -6
- package/dist/Construct-DmvXceVY.cjs.map +1 -0
- package/dist/Construct-QXnl3VqT.d.mts +230 -0
- package/dist/Construct-QXnl3VqT.d.mts.map +1 -0
- package/dist/{Cron-CA2oa2nC.d.cts → Cron-CMEGfRs8.d.cts} +7 -5
- package/dist/Cron-CMEGfRs8.d.cts.map +1 -0
- package/dist/{Cron-B_iuyNxr.d.mts → Cron-D6X4-xjB.d.mts} +7 -5
- package/dist/Cron-D6X4-xjB.d.mts.map +1 -0
- package/dist/{CronBuilder-B_KqaodP.d.cts → CronBuilder-CEK7aOqD.d.cts} +21 -16
- package/dist/CronBuilder-CEK7aOqD.d.cts.map +1 -0
- package/dist/{CronBuilder-BbnT7tqo.cjs → CronBuilder-DB35T5dL.cjs} +13 -11
- package/dist/CronBuilder-DB35T5dL.cjs.map +1 -0
- package/dist/{CronBuilder-BRkzUOAs.mjs → CronBuilder-Dv0IlZs0.mjs} +14 -12
- package/dist/CronBuilder-Dv0IlZs0.mjs.map +1 -0
- package/dist/{CronBuilder-BIKCLWu7.d.mts → CronBuilder-O_gvButp.d.mts} +21 -16
- package/dist/CronBuilder-O_gvButp.d.mts.map +1 -0
- package/dist/{Endpoint-DO332Dnm.mjs → Endpoint-CQAeh1Rh.mjs} +5 -5
- package/dist/Endpoint-CQAeh1Rh.mjs.map +1 -0
- package/dist/{Endpoint-QKuFg5gs.cjs → Endpoint-D1L9qu5C.cjs} +5 -5
- package/dist/Endpoint-D1L9qu5C.cjs.map +1 -0
- package/dist/{Endpoint-1-XYQSx0.d.cts → Endpoint-Dp5AKIXl.d.cts} +10 -13
- package/dist/Endpoint-Dp5AKIXl.d.cts.map +1 -0
- package/dist/{Endpoint-GFIxYb9L.d.mts → Endpoint-DtI7heFm.d.mts} +10 -13
- package/dist/Endpoint-DtI7heFm.d.mts.map +1 -0
- package/dist/{EndpointFactory-B9HAjDAP.mjs → EndpointFactory-BBdNeaGJ.mjs} +23 -52
- package/dist/EndpointFactory-BBdNeaGJ.mjs.map +1 -0
- package/dist/{EndpointFactory-BmO0WnXE.cjs → EndpointFactory-BZOCOaK6.cjs} +22 -51
- package/dist/EndpointFactory-BZOCOaK6.cjs.map +1 -0
- package/dist/{EndpointFactory-BCZdh_u3.d.mts → EndpointFactory-CgMDvERK.d.mts} +58 -48
- package/dist/EndpointFactory-CgMDvERK.d.mts.map +1 -0
- package/dist/{EndpointFactory-BnK_YkW1.d.cts → EndpointFactory-FeFRmlDZ.d.cts} +58 -48
- package/dist/EndpointFactory-FeFRmlDZ.d.cts.map +1 -0
- package/dist/{HonoEndpointAdaptor-CiqAZ5Mt.mjs → HonoEndpointAdaptor-Aui-x9Lg.mjs} +4 -3
- package/dist/HonoEndpointAdaptor-Aui-x9Lg.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-DoEQdC3r.cjs → HonoEndpointAdaptor-Cq99r9H7.cjs} +5 -4
- package/dist/HonoEndpointAdaptor-Cq99r9H7.cjs.map +1 -0
- package/dist/{Queue-DpKTLl6E.mjs → Queue-C1uDgjxt.mjs} +29 -48
- package/dist/Queue-C1uDgjxt.mjs.map +1 -0
- package/dist/{Queue-B7yRXQmL.cjs → Queue-Ckmudcm8.cjs} +29 -48
- package/dist/Queue-Ckmudcm8.cjs.map +1 -0
- package/dist/{Queue-Bhzi2WQC.d.cts → Queue-CpQIGB_2.d.cts} +22 -33
- package/dist/Queue-CpQIGB_2.d.cts.map +1 -0
- package/dist/{Queue-BoUA-e83.d.mts → Queue-YmvN2vEP.d.mts} +21 -32
- package/dist/Queue-YmvN2vEP.d.mts.map +1 -0
- package/dist/QueueBuilder-CJNcv4dy.cjs +112 -0
- package/dist/QueueBuilder-CJNcv4dy.cjs.map +1 -0
- package/dist/QueueBuilder-CM0WUxfw.d.mts +62 -0
- package/dist/QueueBuilder-CM0WUxfw.d.mts.map +1 -0
- package/dist/QueueBuilder-XEnnOWGe.d.cts +62 -0
- package/dist/QueueBuilder-XEnnOWGe.d.cts.map +1 -0
- package/dist/QueueBuilder-XuPKZwKH.mjs +95 -0
- package/dist/QueueBuilder-XuPKZwKH.mjs.map +1 -0
- package/dist/{Subscriber-DQCaiOXF.d.cts → Subscriber-B91YSkZt.d.cts} +12 -13
- package/dist/Subscriber-B91YSkZt.d.cts.map +1 -0
- package/dist/{Subscriber-CIO3pwji.d.mts → Subscriber-BjHYe5hK.d.mts} +11 -12
- package/dist/Subscriber-BjHYe5hK.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-CjDGSTZc.d.cts → SubscriberBuilder-BSpQX1JT.d.cts} +19 -23
- package/dist/SubscriberBuilder-BSpQX1JT.d.cts.map +1 -0
- package/dist/{SubscriberBuilder-C2FRfd26.d.mts → SubscriberBuilder-BhMphk4z.d.mts} +18 -22
- package/dist/SubscriberBuilder-BhMphk4z.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-C2bCOuPT.cjs → SubscriberBuilder-Duk028pD.cjs} +11 -19
- package/dist/SubscriberBuilder-Duk028pD.cjs.map +1 -0
- package/dist/{SubscriberBuilder-B4YRTBng.mjs → SubscriberBuilder-DzQUWE08.mjs} +11 -19
- package/dist/SubscriberBuilder-DzQUWE08.mjs.map +1 -0
- package/dist/{Topic-D5rlM9wS.cjs → Topic-BBVXC3H4.cjs} +46 -51
- package/dist/Topic-BBVXC3H4.cjs.map +1 -0
- package/dist/Topic-DOw051ch.mjs +98 -0
- package/dist/Topic-DOw051ch.mjs.map +1 -0
- package/dist/adaptors/aws.cjs +5 -5
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +26 -26
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +25 -25
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +5 -5
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +1 -1
- package/dist/adaptors/hono.d.cts +4 -5
- package/dist/adaptors/hono.d.cts.map +1 -1
- package/dist/adaptors/hono.d.mts +4 -5
- package/dist/adaptors/hono.d.mts.map +1 -1
- package/dist/adaptors/hono.mjs +1 -1
- package/dist/adaptors/testing.cjs +59 -23
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +40 -28
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +40 -28
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +59 -23
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/{auth-c6nWnvD8.d.cts → auth-CMwml9QN.d.mts} +4 -4
- package/dist/{auth-c6nWnvD8.d.cts.map → auth-CMwml9QN.d.mts.map} +1 -1
- package/dist/{auth-pS_U1H_X.d.mts → auth-rVRDjIw_.d.cts} +4 -4
- package/dist/{auth-pS_U1H_X.d.mts.map → auth-rVRDjIw_.d.cts.map} +1 -1
- package/dist/auth.d.cts +1 -1
- package/dist/auth.d.mts +1 -1
- package/dist/{cache-B2s0b-ss.d.mts → cache-C9a_hVCc.d.cts} +3 -3
- package/dist/{cache-B2s0b-ss.d.mts.map → cache-C9a_hVCc.d.cts.map} +1 -1
- package/dist/{cache-CYe2Kzjc.d.cts → cache-CeTMI8LR.d.mts} +3 -3
- package/dist/{cache-CYe2Kzjc.d.cts.map → cache-CeTMI8LR.d.mts.map} +1 -1
- package/dist/cache.d.cts +1 -1
- package/dist/cache.d.mts +1 -1
- package/dist/{construct-interface-D2gesxos.d.mts → construct-interface-_3zgxzXl.d.mts} +11 -20
- package/dist/{construct-interface-D2gesxos.d.mts.map → construct-interface-_3zgxzXl.d.mts.map} +1 -1
- package/dist/{construct-interface-DPusCUSQ.d.cts → construct-interface-_xi4BPN8.d.cts} +11 -20
- package/dist/{construct-interface-DPusCUSQ.d.cts.map → construct-interface-_xi4BPN8.d.cts.map} +1 -1
- package/dist/construct-interface.cjs +4 -33
- package/dist/construct-interface.cjs.map +1 -1
- package/dist/construct-interface.d.cts +2 -2
- package/dist/construct-interface.d.mts +2 -2
- package/dist/construct-interface.mjs +5 -32
- package/dist/construct-interface.mjs.map +1 -1
- package/dist/credential.cjs +22 -9
- package/dist/credential.cjs.map +1 -1
- package/dist/credential.d.cts +12 -2
- package/dist/credential.d.cts.map +1 -1
- package/dist/credential.d.mts +12 -2
- package/dist/credential.d.mts.map +1 -1
- package/dist/credential.mjs +22 -10
- package/dist/credential.mjs.map +1 -1
- package/dist/crons/index.cjs +1 -1
- package/dist/crons/index.d.cts +2 -2
- package/dist/crons/index.d.mts +2 -2
- package/dist/crons/index.mjs +1 -1
- package/dist/database/kysely.d.cts +1 -1
- package/dist/database/kysely.d.mts +1 -1
- package/dist/email.d.cts +1 -1
- package/dist/email.d.mts +1 -1
- package/dist/endpoints/index.cjs +5 -4
- package/dist/endpoints/index.d.cts +4 -13
- package/dist/endpoints/index.d.cts.map +1 -1
- package/dist/endpoints/index.d.mts +4 -13
- package/dist/endpoints/index.d.mts.map +1 -1
- package/dist/endpoints/index.mjs +4 -3
- package/dist/external-api-DS3mujT5.d.mts +86 -0
- package/dist/external-api-DS3mujT5.d.mts.map +1 -0
- package/dist/external-api-LBfE-q3g.d.cts +86 -0
- package/dist/external-api-LBfE-q3g.d.cts.map +1 -0
- package/dist/external-api.cjs +124 -0
- package/dist/external-api.cjs.map +1 -0
- package/dist/external-api.d.cts +2 -0
- package/dist/external-api.d.mts +2 -0
- package/dist/external-api.mjs +121 -0
- package/dist/external-api.mjs.map +1 -0
- package/dist/file-server.d.cts +1 -1
- package/dist/file-server.d.mts +1 -1
- package/dist/functions/index.cjs +1 -1
- package/dist/functions/index.d.cts +1 -1
- package/dist/functions/index.d.mts +1 -1
- package/dist/functions/index.mjs +1 -1
- package/dist/{functions-DlFm8HmH.mjs → functions-DCIfCRR-.mjs} +94 -23
- package/dist/functions-DCIfCRR-.mjs.map +1 -0
- package/dist/{functions-DKN6aQWJ.cjs → functions-ZH60FE7H.cjs} +99 -19
- package/dist/functions-ZH60FE7H.cjs.map +1 -0
- package/dist/{index-BI23K3wy.d.cts → index-B0kxstwf.d.cts} +36 -24
- package/dist/index-B0kxstwf.d.cts.map +1 -0
- package/dist/{index-yb3fXNyH.d.mts → index-CjVEjOw0.d.mts} +36 -24
- package/dist/index-CjVEjOw0.d.mts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{kysely-CEVXacPN.d.cts → kysely-BJ8IQ_1P.d.mts} +4 -4
- package/dist/{kysely-CEVXacPN.d.cts.map → kysely-BJ8IQ_1P.d.mts.map} +1 -1
- package/dist/{kysely-mcTdPNhl.d.mts → kysely-DVF8wOT4.d.cts} +4 -4
- package/dist/{kysely-mcTdPNhl.d.mts.map → kysely-DVF8wOT4.d.cts.map} +1 -1
- package/dist/{lazyAccessors-BHtcqgz2.mjs → lazyAccessors-CFanua0O.mjs} +2 -39
- package/dist/lazyAccessors-CFanua0O.mjs.map +1 -0
- package/dist/{lazyAccessors-Dx9NLwJZ.cjs → lazyAccessors-hJKGv8Ay.cjs} +1 -50
- package/dist/lazyAccessors-hJKGv8Ay.cjs.map +1 -0
- package/dist/mobile-app.d.cts +1 -1
- package/dist/mobile-app.d.mts +1 -1
- package/dist/object-storage.d.cts +1 -1
- package/dist/object-storage.d.mts +1 -1
- package/dist/processAudits-BpRlPQMW.mjs.map +1 -1
- package/dist/processAudits-D_2W5x8k.cjs.map +1 -1
- package/dist/queue/index.cjs +4 -78
- package/dist/queue/index.d.cts +3 -53
- package/dist/queue/index.d.mts +3 -53
- package/dist/queue/index.mjs +3 -77
- package/dist/rest-api.cjs +2 -4
- package/dist/rest-api.cjs.map +1 -1
- package/dist/rest-api.d.cts +4 -5
- package/dist/rest-api.d.cts.map +1 -1
- package/dist/rest-api.d.mts +4 -5
- package/dist/rest-api.d.mts.map +1 -1
- package/dist/rest-api.mjs +2 -4
- package/dist/rest-api.mjs.map +1 -1
- package/dist/site.d.cts +1 -1
- package/dist/site.d.mts +1 -1
- package/dist/subscribers/index.cjs +1 -1
- package/dist/subscribers/index.d.cts +2 -2
- package/dist/subscribers/index.d.mts +2 -2
- package/dist/subscribers/index.mjs +1 -1
- package/dist/topic/index.cjs +1 -36
- package/dist/topic/index.d.cts +2 -3
- package/dist/topic/index.d.mts +2 -3
- package/dist/topic/index.mjs +2 -35
- package/dist/worker.cjs +26 -17
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.cts +37 -29
- package/dist/worker.d.cts.map +1 -1
- package/dist/worker.d.mts +37 -29
- package/dist/worker.d.mts.map +1 -1
- package/dist/worker.mjs +26 -17
- package/dist/worker.mjs.map +1 -1
- package/package.json +41 -31
- package/dist/Construct-DTqYvkPG.d.cts +0 -115
- package/dist/Construct-DTqYvkPG.d.cts.map +0 -1
- package/dist/Construct-Detz65RA.mjs.map +0 -1
- package/dist/Construct-pVadmURD.d.mts +0 -115
- package/dist/Construct-pVadmURD.d.mts.map +0 -1
- package/dist/Construct-yG9Sw-5p.cjs.map +0 -1
- package/dist/Cron-B_iuyNxr.d.mts.map +0 -1
- package/dist/Cron-CA2oa2nC.d.cts.map +0 -1
- package/dist/CronBuilder-BIKCLWu7.d.mts.map +0 -1
- package/dist/CronBuilder-BRkzUOAs.mjs.map +0 -1
- package/dist/CronBuilder-B_KqaodP.d.cts.map +0 -1
- package/dist/CronBuilder-BbnT7tqo.cjs.map +0 -1
- package/dist/Endpoint-1-XYQSx0.d.cts.map +0 -1
- package/dist/Endpoint-DO332Dnm.mjs.map +0 -1
- package/dist/Endpoint-GFIxYb9L.d.mts.map +0 -1
- package/dist/Endpoint-QKuFg5gs.cjs.map +0 -1
- package/dist/EndpointFactory-B9HAjDAP.mjs.map +0 -1
- package/dist/EndpointFactory-BCZdh_u3.d.mts.map +0 -1
- package/dist/EndpointFactory-BmO0WnXE.cjs.map +0 -1
- package/dist/EndpointFactory-BnK_YkW1.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-CiqAZ5Mt.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-DoEQdC3r.cjs.map +0 -1
- package/dist/Queue-B7yRXQmL.cjs.map +0 -1
- package/dist/Queue-Bhzi2WQC.d.cts.map +0 -1
- package/dist/Queue-BoUA-e83.d.mts.map +0 -1
- package/dist/Queue-DpKTLl6E.mjs.map +0 -1
- package/dist/Subscriber-CIO3pwji.d.mts.map +0 -1
- package/dist/Subscriber-DQCaiOXF.d.cts.map +0 -1
- package/dist/SubscriberBuilder-B4YRTBng.mjs.map +0 -1
- package/dist/SubscriberBuilder-C2FRfd26.d.mts.map +0 -1
- package/dist/SubscriberBuilder-C2bCOuPT.cjs.map +0 -1
- package/dist/SubscriberBuilder-CjDGSTZc.d.cts.map +0 -1
- package/dist/Topic-Ct3Le8Wt.mjs +0 -103
- package/dist/Topic-Ct3Le8Wt.mjs.map +0 -1
- package/dist/Topic-D5rlM9wS.cjs.map +0 -1
- package/dist/Topic-D6blllEn.d.cts +0 -89
- package/dist/Topic-D6blllEn.d.cts.map +0 -1
- package/dist/Topic-DVvheJ_-.d.mts +0 -89
- package/dist/Topic-DVvheJ_-.d.mts.map +0 -1
- package/dist/functions-DKN6aQWJ.cjs.map +0 -1
- package/dist/functions-DlFm8HmH.mjs.map +0 -1
- package/dist/index-BI23K3wy.d.cts.map +0 -1
- package/dist/index-fnpjXiA-.d.mts +0 -26
- package/dist/index-fnpjXiA-.d.mts.map +0 -1
- package/dist/index-tE_119SX.d.cts +0 -26
- package/dist/index-tE_119SX.d.cts.map +0 -1
- package/dist/index-yb3fXNyH.d.mts.map +0 -1
- package/dist/lazyAccessors-BHtcqgz2.mjs.map +0 -1
- package/dist/lazyAccessors-Dx9NLwJZ.cjs.map +0 -1
- package/dist/queue/index.cjs.map +0 -1
- package/dist/queue/index.d.cts.map +0 -1
- package/dist/queue/index.d.mts.map +0 -1
- package/dist/queue/index.mjs.map +0 -1
- package/dist/topic/index.cjs.map +0 -1
- package/dist/topic/index.mjs.map +0 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { t as StandardSchemaV1 } from "./index-CeEtxDmK.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { a as EventFor, c as Topic } from "./Construct-QXnl3VqT.mjs";
|
|
3
|
+
import { n as BaseFunctionBuilder } from "./index-CjVEjOw0.mjs";
|
|
4
|
+
import { c as ServicesOf, r as Consumable } from "./construct-interface-_3zgxzXl.mjs";
|
|
4
5
|
import { t as HttpMethod } from "./types-DMuSQeLL.mjs";
|
|
5
|
-
import { C as Authorizer, O as SecurityScheme, S as MappedAudit, T as BuiltInSecuritySchemeId, _ as RlsBypass, c as EndpointSchemas, f as SessionFn, i as Endpoint, l as EndpointSurface, o as EndpointHandler, p as SuccessStatus, t as AuthorizeFn, v as RlsConfig, x as ActorExtractor } from "./Endpoint-
|
|
6
|
-
import { EventPublisher, MappedEvent } from "@geekmidas/events";
|
|
6
|
+
import { C as Authorizer, O as SecurityScheme, S as MappedAudit, T as BuiltInSecuritySchemeId, _ as RlsBypass, c as EndpointSchemas, f as SessionFn, i as Endpoint, l as EndpointSurface, o as EndpointHandler, p as SuccessStatus, t as AuthorizeFn, v as RlsConfig, x as ActorExtractor } from "./Endpoint-DtI7heFm.mjs";
|
|
7
7
|
import { RateLimitConfig } from "@geekmidas/rate-limit";
|
|
8
8
|
import { Service } from "@geekmidas/services";
|
|
9
9
|
import { AuditStorage, AuditableAction, ExtractStorageAuditAction } from "@geekmidas/audit";
|
|
10
10
|
import { Logger } from "@geekmidas/logger";
|
|
11
|
+
import { InferStandardSchema } from "@geekmidas/schema";
|
|
11
12
|
//#region src/endpoints/EndpointBuilder.d.ts
|
|
12
|
-
declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TSession = unknown,
|
|
13
|
+
declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TSession = unknown, TAuthorizers extends readonly string[] = readonly string[], TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>, TDatabase = undefined, TDatabaseServiceName extends string = string> extends BaseFunctionBuilder<TInput, OutSchema, TServices, TLogger, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName> {
|
|
13
14
|
readonly route: TRoute;
|
|
14
15
|
readonly method: TMethod;
|
|
15
16
|
protected schemas: TInput;
|
|
@@ -36,12 +37,26 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
36
37
|
_rlsConfig?: RlsConfig<TServices, TSession, TLogger>;
|
|
37
38
|
_rlsBypass?: boolean;
|
|
38
39
|
constructor(route: TRoute, method: TMethod);
|
|
39
|
-
_setPublisher(publisher: Service<TEventPublisherServiceName, TEventPublisher>): void;
|
|
40
40
|
_setAuditorStorage(storage: Service<TAuditStorageServiceName, TAuditStorage>): void;
|
|
41
41
|
_setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>): void;
|
|
42
42
|
description(description: string): this;
|
|
43
43
|
status(status: SuccessStatus): this;
|
|
44
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Publish `event` to `topic` once the handler has succeeded — repeatable,
|
|
46
|
+
* one call per event, to as many topics as the endpoint names. The topic
|
|
47
|
+
* becomes a dependency as with `.dependsOn([topic])`, so `services.<topic>`
|
|
48
|
+
* is there for events the handler decides on itself.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* router.post('/users')
|
|
53
|
+
* .event(users, {
|
|
54
|
+
* type: 'user.created',
|
|
55
|
+
* payload: (user) => ({ userId: user.id, email: user.email }),
|
|
56
|
+
* })
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
event<TTopic extends Topic<any, any>>(topic: TTopic, event: EventFor<TTopic, InferStandardSchema<OutSchema>>): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, TTopic['service']], TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
45
60
|
tags(tags: string[]): this;
|
|
46
61
|
memorySize(memorySize: number): this;
|
|
47
62
|
/**
|
|
@@ -63,22 +78,21 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
63
78
|
* ```
|
|
64
79
|
*/
|
|
65
80
|
responseType(type: string): this;
|
|
66
|
-
publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, T, TName, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
67
81
|
body<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'body'> & {
|
|
68
82
|
body: T;
|
|
69
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
83
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
70
84
|
search<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'query'> & {
|
|
71
85
|
query: T;
|
|
72
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
86
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
73
87
|
query<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'query'> & {
|
|
74
88
|
query: T;
|
|
75
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
89
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
76
90
|
params<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'params'> & {
|
|
77
91
|
params: T;
|
|
78
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
92
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
79
93
|
authorize(fn: AuthorizeFn<TServices, TLogger, TSession, TInput, TDatabase>): this;
|
|
80
94
|
rateLimit(config: RateLimitConfig): this;
|
|
81
|
-
authorizer(name: TAuthorizers[number] | 'none'): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
95
|
+
authorizer(name: TAuthorizers[number] | 'none'): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
82
96
|
/**
|
|
83
97
|
* Depend on constructs — a database, a bucket, a mail sender, a queue, a
|
|
84
98
|
* topic.
|
|
@@ -90,21 +104,21 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
90
104
|
* Constructs only. A `Service` does not match the shape, which is what keeps
|
|
91
105
|
* env sniffing confined to `.services()` and the explicit lift.
|
|
92
106
|
*/
|
|
93
|
-
dependsOn<const T extends readonly Consumable[]>(constructs: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...ServicesOf<T>], TLogger, OutSchema, TSession,
|
|
94
|
-
services<T extends Service[]>(services: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...T], TLogger, OutSchema, TSession,
|
|
95
|
-
logger<T extends Logger>(logger: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, T, OutSchema, TSession,
|
|
96
|
-
output<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, T, TSession,
|
|
107
|
+
dependsOn<const T extends readonly Consumable[]>(constructs: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...ServicesOf<T>], TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
108
|
+
services<T extends Service[]>(services: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...T], TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
109
|
+
logger<T extends Logger>(logger: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, T, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
110
|
+
output<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, T, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
97
111
|
/**
|
|
98
112
|
* Set the auditor storage service for this endpoint.
|
|
99
113
|
* This enables audit functionality and makes `auditor` available in the handler context.
|
|
100
114
|
* The audit action type is automatically inferred from the storage's generic parameter.
|
|
101
115
|
*/
|
|
102
|
-
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
116
|
+
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, T, TName, ExtractStorageAuditAction<T>, TDatabase, TDatabaseServiceName>;
|
|
103
117
|
/**
|
|
104
118
|
* Set the actor extractor function for audit records.
|
|
105
119
|
* The actor is extracted from the request context and attached to all audits.
|
|
106
120
|
*/
|
|
107
|
-
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
121
|
+
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
108
122
|
/**
|
|
109
123
|
* Add declarative audit definitions that are processed after the handler executes.
|
|
110
124
|
* Similar to `.event()` for events, but for audits.
|
|
@@ -138,7 +152,7 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
138
152
|
* })
|
|
139
153
|
* ```
|
|
140
154
|
*/
|
|
141
|
-
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
155
|
+
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, T, TName>;
|
|
142
156
|
/**
|
|
143
157
|
* Configure RLS (Row-Level Security) context for this endpoint.
|
|
144
158
|
* Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.
|
|
@@ -174,11 +188,11 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
174
188
|
*/
|
|
175
189
|
rlsBypass(): this;
|
|
176
190
|
input(_schema: any): any;
|
|
177
|
-
handle(fn: EndpointHandler<TInput, TServices, TLogger, OutSchema, TSession, TDatabase, TAuditStorage, TAuditAction>): Endpoint<TRoute, TMethod, TInput, OutSchema, TServices, TLogger, TSession,
|
|
191
|
+
handle(fn: EndpointHandler<TInput, TServices, TLogger, OutSchema, TSession, TDatabase, TAuditStorage, TAuditAction>): Endpoint<TRoute, TMethod, TInput, OutSchema, TServices, TLogger, TSession, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
178
192
|
}
|
|
179
193
|
//#endregion
|
|
180
194
|
//#region src/endpoints/EndpointFactory.d.ts
|
|
181
|
-
declare class EndpointFactory<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown,
|
|
195
|
+
declare class EndpointFactory<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown, TAuthorizers extends readonly string[] = readonly string[], TAuditStorage extends AuditStorage<any> | undefined = undefined, TAuditStorageServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = ExtractStorageAuditAction<NonNullable<TAuditStorage>>, TDatabase = undefined, TDatabaseServiceName extends string = string, TSecuritySchemes extends Record<string, SecurityScheme> = Record<string, SecurityScheme>, TRlsConfig extends RlsConfig<TServices, TSession, TLogger> | undefined = undefined> {
|
|
182
196
|
private defaultServices;
|
|
183
197
|
/**
|
|
184
198
|
* The constructs `.dependsOn()` was given, kept alongside the services they
|
|
@@ -193,7 +207,6 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
193
207
|
private defaultConstructs;
|
|
194
208
|
private basePath;
|
|
195
209
|
private defaultAuthorizeFn?;
|
|
196
|
-
private defaultEventPublisher;
|
|
197
210
|
private defaultSessionExtractor?;
|
|
198
211
|
private defaultLogger;
|
|
199
212
|
/**
|
|
@@ -211,9 +224,9 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
211
224
|
private defaultActorExtractor?;
|
|
212
225
|
private customSecuritySchemes;
|
|
213
226
|
private defaultRlsConfig?;
|
|
214
|
-
constructor({ basePath, defaultAuthorizeFn, defaultLogger, defaultSessionExtractor, defaultServices, defaultConstructs,
|
|
227
|
+
constructor({ basePath, defaultAuthorizeFn, defaultLogger, defaultSessionExtractor, defaultServices, defaultConstructs, availableAuthorizers, defaultAuthorizerName, defaultAuditorStorage, defaultDatabaseService, defaultActorExtractor, customSecuritySchemes, defaultRlsConfig, surface }: EndpointFactoryOptions<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>);
|
|
215
228
|
static joinPaths<TBasePath extends string, P extends string>(path: P, basePath?: TBasePath): JoinPaths<TBasePath, P>;
|
|
216
|
-
authorizers<const T extends readonly string[]>(authorizers: T): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
229
|
+
authorizers<const T extends readonly string[]>(authorizers: T): EndpointFactory<TServices, TBasePath, TLogger, TSession, T, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
217
230
|
/**
|
|
218
231
|
* Define custom security schemes for this factory.
|
|
219
232
|
* These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).
|
|
@@ -230,7 +243,7 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
230
243
|
* });
|
|
231
244
|
* ```
|
|
232
245
|
*/
|
|
233
|
-
securitySchemes<T extends Record<string, SecurityScheme>>(schemes: T): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
246
|
+
securitySchemes<T extends Record<string, SecurityScheme>>(schemes: T): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes & T, TRlsConfig>;
|
|
234
247
|
/**
|
|
235
248
|
* Set the default authorizer for all endpoints created from this factory.
|
|
236
249
|
* Individual endpoints can override this by calling `.authorizer()` on the builder.
|
|
@@ -241,9 +254,9 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
241
254
|
* - Custom security scheme names defined via `.securitySchemes()`
|
|
242
255
|
* - 'none' to disable authorization
|
|
243
256
|
*/
|
|
244
|
-
authorizer(name: BuiltInSecuritySchemeId | keyof TSecuritySchemes | TAuthorizers[number] | 'none'): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
245
|
-
route<TPath extends string>(path: TPath): EndpointFactory<TServices, JoinPaths<TBasePath, TPath>, TLogger, TSession,
|
|
246
|
-
authorize(fn: AuthorizeFn<TServices, TLogger, TSession, undefined, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
257
|
+
authorizer(name: BuiltInSecuritySchemeId | keyof TSecuritySchemes | TAuthorizers[number] | 'none'): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
258
|
+
route<TPath extends string>(path: TPath): EndpointFactory<TServices, JoinPaths<TBasePath, TPath>, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
259
|
+
authorize(fn: AuthorizeFn<TServices, TLogger, TSession, undefined, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
247
260
|
/**
|
|
248
261
|
* Depend on constructs — a database, a bucket, a mail sender, a queue, a
|
|
249
262
|
* topic.
|
|
@@ -255,27 +268,26 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
255
268
|
* Constructs only. A `Service` does not match the shape, which is what keeps
|
|
256
269
|
* env sniffing confined to `.services()` and the explicit lift.
|
|
257
270
|
*/
|
|
258
|
-
dependsOn<const S extends readonly Consumable[]>(constructs: S): EndpointFactory<[...ServicesOf<S>, ...TServices], TBasePath, TLogger, TSession,
|
|
259
|
-
services<S extends Service[]>(services: S): EndpointFactory<[...S, ...TServices], TBasePath, TLogger, TSession,
|
|
260
|
-
logger<L extends Logger>(logger: L): EndpointFactory<TServices, TBasePath, L, TSession,
|
|
261
|
-
|
|
262
|
-
session<T>(session: SessionFn<TServices, TLogger, T, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, T, TEventPublisher, TEventPublisherServiceName, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<TServices, T, TLogger> | undefined>;
|
|
271
|
+
dependsOn<const S extends readonly Consumable[]>(constructs: S): EndpointFactory<[...ServicesOf<S>, ...TServices], TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<[...ServicesOf<S>, ...TServices], TSession, TLogger> | undefined>;
|
|
272
|
+
services<S extends Service[]>(services: S): EndpointFactory<[...S, ...TServices], TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<[...S, ...TServices], TSession, TLogger> | undefined>;
|
|
273
|
+
logger<L extends Logger>(logger: L): EndpointFactory<TServices, TBasePath, L, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<TServices, TSession, L> | undefined>;
|
|
274
|
+
session<T>(session: SessionFn<TServices, TLogger, T, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, T, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<TServices, T, TLogger> | undefined>;
|
|
263
275
|
/**
|
|
264
276
|
* Set the database service for endpoints created from this factory.
|
|
265
277
|
* The database will be available in handler context as `db`.
|
|
266
278
|
*/
|
|
267
|
-
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
279
|
+
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, T, TName, TSecuritySchemes, TRlsConfig>;
|
|
268
280
|
/**
|
|
269
281
|
* Set the auditor storage service for endpoints created from this factory.
|
|
270
282
|
* This enables audit functionality and makes `auditor` available in handler context.
|
|
271
283
|
* The audit action type is automatically inferred from the storage's generic parameter.
|
|
272
284
|
*/
|
|
273
|
-
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
285
|
+
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, T, TName, ExtractStorageAuditAction<T>, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
274
286
|
/**
|
|
275
287
|
* Set the actor extractor function for endpoints created from this factory.
|
|
276
288
|
* The actor is extracted from the request context and attached to all audits.
|
|
277
289
|
*/
|
|
278
|
-
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
290
|
+
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
279
291
|
/**
|
|
280
292
|
* Set the RLS (Row-Level Security) configuration for endpoints created from this factory.
|
|
281
293
|
* This enables automatic PostgreSQL session variable setting for RLS policies.
|
|
@@ -294,18 +306,18 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
294
306
|
* });
|
|
295
307
|
* ```
|
|
296
308
|
*/
|
|
297
|
-
rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(config: TConfig): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
309
|
+
rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(config: TConfig): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TConfig>;
|
|
298
310
|
private createBuilder;
|
|
299
|
-
post<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "POST", {}, TServices, TLogger, undefined, TSession,
|
|
300
|
-
get<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "GET", {}, TServices, TLogger, undefined, TSession,
|
|
301
|
-
put<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PUT", {}, TServices, TLogger, undefined, TSession,
|
|
302
|
-
delete<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "DELETE", {}, TServices, TLogger, undefined, TSession,
|
|
303
|
-
patch<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PATCH", {}, TServices, TLogger, undefined, TSession,
|
|
304
|
-
options<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "OPTIONS", {}, TServices, TLogger, undefined, TSession,
|
|
311
|
+
post<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "POST", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
312
|
+
get<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "GET", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
313
|
+
put<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PUT", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
314
|
+
delete<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "DELETE", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
315
|
+
patch<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PATCH", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
316
|
+
options<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "OPTIONS", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
305
317
|
}
|
|
306
318
|
type RemoveTrailingSlash<T extends string> = T extends `${infer Rest}/` ? Rest extends '' ? T : Rest : T;
|
|
307
319
|
type JoinPaths<TBasePath extends string, TPath extends string> = RemoveTrailingSlash<TBasePath extends '' ? TPath : TPath extends '' ? TBasePath : TBasePath extends '/' ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest}` ? `${TBasePath}/${Rest}` : `${TBasePath}/${TPath}`>;
|
|
308
|
-
interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown,
|
|
320
|
+
interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown, TAuthorizers extends readonly string[] = readonly string[], TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TSecuritySchemes extends Record<string, SecurityScheme> = Record<string, SecurityScheme>, TRlsConfig extends RlsConfig<TServices, TSession, TLogger> | undefined = undefined> {
|
|
309
321
|
defaultServices?: TServices;
|
|
310
322
|
/** Construct ids from `.dependsOn()`, carried so a route can declare edges. */
|
|
311
323
|
defaultConstructs?: string[];
|
|
@@ -313,8 +325,6 @@ interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath ext
|
|
|
313
325
|
defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession, undefined, TDatabase>;
|
|
314
326
|
defaultLogger?: TLogger;
|
|
315
327
|
defaultSessionExtractor?: SessionFn<TServices, TLogger, TSession, TDatabase>;
|
|
316
|
-
defaultEventPublisher?: Service<TEventPublisherServiceName, TEventPublisher>;
|
|
317
|
-
defaultEvents?: MappedEvent<TEventPublisher, undefined>[];
|
|
318
328
|
availableAuthorizers?: Authorizer[];
|
|
319
329
|
defaultAuthorizerName?: TAuthorizers[number];
|
|
320
330
|
defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;
|
|
@@ -336,4 +346,4 @@ interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath ext
|
|
|
336
346
|
}
|
|
337
347
|
//#endregion
|
|
338
348
|
export { EndpointBuilder as n, EndpointFactory as t };
|
|
339
|
-
//# sourceMappingURL=EndpointFactory-
|
|
349
|
+
//# sourceMappingURL=EndpointFactory-CgMDvERK.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EndpointFactory-CgMDvERK.d.mts","names":[],"sources":["../src/endpoints/EndpointBuilder.ts","../src/endpoints/EndpointFactory.ts"],"mappings":";;;;;;;;;;;;cAyCa,gBACZ,uBACA,gBAAgB,YAChB,eAAe,sBACf,kBAAkB,gBAClB,gBAAgB,SAAS,QACzB,kBAAkB,0CAClB,oBACA,4DACA,sBAAsB,sCACtB,kDACA,qBAAqB,mCAAmC,kCAIxD,uBACA,sDACS,oBACT,QACA,WACA,WACA,SACA,eACA,0BACA,WACA;WA6BU,OAAO;WACP,QAAQ;YA5BR,SAAS;YACT;YACA,UAAU;YACV;YACA;YACA;EACV,aAAa,UAAU,WAAW,SAAS,UAAU;EAErD,YAAY,YAAY,WAAW,SAAS,UAAU,QAAQ;EAE9D,aAAa;EACb,uBAAuB;EACvB,kBAAkB;EAClB,kBAAkB,eAAe,WAAW,UAAU;EACtD,SAAS,YAAY,cAAc;;;;;;;EAOnC,UAAW;EACX,wBAAwB,eAAe;EACvC,aAAa,UAAU,WAAW,UAAU;EAC5C;EAEA,YACU,OAAO,QACP,QAAQ;EAMlB,mBACC,SAAS,QAAQ,0BAA0B;EAM5C,oBAAoB,SAAS,QAAQ,sBAAsB;EAI3D,YAAY;EAIZ,OAAO,QAAQ;;;;;;;;;;;;;;;;EAmBf,MAAM,eAAe,iBACpB,OAAO,QACP,OAAO,SAAS,QAAQ,oBAAoB,cAC1C,gBACF,QACA,SACA,YACI,WAAW,oBACf,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAmBD,KAAK;EAIL,WAAW;;;;;;;;;;;;;;;;;;;EAsBX,aAAa;EAIb,KAAK,UAAU,kBACd,QAAQ,IACN,gBACF,QACA,SACA,KAAK;IAAoB,MAAM;KAC/B,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAOD,OAAO,UAAU,kBAChB,QAAQ,IACN,gBACF,QACA,SACA,KAAK;IAAqB,OAAO;KACjC,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAOD,MAAM,UAAU,kBACf,QAAQ,IACN,gBACF,QACA,SACA,KAAK;IAAqB,OAAO;KACjC,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAKD,OAAO,UAAU,kBAChB,QAAQ,IACN,gBACF,QACA,SACA,KAAK;IAAsB,QAAQ;KACnC,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAOD,UACC,IAAI,YAAY,WAAW,SAAS,UAAU,QAAQ;EAKvD,UAAU,QAAQ;EAIlB,WACC,MAAM,gCACJ,gBACF,QACA,SACA,QACA,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;;;;;;;;;;;;EAkCD,gBAAgB,mBAAmB,cAClC,YAAY,IACV,gBACF,QACA,SACA,YACI,cAAc,WAAW,KAC7B,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAkCD,SAAS,UAAU,WAClB,UAAU,IACR,gBACF,QACA,SACA,YACI,cAAc,IAClB,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAwBD,OAAO,UAAU,QAChB,QAAQ,IACN,gBACF,QACA,SACA,QACA,WACA,GACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;EAqBD,OAAO,UAAU,kBAChB,QAAQ,IACN,gBACF,QACA,SACA,QACA,WACA,SACA,GACA,UACA,cACA,eACA,0BACA,cACA,WACA;;;;;;EA0BQ,QAAQ,UAAU,mBAAmB,sBAC7C,SAAS,QAAQ,OAAO,KACtB,gBACF,QACA,SACA,QACA,WACA,SACA,WACA,UACA,cACA,GACA,OACA,0BAA0B,IAC1B,WACA;;;;;EA4BD,MACC,WAAW,eAAe,WAAW,UAAU,WAC7C,gBACF,QACA,SACA,QACA,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,WACA;;;;;;;;;;;;;;;;;;EAsBD,MAAM,QAAQ,YAAY,cAAc;;;;;;;;;;;;;;;;EAmB/B,SAAS,GAAG,sBACpB,QAAQ,WAAW,OAAO,KAAK,QAAQ,OAAO,KAC5C,gBACF,QACA,SACA,QACA,WACA,SACA,WACA,UACA,cACA,eACA,0BACA,cACA,GACA;;;;;;;;;;;;;;;;;;;;EA6CD,IACC,QAAQ,UAAU,WAAW,UAAU,mBAAmB;;;;;;;;;;;;;;EAyB3D;EAKA,MAAM;EAMN,OACC,IAAI,gBACH,QACA,WACA,SACA,WACA,UACA,WACA,eACA,gBAEC,SACF,QACA,SACA,QACA,WACA,WACA,SACA,UACA,eACA,0BACA,cACA,WACA;;;;cC1rBW,gBACZ,kBAAkB,gBAClB,+BACA,gBAAgB,SAAS,QACzB,oBACA,4DACA,sBAAsB,2CACtB,kDACA,qBAAqB,mCAGjB,0BAA0B,YAAY,iBAC1C,uBACA,8CACA,yBAAyB,eAAe,kBAAkB,eAEzD,iBAED,mBACG,UAAU,WAAW,UAAU;UAG1B;;;;;;;;;;;UAWA;UACA;UACA;UAOA;UAMA;;;;;;;;UAQA;UACA;UACA;UACA;UAGA;UAGA;UACA;UACA;EAER,cACC,UACA,oBACA,eACA,yBAEA,iBACA,mBACA,sBACA,uBACA,uBACA,wBACA,uBACA,uBACA,kBACA,WACE,uBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,WACA,sBACA,kBACA;SAuBM,UAAU,0BAA0B,kBAC1C,MAAM,GACN,WAAU,YACR,UAAU,WAAW;EAmCxB,kBAAkB,6BACjB,aAAa,IACX,gBACF,WACA,WACA,SACA,UACA,GACA,eACA,0BACA,cACA,WACA,sBACA,kBACA;;;;;;;;;;;;;;;;;EAqDD,gBAAgB,UAAU,eAAe,iBACxC,SAAS,IACP,gBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,mBAAmB,GACnB;;;;;;;;;;;EA8CD,WACC,MACG,gCACM,mBACN,gCAED,gBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA;EAkDD,MAAM,sBACL,MAAM,QACJ,gBACF,WACA,UAAU,WAAW,QACrB,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA;EAmCD,UACC,IAAI,YAAY,WAAW,SAAS,qBAAqB,aACvD,gBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA;;;;;;;;;;;;EA6CD,gBAAgB,mBAAmB,cAClC,YAAY,IACV,oBACE,WAAW,OAAO,YACtB,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA,cAAc,WAAW,OAAO,YAAY,UAAU;EA6BvD,SAAS,UAAU,WAClB,UAAU,IACR,oBACE,MAAM,YACV,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA,cAAc,MAAM,YAAY,UAAU;EA2C3C,OAAO,UAAU,QAChB,QAAQ,IACN,gBACF,WACA,WACA,GACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA,UAAU,WAAW,UAAU;EAiDhC,QAAQ,GACP,SAAS,UAAU,WAAW,SAAS,GAAG,aACxC,gBACF,WACA,WACA,SACA,GACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA,UAAU,WAAW,GAAG;;;;;EAgDzB,SAAS,GAAG,sBACX,QAAQ,WAAW,OAAO,KAAK,QAAQ,OAAO,KAC5C,gBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,GACA,OACA,kBACA;;;;;;EAmDD,QAAQ,UAAU,mBAAmB,sBACpC,SAAS,QAAQ,OAAO,KACtB,gBACF,WACA,WACA,SACA,UACA,cACA,GACA,OACA,0BAA0B,IAC1B,WACA,sBACA,kBACA;;;;;EA0CD,MACC,WAAW,eAAe,WAAW,UAAU,WAC7C,gBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA;;;;;;;;;;;;;;;;;;;EAmDD,IAAI,gBAAgB,UAAU,WAAW,UAAU,UAClD,QAAQ,UACN,gBACF,WACA,WACA,SACA,UACA,cACA,eACA,0BACA,cACA,WACA,sBACA,kBACA;UAiCO;EA8FR,KAAK,sBAAsB,MAAM,QAAK,gBAAA,oBAAA,uBAAA,QAAA,mBAAA,YAAA,wBAAA,6BAAA,YAAA,UAAA,2BA2CN,UAAI,wBACN,YAAI,QAAA,YAAA,QAAA,UAAA,wBAAA,cAAA,aAAA,cAAA,aAAA,sBAAA,WAAA,oBAAA,UAAA,cAAA,eAAA,0BAAA,cAAA,WAAA;EAxClC,IAAI,sBAAsB,MAAM,QAAK,gBAAA,oBAAA,uBAAA,QAAA,mBAAA,YAAA,wBAAA,6BAAA,YAAA,UAAA,2BAuCL,UAAI,wBACN,YAAI,QAAA,YAAA,QAAA,UAAA,wBAAA,cAAA,aAAA,cAAA,aAAA,qBAAA,WAAA,oBAAA,UAAA,cAAA,eAAA,0BAAA,cAAA,WAAA;EApClC,IAAI,sBAAsB,MAAM,QAAK,gBAAA,oBAAA,uBAAA,QAAA,mBAAA,YAAA,wBAAA,6BAAA,YAAA,UAAA,2BAmCL,UAAI,wBACN,YAAI,QAAA,YAAA,QAAA,UAAA,wBAAA,cAAA,aAAA,cAAA,aAAA,qBAAA,WAAA,oBAAA,UAAA,cAAA,eAAA,0BAAA,cAAA,WAAA;EAhClC,OAAO,sBAAsB,MAAM,QAAK,gBAAA,oBAAA,uBAAA,QAAA,mBAAA,YAAA,wBAAA,6BAAA,YAAA,UAAA,2BA+BR,UAAI,wBACN,YAAI,QAAA,YAAA,QAAA,UAAA,wBAAA,cAAA,aAAA,cAAA,aAAA,wBAAA,WAAA,oBAAA,UAAA,cAAA,eAAA,0BAAA,cAAA,WAAA;EA5BlC,MAAM,sBAAsB,MAAM,QAAK,gBAAA,oBAAA,uBAAA,QAAA,mBAAA,YAAA,wBAAA,6BAAA,YAAA,UAAA,2BA2BP,UAAI,wBACN,YAAI,QAAA,YAAA,QAAA,UAAA,wBAAA,cAAA,aAAA,cAAA,aAAA,uBAAA,WAAA,oBAAA,UAAA,cAAA,eAAA,0BAAA,cAAA,WAAA;EAxBlC,QAAQ,sBAAsB,MAAM,QAAK,gBAAA,oBAAA,uBAAA,QAAA,mBAAA,YAAA,wBAAA,6BAAA,YAAA,UAAA,2BAuBT,UAAI,wBACN,YAAI,QAAA,YAAA,QAAA,UAAA,wBAAA,cAAA,aAAA,cAAA,aAAA,yBAAA,WAAA,oBAAA,UAAA,cAAA,eAAA,0BAAA,cAAA,WAAA;;KAnBvB,oBAAoB,oBAAoB,mBAAmB,UACpE,kBACC,IACA,OACD;KAES,UACX,0BACA,wBACG,oBACH,uBACG,QACA,mBACC,YACA,wBACC,6BACC,YACI,UACL,2BAA2B,UAC1B,wBAAwB,YACpB,QAAQ,YACR,QAAQ,UACZ,wBAAwB,YACpB,aAAa,YACb,aAAa;UAGP,uBAChB,kBAAkB,gBAClB,+BACA,gBAAgB,SAAS,QACzB,oBACA,4DACA,sBAAsB,sCACtB,kDACA,uBACA,8CACA,yBAAyB,eAAe,kBAAkB,eAEzD,iBAED,mBACG,UAAU,WAAW,UAAU;EAGlC,kBAAkB;;EAElB;EACA,WAAW;EACX,qBAAqB,YACpB,WACA,SACA,qBAEA;EAED,gBAAgB;EAChB,0BAA0B,UAAU,WAAW,SAAS,UAAU;EAClE,uBAAuB;EACvB,wBAAwB;EACxB,wBAAwB,QAAQ,0BAA0B;EAC1D,yBAAyB,QAAQ,sBAAsB;EACvD,wBAAwB,eAAe,WAAW,UAAU;EAC5D,wBAAwB;EACxB,mBAAmB;;;;;;;;;;;EAWnB,SAAS"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { t as StandardSchemaV1 } from "./index-CeEtxDmK.cjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { a as EventFor, c as Topic } from "./Construct-BQALFCh2.cjs";
|
|
3
|
+
import { n as BaseFunctionBuilder } from "./index-B0kxstwf.cjs";
|
|
4
|
+
import { c as ServicesOf, r as Consumable } from "./construct-interface-_xi4BPN8.cjs";
|
|
4
5
|
import { t as HttpMethod } from "./types-DMuSQeLL.cjs";
|
|
5
|
-
import { C as Authorizer, O as SecurityScheme, S as MappedAudit, T as BuiltInSecuritySchemeId, _ as RlsBypass, c as EndpointSchemas, f as SessionFn, i as Endpoint, l as EndpointSurface, o as EndpointHandler, p as SuccessStatus, t as AuthorizeFn, v as RlsConfig, x as ActorExtractor } from "./Endpoint-
|
|
6
|
-
import { EventPublisher, MappedEvent } from "@geekmidas/events";
|
|
6
|
+
import { C as Authorizer, O as SecurityScheme, S as MappedAudit, T as BuiltInSecuritySchemeId, _ as RlsBypass, c as EndpointSchemas, f as SessionFn, i as Endpoint, l as EndpointSurface, o as EndpointHandler, p as SuccessStatus, t as AuthorizeFn, v as RlsConfig, x as ActorExtractor } from "./Endpoint-Dp5AKIXl.cjs";
|
|
7
7
|
import { Logger } from "@geekmidas/logger";
|
|
8
|
+
import { InferStandardSchema } from "@geekmidas/schema";
|
|
8
9
|
import { Service } from "@geekmidas/services";
|
|
9
10
|
import { AuditStorage, AuditableAction, ExtractStorageAuditAction } from "@geekmidas/audit";
|
|
10
11
|
import { RateLimitConfig } from "@geekmidas/rate-limit";
|
|
11
12
|
//#region src/endpoints/EndpointBuilder.d.ts
|
|
12
|
-
declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TSession = unknown,
|
|
13
|
+
declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod, TInput extends EndpointSchemas = {}, TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TSession = unknown, TAuthorizers extends readonly string[] = readonly string[], TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>, TDatabase = undefined, TDatabaseServiceName extends string = string> extends BaseFunctionBuilder<TInput, OutSchema, TServices, TLogger, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName> {
|
|
13
14
|
readonly route: TRoute;
|
|
14
15
|
readonly method: TMethod;
|
|
15
16
|
protected schemas: TInput;
|
|
@@ -36,12 +37,26 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
36
37
|
_rlsConfig?: RlsConfig<TServices, TSession, TLogger>;
|
|
37
38
|
_rlsBypass?: boolean;
|
|
38
39
|
constructor(route: TRoute, method: TMethod);
|
|
39
|
-
_setPublisher(publisher: Service<TEventPublisherServiceName, TEventPublisher>): void;
|
|
40
40
|
_setAuditorStorage(storage: Service<TAuditStorageServiceName, TAuditStorage>): void;
|
|
41
41
|
_setDatabaseService(service: Service<TDatabaseServiceName, TDatabase>): void;
|
|
42
42
|
description(description: string): this;
|
|
43
43
|
status(status: SuccessStatus): this;
|
|
44
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Publish `event` to `topic` once the handler has succeeded — repeatable,
|
|
46
|
+
* one call per event, to as many topics as the endpoint names. The topic
|
|
47
|
+
* becomes a dependency as with `.dependsOn([topic])`, so `services.<topic>`
|
|
48
|
+
* is there for events the handler decides on itself.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* router.post('/users')
|
|
53
|
+
* .event(users, {
|
|
54
|
+
* type: 'user.created',
|
|
55
|
+
* payload: (user) => ({ userId: user.id, email: user.email }),
|
|
56
|
+
* })
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
event<TTopic extends Topic<any, any>>(topic: TTopic, event: EventFor<TTopic, InferStandardSchema<OutSchema>>): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, TTopic['service']], TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
45
60
|
tags(tags: string[]): this;
|
|
46
61
|
memorySize(memorySize: number): this;
|
|
47
62
|
/**
|
|
@@ -63,22 +78,21 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
63
78
|
* ```
|
|
64
79
|
*/
|
|
65
80
|
responseType(type: string): this;
|
|
66
|
-
publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, T, TName, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
67
81
|
body<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'body'> & {
|
|
68
82
|
body: T;
|
|
69
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
83
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
70
84
|
search<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'query'> & {
|
|
71
85
|
query: T;
|
|
72
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
86
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
73
87
|
query<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'query'> & {
|
|
74
88
|
query: T;
|
|
75
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
89
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
76
90
|
params<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, Omit<TInput, 'params'> & {
|
|
77
91
|
params: T;
|
|
78
|
-
}, TServices, TLogger, OutSchema, TSession,
|
|
92
|
+
}, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
79
93
|
authorize(fn: AuthorizeFn<TServices, TLogger, TSession, TInput, TDatabase>): this;
|
|
80
94
|
rateLimit(config: RateLimitConfig): this;
|
|
81
|
-
authorizer(name: TAuthorizers[number] | 'none'): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
95
|
+
authorizer(name: TAuthorizers[number] | 'none'): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
82
96
|
/**
|
|
83
97
|
* Depend on constructs — a database, a bucket, a mail sender, a queue, a
|
|
84
98
|
* topic.
|
|
@@ -90,21 +104,21 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
90
104
|
* Constructs only. A `Service` does not match the shape, which is what keeps
|
|
91
105
|
* env sniffing confined to `.services()` and the explicit lift.
|
|
92
106
|
*/
|
|
93
|
-
dependsOn<const T extends readonly Consumable[]>(constructs: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...ServicesOf<T>], TLogger, OutSchema, TSession,
|
|
94
|
-
services<T extends Service[]>(services: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...T], TLogger, OutSchema, TSession,
|
|
95
|
-
logger<T extends Logger>(logger: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, T, OutSchema, TSession,
|
|
96
|
-
output<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, T, TSession,
|
|
107
|
+
dependsOn<const T extends readonly Consumable[]>(constructs: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...ServicesOf<T>], TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
108
|
+
services<T extends Service[]>(services: T): EndpointBuilder<TRoute, TMethod, TInput, [...TServices, ...T], TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
109
|
+
logger<T extends Logger>(logger: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, T, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
110
|
+
output<T extends StandardSchemaV1>(schema: T): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, T, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
97
111
|
/**
|
|
98
112
|
* Set the auditor storage service for this endpoint.
|
|
99
113
|
* This enables audit functionality and makes `auditor` available in the handler context.
|
|
100
114
|
* The audit action type is automatically inferred from the storage's generic parameter.
|
|
101
115
|
*/
|
|
102
|
-
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
116
|
+
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, T, TName, ExtractStorageAuditAction<T>, TDatabase, TDatabaseServiceName>;
|
|
103
117
|
/**
|
|
104
118
|
* Set the actor extractor function for audit records.
|
|
105
119
|
* The actor is extracted from the request context and attached to all audits.
|
|
106
120
|
*/
|
|
107
|
-
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
121
|
+
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
108
122
|
/**
|
|
109
123
|
* Add declarative audit definitions that are processed after the handler executes.
|
|
110
124
|
* Similar to `.event()` for events, but for audits.
|
|
@@ -138,7 +152,7 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
138
152
|
* })
|
|
139
153
|
* ```
|
|
140
154
|
*/
|
|
141
|
-
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession,
|
|
155
|
+
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointBuilder<TRoute, TMethod, TInput, TServices, TLogger, OutSchema, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, T, TName>;
|
|
142
156
|
/**
|
|
143
157
|
* Configure RLS (Row-Level Security) context for this endpoint.
|
|
144
158
|
* Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.
|
|
@@ -174,11 +188,11 @@ declare class EndpointBuilder<TRoute extends string, TMethod extends HttpMethod,
|
|
|
174
188
|
*/
|
|
175
189
|
rlsBypass(): this;
|
|
176
190
|
input(_schema: any): any;
|
|
177
|
-
handle(fn: EndpointHandler<TInput, TServices, TLogger, OutSchema, TSession, TDatabase, TAuditStorage, TAuditAction>): Endpoint<TRoute, TMethod, TInput, OutSchema, TServices, TLogger, TSession,
|
|
191
|
+
handle(fn: EndpointHandler<TInput, TServices, TLogger, OutSchema, TSession, TDatabase, TAuditStorage, TAuditAction>): Endpoint<TRoute, TMethod, TInput, OutSchema, TServices, TLogger, TSession, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
178
192
|
}
|
|
179
193
|
//#endregion
|
|
180
194
|
//#region src/endpoints/EndpointFactory.d.ts
|
|
181
|
-
declare class EndpointFactory<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown,
|
|
195
|
+
declare class EndpointFactory<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown, TAuthorizers extends readonly string[] = readonly string[], TAuditStorage extends AuditStorage<any> | undefined = undefined, TAuditStorageServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = ExtractStorageAuditAction<NonNullable<TAuditStorage>>, TDatabase = undefined, TDatabaseServiceName extends string = string, TSecuritySchemes extends Record<string, SecurityScheme> = Record<string, SecurityScheme>, TRlsConfig extends RlsConfig<TServices, TSession, TLogger> | undefined = undefined> {
|
|
182
196
|
private defaultServices;
|
|
183
197
|
/**
|
|
184
198
|
* The constructs `.dependsOn()` was given, kept alongside the services they
|
|
@@ -193,7 +207,6 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
193
207
|
private defaultConstructs;
|
|
194
208
|
private basePath;
|
|
195
209
|
private defaultAuthorizeFn?;
|
|
196
|
-
private defaultEventPublisher;
|
|
197
210
|
private defaultSessionExtractor?;
|
|
198
211
|
private defaultLogger;
|
|
199
212
|
/**
|
|
@@ -211,9 +224,9 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
211
224
|
private defaultActorExtractor?;
|
|
212
225
|
private customSecuritySchemes;
|
|
213
226
|
private defaultRlsConfig?;
|
|
214
|
-
constructor({ basePath, defaultAuthorizeFn, defaultLogger, defaultSessionExtractor, defaultServices, defaultConstructs,
|
|
227
|
+
constructor({ basePath, defaultAuthorizeFn, defaultLogger, defaultSessionExtractor, defaultServices, defaultConstructs, availableAuthorizers, defaultAuthorizerName, defaultAuditorStorage, defaultDatabaseService, defaultActorExtractor, customSecuritySchemes, defaultRlsConfig, surface }: EndpointFactoryOptions<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>);
|
|
215
228
|
static joinPaths<TBasePath extends string, P extends string>(path: P, basePath?: TBasePath): JoinPaths<TBasePath, P>;
|
|
216
|
-
authorizers<const T extends readonly string[]>(authorizers: T): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
229
|
+
authorizers<const T extends readonly string[]>(authorizers: T): EndpointFactory<TServices, TBasePath, TLogger, TSession, T, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
217
230
|
/**
|
|
218
231
|
* Define custom security schemes for this factory.
|
|
219
232
|
* These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).
|
|
@@ -230,7 +243,7 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
230
243
|
* });
|
|
231
244
|
* ```
|
|
232
245
|
*/
|
|
233
|
-
securitySchemes<T extends Record<string, SecurityScheme>>(schemes: T): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
246
|
+
securitySchemes<T extends Record<string, SecurityScheme>>(schemes: T): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes & T, TRlsConfig>;
|
|
234
247
|
/**
|
|
235
248
|
* Set the default authorizer for all endpoints created from this factory.
|
|
236
249
|
* Individual endpoints can override this by calling `.authorizer()` on the builder.
|
|
@@ -241,9 +254,9 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
241
254
|
* - Custom security scheme names defined via `.securitySchemes()`
|
|
242
255
|
* - 'none' to disable authorization
|
|
243
256
|
*/
|
|
244
|
-
authorizer(name: BuiltInSecuritySchemeId | keyof TSecuritySchemes | TAuthorizers[number] | 'none'): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
245
|
-
route<TPath extends string>(path: TPath): EndpointFactory<TServices, JoinPaths<TBasePath, TPath>, TLogger, TSession,
|
|
246
|
-
authorize(fn: AuthorizeFn<TServices, TLogger, TSession, undefined, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
257
|
+
authorizer(name: BuiltInSecuritySchemeId | keyof TSecuritySchemes | TAuthorizers[number] | 'none'): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
258
|
+
route<TPath extends string>(path: TPath): EndpointFactory<TServices, JoinPaths<TBasePath, TPath>, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
259
|
+
authorize(fn: AuthorizeFn<TServices, TLogger, TSession, undefined, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
247
260
|
/**
|
|
248
261
|
* Depend on constructs — a database, a bucket, a mail sender, a queue, a
|
|
249
262
|
* topic.
|
|
@@ -255,27 +268,26 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
255
268
|
* Constructs only. A `Service` does not match the shape, which is what keeps
|
|
256
269
|
* env sniffing confined to `.services()` and the explicit lift.
|
|
257
270
|
*/
|
|
258
|
-
dependsOn<const S extends readonly Consumable[]>(constructs: S): EndpointFactory<[...ServicesOf<S>, ...TServices], TBasePath, TLogger, TSession,
|
|
259
|
-
services<S extends Service[]>(services: S): EndpointFactory<[...S, ...TServices], TBasePath, TLogger, TSession,
|
|
260
|
-
logger<L extends Logger>(logger: L): EndpointFactory<TServices, TBasePath, L, TSession,
|
|
261
|
-
|
|
262
|
-
session<T>(session: SessionFn<TServices, TLogger, T, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, T, TEventPublisher, TEventPublisherServiceName, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<TServices, T, TLogger> | undefined>;
|
|
271
|
+
dependsOn<const S extends readonly Consumable[]>(constructs: S): EndpointFactory<[...ServicesOf<S>, ...TServices], TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<[...ServicesOf<S>, ...TServices], TSession, TLogger> | undefined>;
|
|
272
|
+
services<S extends Service[]>(services: S): EndpointFactory<[...S, ...TServices], TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<[...S, ...TServices], TSession, TLogger> | undefined>;
|
|
273
|
+
logger<L extends Logger>(logger: L): EndpointFactory<TServices, TBasePath, L, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<TServices, TSession, L> | undefined>;
|
|
274
|
+
session<T>(session: SessionFn<TServices, TLogger, T, TDatabase>): EndpointFactory<TServices, TBasePath, TLogger, T, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, RlsConfig<TServices, T, TLogger> | undefined>;
|
|
263
275
|
/**
|
|
264
276
|
* Set the database service for endpoints created from this factory.
|
|
265
277
|
* The database will be available in handler context as `db`.
|
|
266
278
|
*/
|
|
267
|
-
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
279
|
+
database<T, TName extends string>(source: Consumable<TName, T> | Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, T, TName, TSecuritySchemes, TRlsConfig>;
|
|
268
280
|
/**
|
|
269
281
|
* Set the auditor storage service for endpoints created from this factory.
|
|
270
282
|
* This enables audit functionality and makes `auditor` available in handler context.
|
|
271
283
|
* The audit action type is automatically inferred from the storage's generic parameter.
|
|
272
284
|
*/
|
|
273
|
-
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
285
|
+
auditor<T extends AuditStorage<any>, TName extends string>(storage: Service<TName, T>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, T, TName, ExtractStorageAuditAction<T>, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
274
286
|
/**
|
|
275
287
|
* Set the actor extractor function for endpoints created from this factory.
|
|
276
288
|
* The actor is extracted from the request context and attached to all audits.
|
|
277
289
|
*/
|
|
278
|
-
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
290
|
+
actor(extractor: ActorExtractor<TServices, TSession, TLogger>): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TRlsConfig>;
|
|
279
291
|
/**
|
|
280
292
|
* Set the RLS (Row-Level Security) configuration for endpoints created from this factory.
|
|
281
293
|
* This enables automatic PostgreSQL session variable setting for RLS policies.
|
|
@@ -294,18 +306,18 @@ declare class EndpointFactory<TServices extends Service[] = [], TBasePath extend
|
|
|
294
306
|
* });
|
|
295
307
|
* ```
|
|
296
308
|
*/
|
|
297
|
-
rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(config: TConfig): EndpointFactory<TServices, TBasePath, TLogger, TSession,
|
|
309
|
+
rls<TConfig extends RlsConfig<TServices, TSession, TLogger>>(config: TConfig): EndpointFactory<TServices, TBasePath, TLogger, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName, TSecuritySchemes, TConfig>;
|
|
298
310
|
private createBuilder;
|
|
299
|
-
post<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "POST", {}, TServices, TLogger, undefined, TSession,
|
|
300
|
-
get<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "GET", {}, TServices, TLogger, undefined, TSession,
|
|
301
|
-
put<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PUT", {}, TServices, TLogger, undefined, TSession,
|
|
302
|
-
delete<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "DELETE", {}, TServices, TLogger, undefined, TSession,
|
|
303
|
-
patch<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PATCH", {}, TServices, TLogger, undefined, TSession,
|
|
304
|
-
options<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "OPTIONS", {}, TServices, TLogger, undefined, TSession,
|
|
311
|
+
post<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "POST", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
312
|
+
get<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "GET", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
313
|
+
put<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PUT", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
314
|
+
delete<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "DELETE", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
315
|
+
patch<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "PATCH", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
316
|
+
options<TPath extends string>(path: TPath): EndpointBuilder<RemoveTrailingSlash<TBasePath extends "" ? TPath : TPath extends "" ? TBasePath : TBasePath extends "/" ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest_1}` ? `${TBasePath}/${Rest_1}` : `${TBasePath}/${TPath}`>, "OPTIONS", {}, TServices, TLogger, undefined, TSession, TAuthorizers, TAuditStorage, TAuditStorageServiceName, TAuditAction, TDatabase, TDatabaseServiceName>;
|
|
305
317
|
}
|
|
306
318
|
type RemoveTrailingSlash<T extends string> = T extends `${infer Rest}/` ? Rest extends '' ? T : Rest : T;
|
|
307
319
|
type JoinPaths<TBasePath extends string, TPath extends string> = RemoveTrailingSlash<TBasePath extends '' ? TPath : TPath extends '' ? TBasePath : TBasePath extends '/' ? TPath extends `/${string}` ? TPath : `/${TPath}` : TBasePath extends `${infer Base}/` ? TPath extends `/${infer Rest}` ? `${Base}/${Rest}` : `${Base}/${TPath}` : TPath extends `/${infer Rest}` ? `${TBasePath}/${Rest}` : `${TBasePath}/${TPath}`>;
|
|
308
|
-
interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown,
|
|
320
|
+
interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath extends string = '', TLogger extends Logger = Logger, TSession = unknown, TAuthorizers extends readonly string[] = readonly string[], TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TSecuritySchemes extends Record<string, SecurityScheme> = Record<string, SecurityScheme>, TRlsConfig extends RlsConfig<TServices, TSession, TLogger> | undefined = undefined> {
|
|
309
321
|
defaultServices?: TServices;
|
|
310
322
|
/** Construct ids from `.dependsOn()`, carried so a route can declare edges. */
|
|
311
323
|
defaultConstructs?: string[];
|
|
@@ -313,8 +325,6 @@ interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath ext
|
|
|
313
325
|
defaultAuthorizeFn?: AuthorizeFn<TServices, TLogger, TSession, undefined, TDatabase>;
|
|
314
326
|
defaultLogger?: TLogger;
|
|
315
327
|
defaultSessionExtractor?: SessionFn<TServices, TLogger, TSession, TDatabase>;
|
|
316
|
-
defaultEventPublisher?: Service<TEventPublisherServiceName, TEventPublisher>;
|
|
317
|
-
defaultEvents?: MappedEvent<TEventPublisher, undefined>[];
|
|
318
328
|
availableAuthorizers?: Authorizer[];
|
|
319
329
|
defaultAuthorizerName?: TAuthorizers[number];
|
|
320
330
|
defaultAuditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;
|
|
@@ -336,4 +346,4 @@ interface EndpointFactoryOptions<TServices extends Service[] = [], TBasePath ext
|
|
|
336
346
|
}
|
|
337
347
|
//#endregion
|
|
338
348
|
export { EndpointBuilder as n, EndpointFactory as t };
|
|
339
|
-
//# sourceMappingURL=EndpointFactory-
|
|
349
|
+
//# sourceMappingURL=EndpointFactory-FeFRmlDZ.d.cts.map
|