@geekmidas/constructs 10.0.0-alpha.5 → 10.0.0-alpha.51
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 +223 -158
- package/dist/{Construct-BD5neF7w.mjs → Construct-BO1X-kt9.mjs} +32 -33
- package/dist/Construct-BO1X-kt9.mjs.map +1 -0
- package/dist/Construct-BQALFCh2.d.cts +230 -0
- package/dist/Construct-BQALFCh2.d.cts.map +1 -0
- package/dist/{Construct-CyS3RpTL.cjs → Construct-DmvXceVY.cjs} +52 -47
- package/dist/Construct-DmvXceVY.cjs.map +1 -0
- package/dist/Construct-QXnl3VqT.d.mts +230 -0
- package/dist/Construct-QXnl3VqT.d.mts.map +1 -0
- package/dist/{Cron-B2OFsfDM.d.cts → Cron-DI3nKoic.d.cts} +22 -8
- package/dist/Cron-DI3nKoic.d.cts.map +1 -0
- package/dist/{Cron-CqEbBbwH.d.mts → Cron-uYAHPnp7.d.mts} +22 -8
- package/dist/Cron-uYAHPnp7.d.mts.map +1 -0
- package/dist/CronBuilder-BoHzlWU_.cjs +121 -0
- package/dist/CronBuilder-BoHzlWU_.cjs.map +1 -0
- package/dist/CronBuilder-CCgt0wCE.mjs +109 -0
- package/dist/CronBuilder-CCgt0wCE.mjs.map +1 -0
- package/dist/CronBuilder-DaSUm2Na.d.mts +47 -0
- package/dist/CronBuilder-DaSUm2Na.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-Dem2XyCu.d.mts → Endpoint-Bm9HjTPc.d.cts} +70 -93
- package/dist/Endpoint-Bm9HjTPc.d.cts.map +1 -0
- package/dist/{Endpoint-Dij_wOcc.mjs → Endpoint-CQ9RJ7p2.mjs} +130 -109
- package/dist/Endpoint-CQ9RJ7p2.mjs.map +1 -0
- package/dist/{Endpoint-DrD8a1yH.d.cts → Endpoint-CwM8Rzfs.d.mts} +71 -94
- package/dist/Endpoint-CwM8Rzfs.d.mts.map +1 -0
- package/dist/{Endpoint-DODn1RhN.cjs → Endpoint-DOi8c_Gy.cjs} +158 -131
- package/dist/Endpoint-DOi8c_Gy.cjs.map +1 -0
- package/dist/{index-B8g8POkr.d.cts → EndpointFactory-0plFjvb7.d.mts} +64 -134
- package/dist/EndpointFactory-0plFjvb7.d.mts.map +1 -0
- package/dist/{index-DbKmfl-q.d.mts → EndpointFactory-B6eZ3RDd.d.cts} +64 -134
- package/dist/EndpointFactory-B6eZ3RDd.d.cts.map +1 -0
- package/dist/{EndpointFactory-BHFMmFkV.cjs → EndpointFactory-Bo9lkMqB.cjs} +75 -110
- package/dist/EndpointFactory-Bo9lkMqB.cjs.map +1 -0
- package/dist/{EndpointFactory-b4ituq-s.mjs → EndpointFactory-DR1rebok.mjs} +39 -74
- package/dist/EndpointFactory-DR1rebok.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-BM2jbWht.mjs → HonoEndpointAdaptor-BIS0O3M9.mjs} +41 -47
- package/dist/HonoEndpointAdaptor-BIS0O3M9.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-De6IlBZe.cjs → HonoEndpointAdaptor-CMi0MJsF.cjs} +50 -53
- package/dist/HonoEndpointAdaptor-CMi0MJsF.cjs.map +1 -0
- package/dist/Queue-D5jcw0mu.cjs +109 -0
- package/dist/Queue-D5jcw0mu.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-hwPN-t31.mjs +104 -0
- package/dist/Queue-hwPN-t31.mjs.map +1 -0
- package/dist/QueueBuilder-BFQn3OzZ.cjs +135 -0
- package/dist/QueueBuilder-BFQn3OzZ.cjs.map +1 -0
- package/dist/QueueBuilder-DCuYdjMw.mjs +118 -0
- package/dist/QueueBuilder-DCuYdjMw.mjs.map +1 -0
- package/dist/QueueBuilder-OSi6LkV9.d.cts +75 -0
- package/dist/QueueBuilder-OSi6LkV9.d.cts.map +1 -0
- package/dist/QueueBuilder-QHsnVt1P.d.mts +75 -0
- package/dist/QueueBuilder-QHsnVt1P.d.mts.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-4OPehf2R.cjs → SubscriberBuilder-C2PwqwIl.cjs} +61 -36
- package/dist/SubscriberBuilder-C2PwqwIl.cjs.map +1 -0
- package/dist/SubscriberBuilder-CuCMFpYW.d.mts +67 -0
- package/dist/SubscriberBuilder-CuCMFpYW.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-BjkbeT9l.mjs → SubscriberBuilder-DMFk_Ap1.mjs} +50 -24
- package/dist/SubscriberBuilder-DMFk_Ap1.mjs.map +1 -0
- package/dist/SubscriberBuilder-g3fAVWgs.d.cts +67 -0
- package/dist/SubscriberBuilder-g3fAVWgs.d.cts.map +1 -0
- package/dist/Topic-CkxOTrMv.cjs +104 -0
- package/dist/Topic-CkxOTrMv.cjs.map +1 -0
- package/dist/Topic-hPffOsot.mjs +99 -0
- package/dist/Topic-hPffOsot.mjs.map +1 -0
- package/dist/adaptors/aws.cjs +189 -110
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +81 -45
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +82 -46
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +161 -85
- 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 +8 -17
- package/dist/adaptors/hono.d.mts.map +1 -1
- package/dist/adaptors/hono.mjs +2 -10
- package/dist/adaptors/testing.cjs +704 -90
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +325 -54
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +325 -54
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +669 -71
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/auth-CIFXNuDk.d.cts +194 -0
- package/dist/auth-CIFXNuDk.d.cts.map +1 -0
- package/dist/auth-CJ9Ff6Lu.d.mts +194 -0
- package/dist/auth-CJ9Ff6Lu.d.mts.map +1 -0
- package/dist/auth.cjs +172 -31
- 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 +161 -24
- package/dist/auth.mjs.map +1 -1
- package/dist/{cache-BrRz3fEB.d.mts → cache-CXh6GIgb.d.mts} +3 -6
- package/dist/cache-CXh6GIgb.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-DluK3_da.d.mts} +42 -11
- package/dist/construct-interface-DluK3_da.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.cjs +63 -16
- package/dist/credential.cjs.map +1 -1
- package/dist/credential.d.cts +16 -9
- package/dist/credential.d.cts.map +1 -1
- package/dist/credential.d.mts +16 -9
- package/dist/credential.d.mts.map +1 -1
- package/dist/credential.mjs +58 -12
- package/dist/credential.mjs.map +1 -1
- package/dist/crons/index.cjs +68 -10
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +32 -14
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +32 -14
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +66 -10
- package/dist/crons/index.mjs.map +1 -1
- package/dist/database/kysely.cjs +40 -15
- package/dist/database/kysely.cjs.map +1 -1
- package/dist/database/kysely.d.cts +2 -152
- package/dist/database/kysely.d.mts +2 -152
- package/dist/database/kysely.mjs +28 -5
- package/dist/database/kysely.mjs.map +1 -1
- 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 +3 -7
- 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 +8 -10
- package/dist/endpoints/index.d.cts +51 -7
- package/dist/endpoints/index.d.cts.map +1 -0
- package/dist/endpoints/index.d.mts +51 -7
- package/dist/endpoints/index.d.mts.map +1 -0
- package/dist/endpoints/index.mjs +6 -10
- package/dist/external-api-CWY9orcO.d.mts +86 -0
- package/dist/external-api-CWY9orcO.d.mts.map +1 -0
- package/dist/external-api-D-5WB-sr.d.cts +86 -0
- package/dist/external-api-D-5WB-sr.d.cts.map +1 -0
- package/dist/external-api.cjs +124 -0
- package/dist/external-api.cjs.map +1 -0
- package/dist/external-api.d.cts +2 -0
- package/dist/external-api.d.mts +2 -0
- package/dist/external-api.mjs +121 -0
- package/dist/external-api.mjs.map +1 -0
- package/dist/file-server.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 +2 -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-DJJA7VGc.cjs → functions-CbP5ZKma.cjs} +421 -273
- package/dist/functions-CbP5ZKma.cjs.map +1 -0
- package/dist/{functions-Ck21Uyq0.mjs → functions-Di6n5ltG.mjs} +383 -241
- package/dist/functions-Di6n5ltG.mjs.map +1 -0
- package/dist/index-BuzRvKOQ.d.cts +115 -0
- package/dist/index-BuzRvKOQ.d.cts.map +1 -0
- package/dist/index-CTkKOer4.d.mts +115 -0
- package/dist/index-CTkKOer4.d.mts.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 +3 -3
- package/dist/index.d.cts +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +2 -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-Bqov3fwv.d.mts +159 -0
- package/dist/kysely-Bqov3fwv.d.mts.map +1 -0
- package/dist/kysely-DTnkZsub.d.cts +159 -0
- package/dist/kysely-DTnkZsub.d.cts.map +1 -0
- package/dist/{lazyAccessors-BoJN3SMd.mjs → lazyAccessors-CFanua0O.mjs} +20 -60
- package/dist/lazyAccessors-CFanua0O.mjs.map +1 -0
- package/dist/{lazyAccessors-e3j2oE2m.cjs → lazyAccessors-hJKGv8Ay.cjs} +60 -113
- package/dist/lazyAccessors-hJKGv8Ay.cjs.map +1 -0
- package/dist/mobile-app.cjs +73 -0
- package/dist/mobile-app.cjs.map +1 -0
- package/dist/mobile-app.d.cts +61 -0
- package/dist/mobile-app.d.cts.map +1 -0
- package/dist/mobile-app.d.mts +61 -0
- package/dist/mobile-app.d.mts.map +1 -0
- package/dist/mobile-app.mjs +72 -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/{processAudits-Dmts9H_b.mjs → processAudits-BpRlPQMW.mjs} +16 -19
- package/dist/processAudits-BpRlPQMW.mjs.map +1 -0
- package/dist/{processAudits-CGqttuXm.cjs → processAudits-D_2W5x8k.cjs} +26 -30
- package/dist/processAudits-D_2W5x8k.cjs.map +1 -0
- 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/rest-api.cjs +88 -63
- package/dist/rest-api.cjs.map +1 -1
- package/dist/rest-api.d.cts +68 -61
- package/dist/rest-api.d.cts.map +1 -1
- package/dist/rest-api.d.mts +68 -61
- package/dist/rest-api.d.mts.map +1 -1
- package/dist/rest-api.mjs +80 -55
- package/dist/rest-api.mjs.map +1 -1
- package/dist/{chunk-DWy1uDak.cjs → rolldown-runtime-y5ARvAq5.cjs} +14 -18
- package/dist/site.cjs +34 -9
- package/dist/site.cjs.map +1 -1
- package/dist/site.d.cts +17 -22
- package/dist/site.d.cts.map +1 -1
- package/dist/site.d.mts +17 -22
- package/dist/site.d.mts.map +1 -1
- package/dist/site.mjs +30 -5
- package/dist/site.mjs.map +1 -1
- package/dist/subscribers/index.cjs +2 -11
- package/dist/subscribers/index.d.cts +3 -14
- package/dist/subscribers/index.d.mts +3 -14
- package/dist/subscribers/index.mjs +2 -11
- 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-C3L0iS28.d.cts → telemetry-DGcFlVpB.d.cts} +2 -5
- package/dist/telemetry-DGcFlVpB.d.cts.map +1 -0
- package/dist/{telemetry-D7bVFLGi.d.mts → telemetry-DGcFlVpB.d.mts} +2 -5
- package/dist/telemetry-DGcFlVpB.d.mts.map +1 -0
- package/dist/topic/index.cjs +3 -137
- package/dist/topic/index.d.cts +2 -32
- package/dist/topic/index.d.mts +2 -32
- package/dist/topic/index.mjs +2 -134
- 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 +137 -38
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.cts +113 -44
- package/dist/worker.d.cts.map +1 -1
- package/dist/worker.d.mts +113 -43
- package/dist/worker.d.mts.map +1 -1
- package/dist/worker.mjs +132 -33
- package/dist/worker.mjs.map +1 -1
- package/package.json +81 -41
- 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-B2OFsfDM.d.cts.map +0 -1
- package/dist/Cron-CqEbBbwH.d.mts.map +0 -1
- package/dist/CronBuilder-Bg-9h2cc.d.mts +0 -44
- package/dist/CronBuilder-Bg-9h2cc.d.mts.map +0 -1
- package/dist/CronBuilder-CdibiHNB.mjs +0 -84
- package/dist/CronBuilder-CdibiHNB.mjs.map +0 -1
- package/dist/CronBuilder-DyUr6nYz.cjs +0 -96
- package/dist/CronBuilder-DyUr6nYz.cjs.map +0 -1
- package/dist/CronBuilder-LSJMfqnq.d.cts +0 -44
- package/dist/CronBuilder-LSJMfqnq.d.cts.map +0 -1
- package/dist/Endpoint-DODn1RhN.cjs.map +0 -1
- package/dist/Endpoint-Dem2XyCu.d.mts.map +0 -1
- package/dist/Endpoint-Dij_wOcc.mjs.map +0 -1
- package/dist/Endpoint-DrD8a1yH.d.cts.map +0 -1
- package/dist/EndpointFactory-BHFMmFkV.cjs.map +0 -1
- package/dist/EndpointFactory-b4ituq-s.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-BM2jbWht.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-De6IlBZe.cjs.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/database/kysely.d.cts.map +0 -1
- package/dist/database/kysely.d.mts.map +0 -1
- package/dist/functions-Ck21Uyq0.mjs.map +0 -1
- package/dist/functions-DJJA7VGc.cjs.map +0 -1
- package/dist/index-AIfVzkhi.d.cts +0 -170
- package/dist/index-AIfVzkhi.d.cts.map +0 -1
- package/dist/index-B8g8POkr.d.cts.map +0 -1
- package/dist/index-D3zjrwjr.d.mts +0 -169
- package/dist/index-D3zjrwjr.d.mts.map +0 -1
- package/dist/index-DbKmfl-q.d.mts.map +0 -1
- package/dist/lazyAccessors-BoJN3SMd.mjs.map +0 -1
- package/dist/lazyAccessors-e3j2oE2m.cjs.map +0 -1
- package/dist/processAudits-CGqttuXm.cjs.map +0 -1
- 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/subscribers/index.cjs.map +0 -1
- package/dist/subscribers/index.d.cts.map +0 -1
- package/dist/subscribers/index.d.mts.map +0 -1
- package/dist/subscribers/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.d.cts.map +0 -1
- package/dist/topic/index.d.mts.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.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { __toESM } from "../Construct-
|
|
2
|
-
import "../
|
|
3
|
-
import {
|
|
4
|
-
import "../
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { createApiGatewayCookies, publishConstructEvents, publishEvents } from "../lazyAccessors-BoJN3SMd.mjs";
|
|
8
|
-
import { createAuditContext, executeWithAuditTransaction } from "../processAudits-Dmts9H_b.mjs";
|
|
1
|
+
import { o as __toESM } from "../Construct-BO1X-kt9.mjs";
|
|
2
|
+
import { a as publishEvents, i as publishConstructEvents, t as FunctionBuilder } from "../functions-Di6n5ltG.mjs";
|
|
3
|
+
import { i as require_lodash_set, n as ResponseBuilder, t as Endpoint } from "../Endpoint-CQ9RJ7p2.mjs";
|
|
4
|
+
import { n as envParserFor } from "../surfaceEnv-wMT5QzgZ.mjs";
|
|
5
|
+
import { t as createApiGatewayCookies } from "../lazyAccessors-CFanua0O.mjs";
|
|
6
|
+
import { n as executeWithAuditTransaction, t as createAuditContext } from "../processAudits-BpRlPQMW.mjs";
|
|
9
7
|
import { ForbiddenError, UnprocessableEntityError, wrapError } from "@geekmidas/errors";
|
|
8
|
+
import { withRlsContext } from "@geekmidas/db/rls";
|
|
10
9
|
import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
|
|
11
|
-
import
|
|
10
|
+
import qs from "qs";
|
|
12
11
|
import { DefaultAuditor } from "@geekmidas/audit";
|
|
12
|
+
import middy from "@middy/core";
|
|
13
13
|
import { withAuditableTransaction } from "@geekmidas/audit/kysely";
|
|
14
|
-
import {
|
|
15
|
-
import qs from "qs";
|
|
16
|
-
|
|
14
|
+
import { confirmSnsSubscription, toSnsEvent, verifySnsMessage } from "@geekmidas/events/sns";
|
|
17
15
|
//#region src/functions/FunctionExecutionWrapper.ts
|
|
18
16
|
var FunctionExecutionWrapper = class {
|
|
17
|
+
envParser;
|
|
18
|
+
fn;
|
|
19
19
|
constructor(envParser, fn) {
|
|
20
20
|
this.envParser = envParser;
|
|
21
21
|
this.fn = fn;
|
|
@@ -25,25 +25,22 @@ var FunctionExecutionWrapper = class {
|
|
|
25
25
|
return this._logger || this.fn.logger;
|
|
26
26
|
}
|
|
27
27
|
get serviceDiscovery() {
|
|
28
|
-
|
|
29
|
-
return serviceDiscovery;
|
|
28
|
+
return ServiceDiscovery.getInstance(this.envParser);
|
|
30
29
|
}
|
|
31
30
|
getServices() {
|
|
32
31
|
return this.serviceDiscovery.register(this.fn.services);
|
|
33
32
|
}
|
|
34
33
|
async getDatabase() {
|
|
35
|
-
if (!this.fn.databaseService) return
|
|
36
|
-
|
|
37
|
-
return services[this.fn.databaseService.serviceName];
|
|
34
|
+
if (!this.fn.databaseService) return;
|
|
35
|
+
return (await this.serviceDiscovery.register([this.fn.databaseService]))[this.fn.databaseService.serviceName];
|
|
38
36
|
}
|
|
39
37
|
/**
|
|
40
38
|
* Get the audit storage service if configured.
|
|
41
39
|
* Returns undefined if no auditor storage is configured.
|
|
42
40
|
*/
|
|
43
41
|
async getAuditStorage() {
|
|
44
|
-
if (!this.fn.auditorStorageService) return
|
|
45
|
-
|
|
46
|
-
return services[this.fn.auditorStorageService.serviceName];
|
|
42
|
+
if (!this.fn.auditorStorageService) return;
|
|
43
|
+
return (await this.serviceDiscovery.register([this.fn.auditorStorageService]))[this.fn.auditorStorageService.serviceName];
|
|
47
44
|
}
|
|
48
45
|
/**
|
|
49
46
|
* Create an auditor instance for the function.
|
|
@@ -51,7 +48,7 @@ var FunctionExecutionWrapper = class {
|
|
|
51
48
|
*/
|
|
52
49
|
async createAuditor() {
|
|
53
50
|
const storage = await this.getAuditStorage();
|
|
54
|
-
if (!storage) return
|
|
51
|
+
if (!storage) return;
|
|
55
52
|
return new DefaultAuditor({
|
|
56
53
|
actor: {
|
|
57
54
|
id: "system",
|
|
@@ -72,51 +69,44 @@ var FunctionExecutionWrapper = class {
|
|
|
72
69
|
async executeWithAudit(handler) {
|
|
73
70
|
const auditor = await this.createAuditor();
|
|
74
71
|
const storage = await this.getAuditStorage();
|
|
75
|
-
if (!auditor || !storage) {
|
|
76
|
-
const db$1 = await this.getDatabase();
|
|
77
|
-
return handler({ db: db$1 });
|
|
78
|
-
}
|
|
72
|
+
if (!auditor || !storage) return handler({ db: await this.getDatabase() });
|
|
79
73
|
const storageDb = storage.getDatabase?.();
|
|
80
74
|
const databaseServiceName = this.fn.databaseService?.serviceName;
|
|
81
75
|
const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
|
|
82
76
|
if (storageDb && databaseServiceName && auditDbServiceName) return withAuditableTransaction(storageDb, auditor, async (trx) => {
|
|
83
|
-
|
|
77
|
+
return await handler({
|
|
84
78
|
auditor,
|
|
85
79
|
db: trx
|
|
86
80
|
});
|
|
87
|
-
return response$1;
|
|
88
81
|
});
|
|
89
|
-
const db = await this.getDatabase();
|
|
90
82
|
const response = await handler({
|
|
91
83
|
auditor,
|
|
92
|
-
db
|
|
84
|
+
db: await this.getDatabase()
|
|
93
85
|
});
|
|
94
86
|
await auditor.flush();
|
|
95
87
|
return response;
|
|
96
88
|
}
|
|
97
89
|
async getFunctionInput(event) {
|
|
98
|
-
|
|
99
|
-
return parsedInput;
|
|
90
|
+
return await FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
|
|
100
91
|
}
|
|
101
92
|
async publishEvents(response) {
|
|
102
|
-
await publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response
|
|
93
|
+
await publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response);
|
|
103
94
|
}
|
|
104
95
|
async parseComposableStandardSchema(data, schema) {
|
|
105
96
|
return FunctionBuilder.parseComposableStandardSchema(data, schema);
|
|
106
97
|
}
|
|
107
98
|
};
|
|
108
|
-
|
|
109
99
|
//#endregion
|
|
110
100
|
//#region src/functions/AWSLambdaFunction.ts
|
|
111
101
|
var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
102
|
+
fn;
|
|
112
103
|
constructor(envParser, fn) {
|
|
113
104
|
super(envParser, fn);
|
|
114
105
|
this.fn = fn;
|
|
115
106
|
}
|
|
116
107
|
error() {
|
|
117
108
|
return { onError: (req) => {
|
|
118
|
-
|
|
119
|
-
logger.error(req.error || {}, "Error processing function");
|
|
109
|
+
(req.event?.logger || this.fn.logger).error(req.error || {}, "Error processing function");
|
|
120
110
|
throw wrapError(req.error);
|
|
121
111
|
} };
|
|
122
112
|
}
|
|
@@ -192,8 +182,7 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
192
182
|
db: event.db,
|
|
193
183
|
auditor: event.auditor
|
|
194
184
|
});
|
|
195
|
-
|
|
196
|
-
return output;
|
|
185
|
+
return await this.fn.parseOutput(result);
|
|
197
186
|
}
|
|
198
187
|
get handler() {
|
|
199
188
|
const handler = this._handler.bind(this);
|
|
@@ -211,7 +200,6 @@ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
|
211
200
|
return wrappedHandler;
|
|
212
201
|
}
|
|
213
202
|
};
|
|
214
|
-
|
|
215
203
|
//#endregion
|
|
216
204
|
//#region src/crons/AWSScheduledFunction.ts
|
|
217
205
|
/**
|
|
@@ -245,11 +233,11 @@ var AWSScheduledFunction = class extends AWSLambdaFunction {
|
|
|
245
233
|
super(envParser, cron);
|
|
246
234
|
}
|
|
247
235
|
};
|
|
248
|
-
|
|
249
236
|
//#endregion
|
|
250
237
|
//#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
|
|
251
|
-
var
|
|
238
|
+
var import_lodash_set = /* @__PURE__ */ __toESM(require_lodash_set(), 1);
|
|
252
239
|
var AmazonApiGatewayEndpoint = class {
|
|
240
|
+
endpoint;
|
|
253
241
|
options;
|
|
254
242
|
/**
|
|
255
243
|
* The parser this adaptor discovers services with.
|
|
@@ -287,8 +275,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
287
275
|
static decodeBody(body, isBase64Encoded, contentType) {
|
|
288
276
|
if (!body) return void 0;
|
|
289
277
|
const raw = isBase64Encoded ? Buffer.from(body, "base64").toString("utf-8") : body;
|
|
290
|
-
|
|
291
|
-
if (isJson) return JSON.parse(raw);
|
|
278
|
+
if (!contentType || contentType.toLowerCase().includes("application/json")) return JSON.parse(raw);
|
|
292
279
|
return raw;
|
|
293
280
|
}
|
|
294
281
|
getCookies(e) {
|
|
@@ -302,11 +289,11 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
302
289
|
const headers = req.event.headers;
|
|
303
290
|
const header = Endpoint.createHeaders(headers);
|
|
304
291
|
const cookie = this.getCookies(req.event);
|
|
305
|
-
(0,
|
|
306
|
-
(0,
|
|
307
|
-
(0,
|
|
308
|
-
(0,
|
|
309
|
-
(0,
|
|
292
|
+
(0, import_lodash_set.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
|
|
293
|
+
(0, import_lodash_set.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
|
|
294
|
+
(0, import_lodash_set.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
|
|
295
|
+
(0, import_lodash_set.default)(req.event, "header", header);
|
|
296
|
+
(0, import_lodash_set.default)(req.event, "cookie", cookie);
|
|
310
297
|
} catch (error) {
|
|
311
298
|
if (error && typeof error === "object" && Array.isArray(error)) throw new UnprocessableEntityError("Validation failed", error);
|
|
312
299
|
throw error;
|
|
@@ -325,9 +312,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
325
312
|
}
|
|
326
313
|
services() {
|
|
327
314
|
return { before: async (req) => {
|
|
328
|
-
|
|
329
|
-
const
|
|
330
|
-
const services = await serviceDiscovery.register(this.endpoint.services);
|
|
315
|
+
req.event.logger;
|
|
316
|
+
const services = await ServiceDiscovery.getInstance(this.envParser).register(this.endpoint.services);
|
|
331
317
|
req.event.services = services;
|
|
332
318
|
} };
|
|
333
319
|
}
|
|
@@ -338,7 +324,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
338
324
|
const header = req.event.header;
|
|
339
325
|
const cookie = req.event.cookie;
|
|
340
326
|
const session = req.event.session;
|
|
341
|
-
|
|
327
|
+
if (!await this.endpoint.authorize({
|
|
342
328
|
header,
|
|
343
329
|
cookie,
|
|
344
330
|
services,
|
|
@@ -348,8 +334,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
348
334
|
body: req.event.body,
|
|
349
335
|
query: req.event.query,
|
|
350
336
|
params: req.event.params
|
|
351
|
-
})
|
|
352
|
-
if (!isAuthorized) {
|
|
337
|
+
})) {
|
|
353
338
|
logger.warn("Forbidden access attempt");
|
|
354
339
|
throw new ForbiddenError("Forbidden access to the endpoint", "You do not have permission to access this resource.");
|
|
355
340
|
}
|
|
@@ -358,9 +343,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
358
343
|
database() {
|
|
359
344
|
return { before: async (req) => {
|
|
360
345
|
if (!this.endpoint.databaseService) return;
|
|
361
|
-
|
|
362
|
-
const
|
|
363
|
-
const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
346
|
+
req.event.logger;
|
|
347
|
+
const db = await ServiceDiscovery.getInstance(this.envParser).register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
364
348
|
req.event.db = db;
|
|
365
349
|
} };
|
|
366
350
|
}
|
|
@@ -411,9 +395,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
411
395
|
cookie: event.cookie,
|
|
412
396
|
logger
|
|
413
397
|
}) : void 0;
|
|
414
|
-
const
|
|
415
|
-
const
|
|
416
|
-
const baseDb = sameDatabase ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
398
|
+
const { output, metadata } = await executeWithAuditTransaction(auditContext, async (auditor) => {
|
|
399
|
+
const baseDb = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
417
400
|
const executeHandler = async (db) => {
|
|
418
401
|
const responseBuilder = new ResponseBuilder();
|
|
419
402
|
const response = await this.endpoint.handler({
|
|
@@ -427,33 +410,31 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
427
410
|
...input
|
|
428
411
|
}, responseBuilder);
|
|
429
412
|
let data = response;
|
|
430
|
-
let metadata
|
|
413
|
+
let metadata = responseBuilder.getMetadata();
|
|
431
414
|
if (Endpoint.hasMetadata(response)) {
|
|
432
415
|
data = response.data;
|
|
433
|
-
metadata
|
|
416
|
+
metadata = response.metadata;
|
|
434
417
|
}
|
|
435
|
-
const output$1 = this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0;
|
|
436
418
|
return {
|
|
437
|
-
output:
|
|
438
|
-
metadata
|
|
419
|
+
output: this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0,
|
|
420
|
+
metadata,
|
|
439
421
|
responseBuilder
|
|
440
422
|
};
|
|
441
423
|
};
|
|
442
424
|
if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
|
|
443
425
|
return executeHandler(baseDb);
|
|
444
|
-
}, async (result
|
|
426
|
+
}, async (result, auditor) => {
|
|
445
427
|
if (!audits?.length) return;
|
|
446
428
|
for (const audit of audits) {
|
|
447
|
-
if (audit.when && !audit.when(result
|
|
448
|
-
const payload = audit.payload(result
|
|
449
|
-
const entityId = audit.entityId?.(result
|
|
429
|
+
if (audit.when && !audit.when(result.output)) continue;
|
|
430
|
+
const payload = audit.payload(result.output);
|
|
431
|
+
const entityId = audit.entityId?.(result.output);
|
|
450
432
|
auditor.audit(audit.type, payload, {
|
|
451
433
|
table: audit.table,
|
|
452
434
|
entityId
|
|
453
435
|
});
|
|
454
436
|
}
|
|
455
437
|
}, { db: rawDb });
|
|
456
|
-
const { output, metadata } = result;
|
|
457
438
|
const isJsonResponse = this.endpoint.responseType === "application/json";
|
|
458
439
|
const body = output === void 0 ? void 0 : isJsonResponse ? JSON.stringify(output) : typeof output === "string" ? output : String(output);
|
|
459
440
|
event.__response = output;
|
|
@@ -521,7 +502,6 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
521
502
|
return wrappedHandler;
|
|
522
503
|
}
|
|
523
504
|
};
|
|
524
|
-
|
|
525
505
|
//#endregion
|
|
526
506
|
//#region src/endpoints/parseQueryParams.ts
|
|
527
507
|
/**
|
|
@@ -542,10 +522,10 @@ function parseQueryParams(queryParams) {
|
|
|
542
522
|
}
|
|
543
523
|
return qs.parse(parts.join("&"));
|
|
544
524
|
}
|
|
545
|
-
|
|
546
525
|
//#endregion
|
|
547
526
|
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
|
|
548
527
|
var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
528
|
+
endpoint;
|
|
549
529
|
getInput(e) {
|
|
550
530
|
const multiValueParams = e.multiValueQueryStringParameters || {};
|
|
551
531
|
const singleValueParams = e.queryStringParameters || {};
|
|
@@ -578,17 +558,16 @@ var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
578
558
|
this.endpoint = endpoint;
|
|
579
559
|
}
|
|
580
560
|
};
|
|
581
|
-
|
|
582
561
|
//#endregion
|
|
583
562
|
//#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
|
|
584
563
|
var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
564
|
+
endpoint;
|
|
585
565
|
getCookies(e) {
|
|
586
566
|
return createApiGatewayCookies(e.cookies, e.headers?.cookie);
|
|
587
567
|
}
|
|
588
568
|
getInput(e) {
|
|
589
|
-
const raw = AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]);
|
|
590
569
|
return {
|
|
591
|
-
body:
|
|
570
|
+
body: AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]),
|
|
592
571
|
query: qs.parse(e.rawQueryString),
|
|
593
572
|
params: e.pathParameters || {}
|
|
594
573
|
};
|
|
@@ -613,7 +592,6 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
613
592
|
this.endpoint = endpoint;
|
|
614
593
|
}
|
|
615
594
|
};
|
|
616
|
-
|
|
617
595
|
//#endregion
|
|
618
596
|
//#region src/queue/AWSLambdaQueueAdaptor.ts
|
|
619
597
|
/**
|
|
@@ -628,6 +606,8 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
628
606
|
* retries only those records.
|
|
629
607
|
*/
|
|
630
608
|
var AWSLambdaQueue = class {
|
|
609
|
+
envParser;
|
|
610
|
+
queue;
|
|
631
611
|
_services;
|
|
632
612
|
constructor(envParser, queue) {
|
|
633
613
|
this.envParser = envParser;
|
|
@@ -642,6 +622,12 @@ var AWSLambdaQueue = class {
|
|
|
642
622
|
this._services = this.queue.services.length > 0 ? await serviceDiscovery.register(this.queue.services) : {};
|
|
643
623
|
return this._services;
|
|
644
624
|
}
|
|
625
|
+
/** The queue's database, registered as functions register theirs. */
|
|
626
|
+
async getDatabase() {
|
|
627
|
+
const service = this.queue.databaseService;
|
|
628
|
+
if (!service) return void 0;
|
|
629
|
+
return (await ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
|
|
630
|
+
}
|
|
645
631
|
safeJsonParse(value) {
|
|
646
632
|
try {
|
|
647
633
|
return JSON.parse(value);
|
|
@@ -667,6 +653,7 @@ var AWSLambdaQueue = class {
|
|
|
667
653
|
req: { id: context.awsRequestId }
|
|
668
654
|
});
|
|
669
655
|
const services = await this.getServices();
|
|
656
|
+
const db = await this.getDatabase();
|
|
670
657
|
const schema = this.queue.messageSchema;
|
|
671
658
|
const batchItemFailures = [];
|
|
672
659
|
const messages = [];
|
|
@@ -694,7 +681,8 @@ var AWSLambdaQueue = class {
|
|
|
694
681
|
await this.queue.handler({
|
|
695
682
|
messages,
|
|
696
683
|
services,
|
|
697
|
-
logger
|
|
684
|
+
logger,
|
|
685
|
+
db
|
|
698
686
|
});
|
|
699
687
|
} catch (error) {
|
|
700
688
|
logger.error(wrapError(error), "Queue handler failed; retrying batch");
|
|
@@ -704,7 +692,7 @@ var AWSLambdaQueue = class {
|
|
|
704
692
|
}
|
|
705
693
|
get handler() {
|
|
706
694
|
const handler = this._handler.bind(this);
|
|
707
|
-
return async (event, context) => {
|
|
695
|
+
return (async (event, context) => {
|
|
708
696
|
const startTime = Date.now();
|
|
709
697
|
const requestId = context.awsRequestId;
|
|
710
698
|
const logger = this.queue.logger.child({ requestId });
|
|
@@ -713,13 +701,14 @@ var AWSLambdaQueue = class {
|
|
|
713
701
|
requestId,
|
|
714
702
|
startTime
|
|
715
703
|
}, () => handler(event, context));
|
|
716
|
-
};
|
|
704
|
+
});
|
|
717
705
|
}
|
|
718
706
|
};
|
|
719
|
-
|
|
720
707
|
//#endregion
|
|
721
708
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
722
709
|
var AWSLambdaSubscriber = class {
|
|
710
|
+
envParser;
|
|
711
|
+
subscriber;
|
|
723
712
|
_logger;
|
|
724
713
|
_services;
|
|
725
714
|
constructor(envParser, subscriber) {
|
|
@@ -739,10 +728,15 @@ var AWSLambdaSubscriber = class {
|
|
|
739
728
|
} else this._services = {};
|
|
740
729
|
return this._services;
|
|
741
730
|
}
|
|
731
|
+
/** The subscriber's database, registered as functions register theirs. */
|
|
732
|
+
async getDatabase() {
|
|
733
|
+
const service = this.subscriber.databaseService;
|
|
734
|
+
if (!service) return void 0;
|
|
735
|
+
return (await ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
|
|
736
|
+
}
|
|
742
737
|
error() {
|
|
743
738
|
return { onError: (req) => {
|
|
744
|
-
|
|
745
|
-
logger.error(req.error || {}, "Error processing subscriber");
|
|
739
|
+
(req.event?.logger || this.subscriber.logger).error(req.error || {}, "Error processing subscriber");
|
|
746
740
|
throw wrapError(req.error);
|
|
747
741
|
} };
|
|
748
742
|
}
|
|
@@ -762,11 +756,12 @@ var AWSLambdaSubscriber = class {
|
|
|
762
756
|
services() {
|
|
763
757
|
return { before: async (req) => {
|
|
764
758
|
req.event.services = await this.getServices();
|
|
759
|
+
req.event.db = await this.getDatabase();
|
|
765
760
|
} };
|
|
766
761
|
}
|
|
767
762
|
parseEvents() {
|
|
768
763
|
return { before: async (req) => {
|
|
769
|
-
const { logger
|
|
764
|
+
const { logger, ...e } = req.event;
|
|
770
765
|
const rawEvent = e;
|
|
771
766
|
logger.info({ rawEvent });
|
|
772
767
|
const events = [];
|
|
@@ -854,7 +849,8 @@ var AWSLambdaSubscriber = class {
|
|
|
854
849
|
const result = await this.subscriber.handler({
|
|
855
850
|
events: event.events,
|
|
856
851
|
services: event.services,
|
|
857
|
-
logger: event.logger
|
|
852
|
+
logger: event.logger,
|
|
853
|
+
db: event.db
|
|
858
854
|
});
|
|
859
855
|
if (this.subscriber.outputSchema && result) {
|
|
860
856
|
const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
|
|
@@ -882,7 +878,87 @@ var AWSLambdaSubscriber = class {
|
|
|
882
878
|
return wrappedHandler;
|
|
883
879
|
}
|
|
884
880
|
};
|
|
885
|
-
|
|
886
881
|
//#endregion
|
|
887
|
-
|
|
882
|
+
//#region src/subscribers/SnsPushSubscriberAdaptor.ts
|
|
883
|
+
/**
|
|
884
|
+
* A topic subscriber run by SNS pushing to an HTTP endpoint, rather than by a
|
|
885
|
+
* poller.
|
|
886
|
+
*
|
|
887
|
+
* The notification is handed to {@link AWSLambdaSubscriber} as the Lambda
|
|
888
|
+
* event SNS would have invoked a function with, so the parsing, the services
|
|
889
|
+
* and the error handling are the ones that run deployed on Lambda — the
|
|
890
|
+
* endpoint is only a different way for the event to arrive.
|
|
891
|
+
*/
|
|
892
|
+
var SnsPushSubscriberAdaptor = class {
|
|
893
|
+
subscriber;
|
|
894
|
+
options;
|
|
895
|
+
lambda;
|
|
896
|
+
constructor(envParser, subscriber, options) {
|
|
897
|
+
this.subscriber = subscriber;
|
|
898
|
+
this.options = options;
|
|
899
|
+
this.lambda = new AWSLambdaSubscriber(envParser, subscriber);
|
|
900
|
+
}
|
|
901
|
+
async handle(body) {
|
|
902
|
+
const message = body;
|
|
903
|
+
if (typeof message?.Type !== "string" || !message.TopicArn) return refuse(400, "not an SNS message");
|
|
904
|
+
if (message.TopicArn !== this.options.topicArn) return refuse(403, `not subscribed to ${message.TopicArn}`);
|
|
905
|
+
if (this.options.verify) try {
|
|
906
|
+
await verifySnsMessage(message);
|
|
907
|
+
} catch (error) {
|
|
908
|
+
this.subscriber.logger.warn({
|
|
909
|
+
error,
|
|
910
|
+
topicArn: message.TopicArn
|
|
911
|
+
}, "Refused an SNS message that did not verify");
|
|
912
|
+
return refuse(403, error.name);
|
|
913
|
+
}
|
|
914
|
+
switch (message.Type) {
|
|
915
|
+
case "SubscriptionConfirmation":
|
|
916
|
+
await confirmSnsSubscription(this.options.emulatorEndpoint && message.SubscribeURL ? {
|
|
917
|
+
...message,
|
|
918
|
+
SubscribeURL: throughEndpoint(message.SubscribeURL, this.options.emulatorEndpoint)
|
|
919
|
+
} : message);
|
|
920
|
+
this.subscriber.logger.info({ topicArn: message.TopicArn }, "Confirmed SNS subscription");
|
|
921
|
+
return {
|
|
922
|
+
status: 200,
|
|
923
|
+
body: { status: "confirmed" }
|
|
924
|
+
};
|
|
925
|
+
case "Notification": try {
|
|
926
|
+
await this.lambda.handler(toSnsEvent(message), {
|
|
927
|
+
awsRequestId: message.MessageId,
|
|
928
|
+
functionName: this.subscriber.topicName ?? "subscriber"
|
|
929
|
+
}, () => {});
|
|
930
|
+
return {
|
|
931
|
+
status: 200,
|
|
932
|
+
body: { status: "ok" }
|
|
933
|
+
};
|
|
934
|
+
} catch (error) {
|
|
935
|
+
return refuse(500, error.name);
|
|
936
|
+
}
|
|
937
|
+
default: return {
|
|
938
|
+
status: 200,
|
|
939
|
+
body: { status: "ignored" }
|
|
940
|
+
};
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
};
|
|
944
|
+
/** `url`, sent to `endpoint`'s origin instead of its own. */
|
|
945
|
+
function throughEndpoint(url, endpoint) {
|
|
946
|
+
const target = new URL(url);
|
|
947
|
+
const origin = new URL(endpoint);
|
|
948
|
+
target.protocol = origin.protocol;
|
|
949
|
+
target.host = origin.host;
|
|
950
|
+
return target.toString();
|
|
951
|
+
}
|
|
952
|
+
function refuse(status, error) {
|
|
953
|
+
return {
|
|
954
|
+
status,
|
|
955
|
+
body: {
|
|
956
|
+
status: "refused",
|
|
957
|
+
error
|
|
958
|
+
}
|
|
959
|
+
};
|
|
960
|
+
}
|
|
961
|
+
//#endregion
|
|
962
|
+
export { AWSLambdaFunction, AWSLambdaQueue, AWSLambdaSubscriber, AWSScheduledFunction, AmazonApiGatewayV1Endpoint, AmazonApiGatewayV2Endpoint, SnsPushSubscriberAdaptor };
|
|
963
|
+
|
|
888
964
|
//# sourceMappingURL=aws.mjs.map
|