@geekmidas/constructs 10.0.0-alpha.4 → 10.0.0-alpha.41
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-CMEGfRs8.d.cts} +21 -8
- package/dist/Cron-CMEGfRs8.d.cts.map +1 -0
- package/dist/{Cron-ByxdOfpE.d.mts → Cron-D6X4-xjB.d.mts} +21 -8
- package/dist/Cron-D6X4-xjB.d.mts.map +1 -0
- package/dist/CronBuilder-CEK7aOqD.d.cts +46 -0
- package/dist/CronBuilder-CEK7aOqD.d.cts.map +1 -0
- package/dist/CronBuilder-DB35T5dL.cjs +116 -0
- package/dist/CronBuilder-DB35T5dL.cjs.map +1 -0
- package/dist/CronBuilder-Dv0IlZs0.mjs +104 -0
- package/dist/CronBuilder-Dv0IlZs0.mjs.map +1 -0
- package/dist/CronBuilder-O_gvButp.d.mts +46 -0
- package/dist/CronBuilder-O_gvButp.d.mts.map +1 -0
- package/dist/{Endpoint-Dij_wOcc.mjs → Endpoint-CQAeh1Rh.mjs} +117 -109
- package/dist/Endpoint-CQAeh1Rh.mjs.map +1 -0
- package/dist/{Endpoint-DODn1RhN.cjs → Endpoint-D1L9qu5C.cjs} +145 -131
- package/dist/Endpoint-D1L9qu5C.cjs.map +1 -0
- package/dist/{Endpoint-2Wg7T7Cq.d.mts → Endpoint-Dp5AKIXl.d.cts} +69 -93
- package/dist/Endpoint-Dp5AKIXl.d.cts.map +1 -0
- package/dist/{Endpoint-DrD8a1yH.d.cts → Endpoint-DtI7heFm.d.mts} +70 -94
- package/dist/Endpoint-DtI7heFm.d.mts.map +1 -0
- package/dist/{EndpointFactory-b4ituq-s.mjs → EndpointFactory-BBdNeaGJ.mjs} +39 -74
- package/dist/EndpointFactory-BBdNeaGJ.mjs.map +1 -0
- package/dist/{EndpointFactory-BHFMmFkV.cjs → EndpointFactory-BZOCOaK6.cjs} +75 -110
- package/dist/EndpointFactory-BZOCOaK6.cjs.map +1 -0
- package/dist/{index-BxHDdy6a.d.mts → EndpointFactory-CgMDvERK.d.mts} +63 -133
- package/dist/EndpointFactory-CgMDvERK.d.mts.map +1 -0
- package/dist/{index-B8g8POkr.d.cts → EndpointFactory-FeFRmlDZ.d.cts} +62 -132
- package/dist/EndpointFactory-FeFRmlDZ.d.cts.map +1 -0
- package/dist/{HonoEndpointAdaptor-BM2jbWht.mjs → HonoEndpointAdaptor-Aui-x9Lg.mjs} +41 -47
- package/dist/HonoEndpointAdaptor-Aui-x9Lg.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-De6IlBZe.cjs → HonoEndpointAdaptor-Cq99r9H7.cjs} +50 -53
- package/dist/HonoEndpointAdaptor-Cq99r9H7.cjs.map +1 -0
- package/dist/Queue-C1uDgjxt.mjs +100 -0
- package/dist/Queue-C1uDgjxt.mjs.map +1 -0
- package/dist/Queue-Ckmudcm8.cjs +105 -0
- package/dist/Queue-Ckmudcm8.cjs.map +1 -0
- package/dist/{Queue-D7ZuwBhy.d.cts → Queue-CpQIGB_2.d.cts} +28 -40
- package/dist/Queue-CpQIGB_2.d.cts.map +1 -0
- package/dist/{Queue-gVGfi2Yk.d.mts → Queue-YmvN2vEP.d.mts} +28 -40
- package/dist/Queue-YmvN2vEP.d.mts.map +1 -0
- package/dist/QueueBuilder-CJNcv4dy.cjs +112 -0
- package/dist/QueueBuilder-CJNcv4dy.cjs.map +1 -0
- package/dist/QueueBuilder-CM0WUxfw.d.mts +62 -0
- package/dist/QueueBuilder-CM0WUxfw.d.mts.map +1 -0
- package/dist/QueueBuilder-XEnnOWGe.d.cts +62 -0
- package/dist/QueueBuilder-XEnnOWGe.d.cts.map +1 -0
- package/dist/QueueBuilder-XuPKZwKH.mjs +95 -0
- package/dist/QueueBuilder-XuPKZwKH.mjs.map +1 -0
- package/dist/{Subscriber-2mEi0ImH.d.cts → Subscriber-B91YSkZt.d.cts} +14 -16
- package/dist/Subscriber-B91YSkZt.d.cts.map +1 -0
- package/dist/{Subscriber-xTJ9ayPN.d.mts → Subscriber-BjHYe5hK.d.mts} +14 -16
- package/dist/Subscriber-BjHYe5hK.d.mts.map +1 -0
- package/dist/SubscriberBuilder-BSpQX1JT.d.cts +55 -0
- package/dist/SubscriberBuilder-BSpQX1JT.d.cts.map +1 -0
- package/dist/SubscriberBuilder-BhMphk4z.d.mts +55 -0
- package/dist/SubscriberBuilder-BhMphk4z.d.mts.map +1 -0
- package/dist/{SubscriberBuilder-4OPehf2R.cjs → SubscriberBuilder-Duk028pD.cjs} +34 -37
- package/dist/SubscriberBuilder-Duk028pD.cjs.map +1 -0
- package/dist/{SubscriberBuilder-BjkbeT9l.mjs → SubscriberBuilder-DzQUWE08.mjs} +23 -25
- package/dist/SubscriberBuilder-DzQUWE08.mjs.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 +171 -108
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +75 -43
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +76 -44
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +143 -83
- 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 +515 -87
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +250 -48
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +250 -48
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +484 -68
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/auth-CMwml9QN.d.mts +188 -0
- package/dist/auth-CMwml9QN.d.mts.map +1 -0
- package/dist/auth-rVRDjIw_.d.cts +188 -0
- package/dist/auth-rVRDjIw_.d.cts.map +1 -0
- package/dist/auth.cjs +171 -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 +160 -24
- package/dist/auth.mjs.map +1 -1
- package/dist/{cache-BrRz3fEB.d.mts → cache-C9a_hVCc.d.cts} +4 -7
- package/dist/cache-C9a_hVCc.d.cts.map +1 -0
- package/dist/{cache-BtZY_tHe.d.cts → cache-CeTMI8LR.d.mts} +4 -7
- package/dist/cache-CeTMI8LR.d.mts.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/{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-g5GM5pwR.d.mts → construct-interface-_3zgxzXl.d.mts} +20 -11
- package/dist/construct-interface-_3zgxzXl.d.mts.map +1 -0
- package/dist/{construct-interface-D9d4Gm4p.d.cts → construct-interface-_xi4BPN8.d.cts} +20 -11
- package/dist/construct-interface-_xi4BPN8.d.cts.map +1 -0
- package/dist/construct-interface.cjs +87 -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 +81 -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/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-DS3mujT5.d.mts +86 -0
- package/dist/external-api-DS3mujT5.d.mts.map +1 -0
- package/dist/external-api-LBfE-q3g.d.cts +86 -0
- package/dist/external-api-LBfE-q3g.d.cts.map +1 -0
- package/dist/external-api.cjs +124 -0
- package/dist/external-api.cjs.map +1 -0
- package/dist/external-api.d.cts +2 -0
- package/dist/external-api.d.mts +2 -0
- package/dist/external-api.mjs +121 -0
- package/dist/external-api.mjs.map +1 -0
- package/dist/file-server.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 +2 -4
- package/dist/functions/index.d.mts +2 -4
- package/dist/functions/index.mjs +2 -6
- package/dist/{functions-Ck21Uyq0.mjs → functions-DCIfCRR-.mjs} +371 -241
- package/dist/functions-DCIfCRR-.mjs.map +1 -0
- package/dist/{functions-DJJA7VGc.cjs → functions-ZH60FE7H.cjs} +409 -273
- package/dist/functions-ZH60FE7H.cjs.map +1 -0
- package/dist/{index-AIfVzkhi.d.cts → index-B0kxstwf.d.cts} +49 -42
- package/dist/index-B0kxstwf.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-CubPzHd9.d.mts → index-CjVEjOw0.d.mts} +49 -42
- package/dist/index-CjVEjOw0.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/kysely-BJ8IQ_1P.d.mts +159 -0
- package/dist/kysely-BJ8IQ_1P.d.mts.map +1 -0
- package/dist/kysely-DVF8wOT4.d.cts +159 -0
- package/dist/kysely-DVF8wOT4.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 +70 -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 +69 -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 +87 -63
- package/dist/rest-api.cjs.map +1 -1
- package/dist/rest-api.d.cts +62 -61
- package/dist/rest-api.d.cts.map +1 -1
- package/dist/rest-api.d.mts +62 -61
- package/dist/rest-api.d.mts.map +1 -1
- package/dist/rest-api.mjs +79 -55
- package/dist/rest-api.mjs.map +1 -1
- package/dist/{chunk-DWy1uDak.cjs → rolldown-runtime-y5ARvAq5.cjs} +14 -18
- package/dist/site.cjs +33 -9
- package/dist/site.cjs.map +1 -1
- package/dist/site.d.cts +11 -22
- package/dist/site.d.cts.map +1 -1
- package/dist/site.d.mts +11 -22
- package/dist/site.d.mts.map +1 -1
- package/dist/site.mjs +29 -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 +118 -35
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.cts +95 -42
- package/dist/worker.d.cts.map +1 -1
- package/dist/worker.d.mts +95 -42
- package/dist/worker.d.mts.map +1 -1
- package/dist/worker.mjs +113 -30
- package/dist/worker.mjs.map +1 -1
- package/package.json +66 -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-ByxdOfpE.d.mts.map +0 -1
- package/dist/CronBuilder-BL0AP6fs.d.mts +0 -44
- package/dist/CronBuilder-BL0AP6fs.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-2Wg7T7Cq.d.mts.map +0 -1
- package/dist/Endpoint-DODn1RhN.cjs.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.map +0 -1
- package/dist/index-B8g8POkr.d.cts.map +0 -1
- package/dist/index-BxHDdy6a.d.mts.map +0 -1
- package/dist/index-CubPzHd9.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-DCIfCRR-.mjs";
|
|
3
|
+
import { i as require_lodash_set, n as ResponseBuilder, t as Endpoint } from "../Endpoint-CQAeh1Rh.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;
|
|
@@ -704,7 +684,7 @@ var AWSLambdaQueue = class {
|
|
|
704
684
|
}
|
|
705
685
|
get handler() {
|
|
706
686
|
const handler = this._handler.bind(this);
|
|
707
|
-
return async (event, context) => {
|
|
687
|
+
return (async (event, context) => {
|
|
708
688
|
const startTime = Date.now();
|
|
709
689
|
const requestId = context.awsRequestId;
|
|
710
690
|
const logger = this.queue.logger.child({ requestId });
|
|
@@ -713,13 +693,14 @@ var AWSLambdaQueue = class {
|
|
|
713
693
|
requestId,
|
|
714
694
|
startTime
|
|
715
695
|
}, () => handler(event, context));
|
|
716
|
-
};
|
|
696
|
+
});
|
|
717
697
|
}
|
|
718
698
|
};
|
|
719
|
-
|
|
720
699
|
//#endregion
|
|
721
700
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
722
701
|
var AWSLambdaSubscriber = class {
|
|
702
|
+
envParser;
|
|
703
|
+
subscriber;
|
|
723
704
|
_logger;
|
|
724
705
|
_services;
|
|
725
706
|
constructor(envParser, subscriber) {
|
|
@@ -741,8 +722,7 @@ var AWSLambdaSubscriber = class {
|
|
|
741
722
|
}
|
|
742
723
|
error() {
|
|
743
724
|
return { onError: (req) => {
|
|
744
|
-
|
|
745
|
-
logger.error(req.error || {}, "Error processing subscriber");
|
|
725
|
+
(req.event?.logger || this.subscriber.logger).error(req.error || {}, "Error processing subscriber");
|
|
746
726
|
throw wrapError(req.error);
|
|
747
727
|
} };
|
|
748
728
|
}
|
|
@@ -766,7 +746,7 @@ var AWSLambdaSubscriber = class {
|
|
|
766
746
|
}
|
|
767
747
|
parseEvents() {
|
|
768
748
|
return { before: async (req) => {
|
|
769
|
-
const { logger
|
|
749
|
+
const { logger, ...e } = req.event;
|
|
770
750
|
const rawEvent = e;
|
|
771
751
|
logger.info({ rawEvent });
|
|
772
752
|
const events = [];
|
|
@@ -882,7 +862,87 @@ var AWSLambdaSubscriber = class {
|
|
|
882
862
|
return wrappedHandler;
|
|
883
863
|
}
|
|
884
864
|
};
|
|
885
|
-
|
|
886
865
|
//#endregion
|
|
887
|
-
|
|
866
|
+
//#region src/subscribers/SnsPushSubscriberAdaptor.ts
|
|
867
|
+
/**
|
|
868
|
+
* A topic subscriber run by SNS pushing to an HTTP endpoint, rather than by a
|
|
869
|
+
* poller.
|
|
870
|
+
*
|
|
871
|
+
* The notification is handed to {@link AWSLambdaSubscriber} as the Lambda
|
|
872
|
+
* event SNS would have invoked a function with, so the parsing, the services
|
|
873
|
+
* and the error handling are the ones that run deployed on Lambda — the
|
|
874
|
+
* endpoint is only a different way for the event to arrive.
|
|
875
|
+
*/
|
|
876
|
+
var SnsPushSubscriberAdaptor = class {
|
|
877
|
+
subscriber;
|
|
878
|
+
options;
|
|
879
|
+
lambda;
|
|
880
|
+
constructor(envParser, subscriber, options) {
|
|
881
|
+
this.subscriber = subscriber;
|
|
882
|
+
this.options = options;
|
|
883
|
+
this.lambda = new AWSLambdaSubscriber(envParser, subscriber);
|
|
884
|
+
}
|
|
885
|
+
async handle(body) {
|
|
886
|
+
const message = body;
|
|
887
|
+
if (typeof message?.Type !== "string" || !message.TopicArn) return refuse(400, "not an SNS message");
|
|
888
|
+
if (message.TopicArn !== this.options.topicArn) return refuse(403, `not subscribed to ${message.TopicArn}`);
|
|
889
|
+
if (this.options.verify) try {
|
|
890
|
+
await verifySnsMessage(message);
|
|
891
|
+
} catch (error) {
|
|
892
|
+
this.subscriber.logger.warn({
|
|
893
|
+
error,
|
|
894
|
+
topicArn: message.TopicArn
|
|
895
|
+
}, "Refused an SNS message that did not verify");
|
|
896
|
+
return refuse(403, error.name);
|
|
897
|
+
}
|
|
898
|
+
switch (message.Type) {
|
|
899
|
+
case "SubscriptionConfirmation":
|
|
900
|
+
await confirmSnsSubscription(this.options.emulatorEndpoint && message.SubscribeURL ? {
|
|
901
|
+
...message,
|
|
902
|
+
SubscribeURL: throughEndpoint(message.SubscribeURL, this.options.emulatorEndpoint)
|
|
903
|
+
} : message);
|
|
904
|
+
this.subscriber.logger.info({ topicArn: message.TopicArn }, "Confirmed SNS subscription");
|
|
905
|
+
return {
|
|
906
|
+
status: 200,
|
|
907
|
+
body: { status: "confirmed" }
|
|
908
|
+
};
|
|
909
|
+
case "Notification": try {
|
|
910
|
+
await this.lambda.handler(toSnsEvent(message), {
|
|
911
|
+
awsRequestId: message.MessageId,
|
|
912
|
+
functionName: this.subscriber.topicName ?? "subscriber"
|
|
913
|
+
}, () => {});
|
|
914
|
+
return {
|
|
915
|
+
status: 200,
|
|
916
|
+
body: { status: "ok" }
|
|
917
|
+
};
|
|
918
|
+
} catch (error) {
|
|
919
|
+
return refuse(500, error.name);
|
|
920
|
+
}
|
|
921
|
+
default: return {
|
|
922
|
+
status: 200,
|
|
923
|
+
body: { status: "ignored" }
|
|
924
|
+
};
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
};
|
|
928
|
+
/** `url`, sent to `endpoint`'s origin instead of its own. */
|
|
929
|
+
function throughEndpoint(url, endpoint) {
|
|
930
|
+
const target = new URL(url);
|
|
931
|
+
const origin = new URL(endpoint);
|
|
932
|
+
target.protocol = origin.protocol;
|
|
933
|
+
target.host = origin.host;
|
|
934
|
+
return target.toString();
|
|
935
|
+
}
|
|
936
|
+
function refuse(status, error) {
|
|
937
|
+
return {
|
|
938
|
+
status,
|
|
939
|
+
body: {
|
|
940
|
+
status: "refused",
|
|
941
|
+
error
|
|
942
|
+
}
|
|
943
|
+
};
|
|
944
|
+
}
|
|
945
|
+
//#endregion
|
|
946
|
+
export { AWSLambdaFunction, AWSLambdaQueue, AWSLambdaSubscriber, AWSScheduledFunction, AmazonApiGatewayV1Endpoint, AmazonApiGatewayV2Endpoint, SnsPushSubscriberAdaptor };
|
|
947
|
+
|
|
888
948
|
//# sourceMappingURL=aws.mjs.map
|