@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
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
2
|
+
import { Credentials } from "@geekmidas/envkit/credentials";
|
|
3
|
+
//#region src/endpoints/surfaceEnv.ts
|
|
4
|
+
/**
|
|
5
|
+
* The environment parser an endpoint runs with.
|
|
6
|
+
*
|
|
7
|
+
* Three facts, in order:
|
|
8
|
+
*
|
|
9
|
+
* 1. An endpoint built from a surface carries whatever parser that surface was
|
|
10
|
+
* given. This is the whole point of `api.get()` — the handler already has
|
|
11
|
+
* the thing, so nothing has to be named in config and nothing has to be
|
|
12
|
+
* printed into generated code.
|
|
13
|
+
* 2. A surface that named none gets this default, which is what every
|
|
14
|
+
* application's own `config/env.ts` was: `process.env` merged with the
|
|
15
|
+
* credentials `gkm dev`/`gkm exec` injected. It was boilerplate identical in
|
|
16
|
+
* every project, and mandatory, which is a poor combination.
|
|
17
|
+
* 3. An endpoint with no surface at all — a test, an MSW handler — gets the
|
|
18
|
+
* same default. Nothing has to opt in.
|
|
19
|
+
*
|
|
20
|
+
* Named a parser only when it is genuinely different: a merged secret source, a
|
|
21
|
+
* fixture, a parser that reads from somewhere other than the process.
|
|
22
|
+
*/
|
|
23
|
+
let fallback;
|
|
24
|
+
/**
|
|
25
|
+
* The default parser, built once.
|
|
26
|
+
*
|
|
27
|
+
* Once because `Credentials` resolves through `globalThis` and decryption is
|
|
28
|
+
* not free, and because two parsers over the same environment are two caches of
|
|
29
|
+
* the same answer.
|
|
30
|
+
*/
|
|
31
|
+
function defaultEnvParser() {
|
|
32
|
+
if (!fallback) fallback = new EnvironmentParser({
|
|
33
|
+
...process.env,
|
|
34
|
+
...Credentials
|
|
35
|
+
});
|
|
36
|
+
return fallback;
|
|
37
|
+
}
|
|
38
|
+
/** The parser for an endpoint, from its surface or the default. */
|
|
39
|
+
function envParserFor(surface) {
|
|
40
|
+
return surface?.envParser ?? defaultEnvParser();
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { envParserFor as n, defaultEnvParser as t };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=surfaceEnv-wMT5QzgZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaceEnv-wMT5QzgZ.mjs","names":[],"sources":["../src/endpoints/surfaceEnv.ts"],"sourcesContent":["/**\n * The environment parser an endpoint runs with.\n *\n * Three facts, in order:\n *\n * 1. An endpoint built from a surface carries whatever parser that surface was\n * given. This is the whole point of `api.get()` — the handler already has\n * the thing, so nothing has to be named in config and nothing has to be\n * printed into generated code.\n * 2. A surface that named none gets this default, which is what every\n * application's own `config/env.ts` was: `process.env` merged with the\n * credentials `gkm dev`/`gkm exec` injected. It was boilerplate identical in\n * every project, and mandatory, which is a poor combination.\n * 3. An endpoint with no surface at all — a test, an MSW handler — gets the\n * same default. Nothing has to opt in.\n *\n * Named a parser only when it is genuinely different: a merged secret source, a\n * fixture, a parser that reads from somewhere other than the process.\n */\n\nimport { EnvironmentParser } from '@geekmidas/envkit';\nimport { Credentials } from '@geekmidas/envkit/credentials';\nimport type { EndpointSurface } from './Endpoint';\n\nlet fallback: EnvironmentParser<{}> | undefined;\n\n/**\n * The default parser, built once.\n *\n * Once because `Credentials` resolves through `globalThis` and decryption is\n * not free, and because two parsers over the same environment are two caches of\n * the same answer.\n */\nexport function defaultEnvParser(): EnvironmentParser<{}> {\n\tif (!fallback) {\n\t\tfallback = new EnvironmentParser({ ...process.env, ...Credentials });\n\t}\n\n\treturn fallback;\n}\n\n/** The parser for an endpoint, from its surface or the default. */\nexport function envParserFor(\n\tsurface: EndpointSurface | undefined,\n): EnvironmentParser<{}> {\n\treturn surface?.envParser ?? defaultEnvParser();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAI;;;;;;;;AASJ,SAAgB,mBAA0C;CACzD,IAAI,CAAC,UACJ,WAAW,IAAI,kBAAkB;EAAE,GAAG,QAAQ;EAAK,GAAG;CAAY,CAAC;CAGpE,OAAO;AACR;;AAGA,SAAgB,aACf,SACwB;CACxB,OAAO,SAAS,aAAa,iBAAiB;AAC/C"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Context } from "aws-lambda";
|
|
2
|
-
|
|
3
2
|
//#region src/telemetry.d.ts
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* Context object returned by onRequestStart, passed to subsequent hooks
|
|
7
5
|
*/
|
|
@@ -89,7 +87,6 @@ interface Telemetry {
|
|
|
89
87
|
*/
|
|
90
88
|
onRequestError(ctx: TelemetryContext, error: Error): void;
|
|
91
89
|
}
|
|
92
|
-
//# sourceMappingURL=telemetry.d.ts.map
|
|
93
90
|
//#endregion
|
|
94
|
-
export {
|
|
95
|
-
//# sourceMappingURL=telemetry-
|
|
91
|
+
export { TelemetryResponse as i, TelemetryContext as n, TelemetryRequest as r, Telemetry as t };
|
|
92
|
+
//# sourceMappingURL=telemetry-DGcFlVpB.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-DGcFlVpB.d.cts","names":["LambdaContext"],"sources":["../src/telemetry.ts"],"mappings":";;;;;UAWiB;;;;GAIf;;;;;UAMe;;;;EAIhB;;;;EAKA,SAASA;;;;;UAMO;;;;EAIhB;;;;EAKA;;;;EAKA,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BM;;;;;;;EAOhB,eAAe,SAAS,mBAAmB;;;;;;;EAQ3C,aAAa,KAAK,kBAAkB,UAAU;;;;;;;EAQ9C,eAAe,KAAK,kBAAkB,OAAO"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Context } from "aws-lambda";
|
|
2
|
-
|
|
3
2
|
//#region src/telemetry.d.ts
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* Context object returned by onRequestStart, passed to subsequent hooks
|
|
7
5
|
*/
|
|
@@ -89,7 +87,6 @@ interface Telemetry {
|
|
|
89
87
|
*/
|
|
90
88
|
onRequestError(ctx: TelemetryContext, error: Error): void;
|
|
91
89
|
}
|
|
92
|
-
//# sourceMappingURL=telemetry.d.ts.map
|
|
93
90
|
//#endregion
|
|
94
|
-
export {
|
|
95
|
-
//# sourceMappingURL=telemetry-
|
|
91
|
+
export { TelemetryResponse as i, TelemetryContext as n, TelemetryRequest as r, Telemetry as t };
|
|
92
|
+
//# sourceMappingURL=telemetry-DGcFlVpB.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-DGcFlVpB.d.mts","names":["LambdaContext"],"sources":["../src/telemetry.ts"],"mappings":";;;;;UAWiB;;;;GAIf;;;;;UAMe;;;;EAIhB;;;;EAKA,SAASA;;;;;UAMO;;;;EAIhB;;;;EAKA;;;;EAKA,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BM;;;;;;;EAOhB,eAAe,SAAS,mBAAmB;;;;;;;EAQ3C,aAAa,KAAK,kBAAkB,UAAU;;;;;;;EAQ9C,eAAe,KAAK,kBAAkB,OAAO"}
|
package/dist/topic/index.cjs
CHANGED
|
@@ -1,137 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
const __geekmidas_manifest = require_chunk.__toESM(require("@geekmidas/manifest"));
|
|
5
|
-
const __geekmidas_logger_console = require_chunk.__toESM(require("@geekmidas/logger/console"));
|
|
6
|
-
const __geekmidas_events = require_chunk.__toESM(require("@geekmidas/events"));
|
|
7
|
-
|
|
8
|
-
//#region src/topic/Topic.ts
|
|
9
|
-
/**
|
|
10
|
-
* A topic — pub/sub fan-out. Unlike a `Queue` (point-to-point, one consumer), a
|
|
11
|
-
* topic is a *resource* owned by no single handler: it declares the event
|
|
12
|
-
* contract, derives a typed producer (`topic.publisher`), and any number of
|
|
13
|
-
* subscribers (`s.topic(topic)`) bind to it. `gkm build` discovers it into the
|
|
14
|
-
* manifest's `topics` field; infra provisions an SNS topic.
|
|
15
|
-
*
|
|
16
|
-
* This replaces hand-writing a publisher `Service`: the publisher is *derived*
|
|
17
|
-
* from the declared event contract, the same way `Queue` derives its publisher.
|
|
18
|
-
*/
|
|
19
|
-
var Topic = class extends require_Construct.Construct {
|
|
20
|
-
__IS_TOPIC__ = true;
|
|
21
|
-
static isTopic(obj) {
|
|
22
|
-
return Boolean(obj && obj.__IS_TOPIC__ === true && obj.type === require_Construct.ConstructType.Topic);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* The canonical id this topic is declared under.
|
|
26
|
-
*
|
|
27
|
-
* Derived from the name, so `users` and `Users` are one topic. The name is
|
|
28
|
-
* left alone: subscribers bind to it and it is what the broker routes on.
|
|
29
|
-
*/
|
|
30
|
-
id;
|
|
31
|
-
/**
|
|
32
|
-
* The producer's env key, read by both {@link declare} and
|
|
33
|
-
* {@link publisher} so the two cannot drift.
|
|
34
|
-
*/
|
|
35
|
-
connectionKey;
|
|
36
|
-
constructor(name, eventSchemas, logger = __geekmidas_logger_console.DEFAULT_LOGGER) {
|
|
37
|
-
super(require_Construct.ConstructType.Topic, logger, [], []);
|
|
38
|
-
this.name = name;
|
|
39
|
-
this.eventSchemas = eventSchemas;
|
|
40
|
-
this.id = (0, __geekmidas_manifest.canonicalId)(name);
|
|
41
|
-
this.connectionKey = (0, __geekmidas_manifest.provideKey)(this.id, "publisherConnectionString");
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* What this topic is in the manifest.
|
|
45
|
-
*
|
|
46
|
-
* Only the producer's key: a subscriber is *bound* to a topic rather than
|
|
47
|
-
* depending on it, so the binding is an edge the deploy target reads and not
|
|
48
|
-
* an env key anyone can hold. Locally both sides meet on the same broker.
|
|
49
|
-
*/
|
|
50
|
-
declare() {
|
|
51
|
-
return [{
|
|
52
|
-
kind: "topic",
|
|
53
|
-
id: this.id,
|
|
54
|
-
provides: [this.connectionKey],
|
|
55
|
-
events: this.eventTypes,
|
|
56
|
-
subscribers: []
|
|
57
|
-
}];
|
|
58
|
-
}
|
|
59
|
-
/** The event type names this topic carries. */
|
|
60
|
-
get eventTypes() {
|
|
61
|
-
return Object.keys(this.eventSchemas);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* The producer side — a `Service` exposing an `EventPublisher` typed to the
|
|
65
|
-
* union of this topic's events. Inject via `.publisher(topic.publisher)` (for
|
|
66
|
-
* declarative `.event(...)`) or `.services([topic.publisher])` (to publish
|
|
67
|
-
* imperatively). Reads `<NAME>_PUBLISHER_CONNECTION_STRING` and selects the
|
|
68
|
-
* transport from the URL protocol — `pgboss://` locally, `sns://` deployed.
|
|
69
|
-
*
|
|
70
|
-
* Because it's a `Service`, the connection-string requirement is sniffed into
|
|
71
|
-
* the manifest of whatever construct injects it (least-privilege linking).
|
|
72
|
-
*/
|
|
73
|
-
/**
|
|
74
|
-
* The topic as a dependency — what `.dependsOn([users])` dissolves into,
|
|
75
|
-
* reachable as `services.users`.
|
|
76
|
-
*
|
|
77
|
-
* It is the producer, because publishing is the only thing depending on a
|
|
78
|
-
* topic can mean: a subscriber *binds* with `s.topic(…)` instead, and is
|
|
79
|
-
* deliberately never handed this. {@link publisher} is the same service
|
|
80
|
-
* under its older `<name>Publisher` key.
|
|
81
|
-
*/
|
|
82
|
-
get service() {
|
|
83
|
-
const { register } = this.publisher;
|
|
84
|
-
return {
|
|
85
|
-
serviceName: (0, __geekmidas_manifest.serviceKey)(this.id),
|
|
86
|
-
register
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
get publisher() {
|
|
90
|
-
const envVar = this.connectionKey;
|
|
91
|
-
return {
|
|
92
|
-
serviceName: `${this.name}Publisher`,
|
|
93
|
-
async register({ envParser }) {
|
|
94
|
-
const { connectionString } = envParser.create((get) => ({ connectionString: get(envVar).string() })).parse();
|
|
95
|
-
return __geekmidas_events.Publisher.fromConnectionString(connectionString);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
//#endregion
|
|
102
|
-
//#region src/topic/TopicBuilder.ts
|
|
103
|
-
/**
|
|
104
|
-
* Builds a {@link Topic} — `t.topic('users').events({ 'user.created': schema, … })`.
|
|
105
|
-
* The event map is the topic's contract: it types the derived `topic.publisher`
|
|
106
|
-
* and the subscribers that bind via `s.topic(topic)`.
|
|
107
|
-
*/
|
|
108
|
-
var TopicBuilder = class {
|
|
109
|
-
_name;
|
|
110
|
-
_logger = __geekmidas_logger_console.DEFAULT_LOGGER;
|
|
111
|
-
/** The topic name — drives the infra topic and its `<NAME>_*` env vars. */
|
|
112
|
-
topic(name) {
|
|
113
|
-
return require_clone.cloneWith(this, { _name: name });
|
|
114
|
-
}
|
|
115
|
-
logger(logger) {
|
|
116
|
-
return require_clone.cloneWith(this, { _logger: logger });
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* The event contract — a map of event type → payload schema. Building the
|
|
120
|
-
* topic requires this; it's what types the publisher and subscribers.
|
|
121
|
-
*/
|
|
122
|
-
events(events) {
|
|
123
|
-
if (!this._name) throw new Error("Topic requires a name — call .topic(name) before .events().");
|
|
124
|
-
const topic = new Topic(this._name, events, this._logger);
|
|
125
|
-
return topic;
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
//#endregion
|
|
130
|
-
//#region src/topic/index.ts
|
|
131
|
-
const t = new TopicBuilder();
|
|
132
|
-
|
|
133
|
-
//#endregion
|
|
134
|
-
exports.Topic = Topic;
|
|
135
|
-
exports.TopicBuilder = TopicBuilder;
|
|
136
|
-
exports.t = t;
|
|
137
|
-
//# sourceMappingURL=index.cjs.map
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_Topic = require("../Topic-CkxOTrMv.cjs");
|
|
3
|
+
exports.Topic = require_Topic.Topic;
|
package/dist/topic/index.d.cts
CHANGED
|
@@ -1,32 +1,2 @@
|
|
|
1
|
-
import "../Construct-
|
|
2
|
-
|
|
3
|
-
import { Logger } from "@geekmidas/logger";
|
|
4
|
-
|
|
5
|
-
//#region src/topic/TopicBuilder.d.ts
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Builds a {@link Topic} — `t.topic('users').events({ 'user.created': schema, … })`.
|
|
9
|
-
* The event map is the topic's contract: it types the derived `topic.publisher`
|
|
10
|
-
* and the subscribers that bind via `s.topic(topic)`.
|
|
11
|
-
*/
|
|
12
|
-
declare class TopicBuilder<TName extends string = string, TEvents extends TopicEvents = TopicEvents> {
|
|
13
|
-
private _name?;
|
|
14
|
-
private _logger;
|
|
15
|
-
/** The topic name — drives the infra topic and its `<NAME>_*` env vars. */
|
|
16
|
-
topic<T extends string>(name: T): TopicBuilder<T, TEvents>;
|
|
17
|
-
logger(logger: Logger): this;
|
|
18
|
-
/**
|
|
19
|
-
* The event contract — a map of event type → payload schema. Building the
|
|
20
|
-
* topic requires this; it's what types the publisher and subscribers.
|
|
21
|
-
*/
|
|
22
|
-
events<T extends TopicEvents>(events: T): Topic<TName, T>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=TopicBuilder.d.ts.map
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/topic/index.d.ts
|
|
27
|
-
declare const t: TopicBuilder<string, TopicEvents>;
|
|
28
|
-
//# sourceMappingURL=index.d.ts.map
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
export { Topic, TopicBuilder, TopicEvents, TopicMessage, t };
|
|
32
|
-
//# sourceMappingURL=index.d.cts.map
|
|
1
|
+
import { c as Topic, d as TopicOptions, l as TopicEvents, u as TopicMessage } from "../Construct-BQALFCh2.cjs";
|
|
2
|
+
export { Topic, type TopicEvents, type TopicMessage, type TopicOptions };
|
package/dist/topic/index.d.mts
CHANGED
|
@@ -1,32 +1,2 @@
|
|
|
1
|
-
import "../Construct-
|
|
2
|
-
|
|
3
|
-
import { Logger } from "@geekmidas/logger";
|
|
4
|
-
|
|
5
|
-
//#region src/topic/TopicBuilder.d.ts
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Builds a {@link Topic} — `t.topic('users').events({ 'user.created': schema, … })`.
|
|
9
|
-
* The event map is the topic's contract: it types the derived `topic.publisher`
|
|
10
|
-
* and the subscribers that bind via `s.topic(topic)`.
|
|
11
|
-
*/
|
|
12
|
-
declare class TopicBuilder<TName extends string = string, TEvents extends TopicEvents = TopicEvents> {
|
|
13
|
-
private _name?;
|
|
14
|
-
private _logger;
|
|
15
|
-
/** The topic name — drives the infra topic and its `<NAME>_*` env vars. */
|
|
16
|
-
topic<T extends string>(name: T): TopicBuilder<T, TEvents>;
|
|
17
|
-
logger(logger: Logger): this;
|
|
18
|
-
/**
|
|
19
|
-
* The event contract — a map of event type → payload schema. Building the
|
|
20
|
-
* topic requires this; it's what types the publisher and subscribers.
|
|
21
|
-
*/
|
|
22
|
-
events<T extends TopicEvents>(events: T): Topic<TName, T>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=TopicBuilder.d.ts.map
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/topic/index.d.ts
|
|
27
|
-
declare const t: TopicBuilder<string, TopicEvents>;
|
|
28
|
-
//# sourceMappingURL=index.d.ts.map
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
export { Topic, TopicBuilder, TopicEvents, TopicMessage, t };
|
|
32
|
-
//# sourceMappingURL=index.d.mts.map
|
|
1
|
+
import { c as Topic, d as TopicOptions, l as TopicEvents, u as TopicMessage } from "../Construct-QXnl3VqT.mjs";
|
|
2
|
+
export { Topic, type TopicEvents, type TopicMessage, type TopicOptions };
|
package/dist/topic/index.mjs
CHANGED
|
@@ -1,134 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { canonicalId, provideKey, serviceKey } from "@geekmidas/manifest";
|
|
4
|
-
import { DEFAULT_LOGGER } from "@geekmidas/logger/console";
|
|
5
|
-
import { Publisher } from "@geekmidas/events";
|
|
6
|
-
|
|
7
|
-
//#region src/topic/Topic.ts
|
|
8
|
-
/**
|
|
9
|
-
* A topic — pub/sub fan-out. Unlike a `Queue` (point-to-point, one consumer), a
|
|
10
|
-
* topic is a *resource* owned by no single handler: it declares the event
|
|
11
|
-
* contract, derives a typed producer (`topic.publisher`), and any number of
|
|
12
|
-
* subscribers (`s.topic(topic)`) bind to it. `gkm build` discovers it into the
|
|
13
|
-
* manifest's `topics` field; infra provisions an SNS topic.
|
|
14
|
-
*
|
|
15
|
-
* This replaces hand-writing a publisher `Service`: the publisher is *derived*
|
|
16
|
-
* from the declared event contract, the same way `Queue` derives its publisher.
|
|
17
|
-
*/
|
|
18
|
-
var Topic = class extends Construct {
|
|
19
|
-
__IS_TOPIC__ = true;
|
|
20
|
-
static isTopic(obj) {
|
|
21
|
-
return Boolean(obj && obj.__IS_TOPIC__ === true && obj.type === ConstructType.Topic);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* The canonical id this topic is declared under.
|
|
25
|
-
*
|
|
26
|
-
* Derived from the name, so `users` and `Users` are one topic. The name is
|
|
27
|
-
* left alone: subscribers bind to it and it is what the broker routes on.
|
|
28
|
-
*/
|
|
29
|
-
id;
|
|
30
|
-
/**
|
|
31
|
-
* The producer's env key, read by both {@link declare} and
|
|
32
|
-
* {@link publisher} so the two cannot drift.
|
|
33
|
-
*/
|
|
34
|
-
connectionKey;
|
|
35
|
-
constructor(name, eventSchemas, logger = DEFAULT_LOGGER) {
|
|
36
|
-
super(ConstructType.Topic, logger, [], []);
|
|
37
|
-
this.name = name;
|
|
38
|
-
this.eventSchemas = eventSchemas;
|
|
39
|
-
this.id = canonicalId(name);
|
|
40
|
-
this.connectionKey = provideKey(this.id, "publisherConnectionString");
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* What this topic is in the manifest.
|
|
44
|
-
*
|
|
45
|
-
* Only the producer's key: a subscriber is *bound* to a topic rather than
|
|
46
|
-
* depending on it, so the binding is an edge the deploy target reads and not
|
|
47
|
-
* an env key anyone can hold. Locally both sides meet on the same broker.
|
|
48
|
-
*/
|
|
49
|
-
declare() {
|
|
50
|
-
return [{
|
|
51
|
-
kind: "topic",
|
|
52
|
-
id: this.id,
|
|
53
|
-
provides: [this.connectionKey],
|
|
54
|
-
events: this.eventTypes,
|
|
55
|
-
subscribers: []
|
|
56
|
-
}];
|
|
57
|
-
}
|
|
58
|
-
/** The event type names this topic carries. */
|
|
59
|
-
get eventTypes() {
|
|
60
|
-
return Object.keys(this.eventSchemas);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* The producer side — a `Service` exposing an `EventPublisher` typed to the
|
|
64
|
-
* union of this topic's events. Inject via `.publisher(topic.publisher)` (for
|
|
65
|
-
* declarative `.event(...)`) or `.services([topic.publisher])` (to publish
|
|
66
|
-
* imperatively). Reads `<NAME>_PUBLISHER_CONNECTION_STRING` and selects the
|
|
67
|
-
* transport from the URL protocol — `pgboss://` locally, `sns://` deployed.
|
|
68
|
-
*
|
|
69
|
-
* Because it's a `Service`, the connection-string requirement is sniffed into
|
|
70
|
-
* the manifest of whatever construct injects it (least-privilege linking).
|
|
71
|
-
*/
|
|
72
|
-
/**
|
|
73
|
-
* The topic as a dependency — what `.dependsOn([users])` dissolves into,
|
|
74
|
-
* reachable as `services.users`.
|
|
75
|
-
*
|
|
76
|
-
* It is the producer, because publishing is the only thing depending on a
|
|
77
|
-
* topic can mean: a subscriber *binds* with `s.topic(…)` instead, and is
|
|
78
|
-
* deliberately never handed this. {@link publisher} is the same service
|
|
79
|
-
* under its older `<name>Publisher` key.
|
|
80
|
-
*/
|
|
81
|
-
get service() {
|
|
82
|
-
const { register } = this.publisher;
|
|
83
|
-
return {
|
|
84
|
-
serviceName: serviceKey(this.id),
|
|
85
|
-
register
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
get publisher() {
|
|
89
|
-
const envVar = this.connectionKey;
|
|
90
|
-
return {
|
|
91
|
-
serviceName: `${this.name}Publisher`,
|
|
92
|
-
async register({ envParser }) {
|
|
93
|
-
const { connectionString } = envParser.create((get) => ({ connectionString: get(envVar).string() })).parse();
|
|
94
|
-
return Publisher.fromConnectionString(connectionString);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
//#endregion
|
|
101
|
-
//#region src/topic/TopicBuilder.ts
|
|
102
|
-
/**
|
|
103
|
-
* Builds a {@link Topic} — `t.topic('users').events({ 'user.created': schema, … })`.
|
|
104
|
-
* The event map is the topic's contract: it types the derived `topic.publisher`
|
|
105
|
-
* and the subscribers that bind via `s.topic(topic)`.
|
|
106
|
-
*/
|
|
107
|
-
var TopicBuilder = class {
|
|
108
|
-
_name;
|
|
109
|
-
_logger = DEFAULT_LOGGER;
|
|
110
|
-
/** The topic name — drives the infra topic and its `<NAME>_*` env vars. */
|
|
111
|
-
topic(name) {
|
|
112
|
-
return cloneWith(this, { _name: name });
|
|
113
|
-
}
|
|
114
|
-
logger(logger) {
|
|
115
|
-
return cloneWith(this, { _logger: logger });
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* The event contract — a map of event type → payload schema. Building the
|
|
119
|
-
* topic requires this; it's what types the publisher and subscribers.
|
|
120
|
-
*/
|
|
121
|
-
events(events) {
|
|
122
|
-
if (!this._name) throw new Error("Topic requires a name — call .topic(name) before .events().");
|
|
123
|
-
const topic = new Topic(this._name, events, this._logger);
|
|
124
|
-
return topic;
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
//#endregion
|
|
129
|
-
//#region src/topic/index.ts
|
|
130
|
-
const t = new TopicBuilder();
|
|
131
|
-
|
|
132
|
-
//#endregion
|
|
133
|
-
export { Topic, TopicBuilder, t };
|
|
134
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
import { t as Topic } from "../Topic-hPffOsot.mjs";
|
|
2
|
+
export { Topic };
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
//#region src/types.d.ts
|
|
2
|
-
type RemoveUndefined<T> = { [K in keyof T as T[K] extends undefined ? never : K]: T[K] };
|
|
2
|
+
type RemoveUndefined<T> = { [K in keyof T as T[K] extends undefined ? never : K]: T[K]; };
|
|
3
3
|
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
|
|
4
4
|
type LowerHttpMethod<T extends HttpMethod> = Lowercase<T>;
|
|
5
|
-
//# sourceMappingURL=types.d.ts.map
|
|
6
|
-
|
|
7
5
|
//#endregion
|
|
8
|
-
export {
|
|
9
|
-
//# sourceMappingURL=types-
|
|
6
|
+
export { LowerHttpMethod as n, RemoveUndefined as r, HttpMethod as t };
|
|
7
|
+
//# sourceMappingURL=types-DMuSQeLL.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DMuSQeLL.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";KAAY,gBAAgB,QAC1B,WAAW,KAAK,EAAE,+BAA+B,IAAI,EAAE;KAG7C;KAQA,gBAAgB,UAAU,cAAc,UAAU"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
//#region src/types.d.ts
|
|
2
|
-
type RemoveUndefined<T> = { [K in keyof T as T[K] extends undefined ? never : K]: T[K] };
|
|
2
|
+
type RemoveUndefined<T> = { [K in keyof T as T[K] extends undefined ? never : K]: T[K]; };
|
|
3
3
|
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
|
|
4
4
|
type LowerHttpMethod<T extends HttpMethod> = Lowercase<T>;
|
|
5
|
-
//# sourceMappingURL=types.d.ts.map
|
|
6
|
-
|
|
7
5
|
//#endregion
|
|
8
|
-
export {
|
|
9
|
-
//# sourceMappingURL=types-
|
|
6
|
+
export { LowerHttpMethod as n, RemoveUndefined as r, HttpMethod as t };
|
|
7
|
+
//# sourceMappingURL=types-DMuSQeLL.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DMuSQeLL.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";KAAY,gBAAgB,QAC1B,WAAW,KAAK,EAAE,+BAA+B,IAAI,EAAE;KAG7C;KAQA,gBAAgB,UAAU,cAAc,UAAU"}
|
package/dist/types.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as LowerHttpMethod, r as RemoveUndefined, t as HttpMethod } from "./types-DMuSQeLL.cjs";
|
|
2
2
|
export { HttpMethod, LowerHttpMethod, RemoveUndefined };
|
package/dist/types.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as LowerHttpMethod, r as RemoveUndefined, t as HttpMethod } from "./types-DMuSQeLL.mjs";
|
|
2
2
|
export { HttpMethod, LowerHttpMethod, RemoveUndefined };
|
package/dist/types.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|