@geekmidas/constructs 10.0.0-alpha.1 → 10.0.0-alpha.100
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-CdhThxDI.mjs → Construct-B1vGBPme.mjs} +45 -33
- package/dist/Construct-B1vGBPme.mjs.map +1 -0
- package/dist/Construct-BQALFCh2.d.cts +230 -0
- package/dist/Construct-BQALFCh2.d.cts.map +1 -0
- package/dist/{Construct-roId57cU.cjs → Construct-DUSXuTHP.cjs} +65 -47
- package/dist/Construct-DUSXuTHP.cjs.map +1 -0
- package/dist/Construct-QXnl3VqT.d.mts +230 -0
- package/dist/Construct-QXnl3VqT.d.mts.map +1 -0
- package/dist/Cron-DI3nKoic.d.cts +45 -0
- package/dist/Cron-DI3nKoic.d.cts.map +1 -0
- package/dist/Cron-uYAHPnp7.d.mts +45 -0
- package/dist/Cron-uYAHPnp7.d.mts.map +1 -0
- package/dist/CronBuilder-C0Ek1-RA.cjs +121 -0
- package/dist/CronBuilder-C0Ek1-RA.cjs.map +1 -0
- package/dist/CronBuilder-DaSUm2Na.d.mts +47 -0
- package/dist/CronBuilder-DaSUm2Na.d.mts.map +1 -0
- package/dist/CronBuilder-Dmix_Pen.mjs +109 -0
- package/dist/CronBuilder-Dmix_Pen.mjs.map +1 -0
- package/dist/CronBuilder-g1lZLWyG.d.cts +47 -0
- package/dist/CronBuilder-g1lZLWyG.d.cts.map +1 -0
- package/dist/{Endpoint-BTj58Gob.mjs → Endpoint-BG4UJ9oA.mjs} +146 -109
- package/dist/Endpoint-BG4UJ9oA.mjs.map +1 -0
- package/dist/{Endpoint-BBkV6l0k.cjs → Endpoint-BoUg8ocM.cjs} +174 -131
- package/dist/Endpoint-BoUg8ocM.cjs.map +1 -0
- package/dist/{Endpoint-BKR5QH6O.d.mts → Endpoint-Du-NwPX2.d.mts} +83 -91
- package/dist/Endpoint-Du-NwPX2.d.mts.map +1 -0
- package/dist/{Endpoint-BQ9O0P1w.d.cts → Endpoint-aCvBMPoH.d.cts} +82 -90
- package/dist/Endpoint-aCvBMPoH.d.cts.map +1 -0
- package/dist/{EndpointFactory-BejSTzbB.mjs → EndpointFactory-BDtsrEvJ.mjs} +60 -77
- package/dist/EndpointFactory-BDtsrEvJ.mjs.map +1 -0
- package/dist/{EndpointFactory-DYoGLaIT.cjs → EndpointFactory-DJ7gXLpR.cjs} +96 -113
- package/dist/EndpointFactory-DJ7gXLpR.cjs.map +1 -0
- package/dist/{index-D5zqAJ2e.d.cts → EndpointFactory-DMYdJCOj.d.mts} +78 -134
- package/dist/EndpointFactory-DMYdJCOj.d.mts.map +1 -0
- package/dist/{index-Cvz551AO.d.mts → EndpointFactory-I7s1co3Y.d.cts} +79 -135
- package/dist/EndpointFactory-I7s1co3Y.d.cts.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-7aYNdqJq.mjs → HonoEndpointAdaptor-PtPlbeKY.mjs} +75 -57
- package/dist/HonoEndpointAdaptor-PtPlbeKY.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-wMsCyMgt.cjs → HonoEndpointAdaptor-zVzVLJEO.cjs} +83 -62
- package/dist/HonoEndpointAdaptor-zVzVLJEO.cjs.map +1 -0
- package/dist/Queue-A3wfD0it.cjs +109 -0
- package/dist/Queue-A3wfD0it.cjs.map +1 -0
- package/dist/Queue-D6USGS4q.mjs +104 -0
- package/dist/Queue-D6USGS4q.mjs.map +1 -0
- package/dist/{Queue-D6WeziRD.d.cts → Queue-DlsHRzUp.d.mts} +48 -48
- package/dist/Queue-DlsHRzUp.d.mts.map +1 -0
- package/dist/{Queue-DpUeqdC8.d.mts → Queue-HPyi0e1i.d.cts} +49 -49
- package/dist/Queue-HPyi0e1i.d.cts.map +1 -0
- package/dist/QueueBuilder-BjuF0UBl.cjs +135 -0
- package/dist/QueueBuilder-BjuF0UBl.cjs.map +1 -0
- package/dist/QueueBuilder-Cue73M4t.mjs +118 -0
- package/dist/QueueBuilder-Cue73M4t.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-4rBJgDKI.d.mts → Subscriber-Bpp02cGr.d.cts} +30 -21
- package/dist/Subscriber-Bpp02cGr.d.cts.map +1 -0
- package/dist/{Subscriber-DVQowdyj.d.cts → Subscriber-CtN9R48-.d.mts} +29 -20
- package/dist/Subscriber-CtN9R48-.d.mts.map +1 -0
- package/dist/SubscriberBuilder-CDy4nHCz.mjs +134 -0
- package/dist/SubscriberBuilder-CDy4nHCz.mjs.map +1 -0
- package/dist/SubscriberBuilder-CuCMFpYW.d.mts +67 -0
- package/dist/SubscriberBuilder-CuCMFpYW.d.mts.map +1 -0
- package/dist/SubscriberBuilder-D_owVoHo.cjs +145 -0
- package/dist/SubscriberBuilder-D_owVoHo.cjs.map +1 -0
- package/dist/SubscriberBuilder-g3fAVWgs.d.cts +67 -0
- package/dist/SubscriberBuilder-g3fAVWgs.d.cts.map +1 -0
- package/dist/Topic-D74b5cgs.mjs +99 -0
- package/dist/Topic-D74b5cgs.mjs.map +1 -0
- package/dist/Topic-GHxcU8AG.cjs +104 -0
- package/dist/Topic-GHxcU8AG.cjs.map +1 -0
- package/dist/adaptors/aws.cjs +332 -188
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +114 -44
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +114 -44
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +308 -166
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +3 -11
- 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 -11
- package/dist/adaptors/testing.cjs +743 -90
- 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 +706 -71
- 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-CcuceLYo.d.mts +268 -0
- package/dist/auth-CcuceLYo.d.mts.map +1 -0
- package/dist/auth.cjs +302 -34
- 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 +290 -28
- package/dist/auth.mjs.map +1 -1
- package/dist/{cache-CdQ7OLpR.d.cts → cache-CXh6GIgb.d.mts} +4 -7
- package/dist/cache-CXh6GIgb.d.mts.map +1 -0
- package/dist/{cache-DYoJFcfd.d.mts → cache-DnGDGly3.d.cts} +4 -7
- 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-BqwRNYA2.d.mts → construct-interface-B1AfqRl4.d.cts} +43 -12
- package/dist/construct-interface-B1AfqRl4.d.cts.map +1 -0
- package/dist/{construct-interface-D2nNkHUN.d.cts → construct-interface-DluK3_da.d.mts} +43 -12
- 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 +77 -17
- package/dist/credential.cjs.map +1 -1
- package/dist/credential.d.cts +34 -9
- package/dist/credential.d.cts.map +1 -1
- package/dist/credential.d.mts +34 -9
- package/dist/credential.d.mts.map +1 -1
- package/dist/credential.mjs +71 -13
- package/dist/credential.mjs.map +1 -1
- package/dist/crons/index.cjs +189 -85
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +70 -48
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +70 -48
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +183 -81
- 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 +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 -11
- 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 -11
- package/dist/external-api-MJ8id87V.d.mts +105 -0
- package/dist/external-api-MJ8id87V.d.mts.map +1 -0
- package/dist/external-api-O107yzZJ.d.cts +105 -0
- package/dist/external-api-O107yzZJ.d.cts.map +1 -0
- package/dist/external-api.cjs +142 -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 +139 -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-Cpff1uZH.mjs → functions-BFizikJU.mjs} +394 -243
- package/dist/functions-BFizikJU.mjs.map +1 -0
- package/dist/{functions-DukjG8ov.cjs → functions-CfzJG9hK.cjs} +432 -275
- package/dist/functions-CfzJG9hK.cjs.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 +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-Bii4l6eP.mjs +370 -0
- package/dist/kysely-Bii4l6eP.mjs.map +1 -0
- package/dist/kysely-CO_Dk43W.cjs +383 -0
- package/dist/kysely-CO_Dk43W.cjs.map +1 -0
- package/dist/kysely-D0bpzgPs.d.cts +175 -0
- package/dist/kysely-D0bpzgPs.d.cts.map +1 -0
- package/dist/kysely-DUqC3Ie0.d.mts +175 -0
- package/dist/kysely-DUqC3Ie0.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/{lazyAccessors-DM6HcXQk.mjs → lazyAccessors-CFanua0O.mjs} +20 -21
- package/dist/lazyAccessors-CFanua0O.mjs.map +1 -0
- package/dist/{lazyAccessors-DrJj8NpA.cjs → lazyAccessors-hJKGv8Ay.cjs} +60 -62
- 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-BRRVVHUB.mjs +131 -0
- package/dist/processAudits-BRRVVHUB.mjs.map +1 -0
- package/dist/processAudits-DasOZjPl.cjs +154 -0
- package/dist/processAudits-DasOZjPl.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 +92 -63
- package/dist/rest-api.cjs.map +1 -1
- package/dist/rest-api.d.cts +81 -61
- package/dist/rest-api.d.cts.map +1 -1
- package/dist/rest-api.d.mts +81 -61
- package/dist/rest-api.d.mts.map +1 -1
- package/dist/rest-api.mjs +84 -55
- 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 +35 -9
- package/dist/site.cjs.map +1 -1
- package/dist/site.d.cts +25 -22
- package/dist/site.d.cts.map +1 -1
- package/dist/site.d.mts +25 -22
- package/dist/site.d.mts.map +1 -1
- package/dist/site.mjs +31 -5
- 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 +111 -101
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +44 -56
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +44 -56
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +108 -98
- package/dist/subscribers/index.mjs.map +1 -1
- 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-DRtT1_0A.d.mts +40 -0
- package/dist/telemetry-DRtT1_0A.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 -32
- package/dist/topic/index.d.mts +2 -32
- package/dist/topic/index.mjs +2 -134
- package/dist/tracing-CxaZ98IB.mjs +110 -0
- package/dist/tracing-CxaZ98IB.mjs.map +1 -0
- package/dist/tracing-DPMidF_r.cjs +127 -0
- package/dist/tracing-DPMidF_r.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 +191 -0
- package/dist/worker.cjs.map +1 -0
- package/dist/worker.d.cts +171 -0
- package/dist/worker.d.cts.map +1 -0
- package/dist/worker.d.mts +171 -0
- package/dist/worker.d.mts.map +1 -0
- package/dist/worker.mjs +190 -0
- package/dist/worker.mjs.map +1 -0
- package/package.json +116 -70
- package/dist/AWSScheduledFunction-9bJS4WdJ.d.cts +0 -122
- package/dist/AWSScheduledFunction-9bJS4WdJ.d.cts.map +0 -1
- package/dist/AWSScheduledFunction-BJjj8B5V.mjs +0 -243
- package/dist/AWSScheduledFunction-BJjj8B5V.mjs.map +0 -1
- package/dist/AWSScheduledFunction-BO5iEMSh.d.mts +0 -122
- package/dist/AWSScheduledFunction-BO5iEMSh.d.mts.map +0 -1
- package/dist/AWSScheduledFunction-qu4ieRZR.cjs +0 -255
- package/dist/AWSScheduledFunction-qu4ieRZR.cjs.map +0 -1
- package/dist/Construct-B-xc0SE9.d.mts +0 -104
- package/dist/Construct-B-xc0SE9.d.mts.map +0 -1
- package/dist/Construct-CdhThxDI.mjs.map +0 -1
- package/dist/Construct-WhCXIOPV.d.cts +0 -104
- package/dist/Construct-WhCXIOPV.d.cts.map +0 -1
- package/dist/Construct-roId57cU.cjs.map +0 -1
- package/dist/Endpoint-BBkV6l0k.cjs.map +0 -1
- package/dist/Endpoint-BKR5QH6O.d.mts.map +0 -1
- package/dist/Endpoint-BQ9O0P1w.d.cts.map +0 -1
- package/dist/Endpoint-BTj58Gob.mjs.map +0 -1
- package/dist/EndpointFactory-BejSTzbB.mjs.map +0 -1
- package/dist/EndpointFactory-DYoGLaIT.cjs.map +0 -1
- package/dist/HonoEndpointAdaptor-7aYNdqJq.mjs.map +0 -1
- package/dist/HonoEndpointAdaptor-wMsCyMgt.cjs.map +0 -1
- package/dist/Queue-D6WeziRD.d.cts.map +0 -1
- package/dist/Queue-DpUeqdC8.d.mts.map +0 -1
- package/dist/Subscriber-4rBJgDKI.d.mts.map +0 -1
- package/dist/Subscriber-DVQowdyj.d.cts.map +0 -1
- package/dist/Topic-Ohx9dvWr.d.cts +0 -91
- package/dist/Topic-Ohx9dvWr.d.cts.map +0 -1
- package/dist/Topic-cmy2jOUy.d.mts +0 -91
- package/dist/Topic-cmy2jOUy.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-CdQ7OLpR.d.cts.map +0 -1
- package/dist/cache-DYoJFcfd.d.mts.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-BqwRNYA2.d.mts.map +0 -1
- package/dist/construct-interface-D2nNkHUN.d.cts.map +0 -1
- package/dist/construct-interface-Z4CpS8tK.mjs +0 -81
- package/dist/construct-interface-Z4CpS8tK.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-Cpff1uZH.mjs.map +0 -1
- package/dist/functions-DukjG8ov.cjs.map +0 -1
- package/dist/index-BTvozlUD.d.cts +0 -163
- package/dist/index-BTvozlUD.d.cts.map +0 -1
- package/dist/index-Cvz551AO.d.mts.map +0 -1
- package/dist/index-D5zqAJ2e.d.cts.map +0 -1
- package/dist/index-L7pz0R0T.d.mts +0 -162
- package/dist/index-L7pz0R0T.d.mts.map +0 -1
- package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
- package/dist/lazyAccessors-DrJj8NpA.cjs.map +0 -1
- package/dist/processAudits-Bc8rz6Ev.cjs +0 -92
- package/dist/processAudits-Bc8rz6Ev.cjs.map +0 -1
- package/dist/processAudits-D89tICM4.mjs +0 -80
- package/dist/processAudits-D89tICM4.mjs.map +0 -1
- package/dist/publisher-CGEo8UKD.mjs +0 -41
- package/dist/publisher-CGEo8UKD.mjs.map +0 -1
- package/dist/publisher-CqGsXB2X.cjs +0 -53
- package/dist/publisher-CqGsXB2X.cjs.map +0 -1
- package/dist/queue/index.cjs.map +0 -1
- package/dist/queue/index.d.cts.map +0 -1
- package/dist/queue/index.d.mts.map +0 -1
- package/dist/queue/index.mjs.map +0 -1
- package/dist/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,22 +1,246 @@
|
|
|
1
|
-
import { __toESM } from "../Construct-
|
|
2
|
-
import "../
|
|
3
|
-
import "../functions-
|
|
4
|
-
import "../
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { createApiGatewayCookies } from "../lazyAccessors-DM6HcXQk.mjs";
|
|
1
|
+
import { o as __toESM } from "../Construct-B1vGBPme.mjs";
|
|
2
|
+
import { n as recordCarrier } from "../tracing-CxaZ98IB.mjs";
|
|
3
|
+
import { a as publishEvents, i as publishConstructEvents, t as FunctionBuilder } from "../functions-BFizikJU.mjs";
|
|
4
|
+
import { i as require_lodash_set, n as ResponseBuilder, t as Endpoint } from "../Endpoint-BG4UJ9oA.mjs";
|
|
5
|
+
import { n as envParserFor } from "../surfaceEnv-wMT5QzgZ.mjs";
|
|
6
|
+
import { t as createApiGatewayCookies } from "../lazyAccessors-CFanua0O.mjs";
|
|
7
|
+
import { n as subscribedEvents, r as subscriberContext, t as runSubscriber } from "../runSubscriber-BHvJ8POr.mjs";
|
|
8
|
+
import { n as executeWithAuditTransaction, t as createAuditContext } from "../processAudits-BRRVVHUB.mjs";
|
|
9
|
+
import { consumeBatchTraced } from "@geekmidas/events";
|
|
11
10
|
import { ForbiddenError, UnprocessableEntityError, wrapError } from "@geekmidas/errors";
|
|
12
11
|
import { ServiceDiscovery, runWithRequestContext } from "@geekmidas/services";
|
|
12
|
+
import qs from "qs";
|
|
13
13
|
import middy from "@middy/core";
|
|
14
|
+
import { DefaultAuditor } from "@geekmidas/audit";
|
|
15
|
+
import { withAuditableTransaction } from "@geekmidas/audit/kysely";
|
|
14
16
|
import { withRlsContext } from "@geekmidas/db/rls";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
//#region src/functions/FunctionExecutionWrapper.ts
|
|
18
|
+
var FunctionExecutionWrapper = class {
|
|
19
|
+
envParser;
|
|
20
|
+
fn;
|
|
21
|
+
constructor(envParser, fn) {
|
|
22
|
+
this.envParser = envParser;
|
|
23
|
+
this.fn = fn;
|
|
24
|
+
}
|
|
25
|
+
_logger;
|
|
26
|
+
get logger() {
|
|
27
|
+
return this._logger || this.fn.logger;
|
|
28
|
+
}
|
|
29
|
+
get serviceDiscovery() {
|
|
30
|
+
return ServiceDiscovery.getInstance(this.envParser);
|
|
31
|
+
}
|
|
32
|
+
getServices() {
|
|
33
|
+
return this.serviceDiscovery.register(this.fn.services);
|
|
34
|
+
}
|
|
35
|
+
async getDatabase() {
|
|
36
|
+
if (!this.fn.databaseService) return;
|
|
37
|
+
return (await this.serviceDiscovery.register([this.fn.databaseService]))[this.fn.databaseService.serviceName];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get the audit storage service if configured.
|
|
41
|
+
* Returns undefined if no auditor storage is configured.
|
|
42
|
+
*/
|
|
43
|
+
async getAuditStorage() {
|
|
44
|
+
if (!this.fn.auditorStorageService) return;
|
|
45
|
+
return (await this.serviceDiscovery.register([this.fn.auditorStorageService]))[this.fn.auditorStorageService.serviceName];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create an auditor instance for the function.
|
|
49
|
+
* Returns undefined if no auditor storage is configured.
|
|
50
|
+
*/
|
|
51
|
+
async createAuditor() {
|
|
52
|
+
const storage = await this.getAuditStorage();
|
|
53
|
+
if (!storage) return;
|
|
54
|
+
return new DefaultAuditor({
|
|
55
|
+
actor: {
|
|
56
|
+
id: "system",
|
|
57
|
+
type: "system"
|
|
58
|
+
},
|
|
59
|
+
storage,
|
|
60
|
+
metadata: { function: this.fn.type }
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Execute handler with audit transaction support.
|
|
65
|
+
* If the audit storage has a database (via getDatabase()), wraps execution
|
|
66
|
+
* in a transaction so audits are atomic with handler's database operations.
|
|
67
|
+
*
|
|
68
|
+
* @param handler - The handler function to execute (receives auditor and db)
|
|
69
|
+
* @returns The handler result
|
|
70
|
+
*/
|
|
71
|
+
async executeWithAudit(handler) {
|
|
72
|
+
const auditor = await this.createAuditor();
|
|
73
|
+
const storage = await this.getAuditStorage();
|
|
74
|
+
if (!auditor || !storage) return handler({ db: await this.getDatabase() });
|
|
75
|
+
const storageDb = storage.getDatabase?.();
|
|
76
|
+
const databaseServiceName = this.fn.databaseService?.serviceName;
|
|
77
|
+
const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
|
|
78
|
+
if (storageDb && databaseServiceName && auditDbServiceName) return withAuditableTransaction(storageDb, auditor, async (trx) => {
|
|
79
|
+
return await handler({
|
|
80
|
+
auditor,
|
|
81
|
+
db: trx
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
const response = await handler({
|
|
85
|
+
auditor,
|
|
86
|
+
db: await this.getDatabase()
|
|
87
|
+
});
|
|
88
|
+
await auditor.flush();
|
|
89
|
+
return response;
|
|
90
|
+
}
|
|
91
|
+
async getFunctionInput(event) {
|
|
92
|
+
return await FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
|
|
93
|
+
}
|
|
94
|
+
async publishEvents(response) {
|
|
95
|
+
await publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response);
|
|
96
|
+
}
|
|
97
|
+
async parseComposableStandardSchema(data, schema) {
|
|
98
|
+
return FunctionBuilder.parseComposableStandardSchema(data, schema);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/functions/AWSLambdaFunction.ts
|
|
103
|
+
var AWSLambdaFunction = class extends FunctionExecutionWrapper {
|
|
104
|
+
fn;
|
|
105
|
+
constructor(envParser, fn) {
|
|
106
|
+
super(envParser, fn);
|
|
107
|
+
this.fn = fn;
|
|
108
|
+
}
|
|
109
|
+
error() {
|
|
110
|
+
return { onError: (req) => {
|
|
111
|
+
(req.event?.logger || this.fn.logger).error(req.error || {}, "Error processing function");
|
|
112
|
+
throw wrapError(req.error);
|
|
113
|
+
} };
|
|
114
|
+
}
|
|
115
|
+
baseInput() {
|
|
116
|
+
return { before: (_req) => {} };
|
|
117
|
+
}
|
|
118
|
+
input() {
|
|
119
|
+
return { before: async (req) => {
|
|
120
|
+
try {
|
|
121
|
+
if (this.fn.input) {
|
|
122
|
+
const parsedInput = await FunctionBuilder.parseComposableStandardSchema(req.event, this.fn.input);
|
|
123
|
+
req.event.parsedInput = parsedInput;
|
|
124
|
+
} else req.event.parsedInput = req.event;
|
|
125
|
+
} catch (error) {
|
|
126
|
+
this.logger.error({
|
|
127
|
+
err: error,
|
|
128
|
+
event: req.event
|
|
129
|
+
}, "Failed to parse input");
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
} };
|
|
133
|
+
}
|
|
134
|
+
loggerMiddleware() {
|
|
135
|
+
return { before: (req) => {
|
|
136
|
+
this._logger = this.fn.logger.child({
|
|
137
|
+
fn: {
|
|
138
|
+
name: req.context.functionName,
|
|
139
|
+
version: req.context.functionVersion,
|
|
140
|
+
memory: req.context.memoryLimitInMB
|
|
141
|
+
},
|
|
142
|
+
req: { id: req.context.awsRequestId }
|
|
143
|
+
});
|
|
144
|
+
req.event.logger = this._logger;
|
|
145
|
+
} };
|
|
146
|
+
}
|
|
147
|
+
services() {
|
|
148
|
+
return { before: async (req) => {
|
|
149
|
+
req.event.services = await this.getServices();
|
|
150
|
+
} };
|
|
151
|
+
}
|
|
152
|
+
database() {
|
|
153
|
+
return { before: async (req) => {
|
|
154
|
+
req.event.db = await this.getDatabase();
|
|
155
|
+
} };
|
|
156
|
+
}
|
|
157
|
+
auditor() {
|
|
158
|
+
return {
|
|
159
|
+
before: async (req) => {
|
|
160
|
+
req.event.auditor = await this.createAuditor();
|
|
161
|
+
},
|
|
162
|
+
after: async (req) => {
|
|
163
|
+
if (req.event.auditor) {
|
|
164
|
+
const records = req.event.auditor.getRecords();
|
|
165
|
+
if (records.length > 0) {
|
|
166
|
+
this.logger.debug({ auditCount: records.length }, "Flushing function audits");
|
|
167
|
+
await req.event.auditor.flush();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
events() {
|
|
174
|
+
return { after: async (req) => {
|
|
175
|
+
const response = req.response || void 0;
|
|
176
|
+
await this.publishEvents(response);
|
|
177
|
+
} };
|
|
178
|
+
}
|
|
179
|
+
async _handler(event) {
|
|
180
|
+
const result = await this.fn.fn({
|
|
181
|
+
input: event.parsedInput,
|
|
182
|
+
services: event.services,
|
|
183
|
+
logger: event.logger,
|
|
184
|
+
db: event.db,
|
|
185
|
+
auditor: event.auditor
|
|
186
|
+
});
|
|
187
|
+
return await this.fn.parseOutput(result);
|
|
188
|
+
}
|
|
189
|
+
get handler() {
|
|
190
|
+
const handler = this._handler.bind(this);
|
|
191
|
+
const chain = middy(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());
|
|
192
|
+
const wrappedHandler = async (event, context) => {
|
|
193
|
+
const startTime = Date.now();
|
|
194
|
+
const requestId = context.awsRequestId;
|
|
195
|
+
const logger = this.fn.logger.child({ requestId });
|
|
196
|
+
return runWithRequestContext({
|
|
197
|
+
logger,
|
|
198
|
+
requestId,
|
|
199
|
+
startTime,
|
|
200
|
+
operation: context.functionName
|
|
201
|
+
}, () => chain(event, context));
|
|
202
|
+
};
|
|
203
|
+
return wrappedHandler;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
//#endregion
|
|
207
|
+
//#region src/crons/AWSScheduledFunction.ts
|
|
208
|
+
/**
|
|
209
|
+
* AWS Lambda adaptor for {@link Cron} constructs.
|
|
210
|
+
*
|
|
211
|
+
* A `Cron` is a {@link import('../functions').Function} that is invoked on a
|
|
212
|
+
* schedule (an EventBridge rule) rather than by an API request. Because of
|
|
213
|
+
* that, the runtime execution pipeline is identical to a regular Lambda
|
|
214
|
+
* function: input parsing, service/database/auditor wiring, event publishing,
|
|
215
|
+
* error handling, and the `runWithRequestContext` wrapper that powers
|
|
216
|
+
* request-scoped logging via `serviceContext.getLogger()`.
|
|
217
|
+
*
|
|
218
|
+
* This adaptor therefore reuses {@link AWSLambdaFunction} wholesale and only
|
|
219
|
+
* narrows the constructor to accept a `Cron`. The schedule expression itself
|
|
220
|
+
* (`cron.schedule`) is **deploy-time** infrastructure consumed by the CLI to
|
|
221
|
+
* provision the EventBridge rule — it is not needed at runtime.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* import { AWSScheduledFunction } from '@geekmidas/constructs/crons';
|
|
226
|
+
* import { cancelPastBookings } from '../../../src/crons/cancelPastBookings.js';
|
|
227
|
+
* import { envParser } from '../../../src/env';
|
|
228
|
+
*
|
|
229
|
+
* const adapter = new AWSScheduledFunction(envParser, cancelPastBookings);
|
|
230
|
+
*
|
|
231
|
+
* export const handler = adapter.handler;
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
var AWSScheduledFunction = class extends AWSLambdaFunction {
|
|
235
|
+
constructor(envParser, cron) {
|
|
236
|
+
super(envParser, cron);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
//#endregion
|
|
17
240
|
//#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
|
|
18
|
-
var
|
|
241
|
+
var import_lodash_set = /* @__PURE__ */ __toESM(require_lodash_set(), 1);
|
|
19
242
|
var AmazonApiGatewayEndpoint = class {
|
|
243
|
+
endpoint;
|
|
20
244
|
options;
|
|
21
245
|
/**
|
|
22
246
|
* The parser this adaptor discovers services with.
|
|
@@ -54,8 +278,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
54
278
|
static decodeBody(body, isBase64Encoded, contentType) {
|
|
55
279
|
if (!body) return void 0;
|
|
56
280
|
const raw = isBase64Encoded ? Buffer.from(body, "base64").toString("utf-8") : body;
|
|
57
|
-
|
|
58
|
-
if (isJson) return JSON.parse(raw);
|
|
281
|
+
if (!contentType || contentType.toLowerCase().includes("application/json")) return JSON.parse(raw);
|
|
59
282
|
return raw;
|
|
60
283
|
}
|
|
61
284
|
getCookies(e) {
|
|
@@ -69,11 +292,11 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
69
292
|
const headers = req.event.headers;
|
|
70
293
|
const header = Endpoint.createHeaders(headers);
|
|
71
294
|
const cookie = this.getCookies(req.event);
|
|
72
|
-
(0,
|
|
73
|
-
(0,
|
|
74
|
-
(0,
|
|
75
|
-
(0,
|
|
76
|
-
(0,
|
|
295
|
+
(0, import_lodash_set.default)(req.event, "body", await this.endpoint.parseInput(body, "body"));
|
|
296
|
+
(0, import_lodash_set.default)(req.event, "query", await this.endpoint.parseInput(query, "query"));
|
|
297
|
+
(0, import_lodash_set.default)(req.event, "params", await this.endpoint.parseInput(params, "params"));
|
|
298
|
+
(0, import_lodash_set.default)(req.event, "header", header);
|
|
299
|
+
(0, import_lodash_set.default)(req.event, "cookie", cookie);
|
|
77
300
|
} catch (error) {
|
|
78
301
|
if (error && typeof error === "object" && Array.isArray(error)) throw new UnprocessableEntityError("Validation failed", error);
|
|
79
302
|
throw error;
|
|
@@ -92,9 +315,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
92
315
|
}
|
|
93
316
|
services() {
|
|
94
317
|
return { before: async (req) => {
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
const services = await serviceDiscovery.register(this.endpoint.services);
|
|
318
|
+
req.event.logger;
|
|
319
|
+
const services = await ServiceDiscovery.getInstance(this.envParser).register(this.endpoint.services);
|
|
98
320
|
req.event.services = services;
|
|
99
321
|
} };
|
|
100
322
|
}
|
|
@@ -105,7 +327,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
105
327
|
const header = req.event.header;
|
|
106
328
|
const cookie = req.event.cookie;
|
|
107
329
|
const session = req.event.session;
|
|
108
|
-
|
|
330
|
+
if (!await this.endpoint.authorize({
|
|
109
331
|
header,
|
|
110
332
|
cookie,
|
|
111
333
|
services,
|
|
@@ -115,8 +337,7 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
115
337
|
body: req.event.body,
|
|
116
338
|
query: req.event.query,
|
|
117
339
|
params: req.event.params
|
|
118
|
-
})
|
|
119
|
-
if (!isAuthorized) {
|
|
340
|
+
})) {
|
|
120
341
|
logger.warn("Forbidden access attempt");
|
|
121
342
|
throw new ForbiddenError("Forbidden access to the endpoint", "You do not have permission to access this resource.");
|
|
122
343
|
}
|
|
@@ -125,9 +346,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
125
346
|
database() {
|
|
126
347
|
return { before: async (req) => {
|
|
127
348
|
if (!this.endpoint.databaseService) return;
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
const db = await serviceDiscovery.register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
349
|
+
req.event.logger;
|
|
350
|
+
const db = await ServiceDiscovery.getInstance(this.envParser).register([this.endpoint.databaseService]).then((s) => s[this.endpoint.databaseService?.serviceName]);
|
|
131
351
|
req.event.db = db;
|
|
132
352
|
} };
|
|
133
353
|
}
|
|
@@ -178,9 +398,8 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
178
398
|
cookie: event.cookie,
|
|
179
399
|
logger
|
|
180
400
|
}) : void 0;
|
|
181
|
-
const
|
|
182
|
-
const
|
|
183
|
-
const baseDb = sameDatabase ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
401
|
+
const { output, metadata } = await executeWithAuditTransaction(auditContext, async (auditor) => {
|
|
402
|
+
const baseDb = auditContext?.storage?.databaseServiceName && auditContext.storage.databaseServiceName === this.endpoint.databaseService?.serviceName ? auditor?.getTransaction?.() ?? rawDb : rawDb;
|
|
184
403
|
const executeHandler = async (db) => {
|
|
185
404
|
const responseBuilder = new ResponseBuilder();
|
|
186
405
|
const response = await this.endpoint.handler({
|
|
@@ -194,33 +413,31 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
194
413
|
...input
|
|
195
414
|
}, responseBuilder);
|
|
196
415
|
let data = response;
|
|
197
|
-
let metadata
|
|
416
|
+
let metadata = responseBuilder.getMetadata();
|
|
198
417
|
if (Endpoint.hasMetadata(response)) {
|
|
199
418
|
data = response.data;
|
|
200
|
-
metadata
|
|
419
|
+
metadata = response.metadata;
|
|
201
420
|
}
|
|
202
|
-
const output$1 = this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0;
|
|
203
421
|
return {
|
|
204
|
-
output:
|
|
205
|
-
metadata
|
|
422
|
+
output: this.endpoint.outputSchema ? await this.endpoint.parseOutput(data) : void 0,
|
|
423
|
+
metadata,
|
|
206
424
|
responseBuilder
|
|
207
425
|
};
|
|
208
426
|
};
|
|
209
427
|
if (rlsActive && rlsContext && baseDb) return withRlsContext(baseDb, rlsContext, async (trx) => executeHandler(trx), { prefix: this.endpoint.rlsConfig?.prefix });
|
|
210
428
|
return executeHandler(baseDb);
|
|
211
|
-
}, async (result
|
|
429
|
+
}, async (result, auditor) => {
|
|
212
430
|
if (!audits?.length) return;
|
|
213
431
|
for (const audit of audits) {
|
|
214
|
-
if (audit.when && !audit.when(result
|
|
215
|
-
const payload = audit.payload(result
|
|
216
|
-
const entityId = audit.entityId?.(result
|
|
432
|
+
if (audit.when && !audit.when(result.output)) continue;
|
|
433
|
+
const payload = audit.payload(result.output);
|
|
434
|
+
const entityId = audit.entityId?.(result.output);
|
|
217
435
|
auditor.audit(audit.type, payload, {
|
|
218
436
|
table: audit.table,
|
|
219
437
|
entityId
|
|
220
438
|
});
|
|
221
439
|
}
|
|
222
440
|
}, { db: rawDb });
|
|
223
|
-
const { output, metadata } = result;
|
|
224
441
|
const isJsonResponse = this.endpoint.responseType === "application/json";
|
|
225
442
|
const body = output === void 0 ? void 0 : isJsonResponse ? JSON.stringify(output) : typeof output === "string" ? output : String(output);
|
|
226
443
|
event.__response = output;
|
|
@@ -279,16 +496,17 @@ var AmazonApiGatewayEndpoint = class {
|
|
|
279
496
|
const startTime = Date.now();
|
|
280
497
|
const requestId = context.awsRequestId;
|
|
281
498
|
const logger = this.endpoint.logger.child({ requestId });
|
|
499
|
+
const operation = `${this.endpoint.method} ${this.endpoint.route}`;
|
|
282
500
|
return runWithRequestContext({
|
|
283
501
|
logger,
|
|
284
502
|
requestId,
|
|
285
|
-
startTime
|
|
503
|
+
startTime,
|
|
504
|
+
operation
|
|
286
505
|
}, () => chain(event, context));
|
|
287
506
|
};
|
|
288
507
|
return wrappedHandler;
|
|
289
508
|
}
|
|
290
509
|
};
|
|
291
|
-
|
|
292
510
|
//#endregion
|
|
293
511
|
//#region src/endpoints/parseQueryParams.ts
|
|
294
512
|
/**
|
|
@@ -309,10 +527,10 @@ function parseQueryParams(queryParams) {
|
|
|
309
527
|
}
|
|
310
528
|
return qs.parse(parts.join("&"));
|
|
311
529
|
}
|
|
312
|
-
|
|
313
530
|
//#endregion
|
|
314
531
|
//#region src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts
|
|
315
532
|
var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
533
|
+
endpoint;
|
|
316
534
|
getInput(e) {
|
|
317
535
|
const multiValueParams = e.multiValueQueryStringParameters || {};
|
|
318
536
|
const singleValueParams = e.queryStringParameters || {};
|
|
@@ -345,17 +563,16 @@ var AmazonApiGatewayV1Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
345
563
|
this.endpoint = endpoint;
|
|
346
564
|
}
|
|
347
565
|
};
|
|
348
|
-
|
|
349
566
|
//#endregion
|
|
350
567
|
//#region src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts
|
|
351
568
|
var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
569
|
+
endpoint;
|
|
352
570
|
getCookies(e) {
|
|
353
571
|
return createApiGatewayCookies(e.cookies, e.headers?.cookie);
|
|
354
572
|
}
|
|
355
573
|
getInput(e) {
|
|
356
|
-
const raw = AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]);
|
|
357
574
|
return {
|
|
358
|
-
body:
|
|
575
|
+
body: AmazonApiGatewayEndpoint.decodeBody(e.body, e.isBase64Encoded, e.headers?.["content-type"]),
|
|
359
576
|
query: qs.parse(e.rawQueryString),
|
|
360
577
|
params: e.pathParameters || {}
|
|
361
578
|
};
|
|
@@ -380,7 +597,6 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
380
597
|
this.endpoint = endpoint;
|
|
381
598
|
}
|
|
382
599
|
};
|
|
383
|
-
|
|
384
600
|
//#endregion
|
|
385
601
|
//#region src/queue/AWSLambdaQueueAdaptor.ts
|
|
386
602
|
/**
|
|
@@ -395,6 +611,8 @@ var AmazonApiGatewayV2Endpoint = class extends AmazonApiGatewayEndpoint {
|
|
|
395
611
|
* retries only those records.
|
|
396
612
|
*/
|
|
397
613
|
var AWSLambdaQueue = class {
|
|
614
|
+
envParser;
|
|
615
|
+
queue;
|
|
398
616
|
_services;
|
|
399
617
|
constructor(envParser, queue) {
|
|
400
618
|
this.envParser = envParser;
|
|
@@ -409,6 +627,12 @@ var AWSLambdaQueue = class {
|
|
|
409
627
|
this._services = this.queue.services.length > 0 ? await serviceDiscovery.register(this.queue.services) : {};
|
|
410
628
|
return this._services;
|
|
411
629
|
}
|
|
630
|
+
/** The queue's database, registered as functions register theirs. */
|
|
631
|
+
async getDatabase() {
|
|
632
|
+
const service = this.queue.databaseService;
|
|
633
|
+
if (!service) return void 0;
|
|
634
|
+
return (await ServiceDiscovery.getInstance(this.envParser).register([service]))[service.serviceName];
|
|
635
|
+
}
|
|
412
636
|
safeJsonParse(value) {
|
|
413
637
|
try {
|
|
414
638
|
return JSON.parse(value);
|
|
@@ -434,6 +658,7 @@ var AWSLambdaQueue = class {
|
|
|
434
658
|
req: { id: context.awsRequestId }
|
|
435
659
|
});
|
|
436
660
|
const services = await this.getServices();
|
|
661
|
+
const db = await this.getDatabase();
|
|
437
662
|
const schema = this.queue.messageSchema;
|
|
438
663
|
const batchItemFailures = [];
|
|
439
664
|
const messages = [];
|
|
@@ -451,7 +676,7 @@ var AWSLambdaQueue = class {
|
|
|
451
676
|
messages.push(validation.value);
|
|
452
677
|
} catch (error) {
|
|
453
678
|
logger.error({
|
|
454
|
-
error,
|
|
679
|
+
err: error,
|
|
455
680
|
messageId: record.messageId
|
|
456
681
|
}, "Failed to parse SQS record");
|
|
457
682
|
batchItemFailures.push({ itemIdentifier: record.messageId });
|
|
@@ -461,7 +686,8 @@ var AWSLambdaQueue = class {
|
|
|
461
686
|
await this.queue.handler({
|
|
462
687
|
messages,
|
|
463
688
|
services,
|
|
464
|
-
logger
|
|
689
|
+
logger,
|
|
690
|
+
db
|
|
465
691
|
});
|
|
466
692
|
} catch (error) {
|
|
467
693
|
logger.error(wrapError(error), "Queue handler failed; retrying batch");
|
|
@@ -471,24 +697,28 @@ var AWSLambdaQueue = class {
|
|
|
471
697
|
}
|
|
472
698
|
get handler() {
|
|
473
699
|
const handler = this._handler.bind(this);
|
|
474
|
-
return async (event, context) => {
|
|
700
|
+
return (async (event, context) => {
|
|
475
701
|
const startTime = Date.now();
|
|
476
702
|
const requestId = context.awsRequestId;
|
|
477
703
|
const logger = this.queue.logger.child({ requestId });
|
|
478
704
|
return runWithRequestContext({
|
|
479
705
|
logger,
|
|
480
706
|
requestId,
|
|
481
|
-
startTime
|
|
482
|
-
|
|
483
|
-
|
|
707
|
+
startTime,
|
|
708
|
+
operation: `queue ${this.queue.name}`
|
|
709
|
+
}, () => consumeBatchTraced({
|
|
710
|
+
system: "aws_sqs",
|
|
711
|
+
destination: this.queue.name
|
|
712
|
+
}, event.Records.map(recordCarrier), () => handler(event, context)));
|
|
713
|
+
});
|
|
484
714
|
}
|
|
485
715
|
};
|
|
486
|
-
|
|
487
716
|
//#endregion
|
|
488
717
|
//#region src/subscribers/AWSLambdaSubscriberAdaptor.ts
|
|
489
718
|
var AWSLambdaSubscriber = class {
|
|
719
|
+
envParser;
|
|
720
|
+
subscriber;
|
|
490
721
|
_logger;
|
|
491
|
-
_services;
|
|
492
722
|
constructor(envParser, subscriber) {
|
|
493
723
|
this.envParser = envParser;
|
|
494
724
|
this.subscriber = subscriber;
|
|
@@ -497,19 +727,9 @@ var AWSLambdaSubscriber = class {
|
|
|
497
727
|
get logger() {
|
|
498
728
|
return this._logger;
|
|
499
729
|
}
|
|
500
|
-
async getServices() {
|
|
501
|
-
if (this._services) return this._services;
|
|
502
|
-
const serviceDiscovery = ServiceDiscovery.getInstance(this.envParser);
|
|
503
|
-
if (this.subscriber.services.length > 0) {
|
|
504
|
-
const registered = await serviceDiscovery.register(this.subscriber.services);
|
|
505
|
-
this._services = registered;
|
|
506
|
-
} else this._services = {};
|
|
507
|
-
return this._services;
|
|
508
|
-
}
|
|
509
730
|
error() {
|
|
510
731
|
return { onError: (req) => {
|
|
511
|
-
|
|
512
|
-
logger.error(req.error || {}, "Error processing subscriber");
|
|
732
|
+
(req.event?.logger || this.subscriber.logger).error(req.error || {}, "Error processing subscriber");
|
|
513
733
|
throw wrapError(req.error);
|
|
514
734
|
} };
|
|
515
735
|
}
|
|
@@ -528,110 +748,26 @@ var AWSLambdaSubscriber = class {
|
|
|
528
748
|
}
|
|
529
749
|
services() {
|
|
530
750
|
return { before: async (req) => {
|
|
531
|
-
|
|
751
|
+
const { services, db } = await subscriberContext(this.subscriber, this.envParser);
|
|
752
|
+
req.event.services = services;
|
|
753
|
+
req.event.db = db;
|
|
532
754
|
} };
|
|
533
755
|
}
|
|
534
756
|
parseEvents() {
|
|
535
757
|
return { before: async (req) => {
|
|
536
|
-
const { logger
|
|
537
|
-
const rawEvent = e;
|
|
758
|
+
const { logger, ...rawEvent } = req.event;
|
|
538
759
|
logger.info({ rawEvent });
|
|
539
|
-
|
|
540
|
-
if ("Records" in rawEvent) {
|
|
541
|
-
if (this.isSQSEvent(rawEvent)) for (const record of rawEvent.Records) try {
|
|
542
|
-
const event = this.parseSQSRecord(record);
|
|
543
|
-
if (this.shouldIncludeEvent(event)) events.push(event);
|
|
544
|
-
} catch (error) {
|
|
545
|
-
this.logger.error({
|
|
546
|
-
error,
|
|
547
|
-
record
|
|
548
|
-
}, "Failed to parse SQS record");
|
|
549
|
-
}
|
|
550
|
-
else if (this.isSNSEvent(rawEvent)) for (const record of rawEvent.Records) try {
|
|
551
|
-
const event = this.parseSNSRecord(record);
|
|
552
|
-
if (this.shouldIncludeEvent(event)) events.push(event);
|
|
553
|
-
} catch (error) {
|
|
554
|
-
this.logger.error({
|
|
555
|
-
error,
|
|
556
|
-
record
|
|
557
|
-
}, "Failed to parse SNS record");
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
req.event.events = events;
|
|
760
|
+
req.event.events = subscribedEvents(this.subscriber, rawEvent, this.logger);
|
|
561
761
|
} };
|
|
562
762
|
}
|
|
563
|
-
isSQSEvent(event) {
|
|
564
|
-
const firstRecord = event.Records[0];
|
|
565
|
-
return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "eventSource" in firstRecord && firstRecord.eventSource === "aws:sqs";
|
|
566
|
-
}
|
|
567
|
-
isSNSEvent(event) {
|
|
568
|
-
const firstRecord = event.Records[0];
|
|
569
|
-
return "Records" in event && event.Records.length > 0 && firstRecord !== void 0 && "EventSource" in firstRecord && firstRecord.EventSource === "aws:sns";
|
|
570
|
-
}
|
|
571
|
-
parseSNSRecord(record) {
|
|
572
|
-
const message = this.safeJsonParse(record.Sns.Message);
|
|
573
|
-
const messageType = record.Sns.MessageAttributes?.type?.Value;
|
|
574
|
-
if (message === null) return messageType ? {
|
|
575
|
-
type: messageType,
|
|
576
|
-
payload: record.Sns.Message
|
|
577
|
-
} : record.Sns.Message;
|
|
578
|
-
const resolvedType = messageType ?? message.type;
|
|
579
|
-
if (message.type) return message;
|
|
580
|
-
return resolvedType ? {
|
|
581
|
-
type: resolvedType,
|
|
582
|
-
payload: message
|
|
583
|
-
} : message;
|
|
584
|
-
}
|
|
585
|
-
parseSQSRecord(record) {
|
|
586
|
-
const body = this.safeJsonParse(record.body);
|
|
587
|
-
if (body === null) return record.body;
|
|
588
|
-
if (body.Type === "Notification" && body.Message) {
|
|
589
|
-
const snsMessage = this.safeJsonParse(body.Message);
|
|
590
|
-
const messageType = body.MessageAttributes?.type?.Value;
|
|
591
|
-
if (snsMessage === null) return messageType ? {
|
|
592
|
-
type: messageType,
|
|
593
|
-
payload: body.Message
|
|
594
|
-
} : body.Message;
|
|
595
|
-
if (snsMessage.type) return snsMessage;
|
|
596
|
-
const resolvedType = messageType ?? snsMessage.type;
|
|
597
|
-
return resolvedType ? {
|
|
598
|
-
type: resolvedType,
|
|
599
|
-
payload: snsMessage
|
|
600
|
-
} : snsMessage;
|
|
601
|
-
}
|
|
602
|
-
return body;
|
|
603
|
-
}
|
|
604
|
-
safeJsonParse(value) {
|
|
605
|
-
try {
|
|
606
|
-
return JSON.parse(value);
|
|
607
|
-
} catch {
|
|
608
|
-
return null;
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
shouldIncludeEvent(event) {
|
|
612
|
-
if (typeof event !== "object" || !event?.type) return true;
|
|
613
|
-
if (!this.subscriber.subscribedEvents) return true;
|
|
614
|
-
return this.subscriber.subscribedEvents.includes(event.type);
|
|
615
|
-
}
|
|
616
763
|
async _handler(event) {
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
services: event.services,
|
|
624
|
-
logger: event.logger
|
|
764
|
+
const { events, services, logger, db } = event;
|
|
765
|
+
return runSubscriber(this.subscriber, {
|
|
766
|
+
events,
|
|
767
|
+
services,
|
|
768
|
+
logger,
|
|
769
|
+
db
|
|
625
770
|
});
|
|
626
|
-
if (this.subscriber.outputSchema && result) {
|
|
627
|
-
const validationResult = await this.subscriber.outputSchema["~standard"].validate(result);
|
|
628
|
-
if (validationResult.issues) {
|
|
629
|
-
this.logger.error({ issues: validationResult.issues }, "Subscriber output validation failed");
|
|
630
|
-
throw new Error("Subscriber output validation failed");
|
|
631
|
-
}
|
|
632
|
-
return validationResult.value;
|
|
633
|
-
}
|
|
634
|
-
return result;
|
|
635
771
|
}
|
|
636
772
|
get handler() {
|
|
637
773
|
const handler = this._handler.bind(this);
|
|
@@ -640,16 +776,22 @@ var AWSLambdaSubscriber = class {
|
|
|
640
776
|
const startTime = Date.now();
|
|
641
777
|
const requestId = context.awsRequestId;
|
|
642
778
|
const logger = this.subscriber.logger.child({ requestId });
|
|
779
|
+
const operation = `subscriber ${this.subscriber.topicName ?? context.functionName}`;
|
|
780
|
+
const records = event?.Records ?? [];
|
|
643
781
|
return runWithRequestContext({
|
|
644
782
|
logger,
|
|
645
783
|
requestId,
|
|
646
|
-
startTime
|
|
647
|
-
|
|
784
|
+
startTime,
|
|
785
|
+
operation
|
|
786
|
+
}, () => consumeBatchTraced({
|
|
787
|
+
system: records[0]?.Sns ? "aws_sns" : "aws_sqs",
|
|
788
|
+
destination: this.subscriber.topicName ?? context.functionName
|
|
789
|
+
}, records.map(recordCarrier), () => chain(event, context)));
|
|
648
790
|
};
|
|
649
791
|
return wrappedHandler;
|
|
650
792
|
}
|
|
651
793
|
};
|
|
652
|
-
|
|
653
794
|
//#endregion
|
|
654
795
|
export { AWSLambdaFunction, AWSLambdaQueue, AWSLambdaSubscriber, AWSScheduledFunction, AmazonApiGatewayV1Endpoint, AmazonApiGatewayV2Endpoint };
|
|
796
|
+
|
|
655
797
|
//# sourceMappingURL=aws.mjs.map
|