@geekmidas/constructs 9.0.2 → 10.0.0-alpha.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 +71 -44
- package/dist/{AWSScheduledFunction-Bn99MceY.d.cts → AWSScheduledFunction-BvFvBsBN.d.cts} +8 -3
- package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts.map → AWSScheduledFunction-BvFvBsBN.d.cts.map} +1 -1
- package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts → AWSScheduledFunction-CVccZO-L.d.mts} +9 -4
- package/dist/{AWSScheduledFunction-Bn99MceY.d.cts.map → AWSScheduledFunction-CVccZO-L.d.mts.map} +1 -1
- package/dist/{AWSScheduledFunction-CufMMhGB.mjs → AWSScheduledFunction-Db1lttJH.mjs} +3 -3
- package/dist/{AWSScheduledFunction-CufMMhGB.mjs.map → AWSScheduledFunction-Db1lttJH.mjs.map} +1 -1
- package/dist/{AWSScheduledFunction-DbkDr8CA.cjs → AWSScheduledFunction-qu4ieRZR.cjs} +9 -9
- package/dist/{AWSScheduledFunction-DbkDr8CA.cjs.map → AWSScheduledFunction-qu4ieRZR.cjs.map} +1 -1
- package/dist/{Construct-_1wX7p_Y.d.cts → Construct-B-xc0SE9.d.mts} +27 -5
- package/dist/Construct-B-xc0SE9.d.mts.map +1 -0
- package/dist/{Construct-r0U2zBwW.mjs → Construct-HmWM6YYu.mjs} +4 -3
- package/dist/Construct-HmWM6YYu.mjs.map +1 -0
- package/dist/{Construct-DCMuYOox.d.mts → Construct-WhCXIOPV.d.cts} +29 -7
- package/dist/Construct-WhCXIOPV.d.cts.map +1 -0
- package/dist/{Construct-vXMZJgRp.cjs → Construct-roId57cU.cjs} +7 -43
- package/dist/Construct-roId57cU.cjs.map +1 -0
- package/dist/{lazyAccessors-DmTG8sQH.cjs → Endpoint-BBkV6l0k.cjs} +869 -1079
- package/dist/Endpoint-BBkV6l0k.cjs.map +1 -0
- package/dist/{lazyAccessors-DfqZR6C4.mjs → Endpoint-BGwpNEX4.mjs} +840 -1003
- package/dist/Endpoint-BGwpNEX4.mjs.map +1 -0
- package/dist/{Endpoint-DgfRslct.d.cts → Endpoint-BnxZqIX-.d.cts} +53 -4
- package/dist/Endpoint-BnxZqIX-.d.cts.map +1 -0
- package/dist/{Endpoint-CLPSIl6S.d.mts → Endpoint-ROcXU-eH.d.mts} +55 -6
- package/dist/Endpoint-ROcXU-eH.d.mts.map +1 -0
- package/dist/EndpointFactory-DYoGLaIT.cjs +850 -0
- package/dist/EndpointFactory-DYoGLaIT.cjs.map +1 -0
- package/dist/EndpointFactory-Di0X9AWp.mjs +808 -0
- package/dist/EndpointFactory-Di0X9AWp.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-DJDT3PMx.mjs → HonoEndpointAdaptor-DFKIIG2o.mjs} +5 -4
- package/dist/HonoEndpointAdaptor-DFKIIG2o.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-CkJENANP.cjs → HonoEndpointAdaptor-wMsCyMgt.cjs} +24 -23
- package/dist/HonoEndpointAdaptor-wMsCyMgt.cjs.map +1 -0
- package/dist/{Queue-DaxjwmOQ.d.cts → Queue-D6WeziRD.d.cts} +43 -4
- package/dist/Queue-D6WeziRD.d.cts.map +1 -0
- package/dist/{Queue-HBDf0fqz.d.mts → Queue-DpUeqdC8.d.mts} +43 -4
- package/dist/Queue-DpUeqdC8.d.mts.map +1 -0
- package/dist/{Subscriber-B69ngPwl.d.cts → Subscriber-4rBJgDKI.d.mts} +9 -4
- package/dist/{Subscriber-B69ngPwl.d.cts.map → Subscriber-4rBJgDKI.d.mts.map} +1 -1
- package/dist/{Subscriber-D8Xm-86W.d.mts → Subscriber-DVQowdyj.d.cts} +11 -6
- package/dist/Subscriber-DVQowdyj.d.cts.map +1 -0
- package/dist/{Topic-C5ZMfveW.d.cts → Topic-Ohx9dvWr.d.cts} +33 -2
- package/dist/Topic-Ohx9dvWr.d.cts.map +1 -0
- package/dist/{Topic-DT10AqHk.d.mts → Topic-cmy2jOUy.d.mts} +33 -2
- package/dist/Topic-cmy2jOUy.d.mts.map +1 -0
- package/dist/adaptors/aws.cjs +39 -26
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +24 -16
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +25 -17
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +26 -14
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +9 -6
- package/dist/adaptors/hono.d.cts +7 -6
- package/dist/adaptors/hono.d.cts.map +1 -1
- package/dist/adaptors/hono.d.mts +8 -7
- package/dist/adaptors/hono.d.mts.map +1 -1
- package/dist/adaptors/hono.mjs +9 -6
- package/dist/adaptors/testing.cjs +18 -14
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +7 -6
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +11 -10
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +10 -7
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/auth.cjs +165 -0
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.d.cts +108 -0
- package/dist/auth.d.cts.map +1 -0
- package/dist/auth.d.mts +108 -0
- package/dist/auth.d.mts.map +1 -0
- package/dist/auth.mjs +164 -0
- package/dist/auth.mjs.map +1 -0
- package/dist/cache-0ANvRQnD.mjs +51 -0
- package/dist/cache-0ANvRQnD.mjs.map +1 -0
- package/dist/cache-3WSvAulx.cjs +57 -0
- package/dist/cache-3WSvAulx.cjs.map +1 -0
- package/dist/cache-CdQ7OLpR.d.cts +47 -0
- package/dist/cache-CdQ7OLpR.d.cts.map +1 -0
- package/dist/cache-DYoJFcfd.d.mts +47 -0
- package/dist/cache-DYoJFcfd.d.mts.map +1 -0
- package/dist/cache.cjs +3 -0
- package/dist/cache.d.cts +3 -0
- package/dist/cache.d.mts +3 -0
- package/dist/cache.mjs +3 -0
- package/dist/chunk-DWy1uDak.cjs +39 -0
- package/dist/clone-DblgEZZa.mjs +39 -0
- package/dist/clone-DblgEZZa.mjs.map +1 -0
- package/dist/clone-Dy0cR2SZ.cjs +45 -0
- package/dist/clone-Dy0cR2SZ.cjs.map +1 -0
- package/dist/construct-interface-BfjcOD_E.cjs +117 -0
- package/dist/construct-interface-BfjcOD_E.cjs.map +1 -0
- package/dist/construct-interface-BqwRNYA2.d.mts +131 -0
- package/dist/construct-interface-BqwRNYA2.d.mts.map +1 -0
- package/dist/construct-interface-D2nNkHUN.d.cts +131 -0
- package/dist/construct-interface-D2nNkHUN.d.cts.map +1 -0
- package/dist/construct-interface-Z4CpS8tK.mjs +81 -0
- package/dist/construct-interface-Z4CpS8tK.mjs.map +1 -0
- package/dist/construct-interface.cjs +8 -0
- package/dist/construct-interface.d.cts +2 -0
- package/dist/construct-interface.d.mts +2 -0
- package/dist/construct-interface.mjs +3 -0
- package/dist/credential.cjs +96 -0
- package/dist/credential.cjs.map +1 -0
- package/dist/credential.d.cts +61 -0
- package/dist/credential.d.cts.map +1 -0
- package/dist/credential.d.mts +61 -0
- package/dist/credential.d.mts.map +1 -0
- package/dist/credential.mjs +94 -0
- package/dist/credential.mjs.map +1 -0
- package/dist/crons/index.cjs +39 -37
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +21 -8
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +29 -13
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +37 -36
- package/dist/crons/index.mjs.map +1 -1
- package/dist/database/kysely.cjs +181 -0
- package/dist/database/kysely.cjs.map +1 -0
- package/dist/database/kysely.d.cts +152 -0
- package/dist/database/kysely.d.cts.map +1 -0
- package/dist/database/kysely.d.mts +152 -0
- package/dist/database/kysely.d.mts.map +1 -0
- package/dist/database/kysely.mjs +180 -0
- package/dist/database/kysely.mjs.map +1 -0
- package/dist/email.cjs +59 -0
- package/dist/email.cjs.map +1 -0
- package/dist/email.d.cts +50 -0
- package/dist/email.d.cts.map +1 -0
- package/dist/email.d.mts +50 -0
- package/dist/email.d.mts.map +1 -0
- package/dist/email.mjs +58 -0
- package/dist/email.mjs.map +1 -0
- package/dist/endpoints/index.cjs +21 -747
- package/dist/endpoints/index.d.cts +7 -343
- package/dist/endpoints/index.d.mts +7 -342
- package/dist/endpoints/index.mjs +11 -738
- package/dist/file-server.cjs +154 -0
- package/dist/file-server.cjs.map +1 -0
- package/dist/file-server.d.cts +156 -0
- package/dist/file-server.d.cts.map +1 -0
- package/dist/file-server.d.mts +156 -0
- package/dist/file-server.d.mts.map +1 -0
- package/dist/file-server.mjs +152 -0
- package/dist/file-server.mjs.map +1 -0
- package/dist/functions/index.cjs +4 -2
- package/dist/functions/index.d.cts +3 -2
- package/dist/functions/index.d.mts +3 -2
- package/dist/functions/index.mjs +4 -2
- package/dist/{functions-B-qt91O7.mjs → functions-CvT_q7Y4.mjs} +55 -51
- package/dist/functions-CvT_q7Y4.mjs.map +1 -0
- package/dist/{functions-C8i1kCMM.cjs → functions-DukjG8ov.cjs} +62 -57
- package/dist/functions-DukjG8ov.cjs.map +1 -0
- package/dist/index-7OcOWe75.d.cts +419 -0
- package/dist/index-7OcOWe75.d.cts.map +1 -0
- package/dist/index-Bt-F7u8L.d.mts +419 -0
- package/dist/index-Bt-F7u8L.d.mts.map +1 -0
- package/dist/{index-DP6fqv0I.d.mts → index-CPeqtKgq.d.mts} +48 -19
- package/dist/index-CPeqtKgq.d.mts.map +1 -0
- package/dist/{index-BVs9DvIj.d.cts → index-Dadljnh_.d.cts} +36 -9
- package/dist/index-Dadljnh_.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/lazyAccessors-DM6HcXQk.mjs +175 -0
- package/dist/lazyAccessors-DM6HcXQk.mjs.map +1 -0
- package/dist/lazyAccessors-DrJj8NpA.cjs +223 -0
- package/dist/lazyAccessors-DrJj8NpA.cjs.map +1 -0
- package/dist/object-storage.cjs +48 -0
- package/dist/object-storage.cjs.map +1 -0
- package/dist/object-storage.d.cts +36 -0
- package/dist/object-storage.d.cts.map +1 -0
- package/dist/object-storage.d.mts +36 -0
- package/dist/object-storage.d.mts.map +1 -0
- package/dist/object-storage.mjs +47 -0
- package/dist/object-storage.mjs.map +1 -0
- package/dist/{processAudits-CKjjivyz.cjs → processAudits-Bc8rz6Ev.cjs} +3 -3
- package/dist/{processAudits-CKjjivyz.cjs.map → processAudits-Bc8rz6Ev.cjs.map} +1 -1
- package/dist/{processAudits-ySnizdMG.mjs → processAudits-D89tICM4.mjs} +1 -1
- package/dist/{processAudits-ySnizdMG.mjs.map → processAudits-D89tICM4.mjs.map} +1 -1
- package/dist/{publisher-BrFOF847.mjs → publisher-CGEo8UKD.mjs} +1 -1
- package/dist/{publisher-BrFOF847.mjs.map → publisher-CGEo8UKD.mjs.map} +1 -1
- package/dist/{publisher-lFQleddL.cjs → publisher-CqGsXB2X.cjs} +1 -1
- package/dist/{publisher-lFQleddL.cjs.map → publisher-CqGsXB2X.cjs.map} +1 -1
- package/dist/queue/index.cjs +92 -30
- package/dist/queue/index.cjs.map +1 -1
- package/dist/queue/index.d.cts +19 -4
- package/dist/queue/index.d.cts.map +1 -1
- package/dist/queue/index.d.mts +22 -6
- package/dist/queue/index.d.mts.map +1 -1
- package/dist/queue/index.mjs +90 -29
- package/dist/queue/index.mjs.map +1 -1
- package/dist/rest-api.cjs +187 -0
- package/dist/rest-api.cjs.map +1 -0
- package/dist/rest-api.d.cts +221 -0
- package/dist/rest-api.d.cts.map +1 -0
- package/dist/rest-api.d.mts +221 -0
- package/dist/rest-api.d.mts.map +1 -0
- package/dist/rest-api.mjs +186 -0
- package/dist/rest-api.mjs.map +1 -0
- package/dist/site.cjs +48 -0
- package/dist/site.cjs.map +1 -0
- package/dist/site.d.cts +101 -0
- package/dist/site.d.cts.map +1 -0
- package/dist/site.d.mts +101 -0
- package/dist/site.d.mts.map +1 -0
- package/dist/site.mjs +47 -0
- package/dist/site.mjs.map +1 -0
- package/dist/subscribers/index.cjs +35 -27
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +20 -5
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +23 -7
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +34 -27
- package/dist/subscribers/index.mjs.map +1 -1
- package/dist/surfaceEnv-BFXEms2f.cjs +39 -0
- package/dist/surfaceEnv-BFXEms2f.cjs.map +1 -0
- package/dist/surfaceEnv-C3Ktahea.mjs +27 -0
- package/dist/surfaceEnv-C3Ktahea.mjs.map +1 -0
- package/dist/{telemetry-3vdxGn4q.d.mts → telemetry-C3L0iS28.d.cts} +2 -2
- package/dist/{telemetry-3vdxGn4q.d.mts.map → telemetry-C3L0iS28.d.cts.map} +1 -1
- package/dist/{telemetry-Dqx-D3F7.d.cts → telemetry-D7bVFLGi.d.mts} +2 -2
- package/dist/{telemetry-Dqx-D3F7.d.cts.map → telemetry-D7bVFLGi.d.mts.map} +1 -1
- package/dist/topic/index.cjs +56 -13
- package/dist/topic/index.cjs.map +1 -1
- package/dist/topic/index.d.cts +2 -2
- package/dist/topic/index.d.cts.map +1 -1
- package/dist/topic/index.d.mts +2 -2
- package/dist/topic/index.d.mts.map +1 -1
- package/dist/topic/index.mjs +54 -12
- package/dist/topic/index.mjs.map +1 -1
- package/dist/{types-BDNGr7pv.d.mts → types-BlAkSuGI.d.cts} +1 -1
- package/dist/{types-BDNGr7pv.d.mts.map → types-BlAkSuGI.d.cts.map} +1 -1
- package/dist/{types-BdAaYDvd.d.cts → types-aKksMEWL.d.mts} +1 -1
- package/dist/{types-BdAaYDvd.d.cts.map → types-aKksMEWL.d.mts.map} +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +155 -23
- package/CHANGELOG.md +0 -396
- package/dist/Construct-DCMuYOox.d.mts.map +0 -1
- package/dist/Construct-_1wX7p_Y.d.cts.map +0 -1
- package/dist/Construct-r0U2zBwW.mjs.map +0 -1
- package/dist/Construct-vXMZJgRp.cjs.map +0 -1
- package/dist/Endpoint-CLPSIl6S.d.mts.map +0 -1
- package/dist/Endpoint-DgfRslct.d.cts.map +0 -1
- package/dist/HonoEndpointAdaptor-CkJENANP.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-DJDT3PMx.mjs.map +0 -1
- package/dist/Queue-DaxjwmOQ.d.cts.map +0 -1
- package/dist/Queue-HBDf0fqz.d.mts.map +0 -1
- package/dist/Subscriber-D8Xm-86W.d.mts.map +0 -1
- package/dist/Topic-C5ZMfveW.d.cts.map +0 -1
- package/dist/Topic-DT10AqHk.d.mts.map +0 -1
- package/dist/endpoints/index.cjs.map +0 -1
- package/dist/endpoints/index.d.cts.map +0 -1
- package/dist/endpoints/index.d.mts.map +0 -1
- package/dist/endpoints/index.mjs.map +0 -1
- package/dist/functions-B-qt91O7.mjs.map +0 -1
- package/dist/functions-C8i1kCMM.cjs.map +0 -1
- package/dist/index-BVs9DvIj.d.cts.map +0 -1
- package/dist/index-DP6fqv0I.d.mts.map +0 -1
- package/dist/lazyAccessors-DfqZR6C4.mjs.map +0 -1
- package/dist/lazyAccessors-DmTG8sQH.cjs.map +0 -1
- package/src/Construct.ts +0 -204
- package/src/__benchmarks__/build-time-optimization.bench.ts +0 -274
- package/src/__benchmarks__/endpoint.bench.ts +0 -494
- package/src/__benchmarks__/fixtures.ts +0 -241
- package/src/__benchmarks__/hono-adaptor.bench.ts +0 -533
- package/src/__benchmarks__/hono-server.bench.ts +0 -249
- package/src/__benchmarks__/response-builder.bench.ts +0 -428
- package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +0 -319
- package/src/__benchmarks__/strategies/strategy-c-middleware.ts +0 -530
- package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +0 -567
- package/src/__tests__/Construct.environment.spec.ts +0 -704
- package/src/__tests__/publisher.setting.spec.ts +0 -508
- package/src/__tests__/publisher.spec.ts +0 -452
- package/src/adaptors/aws.ts +0 -6
- package/src/adaptors/hono.ts +0 -1
- package/src/adaptors/testing.ts +0 -11
- package/src/crons/AWSScheduledFunction.ts +0 -73
- package/src/crons/Cron.ts +0 -149
- package/src/crons/CronBuilder.ts +0 -271
- package/src/crons/__tests__/AWSScheduledFunction.spec.ts +0 -152
- package/src/crons/__tests__/Cron.spec.ts +0 -464
- package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +0 -227
- package/src/crons/index.ts +0 -12
- package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +0 -677
- package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +0 -105
- package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +0 -97
- package/src/endpoints/Authorizer.ts +0 -152
- package/src/endpoints/Endpoint.ts +0 -1287
- package/src/endpoints/EndpointBuilder.ts +0 -758
- package/src/endpoints/EndpointFactory.ts +0 -1148
- package/src/endpoints/HonoEndpointAdaptor.ts +0 -677
- package/src/endpoints/MswEndpointAdaptor.ts +0 -226
- package/src/endpoints/TestEndpointAdaptor.ts +0 -422
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +0 -499
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +0 -560
- package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +0 -1304
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +0 -626
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +0 -732
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +0 -296
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +0 -951
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.responseType.spec.ts +0 -111
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +0 -307
- package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +0 -629
- package/src/endpoints/__tests__/Authorizer.spec.ts +0 -286
- package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +0 -207
- package/src/endpoints/__tests__/Endpoint.headers.spec.ts +0 -187
- package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +0 -175
- package/src/endpoints/__tests__/Endpoint.spec.ts +0 -857
- package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +0 -448
- package/src/endpoints/__tests__/EndpointBuilder.responseType.spec.ts +0 -47
- package/src/endpoints/__tests__/EndpointBuilder.spec.ts +0 -523
- package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +0 -492
- package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +0 -509
- package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +0 -190
- package/src/endpoints/__tests__/EndpointFactory.spec.ts +0 -479
- package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +0 -155
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +0 -703
- package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +0 -632
- package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +0 -577
- package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +0 -1067
- package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +0 -317
- package/src/endpoints/__tests__/HonoEndpointAdaptor.pgboss-publisher.spec.ts +0 -289
- package/src/endpoints/__tests__/HonoEndpointAdaptor.responseType.spec.ts +0 -128
- package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +0 -1207
- package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +0 -211
- package/src/endpoints/__tests__/ResponseBuilder.spec.ts +0 -235
- package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +0 -602
- package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +0 -1044
- package/src/endpoints/__tests__/__snapshots__/HonoEndpointAdaptor.spec.ts.snap +0 -54
- package/src/endpoints/__tests__/endpoint-types.test.ts +0 -88
- package/src/endpoints/__tests__/helpers.spec.ts +0 -37
- package/src/endpoints/__tests__/lazyAccessors.spec.ts +0 -330
- package/src/endpoints/__tests__/processAudits.spec.ts +0 -631
- package/src/endpoints/audit.ts +0 -87
- package/src/endpoints/helpers.ts +0 -98
- package/src/endpoints/index.ts +0 -42
- package/src/endpoints/lazyAccessors.ts +0 -241
- package/src/endpoints/parseHonoQuery.ts +0 -16
- package/src/endpoints/parseQueryParams.ts +0 -32
- package/src/endpoints/processAudits.ts +0 -371
- package/src/endpoints/rls.ts +0 -67
- package/src/functions/AWSLambdaFunction.ts +0 -348
- package/src/functions/BaseFunctionBuilder.ts +0 -201
- package/src/functions/Function.ts +0 -238
- package/src/functions/FunctionBuilder.ts +0 -391
- package/src/functions/FunctionExecutionWrapper.ts +0 -216
- package/src/functions/TestFunctionAdaptor.ts +0 -217
- package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +0 -513
- package/src/functions/__tests__/Function.audits.spec.ts +0 -393
- package/src/functions/__tests__/Function.spec.ts +0 -477
- package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +0 -207
- package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +0 -480
- package/src/functions/index.ts +0 -12
- package/src/index.ts +0 -23
- package/src/publisher.ts +0 -93
- package/src/queue/AWSLambdaQueueAdaptor.ts +0 -162
- package/src/queue/Queue.ts +0 -128
- package/src/queue/QueueBuilder.ts +0 -115
- package/src/queue/TestQueueAdaptor.ts +0 -63
- package/src/queue/__tests__/QueueBuilder.spec.ts +0 -137
- package/src/queue/index.ts +0 -12
- package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +0 -342
- package/src/subscribers/Subscriber.ts +0 -117
- package/src/subscribers/SubscriberBuilder.ts +0 -186
- package/src/subscribers/TestSubscriberAdaptor.ts +0 -133
- package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +0 -1018
- package/src/subscribers/__tests__/Subscriber.spec.ts +0 -430
- package/src/subscribers/__tests__/TestSubscriberAdaptor.spec.ts +0 -652
- package/src/subscribers/index.ts +0 -6
- package/src/telemetry.ts +0 -103
- package/src/topic/Topic.ts +0 -103
- package/src/topic/TopicBuilder.ts +0 -51
- package/src/topic/__tests__/TopicBuilder.spec.ts +0 -82
- package/src/topic/index.ts +0 -11
- package/src/types.ts +0 -13
- package/test.ts +0 -91
- package/tsconfig.json +0 -9
- package/tsdown.config.ts +0 -34
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-DWy1uDak.cjs');
|
|
2
|
+
const require_construct_interface = require('./construct-interface-BfjcOD_E.cjs');
|
|
3
|
+
const require_Construct = require('./Construct-roId57cU.cjs');
|
|
4
|
+
const require_functions = require('./functions-DukjG8ov.cjs');
|
|
5
|
+
const require_clone = require('./clone-Dy0cR2SZ.cjs');
|
|
6
|
+
const require_Endpoint = require('./Endpoint-BBkV6l0k.cjs');
|
|
7
|
+
const __geekmidas_logger_console = require_chunk.__toESM(require("@geekmidas/logger/console"));
|
|
8
|
+
|
|
9
|
+
//#region src/endpoints/Authorizer.ts
|
|
10
|
+
/**
|
|
11
|
+
* Built-in security schemes available by default.
|
|
12
|
+
* Users can use these without defining them via .securitySchemes().
|
|
13
|
+
*/
|
|
14
|
+
const BUILT_IN_SECURITY_SCHEMES = {
|
|
15
|
+
jwt: {
|
|
16
|
+
type: "http",
|
|
17
|
+
scheme: "bearer",
|
|
18
|
+
bearerFormat: "JWT",
|
|
19
|
+
description: "JWT Bearer token authentication"
|
|
20
|
+
},
|
|
21
|
+
bearer: {
|
|
22
|
+
type: "http",
|
|
23
|
+
scheme: "bearer",
|
|
24
|
+
description: "Bearer token authentication"
|
|
25
|
+
},
|
|
26
|
+
apiKey: {
|
|
27
|
+
type: "apiKey",
|
|
28
|
+
in: "header",
|
|
29
|
+
name: "X-API-Key",
|
|
30
|
+
description: "API key authentication via header"
|
|
31
|
+
},
|
|
32
|
+
oauth2: {
|
|
33
|
+
type: "oauth2",
|
|
34
|
+
flows: {},
|
|
35
|
+
description: "OAuth 2.0 authentication"
|
|
36
|
+
},
|
|
37
|
+
oidc: {
|
|
38
|
+
type: "openIdConnect",
|
|
39
|
+
openIdConnectUrl: "",
|
|
40
|
+
description: "OpenID Connect authentication"
|
|
41
|
+
},
|
|
42
|
+
iam: {
|
|
43
|
+
type: "apiKey",
|
|
44
|
+
in: "header",
|
|
45
|
+
name: "Authorization",
|
|
46
|
+
description: "AWS IAM Signature Version 4 authentication",
|
|
47
|
+
"x-amazon-apigateway-authtype": "awsSigv4"
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Helper to create an authorizer configuration
|
|
52
|
+
*/
|
|
53
|
+
function createAuthorizer(name, options) {
|
|
54
|
+
return {
|
|
55
|
+
name,
|
|
56
|
+
...options
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a name is a built-in security scheme
|
|
61
|
+
*/
|
|
62
|
+
function isBuiltInSecurityScheme(name) {
|
|
63
|
+
return name in BUILT_IN_SECURITY_SCHEMES;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get a security scheme by name (built-in or custom)
|
|
67
|
+
*/
|
|
68
|
+
function getSecurityScheme(name, customSchemes) {
|
|
69
|
+
if (customSchemes && name in customSchemes) return customSchemes[name];
|
|
70
|
+
if (isBuiltInSecurityScheme(name)) return BUILT_IN_SECURITY_SCHEMES[name];
|
|
71
|
+
return void 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/endpoints/rls.ts
|
|
76
|
+
/**
|
|
77
|
+
* Symbol used to bypass RLS for an endpoint.
|
|
78
|
+
*/
|
|
79
|
+
const RLS_BYPASS = Symbol.for("geekmidas.rls.bypass");
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/endpoints/EndpointBuilder.ts
|
|
83
|
+
var import_lodash$1 = require_chunk.__toESM(require_functions.require_lodash(), 1);
|
|
84
|
+
var EndpointBuilder = class extends require_functions.BaseFunctionBuilder {
|
|
85
|
+
schemas = {};
|
|
86
|
+
_description;
|
|
87
|
+
_status;
|
|
88
|
+
_tags;
|
|
89
|
+
_memorySize;
|
|
90
|
+
_responseType = "application/json";
|
|
91
|
+
_getSession = () => ({});
|
|
92
|
+
_authorize = () => true;
|
|
93
|
+
_rateLimit;
|
|
94
|
+
_availableAuthorizers = [];
|
|
95
|
+
_authorizerName;
|
|
96
|
+
_actorExtractor;
|
|
97
|
+
_audits = [];
|
|
98
|
+
/**
|
|
99
|
+
* Internal: the surface this builder came from, carried to the endpoint.
|
|
100
|
+
*
|
|
101
|
+
* Assigned by the factory before the builder is handed out, which is the
|
|
102
|
+
* only way a builder is ever created.
|
|
103
|
+
*/
|
|
104
|
+
_surface;
|
|
105
|
+
_customSecuritySchemes = {};
|
|
106
|
+
_rlsConfig;
|
|
107
|
+
_rlsBypass;
|
|
108
|
+
constructor(route, method) {
|
|
109
|
+
super(require_Construct.ConstructType.Endpoint);
|
|
110
|
+
this.route = route;
|
|
111
|
+
this.method = method;
|
|
112
|
+
}
|
|
113
|
+
_setPublisher(publisher) {
|
|
114
|
+
this._publisher = publisher;
|
|
115
|
+
}
|
|
116
|
+
_setAuditorStorage(storage) {
|
|
117
|
+
this._auditorStorage = storage;
|
|
118
|
+
}
|
|
119
|
+
_setDatabaseService(service) {
|
|
120
|
+
this._databaseService = service;
|
|
121
|
+
}
|
|
122
|
+
description(description) {
|
|
123
|
+
return require_clone.cloneWith(this, { _description: description });
|
|
124
|
+
}
|
|
125
|
+
status(status) {
|
|
126
|
+
return require_clone.cloneWith(this, { _status: status });
|
|
127
|
+
}
|
|
128
|
+
event(event) {
|
|
129
|
+
return require_clone.cloneWith(this, { _events: [...this._events, event] });
|
|
130
|
+
}
|
|
131
|
+
tags(tags) {
|
|
132
|
+
return require_clone.cloneWith(this, { _tags: tags });
|
|
133
|
+
}
|
|
134
|
+
memorySize(memorySize) {
|
|
135
|
+
return require_clone.cloneWith(this, { _memorySize: memorySize });
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Set the response content type for this endpoint.
|
|
139
|
+
*
|
|
140
|
+
* Defaults to `'application/json'`. When set to any other value
|
|
141
|
+
* (e.g. `'text/html'`, `'text/plain'`), the response body is emitted
|
|
142
|
+
* as-is rather than JSON-serialized, and the `Content-Type` header
|
|
143
|
+
* reflects the declared value. Runtime overrides via `r.header()` still win.
|
|
144
|
+
*
|
|
145
|
+
* @param type - The MIME type to return (e.g. `'text/html'`)
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* api.get('/checkout-page')
|
|
150
|
+
* .output(z.string())
|
|
151
|
+
* .responseType('text/html')
|
|
152
|
+
* .handle(async () => '<html>...</html>');
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
responseType(type) {
|
|
156
|
+
return require_clone.cloneWith(this, { _responseType: type });
|
|
157
|
+
}
|
|
158
|
+
publisher(publisher) {
|
|
159
|
+
return require_clone.cloneWith(this, { _publisher: publisher });
|
|
160
|
+
}
|
|
161
|
+
body(schema) {
|
|
162
|
+
this.schemas.body = schema;
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
165
|
+
search(schema) {
|
|
166
|
+
this.schemas.query = schema;
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
query(schema) {
|
|
170
|
+
return this.search(schema);
|
|
171
|
+
}
|
|
172
|
+
params(schema) {
|
|
173
|
+
this.schemas.params = schema;
|
|
174
|
+
return this;
|
|
175
|
+
}
|
|
176
|
+
authorize(fn) {
|
|
177
|
+
return require_clone.cloneWith(this, { _authorize: fn });
|
|
178
|
+
}
|
|
179
|
+
rateLimit(config) {
|
|
180
|
+
return require_clone.cloneWith(this, { _rateLimit: config });
|
|
181
|
+
}
|
|
182
|
+
authorizer(name) {
|
|
183
|
+
if (name === "none") return require_clone.cloneWith(this, { _authorizerName: void 0 });
|
|
184
|
+
const authorizerExists = this._availableAuthorizers.some((a) => a.name === name);
|
|
185
|
+
if (!authorizerExists && this._availableAuthorizers.length > 0) {
|
|
186
|
+
const available = this._availableAuthorizers.map((a) => a.name).join(", ");
|
|
187
|
+
throw new Error(`Authorizer "${name}" not found in available authorizers: ${available}`);
|
|
188
|
+
}
|
|
189
|
+
return require_clone.cloneWith(this, { _authorizerName: name });
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Depend on constructs — a database, a bucket, a mail sender, a queue, a
|
|
193
|
+
* topic.
|
|
194
|
+
*
|
|
195
|
+
* It records the edge and dissolves each construct's client into the
|
|
196
|
+
* handler's service record under the construct's own id, so
|
|
197
|
+
* `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
|
|
198
|
+
*
|
|
199
|
+
* Constructs only. A `Service` does not match the shape, which is what keeps
|
|
200
|
+
* env sniffing confined to `.services()` and the explicit lift.
|
|
201
|
+
*/
|
|
202
|
+
dependsOn(constructs) {
|
|
203
|
+
const services = require_construct_interface.servicesOf(constructs);
|
|
204
|
+
return require_clone.cloneWith(this, {
|
|
205
|
+
_services: (0, import_lodash$1.default)([...this._services, ...services], (service) => service.serviceName),
|
|
206
|
+
_constructs: require_construct_interface.idsOf(constructs, this._constructs)
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
services(services) {
|
|
210
|
+
return require_clone.cloneWith(this, { _services: (0, import_lodash$1.default)([...this._services, ...services], (s) => s.serviceName) });
|
|
211
|
+
}
|
|
212
|
+
logger(logger) {
|
|
213
|
+
return require_clone.cloneWith(this, { _logger: logger });
|
|
214
|
+
}
|
|
215
|
+
output(schema) {
|
|
216
|
+
return require_clone.cloneWith(this, { outputSchema: schema });
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Set the auditor storage service for this endpoint.
|
|
220
|
+
* This enables audit functionality and makes `auditor` available in the handler context.
|
|
221
|
+
* The audit action type is automatically inferred from the storage's generic parameter.
|
|
222
|
+
*/
|
|
223
|
+
auditor(storage) {
|
|
224
|
+
return require_clone.cloneWith(this, { _auditorStorage: storage });
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Set the actor extractor function for audit records.
|
|
228
|
+
* The actor is extracted from the request context and attached to all audits.
|
|
229
|
+
*/
|
|
230
|
+
actor(extractor) {
|
|
231
|
+
return require_clone.cloneWith(this, { _actorExtractor: extractor });
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Add declarative audit definitions that are processed after the handler executes.
|
|
235
|
+
* Similar to `.event()` for events, but for audits.
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```typescript
|
|
239
|
+
* .audit<AppAuditAction>([
|
|
240
|
+
* {
|
|
241
|
+
* type: 'user.created',
|
|
242
|
+
* payload: (response) => ({ userId: response.id, email: response.email }),
|
|
243
|
+
* when: (response) => response.active,
|
|
244
|
+
* entityId: (response) => response.id,
|
|
245
|
+
* table: 'users',
|
|
246
|
+
* },
|
|
247
|
+
* ])
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
audit(audits) {
|
|
251
|
+
return require_clone.cloneWith(this, { _audits: audits });
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Set the database service for this endpoint.
|
|
255
|
+
* The database will be available in the handler context as `db`.
|
|
256
|
+
* When audit storage is configured and uses the same database,
|
|
257
|
+
* `db` will automatically be the transaction for ACID compliance.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* .database(databaseService)
|
|
262
|
+
* .handle(async ({ db }) => {
|
|
263
|
+
* // db is the raw database or transaction (when auditor uses same db)
|
|
264
|
+
* return await db.selectFrom('users').selectAll().execute();
|
|
265
|
+
* })
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
268
|
+
database(source) {
|
|
269
|
+
const service = require_construct_interface.serviceOf(source);
|
|
270
|
+
return require_clone.cloneWith(this, { _databaseService: service });
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Configure RLS (Row-Level Security) context for this endpoint.
|
|
274
|
+
* Pass `false` or `RLS_BYPASS` to explicitly bypass RLS for this endpoint.
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* ```typescript
|
|
278
|
+
* // Custom RLS config for this endpoint
|
|
279
|
+
* .rls({
|
|
280
|
+
* extractor: ({ session }) => ({
|
|
281
|
+
* user_id: session.userId,
|
|
282
|
+
* tenant_id: session.tenantId,
|
|
283
|
+
* }),
|
|
284
|
+
* prefix: 'app',
|
|
285
|
+
* })
|
|
286
|
+
*
|
|
287
|
+
* // Bypass RLS (for admin endpoints)
|
|
288
|
+
* .rls(false)
|
|
289
|
+
* ```
|
|
290
|
+
*/
|
|
291
|
+
rls(config) {
|
|
292
|
+
if (config === false || config === RLS_BYPASS) {
|
|
293
|
+
this._rlsBypass = true;
|
|
294
|
+
this._rlsConfig = void 0;
|
|
295
|
+
} else {
|
|
296
|
+
this._rlsConfig = config;
|
|
297
|
+
this._rlsBypass = false;
|
|
298
|
+
}
|
|
299
|
+
return this;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Explicitly bypass RLS for this endpoint.
|
|
303
|
+
* Useful for admin operations that need unrestricted database access.
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```typescript
|
|
307
|
+
* .rlsBypass()
|
|
308
|
+
* .handle(async ({ db }) => {
|
|
309
|
+
* // Full access, no RLS filtering
|
|
310
|
+
* return db.selectFrom('orders').selectAll().execute();
|
|
311
|
+
* })
|
|
312
|
+
* ```
|
|
313
|
+
*/
|
|
314
|
+
rlsBypass() {
|
|
315
|
+
return require_clone.cloneWith(this, {
|
|
316
|
+
_rlsBypass: true,
|
|
317
|
+
_rlsConfig: void 0
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
input(_schema) {
|
|
321
|
+
throw new Error("EndpointBuilder does not support generic input. Use body(), query(), or params() instead.");
|
|
322
|
+
}
|
|
323
|
+
handle(fn) {
|
|
324
|
+
let authorizer;
|
|
325
|
+
if (this._authorizerName) {
|
|
326
|
+
const existingAuthorizer = this._availableAuthorizers.find((a) => a.name === this._authorizerName);
|
|
327
|
+
if (existingAuthorizer) authorizer = existingAuthorizer;
|
|
328
|
+
else {
|
|
329
|
+
const securityScheme = getSecurityScheme(this._authorizerName, this._customSecuritySchemes);
|
|
330
|
+
authorizer = {
|
|
331
|
+
name: this._authorizerName,
|
|
332
|
+
securityScheme
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return new require_Endpoint.Endpoint({
|
|
337
|
+
fn,
|
|
338
|
+
method: this.method,
|
|
339
|
+
route: this.route,
|
|
340
|
+
description: this._description,
|
|
341
|
+
tags: this._tags,
|
|
342
|
+
input: this.schemas,
|
|
343
|
+
output: this.outputSchema,
|
|
344
|
+
services: this._services,
|
|
345
|
+
constructs: this._constructs,
|
|
346
|
+
logger: this._logger,
|
|
347
|
+
timeout: this._timeout,
|
|
348
|
+
memorySize: this._memorySize,
|
|
349
|
+
authorize: this._authorize,
|
|
350
|
+
status: this._status,
|
|
351
|
+
getSession: this._getSession,
|
|
352
|
+
rateLimit: this._rateLimit,
|
|
353
|
+
publisherService: this._publisher,
|
|
354
|
+
events: this._events,
|
|
355
|
+
authorizer,
|
|
356
|
+
surface: this._surface,
|
|
357
|
+
auditorStorageService: this._auditorStorage,
|
|
358
|
+
actorExtractor: this._actorExtractor,
|
|
359
|
+
audits: this._audits,
|
|
360
|
+
databaseService: this._databaseService,
|
|
361
|
+
rlsConfig: this._rlsConfig,
|
|
362
|
+
rlsBypass: this._rlsBypass,
|
|
363
|
+
responseType: this._responseType
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
//#endregion
|
|
369
|
+
//#region src/endpoints/EndpointFactory.ts
|
|
370
|
+
var import_lodash = require_chunk.__toESM(require_functions.require_lodash(), 1);
|
|
371
|
+
var EndpointFactory = class EndpointFactory {
|
|
372
|
+
defaultServices = [];
|
|
373
|
+
/**
|
|
374
|
+
* The constructs `.dependsOn()` was given, kept alongside the services they
|
|
375
|
+
* dissolve into.
|
|
376
|
+
*
|
|
377
|
+
* `.dependsOn()` collapses straight into `.services()`, which is right for
|
|
378
|
+
* *running* — a handler wants clients, not ids — and loses the one thing the
|
|
379
|
+
* manifest needs: which constructs this endpoint reaches. Keeping the ids
|
|
380
|
+
* here is what lets a route declare its edges, and lets a target derive its
|
|
381
|
+
* environment from the graph rather than from sniffing what the code touched.
|
|
382
|
+
*/
|
|
383
|
+
defaultConstructs = [];
|
|
384
|
+
basePath = "";
|
|
385
|
+
defaultAuthorizeFn;
|
|
386
|
+
defaultEventPublisher;
|
|
387
|
+
defaultSessionExtractor;
|
|
388
|
+
defaultLogger;
|
|
389
|
+
/**
|
|
390
|
+
* The surface this factory belongs to, stamped onto everything it builds.
|
|
391
|
+
*
|
|
392
|
+
* Set only by `RestApi`, which is the only thing that has one. A factory
|
|
393
|
+
* with no surface produces endpoints that carry none, which is what a
|
|
394
|
+
* standalone endpoint has always been.
|
|
395
|
+
*/
|
|
396
|
+
surface;
|
|
397
|
+
availableAuthorizers;
|
|
398
|
+
defaultAuthorizerName;
|
|
399
|
+
defaultAuditorStorage;
|
|
400
|
+
defaultDatabaseService;
|
|
401
|
+
defaultActorExtractor;
|
|
402
|
+
customSecuritySchemes;
|
|
403
|
+
defaultRlsConfig;
|
|
404
|
+
constructor({ basePath, defaultAuthorizeFn, defaultLogger = __geekmidas_logger_console.DEFAULT_LOGGER, defaultSessionExtractor, defaultServices = [], defaultConstructs = [], defaultEventPublisher, availableAuthorizers = [], defaultAuthorizerName, defaultAuditorStorage, defaultDatabaseService, defaultActorExtractor, customSecuritySchemes = {}, defaultRlsConfig, surface }) {
|
|
405
|
+
this.defaultConstructs = [...new Set(defaultConstructs)];
|
|
406
|
+
this.defaultServices = (0, import_lodash.default)(defaultServices, (s) => s.serviceName);
|
|
407
|
+
this.basePath = basePath || "";
|
|
408
|
+
this.defaultAuthorizeFn = defaultAuthorizeFn;
|
|
409
|
+
this.defaultLogger = defaultLogger;
|
|
410
|
+
this.defaultSessionExtractor = defaultSessionExtractor;
|
|
411
|
+
this.defaultEventPublisher = defaultEventPublisher;
|
|
412
|
+
this.availableAuthorizers = availableAuthorizers;
|
|
413
|
+
this.defaultAuthorizerName = defaultAuthorizerName;
|
|
414
|
+
this.defaultAuditorStorage = defaultAuditorStorage;
|
|
415
|
+
this.defaultDatabaseService = defaultDatabaseService;
|
|
416
|
+
this.defaultActorExtractor = defaultActorExtractor;
|
|
417
|
+
this.customSecuritySchemes = customSecuritySchemes;
|
|
418
|
+
this.defaultRlsConfig = defaultRlsConfig;
|
|
419
|
+
this.surface = surface;
|
|
420
|
+
}
|
|
421
|
+
static joinPaths(path, basePath = "") {
|
|
422
|
+
if (!basePath && !path) return "/";
|
|
423
|
+
if (!basePath) return path.startsWith("/") ? path : `/${path}`;
|
|
424
|
+
if (!path) return basePath.startsWith("/") ? basePath : `/${basePath}`;
|
|
425
|
+
const base = basePath.endsWith("/") ? basePath.slice(0, -1) : basePath;
|
|
426
|
+
const segment = path.startsWith("/") ? path : `/${path}`;
|
|
427
|
+
let result = base + segment;
|
|
428
|
+
if (!result.startsWith("/")) result = `/${result}`;
|
|
429
|
+
result = result.replace(/^\/+/g, "/");
|
|
430
|
+
if (result.length > 1 && result.endsWith("/")) result = result.slice(0, -1);
|
|
431
|
+
return result;
|
|
432
|
+
}
|
|
433
|
+
authorizers(authorizers) {
|
|
434
|
+
const authorizerConfigs = authorizers.map((name) => ({
|
|
435
|
+
name,
|
|
436
|
+
securityScheme: getSecurityScheme(name, this.customSecuritySchemes)
|
|
437
|
+
}));
|
|
438
|
+
return new EndpointFactory({
|
|
439
|
+
defaultServices: this.defaultServices,
|
|
440
|
+
defaultConstructs: this.defaultConstructs,
|
|
441
|
+
basePath: this.basePath,
|
|
442
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
443
|
+
defaultLogger: this.defaultLogger,
|
|
444
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
445
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
446
|
+
availableAuthorizers: authorizerConfigs,
|
|
447
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
448
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
449
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
450
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
451
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
452
|
+
surface: this.surface,
|
|
453
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Define custom security schemes for this factory.
|
|
458
|
+
* These extend the built-in schemes (jwt, bearer, apiKey, oauth2, oidc).
|
|
459
|
+
*
|
|
460
|
+
* @example
|
|
461
|
+
* ```typescript
|
|
462
|
+
* const router = e.securitySchemes({
|
|
463
|
+
* awsIamSigV4: {
|
|
464
|
+
* type: 'apiKey',
|
|
465
|
+
* in: 'header',
|
|
466
|
+
* name: 'Authorization',
|
|
467
|
+
* 'x-amazon-apigateway-authtype': 'awsSigv4',
|
|
468
|
+
* },
|
|
469
|
+
* });
|
|
470
|
+
* ```
|
|
471
|
+
*/
|
|
472
|
+
securitySchemes(schemes) {
|
|
473
|
+
return new EndpointFactory({
|
|
474
|
+
defaultServices: this.defaultServices,
|
|
475
|
+
defaultConstructs: this.defaultConstructs,
|
|
476
|
+
basePath: this.basePath,
|
|
477
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
478
|
+
defaultLogger: this.defaultLogger,
|
|
479
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
480
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
481
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
482
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
483
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
484
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
485
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
486
|
+
customSecuritySchemes: {
|
|
487
|
+
...this.customSecuritySchemes,
|
|
488
|
+
...schemes
|
|
489
|
+
},
|
|
490
|
+
surface: this.surface,
|
|
491
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Set the default authorizer for all endpoints created from this factory.
|
|
496
|
+
* Individual endpoints can override this by calling `.authorizer()` on the builder.
|
|
497
|
+
* Use `'none'` to explicitly disable authorization for all endpoints.
|
|
498
|
+
*
|
|
499
|
+
* Accepts:
|
|
500
|
+
* - Built-in security scheme names: 'jwt', 'bearer', 'apiKey', 'oauth2', 'oidc'
|
|
501
|
+
* - Custom security scheme names defined via `.securitySchemes()`
|
|
502
|
+
* - 'none' to disable authorization
|
|
503
|
+
*/
|
|
504
|
+
authorizer(name) {
|
|
505
|
+
if (name !== "none" && this.availableAuthorizers.length > 0) {
|
|
506
|
+
const authorizerExists = this.availableAuthorizers.some((a) => a.name === name);
|
|
507
|
+
if (!authorizerExists) {
|
|
508
|
+
const available = this.availableAuthorizers.map((a) => a.name).join(", ");
|
|
509
|
+
throw new Error(`Authorizer "${name}" not found in available authorizers: ${available}`);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
return new EndpointFactory({
|
|
513
|
+
defaultServices: this.defaultServices,
|
|
514
|
+
defaultConstructs: this.defaultConstructs,
|
|
515
|
+
basePath: this.basePath,
|
|
516
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
517
|
+
defaultLogger: this.defaultLogger,
|
|
518
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
519
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
520
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
521
|
+
defaultAuthorizerName: name === "none" ? void 0 : name,
|
|
522
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
523
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
524
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
525
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
526
|
+
surface: this.surface,
|
|
527
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
route(path) {
|
|
531
|
+
const newBasePath = EndpointFactory.joinPaths(path, this.basePath);
|
|
532
|
+
return new EndpointFactory({
|
|
533
|
+
defaultServices: this.defaultServices,
|
|
534
|
+
defaultConstructs: this.defaultConstructs,
|
|
535
|
+
basePath: newBasePath,
|
|
536
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
537
|
+
defaultLogger: this.defaultLogger,
|
|
538
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
539
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
540
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
541
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
542
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
543
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
544
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
545
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
546
|
+
surface: this.surface,
|
|
547
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
authorize(fn) {
|
|
551
|
+
return new EndpointFactory({
|
|
552
|
+
defaultServices: this.defaultServices,
|
|
553
|
+
defaultConstructs: this.defaultConstructs,
|
|
554
|
+
basePath: this.basePath,
|
|
555
|
+
defaultAuthorizeFn: fn,
|
|
556
|
+
defaultLogger: this.defaultLogger,
|
|
557
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
558
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
559
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
560
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
561
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
562
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
563
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
564
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
565
|
+
surface: this.surface,
|
|
566
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Depend on constructs — a database, a bucket, a mail sender, a queue, a
|
|
571
|
+
* topic.
|
|
572
|
+
*
|
|
573
|
+
* It records the edge and dissolves each construct's client into the
|
|
574
|
+
* handler's service record under the construct's own id, so
|
|
575
|
+
* `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
|
|
576
|
+
*
|
|
577
|
+
* Constructs only. A `Service` does not match the shape, which is what keeps
|
|
578
|
+
* env sniffing confined to `.services()` and the explicit lift.
|
|
579
|
+
*/
|
|
580
|
+
dependsOn(constructs) {
|
|
581
|
+
const next = this.services(require_construct_interface.servicesOf(constructs));
|
|
582
|
+
next.defaultConstructs = [...new Set([...this.defaultConstructs, ...constructs.map((construct) => construct.id)])];
|
|
583
|
+
return next;
|
|
584
|
+
}
|
|
585
|
+
services(services) {
|
|
586
|
+
return new EndpointFactory({
|
|
587
|
+
defaultServices: [...services, ...this.defaultServices],
|
|
588
|
+
defaultConstructs: this.defaultConstructs,
|
|
589
|
+
basePath: this.basePath,
|
|
590
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
591
|
+
defaultLogger: this.defaultLogger,
|
|
592
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
593
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
594
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
595
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
596
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
597
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
598
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
599
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
600
|
+
surface: this.surface,
|
|
601
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
logger(logger) {
|
|
605
|
+
return new EndpointFactory({
|
|
606
|
+
defaultServices: this.defaultServices,
|
|
607
|
+
defaultConstructs: this.defaultConstructs,
|
|
608
|
+
basePath: this.basePath,
|
|
609
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
610
|
+
defaultLogger: logger,
|
|
611
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
612
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
613
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
614
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
615
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
616
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
617
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
618
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
619
|
+
surface: this.surface,
|
|
620
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
publisher(publisher) {
|
|
624
|
+
return new EndpointFactory({
|
|
625
|
+
defaultServices: this.defaultServices,
|
|
626
|
+
defaultConstructs: this.defaultConstructs,
|
|
627
|
+
basePath: this.basePath,
|
|
628
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
629
|
+
defaultLogger: this.defaultLogger,
|
|
630
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
631
|
+
defaultEventPublisher: publisher,
|
|
632
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
633
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
634
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
635
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
636
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
637
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
638
|
+
surface: this.surface,
|
|
639
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
640
|
+
});
|
|
641
|
+
}
|
|
642
|
+
session(session) {
|
|
643
|
+
return new EndpointFactory({
|
|
644
|
+
defaultServices: this.defaultServices,
|
|
645
|
+
defaultConstructs: this.defaultConstructs,
|
|
646
|
+
basePath: this.basePath,
|
|
647
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
648
|
+
defaultLogger: this.defaultLogger,
|
|
649
|
+
defaultSessionExtractor: session,
|
|
650
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
651
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
652
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
653
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
654
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
655
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
656
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
657
|
+
surface: this.surface,
|
|
658
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* Set the database service for endpoints created from this factory.
|
|
663
|
+
* The database will be available in handler context as `db`.
|
|
664
|
+
*/
|
|
665
|
+
database(source) {
|
|
666
|
+
const service = require_construct_interface.serviceOf(source);
|
|
667
|
+
return new EndpointFactory({
|
|
668
|
+
defaultServices: this.defaultServices,
|
|
669
|
+
defaultConstructs: this.defaultConstructs,
|
|
670
|
+
basePath: this.basePath,
|
|
671
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
672
|
+
defaultLogger: this.defaultLogger,
|
|
673
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
674
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
675
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
676
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
677
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
678
|
+
defaultDatabaseService: service,
|
|
679
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
680
|
+
surface: this.surface,
|
|
681
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
682
|
+
});
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Set the auditor storage service for endpoints created from this factory.
|
|
686
|
+
* This enables audit functionality and makes `auditor` available in handler context.
|
|
687
|
+
* The audit action type is automatically inferred from the storage's generic parameter.
|
|
688
|
+
*/
|
|
689
|
+
auditor(storage) {
|
|
690
|
+
return new EndpointFactory({
|
|
691
|
+
defaultServices: this.defaultServices,
|
|
692
|
+
defaultConstructs: this.defaultConstructs,
|
|
693
|
+
basePath: this.basePath,
|
|
694
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
695
|
+
defaultLogger: this.defaultLogger,
|
|
696
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
697
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
698
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
699
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
700
|
+
defaultAuditorStorage: storage,
|
|
701
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
702
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
703
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
704
|
+
surface: this.surface,
|
|
705
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
706
|
+
});
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Set the actor extractor function for endpoints created from this factory.
|
|
710
|
+
* The actor is extracted from the request context and attached to all audits.
|
|
711
|
+
*/
|
|
712
|
+
actor(extractor) {
|
|
713
|
+
return new EndpointFactory({
|
|
714
|
+
defaultServices: this.defaultServices,
|
|
715
|
+
defaultConstructs: this.defaultConstructs,
|
|
716
|
+
basePath: this.basePath,
|
|
717
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
718
|
+
defaultLogger: this.defaultLogger,
|
|
719
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
720
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
721
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
722
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
723
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
724
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
725
|
+
defaultActorExtractor: extractor,
|
|
726
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
727
|
+
surface: this.surface,
|
|
728
|
+
defaultRlsConfig: this.defaultRlsConfig
|
|
729
|
+
});
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Set the RLS (Row-Level Security) configuration for endpoints created from this factory.
|
|
733
|
+
* This enables automatic PostgreSQL session variable setting for RLS policies.
|
|
734
|
+
*
|
|
735
|
+
* @example
|
|
736
|
+
* ```typescript
|
|
737
|
+
* const api = new EndpointFactory()
|
|
738
|
+
* .database(databaseService)
|
|
739
|
+
* .session(extractSession)
|
|
740
|
+
* .rls({
|
|
741
|
+
* extractor: ({ session }) => ({
|
|
742
|
+
* user_id: session.userId,
|
|
743
|
+
* tenant_id: session.tenantId,
|
|
744
|
+
* }),
|
|
745
|
+
* prefix: 'app',
|
|
746
|
+
* });
|
|
747
|
+
* ```
|
|
748
|
+
*/
|
|
749
|
+
rls(config) {
|
|
750
|
+
return new EndpointFactory({
|
|
751
|
+
defaultServices: this.defaultServices,
|
|
752
|
+
defaultConstructs: this.defaultConstructs,
|
|
753
|
+
basePath: this.basePath,
|
|
754
|
+
defaultAuthorizeFn: this.defaultAuthorizeFn,
|
|
755
|
+
defaultLogger: this.defaultLogger,
|
|
756
|
+
defaultSessionExtractor: this.defaultSessionExtractor,
|
|
757
|
+
defaultEventPublisher: this.defaultEventPublisher,
|
|
758
|
+
availableAuthorizers: this.availableAuthorizers,
|
|
759
|
+
defaultAuthorizerName: this.defaultAuthorizerName,
|
|
760
|
+
defaultAuditorStorage: this.defaultAuditorStorage,
|
|
761
|
+
defaultDatabaseService: this.defaultDatabaseService,
|
|
762
|
+
defaultActorExtractor: this.defaultActorExtractor,
|
|
763
|
+
customSecuritySchemes: this.customSecuritySchemes,
|
|
764
|
+
surface: this.surface,
|
|
765
|
+
defaultRlsConfig: config
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
createBuilder(method, path) {
|
|
769
|
+
const fullPath = EndpointFactory.joinPaths(path, this.basePath);
|
|
770
|
+
const builder = new EndpointBuilder(fullPath, method);
|
|
771
|
+
if (this.defaultAuthorizeFn) builder._authorize = this.defaultAuthorizeFn;
|
|
772
|
+
if (this.defaultServices.length) builder._services = [...this.defaultServices];
|
|
773
|
+
if (this.defaultConstructs.length) builder._constructs = [...this.defaultConstructs];
|
|
774
|
+
if (this.defaultLogger) builder._logger = this.defaultLogger;
|
|
775
|
+
builder._surface = this.surface;
|
|
776
|
+
if (this.defaultSessionExtractor) builder._getSession = this.defaultSessionExtractor;
|
|
777
|
+
if (this.defaultEventPublisher) builder._setPublisher(this.defaultEventPublisher);
|
|
778
|
+
builder._availableAuthorizers = this.availableAuthorizers;
|
|
779
|
+
if (this.defaultAuthorizerName) builder._authorizerName = this.defaultAuthorizerName;
|
|
780
|
+
if (this.defaultAuditorStorage) builder._setAuditorStorage(this.defaultAuditorStorage);
|
|
781
|
+
if (this.defaultDatabaseService) builder._setDatabaseService(this.defaultDatabaseService);
|
|
782
|
+
if (this.defaultActorExtractor) builder._actorExtractor = this.defaultActorExtractor;
|
|
783
|
+
builder._customSecuritySchemes = this.customSecuritySchemes;
|
|
784
|
+
if (this.defaultRlsConfig) builder._rlsConfig = this.defaultRlsConfig;
|
|
785
|
+
return builder;
|
|
786
|
+
}
|
|
787
|
+
post(path) {
|
|
788
|
+
return this.createBuilder("POST", path);
|
|
789
|
+
}
|
|
790
|
+
get(path) {
|
|
791
|
+
return this.createBuilder("GET", path);
|
|
792
|
+
}
|
|
793
|
+
put(path) {
|
|
794
|
+
return this.createBuilder("PUT", path);
|
|
795
|
+
}
|
|
796
|
+
delete(path) {
|
|
797
|
+
return this.createBuilder("DELETE", path);
|
|
798
|
+
}
|
|
799
|
+
patch(path) {
|
|
800
|
+
return this.createBuilder("PATCH", path);
|
|
801
|
+
}
|
|
802
|
+
options(path) {
|
|
803
|
+
return this.createBuilder("OPTIONS", path);
|
|
804
|
+
}
|
|
805
|
+
};
|
|
806
|
+
|
|
807
|
+
//#endregion
|
|
808
|
+
Object.defineProperty(exports, 'BUILT_IN_SECURITY_SCHEMES', {
|
|
809
|
+
enumerable: true,
|
|
810
|
+
get: function () {
|
|
811
|
+
return BUILT_IN_SECURITY_SCHEMES;
|
|
812
|
+
}
|
|
813
|
+
});
|
|
814
|
+
Object.defineProperty(exports, 'EndpointBuilder', {
|
|
815
|
+
enumerable: true,
|
|
816
|
+
get: function () {
|
|
817
|
+
return EndpointBuilder;
|
|
818
|
+
}
|
|
819
|
+
});
|
|
820
|
+
Object.defineProperty(exports, 'EndpointFactory', {
|
|
821
|
+
enumerable: true,
|
|
822
|
+
get: function () {
|
|
823
|
+
return EndpointFactory;
|
|
824
|
+
}
|
|
825
|
+
});
|
|
826
|
+
Object.defineProperty(exports, 'RLS_BYPASS', {
|
|
827
|
+
enumerable: true,
|
|
828
|
+
get: function () {
|
|
829
|
+
return RLS_BYPASS;
|
|
830
|
+
}
|
|
831
|
+
});
|
|
832
|
+
Object.defineProperty(exports, 'createAuthorizer', {
|
|
833
|
+
enumerable: true,
|
|
834
|
+
get: function () {
|
|
835
|
+
return createAuthorizer;
|
|
836
|
+
}
|
|
837
|
+
});
|
|
838
|
+
Object.defineProperty(exports, 'getSecurityScheme', {
|
|
839
|
+
enumerable: true,
|
|
840
|
+
get: function () {
|
|
841
|
+
return getSecurityScheme;
|
|
842
|
+
}
|
|
843
|
+
});
|
|
844
|
+
Object.defineProperty(exports, 'isBuiltInSecurityScheme', {
|
|
845
|
+
enumerable: true,
|
|
846
|
+
get: function () {
|
|
847
|
+
return isBuiltInSecurityScheme;
|
|
848
|
+
}
|
|
849
|
+
});
|
|
850
|
+
//# sourceMappingURL=EndpointFactory-DYoGLaIT.cjs.map
|