@geekmidas/constructs 10.0.0-alpha.11 → 10.0.0-alpha.111
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 +222 -158
- package/dist/Construct-BQALFCh2.d.cts +230 -0
- package/dist/Construct-BQALFCh2.d.cts.map +1 -0
- package/dist/{Construct-BD5neF7w.mjs → Construct-CKUA-CTA.mjs} +35 -35
- package/dist/Construct-CKUA-CTA.mjs.map +1 -0
- package/dist/{Construct-CyS3RpTL.cjs → Construct-DEOVauyA.cjs} +55 -49
- package/dist/Construct-DEOVauyA.cjs.map +1 -0
- package/dist/Construct-QXnl3VqT.d.mts +230 -0
- package/dist/Construct-QXnl3VqT.d.mts.map +1 -0
- package/dist/{Cron-DmQ8vQ4b.d.cts → Cron-CQJqqkhY.d.mts} +17 -11
- package/dist/Cron-CQJqqkhY.d.mts.map +1 -0
- package/dist/{Cron-dh4rUgib.d.mts → Cron-DI3nKoic.d.cts} +17 -11
- package/dist/Cron-DI3nKoic.d.cts.map +1 -0
- package/dist/{CronBuilder-Da0C0edR.cjs → CronBuilder-BXTG10u5.cjs} +47 -31
- package/dist/CronBuilder-BXTG10u5.cjs.map +1 -0
- package/dist/{CronBuilder-CYKT5RiO.mjs → CronBuilder-D3sF9tS_.mjs} +37 -21
- package/dist/CronBuilder-D3sF9tS_.mjs.map +1 -0
- package/dist/CronBuilder-Xx_zakuc.d.mts +47 -0
- package/dist/CronBuilder-Xx_zakuc.d.mts.map +1 -0
- package/dist/CronBuilder-g1lZLWyG.d.cts +47 -0
- package/dist/CronBuilder-g1lZLWyG.d.cts.map +1 -0
- package/dist/{Endpoint-BjWKinFA.d.mts → Endpoint-BWyKCa2x.d.cts} +130 -100
- package/dist/Endpoint-BWyKCa2x.d.cts.map +1 -0
- package/dist/{Endpoint-dav89W6-.d.cts → Endpoint-CrE9Ppdk.d.mts} +130 -100
- package/dist/Endpoint-CrE9Ppdk.d.mts.map +1 -0
- package/dist/{Endpoint-DCQPMdUX.mjs → Endpoint-gPXhHKhJ.mjs} +208 -100
- package/dist/Endpoint-gPXhHKhJ.mjs.map +1 -0
- package/dist/{Endpoint-DcWXE-SZ.cjs → Endpoint-yhR2T2Wt.cjs} +248 -122
- package/dist/Endpoint-yhR2T2Wt.cjs.map +1 -0
- package/dist/{index-lAO9egTb.d.mts → EndpointFactory-BV-nfnaP.d.mts} +85 -136
- package/dist/EndpointFactory-BV-nfnaP.d.mts.map +1 -0
- package/dist/{EndpointFactory-CdWB7wPw.cjs → EndpointFactory-BVv6EIDu.cjs} +98 -112
- package/dist/EndpointFactory-BVv6EIDu.cjs.map +1 -0
- package/dist/{index-Bd5FqCoe.d.cts → EndpointFactory-C1-IBwm4.d.cts} +84 -135
- package/dist/EndpointFactory-C1-IBwm4.d.cts.map +1 -0
- package/dist/{EndpointFactory-CjV8F_lJ.mjs → EndpointFactory-Cs8IHvwF.mjs} +62 -76
- package/dist/EndpointFactory-Cs8IHvwF.mjs.map +1 -0
- package/dist/Function-DuqGcbOI.d.mts +76 -0
- package/dist/Function-DuqGcbOI.d.mts.map +1 -0
- package/dist/Function-Pu-1kKZz.d.cts +76 -0
- package/dist/Function-Pu-1kKZz.d.cts.map +1 -0
- package/dist/{HonoEndpointAdaptor-DtL9j19R.cjs → HonoEndpointAdaptor-CN1jjUBJ.cjs} +115 -71
- package/dist/HonoEndpointAdaptor-CN1jjUBJ.cjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-P1ahhZHu.mjs → HonoEndpointAdaptor-euH1oSdY.mjs} +105 -64
- package/dist/HonoEndpointAdaptor-euH1oSdY.mjs.map +1 -0
- package/dist/Queue-BhuofM3k.cjs +109 -0
- package/dist/Queue-BhuofM3k.cjs.map +1 -0
- package/dist/{Queue-D7ZuwBhy.d.cts → Queue-DlsHRzUp.d.mts} +48 -48
- package/dist/Queue-DlsHRzUp.d.mts.map +1 -0
- package/dist/{Queue-gVGfi2Yk.d.mts → Queue-HPyi0e1i.d.cts} +49 -49
- package/dist/Queue-HPyi0e1i.d.cts.map +1 -0
- package/dist/Queue-cmhqEBOB.mjs +104 -0
- package/dist/Queue-cmhqEBOB.mjs.map +1 -0
- package/dist/QueueBuilder-Cx9lKC5d.d.mts +75 -0
- package/dist/QueueBuilder-Cx9lKC5d.d.mts.map +1 -0
- package/dist/QueueBuilder-DXu1qxT1.mjs +118 -0
- package/dist/QueueBuilder-DXu1qxT1.mjs.map +1 -0
- package/dist/QueueBuilder-DdU2klPu.cjs +135 -0
- package/dist/QueueBuilder-DdU2klPu.cjs.map +1 -0
- package/dist/QueueBuilder-OSi6LkV9.d.cts +75 -0
- package/dist/QueueBuilder-OSi6LkV9.d.cts.map +1 -0
- package/dist/{Subscriber-2mEi0ImH.d.cts → Subscriber-Bpp02cGr.d.cts} +29 -20
- package/dist/Subscriber-Bpp02cGr.d.cts.map +1 -0
- package/dist/{Subscriber-xTJ9ayPN.d.mts → Subscriber-CtN9R48-.d.mts} +29 -20
- package/dist/Subscriber-CtN9R48-.d.mts.map +1 -0
- package/dist/SubscriberBuilder-4DWe9feX.d.mts +67 -0
- package/dist/SubscriberBuilder-4DWe9feX.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-BjkbeT9l.mjs → SubscriberBuilder-DRXfxWn_.mjs} +50 -24
- package/dist/SubscriberBuilder-DRXfxWn_.mjs.map +1 -0
- package/dist/{SubscriberBuilder-4OPehf2R.cjs → SubscriberBuilder-M2EAgQhC.cjs} +61 -36
- package/dist/SubscriberBuilder-M2EAgQhC.cjs.map +1 -0
- package/dist/SubscriberBuilder-g3fAVWgs.d.cts +67 -0
- package/dist/SubscriberBuilder-g3fAVWgs.d.cts.map +1 -0
- package/dist/Topic-D2R0r24C.mjs +99 -0
- package/dist/Topic-D2R0r24C.mjs.map +1 -0
- package/dist/Topic-DwS3QO0m.cjs +104 -0
- package/dist/Topic-DwS3QO0m.cjs.map +1 -0
- package/dist/adaptors/aws.cjs +200 -246
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +58 -62
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +59 -63
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +171 -219
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +3 -10
- package/dist/adaptors/hono.d.cts +7 -16
- package/dist/adaptors/hono.d.cts.map +1 -1
- package/dist/adaptors/hono.d.mts +9 -18
- package/dist/adaptors/hono.d.mts.map +1 -1
- package/dist/adaptors/hono.mjs +2 -10
- package/dist/adaptors/testing.cjs +765 -99
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +351 -54
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +351 -54
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +726 -78
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/auth-BMCJN30Y.d.cts +268 -0
- package/dist/auth-BMCJN30Y.d.cts.map +1 -0
- package/dist/auth-D_0788uW.d.mts +268 -0
- package/dist/auth-D_0788uW.d.mts.map +1 -0
- package/dist/auth.cjs +301 -33
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.d.cts +2 -108
- package/dist/auth.d.mts +2 -108
- package/dist/auth.mjs +289 -27
- package/dist/auth.mjs.map +1 -1
- package/dist/{cache-BrRz3fEB.d.mts → cache-5QZzh5Er.d.mts} +3 -6
- package/dist/cache-5QZzh5Er.d.mts.map +1 -0
- package/dist/{cache-BtZY_tHe.d.cts → cache-DnGDGly3.d.cts} +3 -6
- package/dist/cache-DnGDGly3.d.cts.map +1 -0
- package/dist/cache.cjs +68 -2
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.cts +1 -2
- package/dist/cache.d.mts +1 -2
- package/dist/cache.mjs +67 -2
- package/dist/cache.mjs.map +1 -0
- package/dist/cipher-C1lEFX63.mjs +225 -0
- package/dist/cipher-C1lEFX63.mjs.map +1 -0
- package/dist/cipher-CVxfwLjk.cjs +332 -0
- package/dist/cipher-CVxfwLjk.cjs.map +1 -0
- package/dist/{clone-DblgEZZa.mjs → clone-EKNovYHu.mjs} +3 -3
- package/dist/clone-EKNovYHu.mjs.map +1 -0
- package/dist/{clone-Dy0cR2SZ.cjs → clone-UGJpvQnL.cjs} +7 -8
- package/dist/clone-UGJpvQnL.cjs.map +1 -0
- package/dist/{construct-interface-D9d4Gm4p.d.cts → construct-interface-B1AfqRl4.d.cts} +42 -11
- package/dist/construct-interface-B1AfqRl4.d.cts.map +1 -0
- package/dist/{construct-interface-g5GM5pwR.d.mts → construct-interface-ZvYQbivO.d.mts} +42 -11
- package/dist/construct-interface-ZvYQbivO.d.mts.map +1 -0
- package/dist/construct-interface.cjs +113 -7
- package/dist/construct-interface.cjs.map +1 -0
- package/dist/construct-interface.d.cts +2 -2
- package/dist/construct-interface.d.mts +2 -2
- package/dist/construct-interface.mjs +106 -2
- package/dist/construct-interface.mjs.map +1 -0
- package/dist/credential-DYymbp_7.cjs +257 -0
- package/dist/credential-DYymbp_7.cjs.map +1 -0
- package/dist/credential-DfSAOOdY.mjs +222 -0
- package/dist/credential-DfSAOOdY.mjs.map +1 -0
- package/dist/credential.cjs +8 -96
- package/dist/credential.d.cts +2 -61
- package/dist/credential.d.mts +2 -61
- package/dist/credential.mjs +2 -94
- package/dist/crons/index.cjs +129 -7
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +45 -11
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +45 -11
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +127 -8
- package/dist/crons/index.mjs.map +1 -1
- package/dist/database/kysely.cjs +4 -181
- package/dist/database/kysely.d.cts +2 -152
- package/dist/database/kysely.d.mts +2 -152
- package/dist/database/kysely.mjs +2 -180
- package/dist/email.cjs +25 -12
- package/dist/email.cjs.map +1 -1
- package/dist/email.d.cts +3 -7
- package/dist/email.d.cts.map +1 -1
- package/dist/email.d.mts +4 -8
- package/dist/email.d.mts.map +1 -1
- package/dist/email.mjs +16 -3
- package/dist/email.mjs.map +1 -1
- package/dist/encryption.cjs +96 -0
- package/dist/encryption.cjs.map +1 -0
- package/dist/encryption.d.cts +117 -0
- package/dist/encryption.d.cts.map +1 -0
- package/dist/encryption.d.mts +117 -0
- package/dist/encryption.d.mts.map +1 -0
- package/dist/encryption.mjs +83 -0
- package/dist/encryption.mjs.map +1 -0
- package/dist/endpoints/index.cjs +20 -16
- package/dist/endpoints/index.d.cts +105 -7
- package/dist/endpoints/index.d.cts.map +1 -0
- package/dist/endpoints/index.d.mts +105 -7
- package/dist/endpoints/index.d.mts.map +1 -0
- package/dist/endpoints/index.mjs +6 -10
- package/dist/external-api.cjs +106 -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 +103 -0
- package/dist/external-api.mjs.map +1 -0
- package/dist/fake-DqKo8INJ.d.mts +201 -0
- package/dist/fake-DqKo8INJ.d.mts.map +1 -0
- package/dist/fake-Dvion_Fh.d.cts +201 -0
- package/dist/fake-Dvion_Fh.d.cts.map +1 -0
- package/dist/file-server.cjs +42 -10
- package/dist/file-server.cjs.map +1 -1
- package/dist/file-server.d.cts +6 -10
- package/dist/file-server.d.cts.map +1 -1
- package/dist/file-server.d.mts +6 -10
- package/dist/file-server.d.mts.map +1 -1
- package/dist/file-server.mjs +34 -2
- package/dist/file-server.mjs.map +1 -1
- package/dist/functions/index.cjs +3 -6
- package/dist/functions/index.d.cts +3 -4
- package/dist/functions/index.d.mts +3 -4
- package/dist/functions/index.mjs +2 -6
- package/dist/{functions-14lpEFL4.mjs → functions-CTI-hDem.mjs} +376 -238
- package/dist/{functions-14lpEFL4.mjs.map → functions-CTI-hDem.mjs.map} +1 -1
- package/dist/{functions-i_la-N5r.cjs → functions-D7O5SGVc.cjs} +414 -264
- package/dist/functions-D7O5SGVc.cjs.map +1 -0
- package/dist/index-B13kQB_U.d.mts +115 -0
- package/dist/index-B13kQB_U.d.mts.map +1 -0
- package/dist/index-BuzRvKOQ.d.cts +115 -0
- package/dist/index-BuzRvKOQ.d.cts.map +1 -0
- package/dist/index-CeEtxDmK.d.cts +79 -0
- package/dist/index-CeEtxDmK.d.cts.map +1 -0
- package/dist/index-CeEtxDmK.d.mts +79 -0
- package/dist/index-CeEtxDmK.d.mts.map +1 -0
- package/dist/index.cjs +6 -3
- package/dist/index.d.cts +27 -4
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +27 -4
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3 -3
- package/dist/kms-B-Hm3d5r.cjs +85 -0
- package/dist/kms-B-Hm3d5r.cjs.map +1 -0
- package/dist/kms-BdUlMJEZ.mjs +85 -0
- package/dist/kms-BdUlMJEZ.mjs.map +1 -0
- package/dist/kysely-B3zfg9ti.cjs +383 -0
- package/dist/kysely-B3zfg9ti.cjs.map +1 -0
- package/dist/kysely-B_0BAr0T.mjs +370 -0
- package/dist/kysely-B_0BAr0T.mjs.map +1 -0
- package/dist/kysely-D0bpzgPs.d.cts +175 -0
- package/dist/kysely-D0bpzgPs.d.cts.map +1 -0
- package/dist/kysely-DKwnl0nf.d.mts +175 -0
- package/dist/kysely-DKwnl0nf.d.mts.map +1 -0
- package/dist/{telemetry-C3L0iS28.d.cts → lambdaTelemetry-8vnmVZQ5.d.cts} +3 -6
- package/dist/lambdaTelemetry-8vnmVZQ5.d.cts.map +1 -0
- package/dist/{telemetry-D7bVFLGi.d.mts → lambdaTelemetry-8vnmVZQ5.d.mts} +3 -6
- package/dist/lambdaTelemetry-8vnmVZQ5.d.mts.map +1 -0
- package/dist/mobile-app.cjs +74 -0
- package/dist/mobile-app.cjs.map +1 -0
- package/dist/mobile-app.d.cts +73 -0
- package/dist/mobile-app.d.cts.map +1 -0
- package/dist/mobile-app.d.mts +73 -0
- package/dist/mobile-app.d.mts.map +1 -0
- package/dist/mobile-app.mjs +73 -0
- package/dist/mobile-app.mjs.map +1 -0
- package/dist/object-storage.cjs +18 -10
- package/dist/object-storage.cjs.map +1 -1
- package/dist/object-storage.d.cts +3 -7
- package/dist/object-storage.d.cts.map +1 -1
- package/dist/object-storage.d.mts +3 -7
- package/dist/object-storage.d.mts.map +1 -1
- package/dist/object-storage.mjs +11 -3
- package/dist/object-storage.mjs.map +1 -1
- package/dist/queue/index.cjs +6 -189
- package/dist/queue/index.d.cts +3 -60
- package/dist/queue/index.d.mts +3 -60
- package/dist/queue/index.mjs +3 -186
- package/dist/random-password.cjs +86 -0
- package/dist/random-password.cjs.map +1 -0
- package/dist/random-password.d.cts +30 -0
- package/dist/random-password.d.cts.map +1 -0
- package/dist/random-password.d.mts +30 -0
- package/dist/random-password.d.mts.map +1 -0
- package/dist/random-password.mjs +84 -0
- package/dist/random-password.mjs.map +1 -0
- package/dist/{lazyAccessors-BoJN3SMd.mjs → readRequestBody-BTIl3k-D.mjs} +117 -60
- package/dist/readRequestBody-BTIl3k-D.mjs.map +1 -0
- package/dist/readRequestBody-Dej_L3c4.cjs +342 -0
- package/dist/readRequestBody-Dej_L3c4.cjs.map +1 -0
- package/dist/requestLogger-BZcXwdBs.cjs +207 -0
- package/dist/requestLogger-BZcXwdBs.cjs.map +1 -0
- package/dist/requestLogger-pA4gi3E1.mjs +178 -0
- package/dist/requestLogger-pA4gi3E1.mjs.map +1 -0
- package/dist/rest-api.cjs +90 -59
- package/dist/rest-api.cjs.map +1 -1
- package/dist/rest-api.d.cts +70 -42
- package/dist/rest-api.d.cts.map +1 -1
- package/dist/rest-api.d.mts +70 -42
- package/dist/rest-api.d.mts.map +1 -1
- package/dist/rest-api.mjs +82 -51
- package/dist/rest-api.mjs.map +1 -1
- package/dist/{chunk-DWy1uDak.cjs → rolldown-runtime-y5ARvAq5.cjs} +14 -18
- package/dist/runSubscriber-BHvJ8POr.mjs +109 -0
- package/dist/runSubscriber-BHvJ8POr.mjs.map +1 -0
- package/dist/runSubscriber-D8nLXIv1.cjs +126 -0
- package/dist/runSubscriber-D8nLXIv1.cjs.map +1 -0
- package/dist/shutdown-BMJmAhSt.cjs +38 -0
- package/dist/shutdown-BMJmAhSt.cjs.map +1 -0
- package/dist/shutdown-C7xa8x9S.mjs +27 -0
- package/dist/shutdown-C7xa8x9S.mjs.map +1 -0
- package/dist/site.cjs +33 -7
- package/dist/site.cjs.map +1 -1
- package/dist/site.d.cts +17 -7
- package/dist/site.d.cts.map +1 -1
- package/dist/site.d.mts +17 -7
- package/dist/site.d.mts.map +1 -1
- package/dist/site.mjs +29 -3
- package/dist/site.mjs.map +1 -1
- package/dist/stages-BSCF19o2.d.cts +56 -0
- package/dist/stages-BSCF19o2.d.cts.map +1 -0
- package/dist/stages-BSCF19o2.d.mts +56 -0
- package/dist/stages-BSCF19o2.d.mts.map +1 -0
- package/dist/subscribers/index.cjs +118 -6
- package/dist/subscribers/index.cjs.map +1 -0
- package/dist/subscribers/index.d.cts +51 -6
- package/dist/subscribers/index.d.cts.map +1 -0
- package/dist/subscribers/index.d.mts +51 -6
- package/dist/subscribers/index.d.mts.map +1 -0
- package/dist/subscribers/index.mjs +115 -5
- package/dist/subscribers/index.mjs.map +1 -0
- package/dist/surfaceEnv-CNimK76p.cjs +56 -0
- package/dist/surfaceEnv-CNimK76p.cjs.map +1 -0
- package/dist/surfaceEnv-wMT5QzgZ.mjs +45 -0
- package/dist/surfaceEnv-wMT5QzgZ.mjs.map +1 -0
- package/dist/telemetry-B48RLjyk.d.cts +40 -0
- package/dist/telemetry-B48RLjyk.d.cts.map +1 -0
- package/dist/telemetry-BEoBn6GO.d.mts +40 -0
- package/dist/telemetry-BEoBn6GO.d.mts.map +1 -0
- package/dist/telemetry.cjs +56 -0
- package/dist/telemetry.cjs.map +1 -0
- package/dist/telemetry.d.cts +2 -0
- package/dist/telemetry.d.mts +2 -0
- package/dist/telemetry.mjs +55 -0
- package/dist/telemetry.mjs.map +1 -0
- package/dist/topic/index.cjs +3 -137
- package/dist/topic/index.d.cts +2 -4
- package/dist/topic/index.d.mts +2 -4
- package/dist/topic/index.mjs +2 -134
- package/dist/tracing-Bbj1uoFJ.mjs +127 -0
- package/dist/tracing-Bbj1uoFJ.mjs.map +1 -0
- package/dist/tracing-C0ooU0V2.cjs +150 -0
- package/dist/tracing-C0ooU0V2.cjs.map +1 -0
- package/dist/{types-BlAkSuGI.d.cts → types-DMuSQeLL.d.cts} +3 -5
- package/dist/types-DMuSQeLL.d.cts.map +1 -0
- package/dist/{types-aKksMEWL.d.mts → types-DMuSQeLL.d.mts} +3 -5
- package/dist/types-DMuSQeLL.d.mts.map +1 -0
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.mjs +1 -0
- package/dist/worker.cjs +59 -34
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.cts +70 -45
- package/dist/worker.d.cts.map +1 -1
- package/dist/worker.d.mts +71 -46
- package/dist/worker.d.mts.map +1 -1
- package/dist/worker.mjs +54 -29
- package/dist/worker.mjs.map +1 -1
- package/package.json +106 -42
- package/dist/Construct-BD5neF7w.mjs.map +0 -1
- package/dist/Construct-C0ijr2qp.d.cts +0 -117
- package/dist/Construct-C0ijr2qp.d.cts.map +0 -1
- package/dist/Construct-Ct8nalEi.d.mts +0 -117
- package/dist/Construct-Ct8nalEi.d.mts.map +0 -1
- package/dist/Construct-CyS3RpTL.cjs.map +0 -1
- package/dist/Cron-DmQ8vQ4b.d.cts.map +0 -1
- package/dist/Cron-dh4rUgib.d.mts.map +0 -1
- package/dist/CronBuilder-BquXDbDI.d.cts +0 -44
- package/dist/CronBuilder-BquXDbDI.d.cts.map +0 -1
- package/dist/CronBuilder-CGgY2080.d.mts +0 -44
- package/dist/CronBuilder-CGgY2080.d.mts.map +0 -1
- package/dist/CronBuilder-CYKT5RiO.mjs.map +0 -1
- package/dist/CronBuilder-Da0C0edR.cjs.map +0 -1
- package/dist/Endpoint-BjWKinFA.d.mts.map +0 -1
- package/dist/Endpoint-DCQPMdUX.mjs.map +0 -1
- package/dist/Endpoint-DcWXE-SZ.cjs.map +0 -1
- package/dist/Endpoint-dav89W6-.d.cts.map +0 -1
- package/dist/EndpointFactory-CdWB7wPw.cjs.map +0 -1
- package/dist/EndpointFactory-CjV8F_lJ.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-DtL9j19R.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-P1ahhZHu.mjs.map +0 -1
- package/dist/Queue-D7ZuwBhy.d.cts.map +0 -1
- package/dist/Queue-gVGfi2Yk.d.mts.map +0 -1
- package/dist/Subscriber-2mEi0ImH.d.cts.map +0 -1
- package/dist/Subscriber-xTJ9ayPN.d.mts.map +0 -1
- package/dist/SubscriberBuilder-4OPehf2R.cjs.map +0 -1
- package/dist/SubscriberBuilder-BjkbeT9l.mjs.map +0 -1
- package/dist/SubscriberBuilder-Dptmo-1A.d.mts +0 -62
- package/dist/SubscriberBuilder-Dptmo-1A.d.mts.map +0 -1
- package/dist/SubscriberBuilder-waNhzjSM.d.cts +0 -62
- package/dist/SubscriberBuilder-waNhzjSM.d.cts.map +0 -1
- package/dist/Topic-19QeHBIR.d.cts +0 -91
- package/dist/Topic-19QeHBIR.d.cts.map +0 -1
- package/dist/Topic-DuFeqkBh.d.mts +0 -91
- package/dist/Topic-DuFeqkBh.d.mts.map +0 -1
- package/dist/auth.d.cts.map +0 -1
- package/dist/auth.d.mts.map +0 -1
- package/dist/cache-0ANvRQnD.mjs +0 -51
- package/dist/cache-0ANvRQnD.mjs.map +0 -1
- package/dist/cache-3WSvAulx.cjs +0 -57
- package/dist/cache-3WSvAulx.cjs.map +0 -1
- package/dist/cache-BrRz3fEB.d.mts.map +0 -1
- package/dist/cache-BtZY_tHe.d.cts.map +0 -1
- package/dist/clone-DblgEZZa.mjs.map +0 -1
- package/dist/clone-Dy0cR2SZ.cjs.map +0 -1
- package/dist/construct-interface-BfjcOD_E.cjs +0 -117
- package/dist/construct-interface-BfjcOD_E.cjs.map +0 -1
- package/dist/construct-interface-D9d4Gm4p.d.cts.map +0 -1
- package/dist/construct-interface-Z4CpS8tK.mjs +0 -81
- package/dist/construct-interface-Z4CpS8tK.mjs.map +0 -1
- package/dist/construct-interface-g5GM5pwR.d.mts.map +0 -1
- package/dist/credential.cjs.map +0 -1
- package/dist/credential.d.cts.map +0 -1
- package/dist/credential.d.mts.map +0 -1
- package/dist/credential.mjs.map +0 -1
- package/dist/database/kysely.cjs.map +0 -1
- package/dist/database/kysely.d.cts.map +0 -1
- package/dist/database/kysely.d.mts.map +0 -1
- package/dist/database/kysely.mjs.map +0 -1
- package/dist/functions-i_la-N5r.cjs.map +0 -1
- package/dist/index-Bd5FqCoe.d.cts.map +0 -1
- package/dist/index-BknhM6Ux.d.mts +0 -31
- package/dist/index-BknhM6Ux.d.mts.map +0 -1
- package/dist/index-CBSfrowv.d.cts +0 -31
- package/dist/index-CBSfrowv.d.cts.map +0 -1
- package/dist/index-D24Xm79M.d.cts +0 -171
- package/dist/index-D24Xm79M.d.cts.map +0 -1
- package/dist/index-_ajboYxK.d.mts +0 -171
- package/dist/index-_ajboYxK.d.mts.map +0 -1
- package/dist/index-lAO9egTb.d.mts.map +0 -1
- package/dist/lazyAccessors-BoJN3SMd.mjs.map +0 -1
- package/dist/lazyAccessors-e3j2oE2m.cjs +0 -274
- package/dist/lazyAccessors-e3j2oE2m.cjs.map +0 -1
- package/dist/processAudits-CGqttuXm.cjs +0 -92
- package/dist/processAudits-CGqttuXm.cjs.map +0 -1
- package/dist/processAudits-Dmts9H_b.mjs +0 -80
- package/dist/processAudits-Dmts9H_b.mjs.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/surfaceEnv-BFXEms2f.cjs +0 -39
- package/dist/surfaceEnv-BFXEms2f.cjs.map +0 -1
- package/dist/surfaceEnv-C3Ktahea.mjs +0 -27
- package/dist/surfaceEnv-C3Ktahea.mjs.map +0 -1
- package/dist/telemetry-C3L0iS28.d.cts.map +0 -1
- package/dist/telemetry-D7bVFLGi.d.mts.map +0 -1
- package/dist/topic/index.cjs.map +0 -1
- package/dist/topic/index.mjs.map +0 -1
- package/dist/types-BlAkSuGI.d.cts.map +0 -1
- package/dist/types-aKksMEWL.d.mts.map +0 -1
package/dist/adaptors/aws.cjs
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
require(
|
|
3
|
-
require(
|
|
4
|
-
const require_functions = require(
|
|
5
|
-
require(
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_rolldown_runtime = require("../rolldown-runtime-y5ARvAq5.cjs");
|
|
3
|
+
const require_tracing = require("../tracing-C0ooU0V2.cjs");
|
|
4
|
+
const require_functions = require("../functions-D7O5SGVc.cjs");
|
|
5
|
+
const require_Endpoint = require("../Endpoint-yhR2T2Wt.cjs");
|
|
6
|
+
const require_surfaceEnv = require("../surfaceEnv-CNimK76p.cjs");
|
|
7
|
+
const require_readRequestBody = require("../readRequestBody-Dej_L3c4.cjs");
|
|
8
|
+
const require_runSubscriber = require("../runSubscriber-D8nLXIv1.cjs");
|
|
9
|
+
const require_requestLogger = require("../requestLogger-BZcXwdBs.cjs");
|
|
10
|
+
let _geekmidas_events = require("@geekmidas/events");
|
|
11
|
+
let _geekmidas_services = require("@geekmidas/services");
|
|
12
|
+
let _geekmidas_errors = require("@geekmidas/errors");
|
|
13
|
+
let qs = require("qs");
|
|
14
|
+
qs = require_rolldown_runtime.__toESM(qs, 1);
|
|
15
|
+
let _middy_core = require("@middy/core");
|
|
16
|
+
_middy_core = require_rolldown_runtime.__toESM(_middy_core, 1);
|
|
17
|
+
let _geekmidas_audit = require("@geekmidas/audit");
|
|
18
|
+
let _geekmidas_audit_kysely = require("@geekmidas/audit/kysely");
|
|
19
|
+
let _geekmidas_db_rls = require("@geekmidas/db/rls");
|
|
18
20
|
//#region src/functions/FunctionExecutionWrapper.ts
|
|
19
21
|
var FunctionExecutionWrapper = class {
|
|
22
|
+
envParser;
|
|
23
|
+
fn;
|
|
20
24
|
constructor(envParser, fn) {
|
|
21
25
|
this.envParser = envParser;
|
|
22
26
|
this.fn = fn;
|
|
@@ -26,25 +30,22 @@ var FunctionExecutionWrapper = class {
|
|
|
26
30
|
return this._logger || this.fn.logger;
|
|
27
31
|
}
|
|
28
32
|
get serviceDiscovery() {
|
|
29
|
-
|
|
30
|
-
return serviceDiscovery;
|
|
33
|
+
return _geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
31
34
|
}
|
|
32
35
|
getServices() {
|
|
33
36
|
return this.serviceDiscovery.register(this.fn.services);
|
|
34
37
|
}
|
|
35
38
|
async getDatabase() {
|
|
36
|
-
if (!this.fn.databaseService) return
|
|
37
|
-
|
|
38
|
-
return services[this.fn.databaseService.serviceName];
|
|
39
|
+
if (!this.fn.databaseService) return;
|
|
40
|
+
return (await this.serviceDiscovery.register([this.fn.databaseService]))[this.fn.databaseService.serviceName];
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Get the audit storage service if configured.
|
|
42
44
|
* Returns undefined if no auditor storage is configured.
|
|
43
45
|
*/
|
|
44
46
|
async getAuditStorage() {
|
|
45
|
-
if (!this.fn.auditorStorageService) return
|
|
46
|
-
|
|
47
|
-
return services[this.fn.auditorStorageService.serviceName];
|
|
47
|
+
if (!this.fn.auditorStorageService) return;
|
|
48
|
+
return (await this.serviceDiscovery.register([this.fn.auditorStorageService]))[this.fn.auditorStorageService.serviceName];
|
|
48
49
|
}
|
|
49
50
|
/**
|
|
50
51
|
* Create an auditor instance for the function.
|
|
@@ -52,8 +53,8 @@ var FunctionExecutionWrapper = class {
|
|
|
52
53
|
*/
|
|
53
54
|
async createAuditor() {
|
|
54
55
|
const storage = await this.getAuditStorage();
|
|
55
|
-
if (!storage) return
|
|
56
|
-
return new
|
|
56
|
+
if (!storage) return;
|
|
57
|
+
return new _geekmidas_audit.DefaultAuditor({
|
|
57
58
|
actor: {
|
|
58
59
|
id: "system",
|
|
59
60
|
type: "system"
|
|
@@ -73,52 +74,45 @@ var FunctionExecutionWrapper = class {
|
|
|
73
74
|
async executeWithAudit(handler) {
|
|
74
75
|
const auditor = await this.createAuditor();
|
|
75
76
|
const storage = await this.getAuditStorage();
|
|
76
|
-
if (!auditor || !storage) {
|
|
77
|
-
const db$1 = await this.getDatabase();
|
|
78
|
-
return handler({ db: db$1 });
|
|
79
|
-
}
|
|
77
|
+
if (!auditor || !storage) return handler({ db: await this.getDatabase() });
|
|
80
78
|
const storageDb = storage.getDatabase?.();
|
|
81
79
|
const databaseServiceName = this.fn.databaseService?.serviceName;
|
|
82
80
|
const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
|
|
83
|
-
if (storageDb && databaseServiceName && auditDbServiceName) return (0,
|
|
84
|
-
|
|
81
|
+
if (storageDb && databaseServiceName && auditDbServiceName) return (0, _geekmidas_audit_kysely.withAuditableTransaction)(storageDb, auditor, async (trx) => {
|
|
82
|
+
return await handler({
|
|
85
83
|
auditor,
|
|
86
84
|
db: trx
|
|
87
85
|
});
|
|
88
|
-
return response$1;
|
|
89
86
|
});
|
|
90
|
-
const db = await this.getDatabase();
|
|
91
87
|
const response = await handler({
|
|
92
88
|
auditor,
|
|
93
|
-
db
|
|
89
|
+
db: await this.getDatabase()
|
|
94
90
|
});
|
|
95
91
|
await auditor.flush();
|
|
96
92
|
return response;
|
|
97
93
|
}
|
|
98
94
|
async getFunctionInput(event) {
|
|
99
|
-
|
|
100
|
-
return parsedInput;
|
|
95
|
+
return await require_functions.FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
|
|
101
96
|
}
|
|
102
97
|
async publishEvents(response) {
|
|
103
|
-
await
|
|
98
|
+
await require_functions.publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response);
|
|
104
99
|
}
|
|
105
100
|
async parseComposableStandardSchema(data, schema) {
|
|
106
101
|
return require_functions.FunctionBuilder.parseComposableStandardSchema(data, schema);
|
|
107
102
|
}
|
|
108
103
|
};
|
|
109
|
-
|
|
110
104
|
//#endregion
|
|
111
105
|
//#region src/functions/AWSLambdaFunction.ts
|
|
112
106
|
var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
107
|
+
fn;
|
|
113
108
|
constructor(envParser, fn) {
|
|
114
109
|
super(envParser, fn);
|
|
115
110
|
this.fn = fn;
|
|
116
111
|
}
|
|
117
112
|
error() {
|
|
118
113
|
return { onError: (req) => {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
throw (0, __geekmidas_errors.wrapError)(req.error);
|
|
114
|
+
(req.event?.logger || this.fn.logger).error(req.error || {}, "Error processing function");
|
|
115
|
+
throw (0, _geekmidas_errors.wrapError)(req.error);
|
|
122
116
|
} };
|
|
123
117
|
}
|
|
124
118
|
baseInput() {
|
|
@@ -133,7 +127,7 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
133
127
|
} else req.event.parsedInput = req.event;
|
|
134
128
|
} catch (error) {
|
|
135
129
|
this.logger.error({
|
|
136
|
-
error,
|
|
130
|
+
err: error,
|
|
137
131
|
event: req.event
|
|
138
132
|
}, "Failed to parse input");
|
|
139
133
|
throw error;
|
|
@@ -193,26 +187,25 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
193
187
|
db: event.db,
|
|
194
188
|
auditor: event.auditor
|
|
195
189
|
});
|
|
196
|
-
|
|
197
|
-
return output;
|
|
190
|
+
return await this.fn.parseOutput(result);
|
|
198
191
|
}
|
|
199
192
|
get handler() {
|
|
200
193
|
const handler = this._handler.bind(this);
|
|
201
|
-
const chain = (0,
|
|
194
|
+
const chain = (0, _middy_core.default)(handler).use(this.loggerMiddleware()).use(this.baseInput()).use(this.error()).use(this.services()).use(this.database()).use(this.auditor()).use(this.input()).use(this.events());
|
|
202
195
|
const wrappedHandler = async (event, context) => {
|
|
203
196
|
const startTime = Date.now();
|
|
204
197
|
const requestId = context.awsRequestId;
|
|
205
198
|
const logger = this.fn.logger.child({ requestId });
|
|
206
|
-
return (0,
|
|
199
|
+
return (0, _geekmidas_services.runWithRequestContext)({
|
|
207
200
|
logger,
|
|
208
201
|
requestId,
|
|
209
|
-
startTime
|
|
202
|
+
startTime,
|
|
203
|
+
operation: context.functionName
|
|
210
204
|
}, () => chain(event, context));
|
|
211
205
|
};
|
|
212
206
|
return wrappedHandler;
|
|
213
207
|
}
|
|
214
208
|
};
|
|
215
|
-
|
|
216
209
|
//#endregion
|
|
217
210
|
//#region src/crons/AWSScheduledFunction.ts
|
|
218
211
|
/**
|
|
@@ -246,11 +239,11 @@ var AWSScheduledFunction = class extends AWSLambdaFunction {
|
|
|
246
239
|
super(envParser, cron);
|
|
247
240
|
}
|
|
248
241
|
};
|
|
249
|
-
|
|
250
242
|
//#endregion
|
|
251
243
|
//#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
|
|
252
|
-
var
|
|
253
|
-
var AmazonApiGatewayEndpoint = class {
|
|
244
|
+
var import_lodash_set = /* @__PURE__ */ require_rolldown_runtime.__toESM(require_Endpoint.require_lodash_set(), 1);
|
|
245
|
+
var AmazonApiGatewayEndpoint = class AmazonApiGatewayEndpoint {
|
|
246
|
+
endpoint;
|
|
254
247
|
options;
|
|
255
248
|
/**
|
|
256
249
|
* The parser this adaptor discovers services with.
|
|
@@ -270,27 +263,39 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
270
263
|
error() {
|
|
271
264
|
return { onError: (req) => {
|
|
272
265
|
(req.event.logger || this.endpoint.logger).error(req.error || {}, "Error processing request");
|
|
273
|
-
const wrappedError = (0,
|
|
266
|
+
const wrappedError = (0, _geekmidas_errors.wrapError)(req.error);
|
|
274
267
|
req.response = {
|
|
275
268
|
statusCode: wrappedError.statusCode,
|
|
276
|
-
body: wrappedError.body
|
|
269
|
+
body: wrappedError.body,
|
|
270
|
+
...wrappedError.headers ? { headers: { ...wrappedError.headers } } : {}
|
|
277
271
|
};
|
|
278
272
|
} };
|
|
279
273
|
}
|
|
280
274
|
/**
|
|
281
|
-
* Decodes the raw body from an API Gateway event
|
|
282
|
-
*
|
|
283
|
-
*
|
|
284
|
-
* - Anything else → return decoded string as-is, let the schema handle it
|
|
275
|
+
* Decodes the raw body from an API Gateway event — base64 when API
|
|
276
|
+
* Gateway says so — and reads it by its Content-Type, as every adaptor
|
|
277
|
+
* does (see {@link readRequestBody}): JSON, an HTML form's fields, or text.
|
|
285
278
|
*
|
|
286
|
-
*
|
|
279
|
+
* A body with no Content-Type is read as JSON, as it always has been here.
|
|
287
280
|
*/
|
|
288
|
-
static decodeBody(body, isBase64Encoded, contentType) {
|
|
281
|
+
static async decodeBody(body, isBase64Encoded, contentType) {
|
|
289
282
|
if (!body) return void 0;
|
|
290
|
-
const
|
|
291
|
-
const
|
|
292
|
-
|
|
293
|
-
|
|
283
|
+
const bytes = Buffer.from(body, isBase64Encoded ? "base64" : "utf-8");
|
|
284
|
+
const request = new Request("http://api-gateway.invalid/", {
|
|
285
|
+
method: "POST",
|
|
286
|
+
headers: contentType ? { "content-type": contentType } : {},
|
|
287
|
+
body: bytes
|
|
288
|
+
});
|
|
289
|
+
return require_readRequestBody.readRequestBody(request, contentType, { untyped: "json" });
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* The event's body, read only for an endpoint with a `.body()` schema —
|
|
293
|
+
* one without is handed no body, and is not refused a content type it
|
|
294
|
+
* never reads.
|
|
295
|
+
*/
|
|
296
|
+
readBody(body, isBase64Encoded, contentType) {
|
|
297
|
+
if (!this.endpoint.input?.body) return Promise.resolve(void 0);
|
|
298
|
+
return AmazonApiGatewayEndpoint.decodeBody(body, isBase64Encoded, contentType);
|
|
294
299
|
}
|
|
295
300
|
getCookies(e) {
|
|
296
301
|
const headers = e.headers;
|
|
@@ -299,36 +304,38 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
299
304
|
input() {
|
|
300
305
|
return { before: async (req) => {
|
|
301
306
|
try {
|
|
302
|
-
const { body, query, params } = this.getInput(req.event);
|
|
307
|
+
const { body, query, params } = await this.getInput(req.event);
|
|
303
308
|
const headers = req.event.headers;
|
|
304
309
|
const header = require_Endpoint.Endpoint.createHeaders(headers);
|
|
305
310
|
const cookie = this.getCookies(req.event);
|
|
306
|
-
(0,
|
|
307
|
-
(0,
|
|
308
|
-
(0,
|
|
309
|
-
(0,
|
|
310
|
-
(0,
|
|
311
|
+
(0, import_lodash_set.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
|
|
312
|
+
(0, import_lodash_set.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
|
|
313
|
+
(0, import_lodash_set.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
|
|
314
|
+
(0, import_lodash_set.default)(req.event, "header", header);
|
|
315
|
+
(0, import_lodash_set.default)(req.event, "cookie", cookie);
|
|
311
316
|
} catch (error) {
|
|
312
|
-
if (error && typeof error === "object" && Array.isArray(error)) throw new
|
|
317
|
+
if (error && typeof error === "object" && Array.isArray(error)) throw new _geekmidas_errors.UnprocessableEntityError("Validation failed", error);
|
|
313
318
|
throw error;
|
|
314
319
|
}
|
|
315
320
|
} };
|
|
316
321
|
}
|
|
322
|
+
/** This request's logger: see {@link requestLogger}. */
|
|
323
|
+
requestLogger(event, context) {
|
|
324
|
+
return require_requestLogger.requestLogger(this.endpoint, {
|
|
325
|
+
requestId: context.awsRequestId,
|
|
326
|
+
host: event.headers?.host,
|
|
327
|
+
...this.getLoggerContext(event, context)
|
|
328
|
+
});
|
|
329
|
+
}
|
|
317
330
|
logger() {
|
|
318
331
|
return { before: (req) => {
|
|
319
|
-
req.event.logger = this.
|
|
320
|
-
route: this.endpoint.route,
|
|
321
|
-
host: req.event.headers?.host,
|
|
322
|
-
method: this.endpoint.method,
|
|
323
|
-
...this.getLoggerContext(req.event, req.context)
|
|
324
|
-
});
|
|
332
|
+
req.event.logger = (0, _geekmidas_services.currentRequestContext)()?.logger ?? this.requestLogger(req.event, req.context);
|
|
325
333
|
} };
|
|
326
334
|
}
|
|
327
335
|
services() {
|
|
328
336
|
return { before: async (req) => {
|
|
329
|
-
|
|
330
|
-
const
|
|
331
|
-
const services = await serviceDiscovery.register(this.endpoint.services);
|
|
337
|
+
req.event.logger;
|
|
338
|
+
const services = await _geekmidas_services.ServiceDiscovery.getInstance(this.envParser).register(this.endpoint.services);
|
|
332
339
|
req.event.services = services;
|
|
333
340
|
} };
|
|
334
341
|
}
|
|
@@ -339,7 +346,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
339
346
|
const header = req.event.header;
|
|
340
347
|
const cookie = req.event.cookie;
|
|
341
348
|
const session = req.event.session;
|
|
342
|
-
|
|
349
|
+
if (!await this.endpoint.authorize({
|
|
343
350
|
header,
|
|
344
351
|
cookie,
|
|
345
352
|
services,
|
|
@@ -349,19 +356,39 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
349
356
|
body: req.event.body,
|
|
350
357
|
query: req.event.query,
|
|
351
358
|
params: req.event.params
|
|
352
|
-
})
|
|
353
|
-
if (!isAuthorized) {
|
|
359
|
+
})) {
|
|
354
360
|
logger.warn("Forbidden access attempt");
|
|
355
|
-
throw new
|
|
361
|
+
throw new _geekmidas_errors.ForbiddenError("Forbidden access to the endpoint", "You do not have permission to access this resource.");
|
|
356
362
|
}
|
|
357
363
|
} };
|
|
358
364
|
}
|
|
365
|
+
/**
|
|
366
|
+
* The endpoint's `.rateLimit()`, after authorization as on every adaptor:
|
|
367
|
+
* over the limit it throws a 429, which `error()` answers with its
|
|
368
|
+
* headers; under it, the `X-RateLimit-*` headers go on the response.
|
|
369
|
+
*/
|
|
370
|
+
rateLimit() {
|
|
371
|
+
return { before: async (req) => {
|
|
372
|
+
if (!this.endpoint.rateLimit) return;
|
|
373
|
+
req.event.rateLimitHeaders = await require_requestLogger.enforceRateLimit(this.endpoint.rateLimit, {
|
|
374
|
+
header: req.event.header,
|
|
375
|
+
services: req.event.services,
|
|
376
|
+
logger: req.event.logger,
|
|
377
|
+
session: req.event.session,
|
|
378
|
+
path: this.requestPath(req.event),
|
|
379
|
+
method: this.endpoint.method
|
|
380
|
+
});
|
|
381
|
+
} };
|
|
382
|
+
}
|
|
383
|
+
/** The path the request was made to, as the limiter keys a client by. */
|
|
384
|
+
requestPath(event) {
|
|
385
|
+
return event.path ?? event.rawPath ?? this.endpoint.route;
|
|
386
|
+
}
|
|
359
387
|
database() {
|
|
360
388
|
return { before: async (req) => {
|
|
361
389
|
if (!this.endpoint.databaseService) return;
|
|
362
|
-
|
|
363
|
-
const
|
|
364
|
-
const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
390
|
+
req.event.logger;
|
|
391
|
+
const db = await _geekmidas_services.ServiceDiscovery.getInstance(this.envParser).register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
365
392
|
req.event.db = db;
|
|
366
393
|
} };
|
|
367
394
|
}
|
|
@@ -377,6 +404,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
377
404
|
cookie: req.event.cookie,
|
|
378
405
|
...db !== void 0 && { db }
|
|
379
406
|
});
|
|
407
|
+
req.event.logger = (0, _geekmidas_services.currentRequestContext)()?.logger ?? req.event.logger;
|
|
380
408
|
} };
|
|
381
409
|
}
|
|
382
410
|
events() {
|
|
@@ -386,16 +414,16 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
386
414
|
const statusCode = req.response?.statusCode ?? this.endpoint.status;
|
|
387
415
|
if (require_Endpoint.Endpoint.isSuccessStatus(statusCode)) {
|
|
388
416
|
const logger = event.logger;
|
|
389
|
-
const serviceDiscovery =
|
|
390
|
-
await
|
|
417
|
+
const serviceDiscovery = _geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
418
|
+
await require_functions.publishConstructEvents(this.endpoint, response, serviceDiscovery, logger);
|
|
391
419
|
}
|
|
392
420
|
} };
|
|
393
421
|
}
|
|
394
422
|
async _handler(event) {
|
|
395
423
|
const input = this.endpoint.refineInput(event);
|
|
396
424
|
const logger = event.logger;
|
|
397
|
-
const serviceDiscovery =
|
|
398
|
-
const auditContext = await
|
|
425
|
+
const serviceDiscovery = _geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
426
|
+
const auditContext = await require_requestLogger.createAuditContext(this.endpoint, serviceDiscovery, logger, {
|
|
399
427
|
session: event.session,
|
|
400
428
|
header: event.header,
|
|
401
429
|
cookie: event.cookie,
|
|
@@ -412,9 +440,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
412
440
|
cookie: event.cookie,
|
|
413
441
|
logger
|
|
414
442
|
}) : void 0;
|
|
415
|
-
const
|
|
416
|
-
const
|
|
417
|
-
const baseDb = sameDatabase ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
443
|
+
const { output, metadata } = await require_requestLogger.executeWithAuditTransaction(auditContext, async (auditor) => {
|
|
444
|
+
const baseDb = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
418
445
|
const executeHandler = async (db) => {
|
|
419
446
|
const responseBuilder = new require_Endpoint.ResponseBuilder();
|
|
420
447
|
const response = await this.endpoint.handler({
|
|
@@ -428,33 +455,33 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
428
455
|
...input
|
|
429
456
|
}, responseBuilder);
|
|
430
457
|
let data = response;
|
|
431
|
-
let metadata
|
|
458
|
+
let metadata = responseBuilder.getMetadata();
|
|
432
459
|
if (require_Endpoint.Endpoint.hasMetadata(response)) {
|
|
433
460
|
data = response.data;
|
|
434
|
-
metadata
|
|
461
|
+
metadata = response.metadata;
|
|
435
462
|
}
|
|
436
|
-
const
|
|
463
|
+
const redirect = require_Endpoint.Endpoint.isRedirectStatus(metadata.status ?? this.endpoint.status);
|
|
437
464
|
return {
|
|
438
|
-
output:
|
|
439
|
-
metadata
|
|
440
|
-
responseBuilder
|
|
465
|
+
output: this.endpoint.outputSchema && !redirect ? await this.endpoint.parseOutput(data) : void 0,
|
|
466
|
+
metadata,
|
|
467
|
+
responseBuilder,
|
|
468
|
+
redirect
|
|
441
469
|
};
|
|
442
470
|
};
|
|
443
|
-
if (rlsActive && rlsContext && baseDb) return (0,
|
|
471
|
+
if (rlsActive && rlsContext && baseDb) return (0, _geekmidas_db_rls.withRlsContext)(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
|
|
444
472
|
return executeHandler(baseDb);
|
|
445
|
-
}, async (result
|
|
446
|
-
if (!audits?.length) return;
|
|
473
|
+
}, async (result, auditor) => {
|
|
474
|
+
if (!audits?.length || result.redirect) return;
|
|
447
475
|
for (const audit of audits) {
|
|
448
|
-
if (audit.when && !audit.when(result
|
|
449
|
-
const payload = audit.payload(result
|
|
450
|
-
const entityId = audit.entityId?.(result
|
|
476
|
+
if (audit.when && !audit.when(result.output)) continue;
|
|
477
|
+
const payload = audit.payload(result.output);
|
|
478
|
+
const entityId = audit.entityId?.(result.output);
|
|
451
479
|
auditor.audit(audit.type, payload, {
|
|
452
480
|
table: audit.table,
|
|
453
481
|
entityId
|
|
454
482
|
});
|
|
455
483
|
}
|
|
456
484
|
}, { db: rawDb });
|
|
457
|
-
const { output, metadata } = result;
|
|
458
485
|
const isJsonResponse = this.endpoint.responseType === "application/json";
|
|
459
486
|
const body = output === void 0 ? void 0 : isJsonResponse ? JSON.stringify(output) : typeof output === "string" ? output : String(output);
|
|
460
487
|
event.__response = output;
|
|
@@ -463,8 +490,10 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
463
490
|
body
|
|
464
491
|
};
|
|
465
492
|
const baseHeaders = isJsonResponse ? void 0 : { "content-type": this.endpoint.responseType };
|
|
466
|
-
|
|
493
|
+
const rateLimitHeaders = event.rateLimitHeaders;
|
|
494
|
+
if (baseHeaders || rateLimitHeaders || metadata.headers && Object.keys(metadata.headers).length > 0) lambdaResponse.headers = {
|
|
467
495
|
...baseHeaders ?? {},
|
|
496
|
+
...rateLimitHeaders ?? {},
|
|
468
497
|
...metadata.headers ?? {}
|
|
469
498
|
};
|
|
470
499
|
if (metadata.cookies && metadata.cookies.size > 0) {
|
|
@@ -505,24 +534,25 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
505
534
|
}
|
|
506
535
|
get handler() {
|
|
507
536
|
const handler = this._handler.bind(this);
|
|
508
|
-
let chain = (0,
|
|
537
|
+
let chain = (0, _middy_core.default)(handler).use(this.logger()).use(this.error()).use(this.services()).use(this.input()).use(this.database()).use(this.session()).use(this.authorize()).use(this.rateLimit()).use(this.events());
|
|
509
538
|
const telemetryMiddleware = this.telemetry();
|
|
510
539
|
if (telemetryMiddleware) chain = chain.use(telemetryMiddleware);
|
|
511
540
|
if (this.options.telescope?.middleware) chain = chain.use(this.options.telescope.middleware);
|
|
512
541
|
const wrappedHandler = async (event, context) => {
|
|
513
542
|
const startTime = Date.now();
|
|
514
543
|
const requestId = context.awsRequestId;
|
|
515
|
-
const logger = this.
|
|
516
|
-
|
|
544
|
+
const logger = this.requestLogger(event, context);
|
|
545
|
+
const operation = `${this.endpoint.method} ${this.endpoint.route}`;
|
|
546
|
+
return (0, _geekmidas_services.runWithRequestContext)({
|
|
517
547
|
logger,
|
|
518
548
|
requestId,
|
|
519
|
-
startTime
|
|
549
|
+
startTime,
|
|
550
|
+
operation
|
|
520
551
|
}, () => chain(event, context));
|
|
521
552
|
};
|
|
522
553
|
return wrappedHandler;
|
|
523
554
|
}
|
|
524
555
|
};
|
|
525
|
-
|
|
526
556
|
//#endregion
|
|
527
557
|
//#region src/endpoints/parseQueryParams.ts
|
|
528
558
|
/**
|
|
@@ -543,18 +573,18 @@ function parseQueryParams(queryParams) {
|
|
|
543
573
|
}
|
|
544
574
|
return qs.default.parse(parts.join("&"));
|
|
545
575
|
}
|
|
546
|
-
|
|
547
576
|
//#endregion
|
|
548
577
|
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
|
|
549
578
|
var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
550
|
-
|
|
579
|
+
endpoint;
|
|
580
|
+
async getInput(e) {
|
|
551
581
|
const multiValueParams = e.multiValueQueryStringParameters || {};
|
|
552
582
|
const singleValueParams = e.queryStringParameters || {};
|
|
553
583
|
const mergedParams = {};
|
|
554
584
|
for (const [key, value] of Object.entries(singleValueParams)) if (value !== void 0) mergedParams[key] = value;
|
|
555
585
|
for (const [key, values] of Object.entries(multiValueParams)) if (values && values.length > 1) mergedParams[key] = values;
|
|
556
586
|
return {
|
|
557
|
-
body:
|
|
587
|
+
body: await this.readBody(e.body, e.isBase64Encoded, e.headers?.["Content-Type"] ?? e.headers?.["content-type"]),
|
|
558
588
|
query: parseQueryParams(mergedParams),
|
|
559
589
|
params: e.pathParameters || {}
|
|
560
590
|
};
|
|
@@ -579,17 +609,16 @@ var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
579
609
|
this.endpoint = endpoint;
|
|
580
610
|
}
|
|
581
611
|
};
|
|
582
|
-
|
|
583
612
|
//#endregion
|
|
584
613
|
//#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
|
|
585
614
|
var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
615
|
+
endpoint;
|
|
586
616
|
getCookies(e) {
|
|
587
|
-
return
|
|
617
|
+
return require_readRequestBody.createApiGatewayCookies(e.cookies, e.headers?.cookie);
|
|
588
618
|
}
|
|
589
|
-
getInput(e) {
|
|
590
|
-
const raw = AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]);
|
|
619
|
+
async getInput(e) {
|
|
591
620
|
return {
|
|
592
|
-
body:
|
|
621
|
+
body: await this.readBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]),
|
|
593
622
|
query: qs.default.parse(e.rawQueryString),
|
|
594
623
|
params: e.pathParameters || {}
|
|
595
624
|
};
|
|
@@ -614,7 +643,6 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
614
643
|
this.endpoint = endpoint;
|
|
615
644
|
}
|
|
616
645
|
};
|
|
617
|
-
|
|
618
646
|
//#endregion
|
|
619
647
|
//#region src/queue/AWSLambdaQueueAdaptor.ts
|
|
620
648
|
/**
|
|
@@ -629,6 +657,8 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
629
657
|
* retries only those records.
|
|
630
658
|
*/
|
|
631
659
|
var AWSLambdaQueue = class {
|
|
660
|
+
envParser;
|
|
661
|
+
queue;
|
|
632
662
|
_services;
|
|
633
663
|
constructor(envParser, queue) {
|
|
634
664
|
this.envParser = envParser;
|
|
@@ -639,10 +669,16 @@ var AWSLambdaQueue = class {
|
|
|
639
669
|
}
|
|
640
670
|
async getServices() {
|
|
641
671
|
if (this._services) return this._services;
|
|
642
|
-
const serviceDiscovery =
|
|
672
|
+
const serviceDiscovery = _geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
643
673
|
this._services = this.queue.services.length > 0 ? await serviceDiscovery.register(this.queue.services) : {};
|
|
644
674
|
return this._services;
|
|
645
675
|
}
|
|
676
|
+
/** The queue's database, registered as functions register theirs. */
|
|
677
|
+
async getDatabase() {
|
|
678
|
+
const service = this.queue.databaseService;
|
|
679
|
+
if (!service) return void 0;
|
|
680
|
+
return (await _geekmidas_services.ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
|
|
681
|
+
}
|
|
646
682
|
safeJsonParse(value) {
|
|
647
683
|
try {
|
|
648
684
|
return JSON.parse(value);
|
|
@@ -668,6 +704,7 @@ var AWSLambdaQueue = class {
|
|
|
668
704
|
req: { id: context.awsRequestId }
|
|
669
705
|
});
|
|
670
706
|
const services = await this.getServices();
|
|
707
|
+
const db = await this.getDatabase();
|
|
671
708
|
const schema = this.queue.messageSchema;
|
|
672
709
|
const batchItemFailures = [];
|
|
673
710
|
const messages = [];
|
|
@@ -685,7 +722,7 @@ var AWSLambdaQueue = class {
|
|
|
685
722
|
messages.push(validation.value);
|
|
686
723
|
} catch (error) {
|
|
687
724
|
logger.error({
|
|
688
|
-
error,
|
|
725
|
+
err: error,
|
|
689
726
|
messageId: record.messageId
|
|
690
727
|
}, "Failed to parse SQS record");
|
|
691
728
|
batchItemFailures.push({ itemIdentifier: record.messageId });
|
|
@@ -695,34 +732,39 @@ var AWSLambdaQueue = class {
|
|
|
695
732
|
await this.queue.handler({
|
|
696
733
|
messages,
|
|
697
734
|
services,
|
|
698
|
-
logger
|
|
735
|
+
logger,
|
|
736
|
+
db
|
|
699
737
|
});
|
|
700
738
|
} catch (error) {
|
|
701
|
-
logger.error((0,
|
|
739
|
+
logger.error((0, _geekmidas_errors.wrapError)(error), "Queue handler failed; retrying batch");
|
|
702
740
|
for (const record of event.Records) if (!batchItemFailures.some((f) => f.itemIdentifier === record.messageId)) batchItemFailures.push({ itemIdentifier: record.messageId });
|
|
703
741
|
}
|
|
704
742
|
return { batchItemFailures };
|
|
705
743
|
}
|
|
706
744
|
get handler() {
|
|
707
745
|
const handler = this._handler.bind(this);
|
|
708
|
-
return async (event, context) => {
|
|
746
|
+
return (async (event, context) => {
|
|
709
747
|
const startTime = Date.now();
|
|
710
748
|
const requestId = context.awsRequestId;
|
|
711
749
|
const logger = this.queue.logger.child({ requestId });
|
|
712
|
-
return (0,
|
|
750
|
+
return (0, _geekmidas_services.runWithRequestContext)({
|
|
713
751
|
logger,
|
|
714
752
|
requestId,
|
|
715
|
-
startTime
|
|
716
|
-
|
|
717
|
-
|
|
753
|
+
startTime,
|
|
754
|
+
operation: `queue ${this.queue.name}`
|
|
755
|
+
}, () => (0, _geekmidas_events.consumeBatchTraced)({
|
|
756
|
+
system: "aws_sqs",
|
|
757
|
+
destination: this.queue.name
|
|
758
|
+
}, event.Records.map(require_tracing.recordCarrier), () => handler(event, context)));
|
|
759
|
+
});
|
|
718
760
|
}
|
|
719
761
|
};
|
|
720
|
-
|
|
721
762
|
//#endregion
|
|
722
763
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
723
764
|
var AWSLambdaSubscriber = class {
|
|
765
|
+
envParser;
|
|
766
|
+
subscriber;
|
|
724
767
|
_logger;
|
|
725
|
-
_services;
|
|
726
768
|
constructor(envParser, subscriber) {
|
|
727
769
|
this.envParser = envParser;
|
|
728
770
|
this.subscriber = subscriber;
|
|
@@ -731,20 +773,10 @@ var AWSLambdaSubscriber = class {
|
|
|
731
773
|
get logger() {
|
|
732
774
|
return this._logger;
|
|
733
775
|
}
|
|
734
|
-
async getServices() {
|
|
735
|
-
if (this._services) return this._services;
|
|
736
|
-
const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
|
|
737
|
-
if (this.subscriber.services.length > 0) {
|
|
738
|
-
const registered = await serviceDiscovery.register(this.subscriber.services);
|
|
739
|
-
this._services = registered;
|
|
740
|
-
} else this._services = {};
|
|
741
|
-
return this._services;
|
|
742
|
-
}
|
|
743
776
|
error() {
|
|
744
777
|
return { onError: (req) => {
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
throw (0, __geekmidas_errors.wrapError)(req.error);
|
|
778
|
+
(req.event?.logger || this.subscriber.logger).error(req.error || {}, "Error processing subscriber");
|
|
779
|
+
throw (0, _geekmidas_errors.wrapError)(req.error);
|
|
748
780
|
} };
|
|
749
781
|
}
|
|
750
782
|
loggerMiddleware() {
|
|
@@ -762,128 +794,49 @@ var AWSLambdaSubscriber = class {
|
|
|
762
794
|
}
|
|
763
795
|
services() {
|
|
764
796
|
return { before: async (req) => {
|
|
765
|
-
|
|
797
|
+
const { services, db } = await require_runSubscriber.subscriberContext(this.subscriber, this.envParser);
|
|
798
|
+
req.event.services = services;
|
|
799
|
+
req.event.db = db;
|
|
766
800
|
} };
|
|
767
801
|
}
|
|
768
802
|
parseEvents() {
|
|
769
803
|
return { before: async (req) => {
|
|
770
|
-
const { logger
|
|
771
|
-
const rawEvent = e;
|
|
804
|
+
const { logger, ...rawEvent } = req.event;
|
|
772
805
|
logger.info({ rawEvent });
|
|
773
|
-
|
|
774
|
-
if ("Records" in rawEvent) {
|
|
775
|
-
if (this.isSQSEvent(rawEvent)) for (const record of rawEvent.Records) try {
|
|
776
|
-
const event = this.parseSQSRecord(record);
|
|
777
|
-
if (this.shouldIncludeEvent(event)) events.push(event);
|
|
778
|
-
} catch (error) {
|
|
779
|
-
this.logger.error({
|
|
780
|
-
error,
|
|
781
|
-
record
|
|
782
|
-
}, "Failed to parse SQS record");
|
|
783
|
-
}
|
|
784
|
-
else if (this.isSNSEvent(rawEvent)) for (const record of rawEvent.Records) try {
|
|
785
|
-
const event = this.parseSNSRecord(record);
|
|
786
|
-
if (this.shouldIncludeEvent(event)) events.push(event);
|
|
787
|
-
} catch (error) {
|
|
788
|
-
this.logger.error({
|
|
789
|
-
error,
|
|
790
|
-
record
|
|
791
|
-
}, "Failed to parse SNS record");
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
req.event.events = events;
|
|
806
|
+
req.event.events = require_runSubscriber.subscribedEvents(this.subscriber, rawEvent, this.logger);
|
|
795
807
|
} };
|
|
796
808
|
}
|
|
797
|
-
isSQSEvent(event) {
|
|
798
|
-
const firstRecord = event.Records[0];
|
|
799
|
-
return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
|
|
800
|
-
}
|
|
801
|
-
isSNSEvent(event) {
|
|
802
|
-
const firstRecord = event.Records[0];
|
|
803
|
-
return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
|
|
804
|
-
}
|
|
805
|
-
parseSNSRecord(record) {
|
|
806
|
-
const message = this.safeJsonParse(record.Sns.Message);
|
|
807
|
-
const messageType = record.Sns.MessageAttributes?.type?.Value;
|
|
808
|
-
if (message === null) return messageType ? {
|
|
809
|
-
type: messageType,
|
|
810
|
-
payload: record.Sns.Message
|
|
811
|
-
} : record.Sns.Message;
|
|
812
|
-
const resolvedType = messageType ?? message.type;
|
|
813
|
-
if (message.type) return message;
|
|
814
|
-
return resolvedType ? {
|
|
815
|
-
type: resolvedType,
|
|
816
|
-
payload: message
|
|
817
|
-
} : message;
|
|
818
|
-
}
|
|
819
|
-
parseSQSRecord(record) {
|
|
820
|
-
const body = this.safeJsonParse(record.body);
|
|
821
|
-
if (body === null) return record.body;
|
|
822
|
-
if (body.Type === "Notification" && body.Message) {
|
|
823
|
-
const snsMessage = this.safeJsonParse(body.Message);
|
|
824
|
-
const messageType = body.MessageAttributes?.type?.Value;
|
|
825
|
-
if (snsMessage === null) return messageType ? {
|
|
826
|
-
type: messageType,
|
|
827
|
-
payload: body.Message
|
|
828
|
-
} : body.Message;
|
|
829
|
-
if (snsMessage.type) return snsMessage;
|
|
830
|
-
const resolvedType = messageType ?? snsMessage.type;
|
|
831
|
-
return resolvedType ? {
|
|
832
|
-
type: resolvedType,
|
|
833
|
-
payload: snsMessage
|
|
834
|
-
} : snsMessage;
|
|
835
|
-
}
|
|
836
|
-
return body;
|
|
837
|
-
}
|
|
838
|
-
safeJsonParse(value) {
|
|
839
|
-
try {
|
|
840
|
-
return JSON.parse(value);
|
|
841
|
-
} catch {
|
|
842
|
-
return null;
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
shouldIncludeEvent(event) {
|
|
846
|
-
if (typeof event !== "object" || !event?.type) return true;
|
|
847
|
-
if (!this.subscriber.subscribedEvents) return true;
|
|
848
|
-
return this.subscriber.subscribedEvents.includes(event.type);
|
|
849
|
-
}
|
|
850
809
|
async _handler(event) {
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
services: event.services,
|
|
858
|
-
logger: event.logger
|
|
810
|
+
const { events, services, logger, db } = event;
|
|
811
|
+
return require_runSubscriber.runSubscriber(this.subscriber, {
|
|
812
|
+
events,
|
|
813
|
+
services,
|
|
814
|
+
logger,
|
|
815
|
+
db
|
|
859
816
|
});
|
|
860
|
-
if (this.subscriber.outputSchema && result) {
|
|
861
|
-
const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
|
|
862
|
-
if (validationResult.issues) {
|
|
863
|
-
this.logger.error({ issues: validationResult.issues }, "Subscriber output validation failed");
|
|
864
|
-
throw new Error("Subscriber output validation failed");
|
|
865
|
-
}
|
|
866
|
-
return validationResult.value;
|
|
867
|
-
}
|
|
868
|
-
return result;
|
|
869
817
|
}
|
|
870
818
|
get handler() {
|
|
871
819
|
const handler = this._handler.bind(this);
|
|
872
|
-
const chain = (0,
|
|
820
|
+
const chain = (0, _middy_core.default)(handler).use(this.loggerMiddleware()).use(this.parseEvents()).use(this.error()).use(this.services());
|
|
873
821
|
const wrappedHandler = async (event, context) => {
|
|
874
822
|
const startTime = Date.now();
|
|
875
823
|
const requestId = context.awsRequestId;
|
|
876
824
|
const logger = this.subscriber.logger.child({ requestId });
|
|
877
|
-
|
|
825
|
+
const operation = `subscriber ${this.subscriber.topicName ?? context.functionName}`;
|
|
826
|
+
const records = event?.Records ?? [];
|
|
827
|
+
return (0, _geekmidas_services.runWithRequestContext)({
|
|
878
828
|
logger,
|
|
879
829
|
requestId,
|
|
880
|
-
startTime
|
|
881
|
-
|
|
830
|
+
startTime,
|
|
831
|
+
operation
|
|
832
|
+
}, () => (0, _geekmidas_events.consumeBatchTraced)({
|
|
833
|
+
system: records[0]?.Sns ? "aws_sns" : "aws_sqs",
|
|
834
|
+
destination: this.subscriber.topicName ?? context.functionName
|
|
835
|
+
}, records.map(require_tracing.recordCarrier), () => chain(event, context)));
|
|
882
836
|
};
|
|
883
837
|
return wrappedHandler;
|
|
884
838
|
}
|
|
885
839
|
};
|
|
886
|
-
|
|
887
840
|
//#endregion
|
|
888
841
|
exports.AWSLambdaFunction = AWSLambdaFunction;
|
|
889
842
|
exports.AWSLambdaQueue = AWSLambdaQueue;
|
|
@@ -891,4 +844,5 @@ exports.AWSLambdaSubscriber = AWSLambdaSubscriber;
|
|
|
891
844
|
exports.AWSScheduledFunction = AWSScheduledFunction;
|
|
892
845
|
exports.AmazonApiGatewayV1Endpoint = AmazonApiGatewayV1Endpoint;
|
|
893
846
|
exports.AmazonApiGatewayV2Endpoint = AmazonApiGatewayV2Endpoint;
|
|
847
|
+
|
|
894
848
|
//# sourceMappingURL=aws.cjs.map
|