stratal 0.0.13 → 0.0.15
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/dist/application-Du0d8O_e.d.mts +116 -0
- package/dist/application-Du0d8O_e.d.mts.map +1 -0
- package/dist/base-email.provider-CNwsPbwm.mjs +42 -0
- package/dist/base-email.provider-CNwsPbwm.mjs.map +1 -0
- package/dist/bin/cloudflare-workers-loader.mjs +34 -0
- package/dist/bin/cloudflare-workers-loader.mjs.map +1 -0
- package/dist/bin/quarry.mjs +164 -0
- package/dist/bin/quarry.mjs.map +1 -0
- package/dist/cache/index.d.mts +219 -0
- package/dist/cache/index.d.mts.map +1 -0
- package/dist/cache/index.mjs +251 -0
- package/dist/cache/index.mjs.map +1 -0
- package/dist/chunk-D1SwGrFN.mjs +27 -0
- package/dist/command-DG_u5ob2.mjs +192 -0
- package/dist/command-DG_u5ob2.mjs.map +1 -0
- package/dist/command-DcebcSrL.d.mts +120 -0
- package/dist/command-DcebcSrL.d.mts.map +1 -0
- package/dist/config/index.d.mts +273 -0
- package/dist/config/index.d.mts.map +1 -0
- package/dist/config/index.mjs +239 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/cron/index.d.mts +128 -0
- package/dist/cron/index.d.mts.map +1 -0
- package/dist/cron/index.mjs +5 -0
- package/dist/cron-manager-BRh86QCS.mjs +107 -0
- package/dist/cron-manager-BRh86QCS.mjs.map +1 -0
- package/dist/decorate-D5j-d9_z.mjs +171 -0
- package/dist/decorate-D5j-d9_z.mjs.map +1 -0
- package/dist/di/index.d.mts +2 -0
- package/dist/di/index.mjs +4 -0
- package/dist/email/index.d.mts +532 -0
- package/dist/email/index.d.mts.map +1 -0
- package/dist/email/index.mjs +480 -0
- package/dist/email/index.mjs.map +1 -0
- package/dist/en-uVIaxFXR.mjs +319 -0
- package/dist/en-uVIaxFXR.mjs.map +1 -0
- package/dist/errors/index.d.mts +2 -0
- package/dist/errors/index.mjs +4 -0
- package/dist/errors-CtCi1wn6.mjs +707 -0
- package/dist/errors-CtCi1wn6.mjs.map +1 -0
- package/dist/events/index.d.mts +210 -0
- package/dist/events/index.d.mts.map +1 -0
- package/dist/events/index.mjs +4 -0
- package/dist/events-CXl-o1Ad.mjs +191 -0
- package/dist/events-CXl-o1Ad.mjs.map +1 -0
- package/dist/gateway-context-90CQEQDR.mjs +226 -0
- package/dist/gateway-context-90CQEQDR.mjs.map +1 -0
- package/dist/guards/index.d.mts +172 -0
- package/dist/guards/index.d.mts.map +1 -0
- package/dist/guards/index.mjs +2 -0
- package/dist/guards-DMbsAxSX.mjs +151 -0
- package/dist/guards-DMbsAxSX.mjs.map +1 -0
- package/dist/i18n/index.d.mts +3 -0
- package/dist/i18n/index.mjs +15 -0
- package/dist/i18n/messages/en/index.d.mts +2 -0
- package/dist/i18n/messages/en/index.mjs +2 -0
- package/dist/i18n/validation/index.d.mts +4 -0
- package/dist/i18n/validation/index.mjs +3 -0
- package/dist/i18n.module-qNrpIVts.mjs +1791 -0
- package/dist/i18n.module-qNrpIVts.mjs.map +1 -0
- package/dist/index-CSuHOJc3.d.mts +319 -0
- package/dist/index-CSuHOJc3.d.mts.map +1 -0
- package/dist/index-Cfkie8JM.d.mts +263 -0
- package/dist/index-Cfkie8JM.d.mts.map +1 -0
- package/dist/index-CpAN9ENH.d.mts +185 -0
- package/dist/index-CpAN9ENH.d.mts.map +1 -0
- package/dist/index-D69rxo8H.d.mts +2616 -0
- package/dist/index-D69rxo8H.d.mts.map +1 -0
- package/dist/index-H-Su81aK.d.mts +632 -0
- package/dist/index-H-Su81aK.d.mts.map +1 -0
- package/dist/index.d.mts +41 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +20 -0
- package/dist/is-command-MZDCH-0T.mjs +14 -0
- package/dist/is-command-MZDCH-0T.mjs.map +1 -0
- package/dist/is-seeder-BN9Ej1r7.mjs +28 -0
- package/dist/is-seeder-BN9Ej1r7.mjs.map +1 -0
- package/dist/logger/index.d.mts +2 -0
- package/dist/logger/index.mjs +3 -0
- package/dist/logger-BR1-s1Um.mjs +252 -0
- package/dist/logger-BR1-s1Um.mjs.map +1 -0
- package/dist/middleware/index.d.mts +2 -0
- package/dist/middleware/index.mjs +6 -0
- package/dist/middleware-iRhNjsPH.mjs +362 -0
- package/dist/middleware-iRhNjsPH.mjs.map +1 -0
- package/dist/module/index.d.mts +148 -0
- package/dist/module/index.d.mts.map +1 -0
- package/dist/module/index.mjs +11 -0
- package/dist/module-BH7t7BGG.mjs +370 -0
- package/dist/module-BH7t7BGG.mjs.map +1 -0
- package/dist/openapi/index.d.mts +202 -0
- package/dist/openapi/index.d.mts.map +1 -0
- package/dist/openapi/index.mjs +15 -0
- package/dist/quarry/index.d.mts +112 -0
- package/dist/quarry/index.d.mts.map +1 -0
- package/dist/quarry/index.mjs +6 -0
- package/dist/quarry-registry-BPmKVjhG.mjs +302 -0
- package/dist/quarry-registry-BPmKVjhG.mjs.map +1 -0
- package/dist/queue/index.d.mts +2 -0
- package/dist/queue/index.mjs +84 -0
- package/dist/queue/index.mjs.map +1 -0
- package/dist/queue.module-BdXWUvIM.mjs +403 -0
- package/dist/queue.module-BdXWUvIM.mjs.map +1 -0
- package/dist/resend.provider-CQT5be5E.mjs +70 -0
- package/dist/resend.provider-CQT5be5E.mjs.map +1 -0
- package/dist/router/index.d.mts +2 -0
- package/dist/router/index.mjs +15 -0
- package/dist/router-context-BLn4PrRG.mjs +264 -0
- package/dist/router-context-BLn4PrRG.mjs.map +1 -0
- package/dist/seeder/index.d.mts +77 -0
- package/dist/seeder/index.d.mts.map +1 -0
- package/dist/seeder/index.mjs +7 -0
- package/dist/seeder-DatfjJvU.mjs +132 -0
- package/dist/seeder-DatfjJvU.mjs.map +1 -0
- package/dist/smtp.provider-Cj7BUFbJ.mjs +78 -0
- package/dist/smtp.provider-Cj7BUFbJ.mjs.map +1 -0
- package/dist/storage/index.d.mts +743 -0
- package/dist/storage/index.d.mts.map +1 -0
- package/dist/storage/index.mjs +13 -0
- package/dist/storage-BtcfgibD.mjs +787 -0
- package/dist/storage-BtcfgibD.mjs.map +1 -0
- package/dist/stratal-Cm0Yy8v4.mjs +305 -0
- package/dist/stratal-Cm0Yy8v4.mjs.map +1 -0
- package/dist/{types.d.ts → types-Cu4jkeiH.d.mts} +5 -2
- package/dist/types-Cu4jkeiH.d.mts.map +1 -0
- package/dist/types-N84Ak6YT.d.mts +64 -0
- package/dist/types-N84Ak6YT.d.mts.map +1 -0
- package/dist/usage-generator-BTZDk5zx.mjs +75 -0
- package/dist/usage-generator-BTZDk5zx.mjs.map +1 -0
- package/dist/validation-Dbt-snjx.mjs +194 -0
- package/dist/validation-Dbt-snjx.mjs.map +1 -0
- package/dist/websocket/index.d.mts +168 -0
- package/dist/websocket/index.d.mts.map +1 -0
- package/dist/websocket/index.mjs +6 -0
- package/dist/workers/index.d.mts +90 -0
- package/dist/workers/index.d.mts.map +1 -0
- package/dist/workers/index.mjs +122 -0
- package/dist/workers/index.mjs.map +1 -0
- package/package.json +98 -28
- package/dist/application.d.ts +0 -101
- package/dist/application.d.ts.map +0 -1
- package/dist/application.js +0 -230
- package/dist/application.js.map +0 -1
- package/dist/cache/cache.module.d.ts +0 -14
- package/dist/cache/cache.module.d.ts.map +0 -1
- package/dist/cache/cache.module.js +0 -32
- package/dist/cache/cache.module.js.map +0 -1
- package/dist/cache/cache.tokens.d.ts +0 -5
- package/dist/cache/cache.tokens.d.ts.map +0 -1
- package/dist/cache/cache.tokens.js +0 -4
- package/dist/cache/cache.tokens.js.map +0 -1
- package/dist/cache/errors/cache-delete.error.d.ts +0 -11
- package/dist/cache/errors/cache-delete.error.d.ts.map +0 -1
- package/dist/cache/errors/cache-delete.error.js +0 -14
- package/dist/cache/errors/cache-delete.error.js.map +0 -1
- package/dist/cache/errors/cache-get.error.d.ts +0 -11
- package/dist/cache/errors/cache-get.error.d.ts.map +0 -1
- package/dist/cache/errors/cache-get.error.js +0 -14
- package/dist/cache/errors/cache-get.error.js.map +0 -1
- package/dist/cache/errors/cache-list.error.d.ts +0 -10
- package/dist/cache/errors/cache-list.error.d.ts.map +0 -1
- package/dist/cache/errors/cache-list.error.js +0 -13
- package/dist/cache/errors/cache-list.error.js.map +0 -1
- package/dist/cache/errors/cache-put.error.d.ts +0 -11
- package/dist/cache/errors/cache-put.error.d.ts.map +0 -1
- package/dist/cache/errors/cache-put.error.js +0 -14
- package/dist/cache/errors/cache-put.error.js.map +0 -1
- package/dist/cache/errors/index.d.ts +0 -5
- package/dist/cache/errors/index.d.ts.map +0 -1
- package/dist/cache/errors/index.js +0 -5
- package/dist/cache/errors/index.js.map +0 -1
- package/dist/cache/index.d.ts +0 -5
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -5
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/services/cache.service.d.ts +0 -152
- package/dist/cache/services/cache.service.d.ts.map +0 -1
- package/dist/cache/services/cache.service.js +0 -223
- package/dist/cache/services/cache.service.js.map +0 -1
- package/dist/cache/services/index.d.ts +0 -2
- package/dist/cache/services/index.d.ts.map +0 -1
- package/dist/cache/services/index.js +0 -2
- package/dist/cache/services/index.js.map +0 -1
- package/dist/config/config.module.d.ts +0 -79
- package/dist/config/config.module.d.ts.map +0 -1
- package/dist/config/config.module.js +0 -121
- package/dist/config/config.module.js.map +0 -1
- package/dist/config/config.tokens.d.ts +0 -4
- package/dist/config/config.tokens.d.ts.map +0 -1
- package/dist/config/config.tokens.js +0 -4
- package/dist/config/config.tokens.js.map +0 -1
- package/dist/config/config.types.d.ts +0 -68
- package/dist/config/config.types.d.ts.map +0 -1
- package/dist/config/config.types.js +0 -9
- package/dist/config/config.types.js.map +0 -1
- package/dist/config/errors/config-module-not-initialized.error.d.ts +0 -10
- package/dist/config/errors/config-module-not-initialized.error.d.ts.map +0 -1
- package/dist/config/errors/config-module-not-initialized.error.js +0 -12
- package/dist/config/errors/config-module-not-initialized.error.js.map +0 -1
- package/dist/config/errors/config-not-initialized.error.d.ts +0 -12
- package/dist/config/errors/config-not-initialized.error.d.ts.map +0 -1
- package/dist/config/errors/config-not-initialized.error.js +0 -15
- package/dist/config/errors/config-not-initialized.error.js.map +0 -1
- package/dist/config/errors/index.d.ts +0 -3
- package/dist/config/errors/index.d.ts.map +0 -1
- package/dist/config/errors/index.js +0 -3
- package/dist/config/errors/index.js.map +0 -1
- package/dist/config/index.d.ts +0 -7
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -9
- package/dist/config/index.js.map +0 -1
- package/dist/config/register-as.d.ts +0 -62
- package/dist/config/register-as.d.ts.map +0 -1
- package/dist/config/register-as.js +0 -48
- package/dist/config/register-as.js.map +0 -1
- package/dist/config/services/config.service.d.ts +0 -59
- package/dist/config/services/config.service.d.ts.map +0 -1
- package/dist/config/services/config.service.js +0 -140
- package/dist/config/services/config.service.js.map +0 -1
- package/dist/cron/cron-job.d.ts +0 -54
- package/dist/cron/cron-job.d.ts.map +0 -1
- package/dist/cron/cron-job.js +0 -2
- package/dist/cron/cron-job.js.map +0 -1
- package/dist/cron/cron-manager.d.ts +0 -60
- package/dist/cron/cron-manager.d.ts.map +0 -1
- package/dist/cron/cron-manager.js +0 -120
- package/dist/cron/cron-manager.js.map +0 -1
- package/dist/cron/errors/cron-execution.error.d.ts +0 -10
- package/dist/cron/errors/cron-execution.error.d.ts.map +0 -1
- package/dist/cron/errors/cron-execution.error.js +0 -17
- package/dist/cron/errors/cron-execution.error.js.map +0 -1
- package/dist/cron/index.d.ts +0 -4
- package/dist/cron/index.d.ts.map +0 -1
- package/dist/cron/index.js +0 -3
- package/dist/cron/index.js.map +0 -1
- package/dist/di/conditional-binding-builder.d.ts +0 -93
- package/dist/di/conditional-binding-builder.d.ts.map +0 -1
- package/dist/di/conditional-binding-builder.js +0 -115
- package/dist/di/conditional-binding-builder.js.map +0 -1
- package/dist/di/container.d.ts +0 -131
- package/dist/di/container.d.ts.map +0 -1
- package/dist/di/container.js +0 -177
- package/dist/di/container.js.map +0 -1
- package/dist/di/decorators/inject-param.decorator.d.ts +0 -67
- package/dist/di/decorators/inject-param.decorator.d.ts.map +0 -1
- package/dist/di/decorators/inject-param.decorator.js +0 -53
- package/dist/di/decorators/inject-param.decorator.js.map +0 -1
- package/dist/di/decorators.d.ts +0 -57
- package/dist/di/decorators.d.ts.map +0 -1
- package/dist/di/decorators.js +0 -74
- package/dist/di/decorators.js.map +0 -1
- package/dist/di/errors/conditional-binding-fallback.error.d.ts +0 -16
- package/dist/di/errors/conditional-binding-fallback.error.d.ts.map +0 -1
- package/dist/di/errors/conditional-binding-fallback.error.js +0 -19
- package/dist/di/errors/conditional-binding-fallback.error.js.map +0 -1
- package/dist/di/errors/index.d.ts +0 -3
- package/dist/di/errors/index.d.ts.map +0 -1
- package/dist/di/errors/index.js +0 -3
- package/dist/di/errors/index.js.map +0 -1
- package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts +0 -11
- package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts.map +0 -1
- package/dist/di/errors/request-scope-operation-not-allowed.error.js +0 -14
- package/dist/di/errors/request-scope-operation-not-allowed.error.js.map +0 -1
- package/dist/di/index.d.ts +0 -12
- package/dist/di/index.d.ts.map +0 -1
- package/dist/di/index.js +0 -10
- package/dist/di/index.js.map +0 -1
- package/dist/di/tokens.d.ts +0 -26
- package/dist/di/tokens.d.ts.map +0 -1
- package/dist/di/tokens.js +0 -29
- package/dist/di/tokens.js.map +0 -1
- package/dist/di/types.d.ts +0 -56
- package/dist/di/types.d.ts.map +0 -1
- package/dist/di/types.js +0 -34
- package/dist/di/types.js.map +0 -1
- package/dist/email/consumers/email.consumer.d.ts +0 -43
- package/dist/email/consumers/email.consumer.d.ts.map +0 -1
- package/dist/email/consumers/email.consumer.js +0 -129
- package/dist/email/consumers/email.consumer.js.map +0 -1
- package/dist/email/consumers/index.d.ts +0 -2
- package/dist/email/consumers/index.d.ts.map +0 -1
- package/dist/email/consumers/index.js +0 -2
- package/dist/email/consumers/index.js.map +0 -1
- package/dist/email/contracts/email-attachment.d.ts +0 -61
- package/dist/email/contracts/email-attachment.d.ts.map +0 -1
- package/dist/email/contracts/email-attachment.js +0 -58
- package/dist/email/contracts/email-attachment.js.map +0 -1
- package/dist/email/contracts/email-message.contract.d.ts +0 -58
- package/dist/email/contracts/email-message.contract.d.ts.map +0 -1
- package/dist/email/contracts/email-message.contract.js +0 -62
- package/dist/email/contracts/email-message.contract.js.map +0 -1
- package/dist/email/contracts/index.d.ts +0 -4
- package/dist/email/contracts/index.d.ts.map +0 -1
- package/dist/email/contracts/index.js +0 -4
- package/dist/email/contracts/index.js.map +0 -1
- package/dist/email/contracts/send-email.input.d.ts +0 -72
- package/dist/email/contracts/send-email.input.d.ts.map +0 -1
- package/dist/email/contracts/send-email.input.js +0 -28
- package/dist/email/contracts/send-email.input.js.map +0 -1
- package/dist/email/email.module.d.ts +0 -122
- package/dist/email/email.module.d.ts.map +0 -1
- package/dist/email/email.module.js +0 -129
- package/dist/email/email.module.js.map +0 -1
- package/dist/email/email.tokens.d.ts +0 -33
- package/dist/email/email.tokens.d.ts.map +0 -1
- package/dist/email/email.tokens.js +0 -33
- package/dist/email/email.tokens.js.map +0 -1
- package/dist/email/errors/email-provider-not-supported.error.d.ts +0 -13
- package/dist/email/errors/email-provider-not-supported.error.d.ts.map +0 -1
- package/dist/email/errors/email-provider-not-supported.error.js +0 -15
- package/dist/email/errors/email-provider-not-supported.error.js.map +0 -1
- package/dist/email/errors/email-resend-api-failed.error.d.ts +0 -13
- package/dist/email/errors/email-resend-api-failed.error.d.ts.map +0 -1
- package/dist/email/errors/email-resend-api-failed.error.js +0 -15
- package/dist/email/errors/email-resend-api-failed.error.js.map +0 -1
- package/dist/email/errors/email-smtp-connection-failed.error.d.ts +0 -13
- package/dist/email/errors/email-smtp-connection-failed.error.d.ts.map +0 -1
- package/dist/email/errors/email-smtp-connection-failed.error.js +0 -15
- package/dist/email/errors/email-smtp-connection-failed.error.js.map +0 -1
- package/dist/email/errors/index.d.ts +0 -7
- package/dist/email/errors/index.d.ts.map +0 -1
- package/dist/email/errors/index.js +0 -7
- package/dist/email/errors/index.js.map +0 -1
- package/dist/email/errors/resend-api-key-missing.error.d.ts +0 -13
- package/dist/email/errors/resend-api-key-missing.error.d.ts.map +0 -1
- package/dist/email/errors/resend-api-key-missing.error.js +0 -15
- package/dist/email/errors/resend-api-key-missing.error.js.map +0 -1
- package/dist/email/errors/smtp-configuration-missing.error.d.ts +0 -13
- package/dist/email/errors/smtp-configuration-missing.error.d.ts.map +0 -1
- package/dist/email/errors/smtp-configuration-missing.error.js +0 -15
- package/dist/email/errors/smtp-configuration-missing.error.js.map +0 -1
- package/dist/email/errors/smtp-host-missing.error.d.ts +0 -13
- package/dist/email/errors/smtp-host-missing.error.d.ts.map +0 -1
- package/dist/email/errors/smtp-host-missing.error.js +0 -15
- package/dist/email/errors/smtp-host-missing.error.js.map +0 -1
- package/dist/email/index.d.ts +0 -6
- package/dist/email/index.d.ts.map +0 -1
- package/dist/email/index.js +0 -8
- package/dist/email/index.js.map +0 -1
- package/dist/email/providers/base-email.provider.d.ts +0 -22
- package/dist/email/providers/base-email.provider.d.ts.map +0 -1
- package/dist/email/providers/base-email.provider.js +0 -43
- package/dist/email/providers/base-email.provider.js.map +0 -1
- package/dist/email/providers/email-provider.interface.d.ts +0 -66
- package/dist/email/providers/email-provider.interface.d.ts.map +0 -1
- package/dist/email/providers/email-provider.interface.js +0 -2
- package/dist/email/providers/email-provider.interface.js.map +0 -1
- package/dist/email/providers/index.d.ts +0 -5
- package/dist/email/providers/index.d.ts.map +0 -1
- package/dist/email/providers/index.js +0 -5
- package/dist/email/providers/index.js.map +0 -1
- package/dist/email/providers/resend.provider.d.ts +0 -26
- package/dist/email/providers/resend.provider.d.ts.map +0 -1
- package/dist/email/providers/resend.provider.js +0 -84
- package/dist/email/providers/resend.provider.js.map +0 -1
- package/dist/email/providers/smtp.provider.d.ts +0 -25
- package/dist/email/providers/smtp.provider.d.ts.map +0 -1
- package/dist/email/providers/smtp.provider.js +0 -86
- package/dist/email/providers/smtp.provider.js.map +0 -1
- package/dist/email/services/email-provider-factory.d.ts +0 -24
- package/dist/email/services/email-provider-factory.d.ts.map +0 -1
- package/dist/email/services/email-provider-factory.js +0 -59
- package/dist/email/services/email-provider-factory.js.map +0 -1
- package/dist/email/services/email.service.d.ts +0 -51
- package/dist/email/services/email.service.d.ts.map +0 -1
- package/dist/email/services/email.service.js +0 -75
- package/dist/email/services/email.service.js.map +0 -1
- package/dist/email/services/index.d.ts +0 -3
- package/dist/email/services/index.d.ts.map +0 -1
- package/dist/email/services/index.js +0 -3
- package/dist/email/services/index.js.map +0 -1
- package/dist/env.d.ts +0 -21
- package/dist/env.d.ts.map +0 -1
- package/dist/env.js +0 -2
- package/dist/env.js.map +0 -1
- package/dist/errors/application-error.d.ts +0 -87
- package/dist/errors/application-error.d.ts.map +0 -1
- package/dist/errors/application-error.js +0 -130
- package/dist/errors/application-error.js.map +0 -1
- package/dist/errors/error-codes.d.ts +0 -202
- package/dist/errors/error-codes.d.ts.map +0 -1
- package/dist/errors/error-codes.js +0 -184
- package/dist/errors/error-codes.js.map +0 -1
- package/dist/errors/error-response.d.ts +0 -32
- package/dist/errors/error-response.d.ts.map +0 -1
- package/dist/errors/error-response.js +0 -14
- package/dist/errors/error-response.js.map +0 -1
- package/dist/errors/get-http-status.d.ts +0 -12
- package/dist/errors/get-http-status.d.ts.map +0 -1
- package/dist/errors/get-http-status.js +0 -62
- package/dist/errors/get-http-status.js.map +0 -1
- package/dist/errors/global-error-handler.d.ts +0 -81
- package/dist/errors/global-error-handler.d.ts.map +0 -1
- package/dist/errors/global-error-handler.js +0 -176
- package/dist/errors/global-error-handler.js.map +0 -1
- package/dist/errors/index.d.ts +0 -10
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -10
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/internal-error.d.ts +0 -16
- package/dist/errors/internal-error.d.ts.map +0 -1
- package/dist/errors/internal-error.js +0 -19
- package/dist/errors/internal-error.js.map +0 -1
- package/dist/errors/is-application-error.d.ts +0 -9
- package/dist/errors/is-application-error.d.ts.map +0 -1
- package/dist/errors/is-application-error.js +0 -11
- package/dist/errors/is-application-error.js.map +0 -1
- package/dist/errors/request-container-not-initialized.error.d.ts +0 -12
- package/dist/errors/request-container-not-initialized.error.d.ts.map +0 -1
- package/dist/errors/request-container-not-initialized.error.js +0 -15
- package/dist/errors/request-container-not-initialized.error.js.map +0 -1
- package/dist/errors/stratal-not-initialized.error.d.ts +0 -11
- package/dist/errors/stratal-not-initialized.error.d.ts.map +0 -1
- package/dist/errors/stratal-not-initialized.error.js +0 -14
- package/dist/errors/stratal-not-initialized.error.js.map +0 -1
- package/dist/events/constants.d.ts +0 -11
- package/dist/events/constants.d.ts.map +0 -1
- package/dist/events/constants.js +0 -11
- package/dist/events/constants.js.map +0 -1
- package/dist/events/decorators/index.d.ts +0 -3
- package/dist/events/decorators/index.d.ts.map +0 -1
- package/dist/events/decorators/index.js +0 -3
- package/dist/events/decorators/index.js.map +0 -1
- package/dist/events/decorators/listener.decorator.d.ts +0 -24
- package/dist/events/decorators/listener.decorator.d.ts.map +0 -1
- package/dist/events/decorators/listener.decorator.js +0 -33
- package/dist/events/decorators/listener.decorator.js.map +0 -1
- package/dist/events/decorators/on.decorator.d.ts +0 -28
- package/dist/events/decorators/on.decorator.d.ts.map +0 -1
- package/dist/events/decorators/on.decorator.js +0 -41
- package/dist/events/decorators/on.decorator.js.map +0 -1
- package/dist/events/event-registry.d.ts +0 -26
- package/dist/events/event-registry.d.ts.map +0 -1
- package/dist/events/event-registry.js +0 -156
- package/dist/events/event-registry.js.map +0 -1
- package/dist/events/index.d.ts +0 -5
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -4
- package/dist/events/index.js.map +0 -1
- package/dist/events/types.d.ts +0 -116
- package/dist/events/types.d.ts.map +0 -1
- package/dist/events/types.js +0 -23
- package/dist/events/types.js.map +0 -1
- package/dist/execution-context.d.ts +0 -4
- package/dist/execution-context.d.ts.map +0 -1
- package/dist/execution-context.js +0 -2
- package/dist/execution-context.js.map +0 -1
- package/dist/guards/guard-execution.service.d.ts +0 -37
- package/dist/guards/guard-execution.service.d.ts.map +0 -1
- package/dist/guards/guard-execution.service.js +0 -74
- package/dist/guards/guard-execution.service.js.map +0 -1
- package/dist/guards/index.d.ts +0 -12
- package/dist/guards/index.d.ts.map +0 -1
- package/dist/guards/index.js +0 -12
- package/dist/guards/index.js.map +0 -1
- package/dist/guards/types.d.ts +0 -60
- package/dist/guards/types.d.ts.map +0 -1
- package/dist/guards/types.js +0 -5
- package/dist/guards/types.js.map +0 -1
- package/dist/guards/use-guards.decorator.d.ts +0 -73
- package/dist/guards/use-guards.decorator.d.ts.map +0 -1
- package/dist/guards/use-guards.decorator.js +0 -89
- package/dist/guards/use-guards.decorator.js.map +0 -1
- package/dist/i18n/errors/index.d.ts +0 -6
- package/dist/i18n/errors/index.d.ts.map +0 -1
- package/dist/i18n/errors/index.js +0 -6
- package/dist/i18n/errors/index.js.map +0 -1
- package/dist/i18n/errors/locale-not-supported.error.d.ts +0 -12
- package/dist/i18n/errors/locale-not-supported.error.d.ts.map +0 -1
- package/dist/i18n/errors/locale-not-supported.error.js +0 -15
- package/dist/i18n/errors/locale-not-supported.error.js.map +0 -1
- package/dist/i18n/errors/translation-missing.error.d.ts +0 -12
- package/dist/i18n/errors/translation-missing.error.d.ts.map +0 -1
- package/dist/i18n/errors/translation-missing.error.js +0 -14
- package/dist/i18n/errors/translation-missing.error.js.map +0 -1
- package/dist/i18n/i18n.module.d.ts +0 -60
- package/dist/i18n/i18n.module.d.ts.map +0 -1
- package/dist/i18n/i18n.module.js +0 -103
- package/dist/i18n/i18n.module.js.map +0 -1
- package/dist/i18n/i18n.options.d.ts +0 -60
- package/dist/i18n/i18n.options.d.ts.map +0 -1
- package/dist/i18n/i18n.options.js +0 -18
- package/dist/i18n/i18n.options.js.map +0 -1
- package/dist/i18n/i18n.tokens.d.ts +0 -13
- package/dist/i18n/i18n.tokens.d.ts.map +0 -1
- package/dist/i18n/i18n.tokens.js +0 -13
- package/dist/i18n/i18n.tokens.js.map +0 -1
- package/dist/i18n/i18n.types.d.ts +0 -78
- package/dist/i18n/i18n.types.d.ts.map +0 -1
- package/dist/i18n/i18n.types.js +0 -8
- package/dist/i18n/i18n.types.js.map +0 -1
- package/dist/i18n/index.d.ts +0 -12
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/index.js +0 -12
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/messages/en/common.d.ts +0 -19
- package/dist/i18n/messages/en/common.d.ts.map +0 -1
- package/dist/i18n/messages/en/common.js +0 -19
- package/dist/i18n/messages/en/common.js.map +0 -1
- package/dist/i18n/messages/en/emails.d.ts +0 -12
- package/dist/i18n/messages/en/emails.d.ts.map +0 -1
- package/dist/i18n/messages/en/emails.js +0 -12
- package/dist/i18n/messages/en/emails.js.map +0 -1
- package/dist/i18n/messages/en/errors.d.ts +0 -113
- package/dist/i18n/messages/en/errors.d.ts.map +0 -1
- package/dist/i18n/messages/en/errors.js +0 -130
- package/dist/i18n/messages/en/errors.js.map +0 -1
- package/dist/i18n/messages/en/index.d.ts +0 -13
- package/dist/i18n/messages/en/index.d.ts.map +0 -1
- package/dist/i18n/messages/en/index.js +0 -13
- package/dist/i18n/messages/en/index.js.map +0 -1
- package/dist/i18n/messages/en/validation.d.ts +0 -38
- package/dist/i18n/messages/en/validation.d.ts.map +0 -1
- package/dist/i18n/messages/en/validation.js +0 -38
- package/dist/i18n/messages/en/validation.js.map +0 -1
- package/dist/i18n/messages/en/zod.d.ts +0 -125
- package/dist/i18n/messages/en/zod.d.ts.map +0 -1
- package/dist/i18n/messages/en/zod.js +0 -132
- package/dist/i18n/messages/en/zod.js.map +0 -1
- package/dist/i18n/messages/index.d.ts +0 -27
- package/dist/i18n/messages/index.d.ts.map +0 -1
- package/dist/i18n/messages/index.js +0 -25
- package/dist/i18n/messages/index.js.map +0 -1
- package/dist/i18n/middleware/i18n-context.middleware.d.ts +0 -15
- package/dist/i18n/middleware/i18n-context.middleware.d.ts.map +0 -1
- package/dist/i18n/middleware/i18n-context.middleware.js +0 -42
- package/dist/i18n/middleware/i18n-context.middleware.js.map +0 -1
- package/dist/i18n/middleware/index.d.ts +0 -6
- package/dist/i18n/middleware/index.d.ts.map +0 -1
- package/dist/i18n/middleware/index.js +0 -6
- package/dist/i18n/middleware/index.js.map +0 -1
- package/dist/i18n/middleware/locale-extraction.middleware.d.ts +0 -19
- package/dist/i18n/middleware/locale-extraction.middleware.d.ts.map +0 -1
- package/dist/i18n/middleware/locale-extraction.middleware.js +0 -49
- package/dist/i18n/middleware/locale-extraction.middleware.js.map +0 -1
- package/dist/i18n/services/i18n.service.d.ts +0 -50
- package/dist/i18n/services/i18n.service.d.ts.map +0 -1
- package/dist/i18n/services/i18n.service.js +0 -82
- package/dist/i18n/services/i18n.service.js.map +0 -1
- package/dist/i18n/services/message-loader.service.d.ts +0 -65
- package/dist/i18n/services/message-loader.service.d.ts.map +0 -1
- package/dist/i18n/services/message-loader.service.js +0 -175
- package/dist/i18n/services/message-loader.service.js.map +0 -1
- package/dist/i18n/setup.d.ts +0 -27
- package/dist/i18n/setup.d.ts.map +0 -1
- package/dist/i18n/setup.js +0 -40
- package/dist/i18n/setup.js.map +0 -1
- package/dist/i18n/validation/index.d.ts +0 -9
- package/dist/i18n/validation/index.d.ts.map +0 -1
- package/dist/i18n/validation/index.js +0 -10
- package/dist/i18n/validation/index.js.map +0 -1
- package/dist/i18n/validation/validation.context.d.ts +0 -34
- package/dist/i18n/validation/validation.context.d.ts.map +0 -1
- package/dist/i18n/validation/validation.context.js +0 -42
- package/dist/i18n/validation/validation.context.js.map +0 -1
- package/dist/i18n/validation/validation.error-map.d.ts +0 -8
- package/dist/i18n/validation/validation.error-map.d.ts.map +0 -1
- package/dist/i18n/validation/validation.error-map.js +0 -158
- package/dist/i18n/validation/validation.error-map.js.map +0 -1
- package/dist/i18n/validation/validation.types.d.ts +0 -44
- package/dist/i18n/validation/validation.types.d.ts.map +0 -1
- package/dist/i18n/validation/validation.types.js +0 -2
- package/dist/i18n/validation/validation.types.js.map +0 -1
- package/dist/i18n/validation/with-i18n.d.ts +0 -29
- package/dist/i18n/validation/with-i18n.d.ts.map +0 -1
- package/dist/i18n/validation/with-i18n.js +0 -40
- package/dist/i18n/validation/with-i18n.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/logger/contracts/index.d.ts +0 -4
- package/dist/logger/contracts/index.d.ts.map +0 -1
- package/dist/logger/contracts/index.js +0 -4
- package/dist/logger/contracts/index.js.map +0 -1
- package/dist/logger/contracts/log-context.d.ts +0 -14
- package/dist/logger/contracts/log-context.d.ts.map +0 -1
- package/dist/logger/contracts/log-context.js +0 -2
- package/dist/logger/contracts/log-context.js.map +0 -1
- package/dist/logger/contracts/log-entry.d.ts +0 -17
- package/dist/logger/contracts/log-entry.d.ts.map +0 -1
- package/dist/logger/contracts/log-entry.js +0 -2
- package/dist/logger/contracts/log-entry.js.map +0 -1
- package/dist/logger/contracts/log-level.d.ts +0 -16
- package/dist/logger/contracts/log-level.d.ts.map +0 -1
- package/dist/logger/contracts/log-level.js +0 -22
- package/dist/logger/contracts/log-level.js.map +0 -1
- package/dist/logger/formatters/formatter.interface.d.ts +0 -14
- package/dist/logger/formatters/formatter.interface.d.ts.map +0 -1
- package/dist/logger/formatters/formatter.interface.js +0 -2
- package/dist/logger/formatters/formatter.interface.js.map +0 -1
- package/dist/logger/formatters/index.d.ts +0 -4
- package/dist/logger/formatters/index.d.ts.map +0 -1
- package/dist/logger/formatters/index.js +0 -4
- package/dist/logger/formatters/index.js.map +0 -1
- package/dist/logger/formatters/json-formatter.d.ts +0 -21
- package/dist/logger/formatters/json-formatter.d.ts.map +0 -1
- package/dist/logger/formatters/json-formatter.js +0 -27
- package/dist/logger/formatters/json-formatter.js.map +0 -1
- package/dist/logger/formatters/pretty-formatter.d.ts +0 -18
- package/dist/logger/formatters/pretty-formatter.d.ts.map +0 -1
- package/dist/logger/formatters/pretty-formatter.js +0 -41
- package/dist/logger/formatters/pretty-formatter.js.map +0 -1
- package/dist/logger/index.d.ts +0 -7
- package/dist/logger/index.d.ts.map +0 -1
- package/dist/logger/index.js +0 -10
- package/dist/logger/index.js.map +0 -1
- package/dist/logger/logger.tokens.d.ts +0 -29
- package/dist/logger/logger.tokens.d.ts.map +0 -1
- package/dist/logger/logger.tokens.js +0 -29
- package/dist/logger/logger.tokens.js.map +0 -1
- package/dist/logger/services/index.d.ts +0 -2
- package/dist/logger/services/index.d.ts.map +0 -1
- package/dist/logger/services/index.js +0 -2
- package/dist/logger/services/index.js.map +0 -1
- package/dist/logger/services/logger.service.d.ts +0 -73
- package/dist/logger/services/logger.service.d.ts.map +0 -1
- package/dist/logger/services/logger.service.js +0 -156
- package/dist/logger/services/logger.service.js.map +0 -1
- package/dist/logger/transports/base-transport.d.ts +0 -24
- package/dist/logger/transports/base-transport.d.ts.map +0 -1
- package/dist/logger/transports/base-transport.js +0 -23
- package/dist/logger/transports/base-transport.js.map +0 -1
- package/dist/logger/transports/console-transport.d.ts +0 -19
- package/dist/logger/transports/console-transport.d.ts.map +0 -1
- package/dist/logger/transports/console-transport.js +0 -53
- package/dist/logger/transports/console-transport.js.map +0 -1
- package/dist/logger/transports/index.d.ts +0 -4
- package/dist/logger/transports/index.d.ts.map +0 -1
- package/dist/logger/transports/index.js +0 -4
- package/dist/logger/transports/index.js.map +0 -1
- package/dist/logger/transports/transport.interface.d.ts +0 -21
- package/dist/logger/transports/transport.interface.d.ts.map +0 -1
- package/dist/logger/transports/transport.interface.js +0 -2
- package/dist/logger/transports/transport.interface.js.map +0 -1
- package/dist/middleware/index.d.ts +0 -24
- package/dist/middleware/index.d.ts.map +0 -1
- package/dist/middleware/index.js +0 -23
- package/dist/middleware/index.js.map +0 -1
- package/dist/middleware/middleware-configuration.service.d.ts +0 -70
- package/dist/middleware/middleware-configuration.service.d.ts.map +0 -1
- package/dist/middleware/middleware-configuration.service.js +0 -239
- package/dist/middleware/middleware-configuration.service.js.map +0 -1
- package/dist/middleware/middleware-consumer.d.ts +0 -57
- package/dist/middleware/middleware-consumer.d.ts.map +0 -1
- package/dist/middleware/middleware-consumer.js +0 -130
- package/dist/middleware/middleware-consumer.js.map +0 -1
- package/dist/middleware/types.d.ts +0 -96
- package/dist/middleware/types.d.ts.map +0 -1
- package/dist/middleware/types.js +0 -2
- package/dist/middleware/types.js.map +0 -1
- package/dist/module/errors/index.d.ts +0 -5
- package/dist/module/errors/index.d.ts.map +0 -1
- package/dist/module/errors/index.js +0 -5
- package/dist/module/errors/index.js.map +0 -1
- package/dist/module/errors/invalid-module-provider.error.d.ts +0 -11
- package/dist/module/errors/invalid-module-provider.error.d.ts.map +0 -1
- package/dist/module/errors/invalid-module-provider.error.js +0 -13
- package/dist/module/errors/invalid-module-provider.error.js.map +0 -1
- package/dist/module/errors/module-already-registered.error.d.ts +0 -11
- package/dist/module/errors/module-already-registered.error.d.ts.map +0 -1
- package/dist/module/errors/module-already-registered.error.js +0 -13
- package/dist/module/errors/module-already-registered.error.js.map +0 -1
- package/dist/module/errors/module-circular-dependency.error.d.ts +0 -11
- package/dist/module/errors/module-circular-dependency.error.d.ts.map +0 -1
- package/dist/module/errors/module-circular-dependency.error.js +0 -14
- package/dist/module/errors/module-circular-dependency.error.js.map +0 -1
- package/dist/module/errors/module-dependency-not-found.error.d.ts +0 -11
- package/dist/module/errors/module-dependency-not-found.error.d.ts.map +0 -1
- package/dist/module/errors/module-dependency-not-found.error.js +0 -13
- package/dist/module/errors/module-dependency-not-found.error.js.map +0 -1
- package/dist/module/index.d.ts +0 -4
- package/dist/module/index.d.ts.map +0 -1
- package/dist/module/index.js +0 -7
- package/dist/module/index.js.map +0 -1
- package/dist/module/module-registry.d.ts +0 -110
- package/dist/module/module-registry.d.ts.map +0 -1
- package/dist/module/module-registry.js +0 -299
- package/dist/module/module-registry.js.map +0 -1
- package/dist/module/module.decorator.d.ts +0 -34
- package/dist/module/module.decorator.d.ts.map +0 -1
- package/dist/module/module.decorator.js +0 -107
- package/dist/module/module.decorator.js.map +0 -1
- package/dist/module/types.d.ts +0 -240
- package/dist/module/types.d.ts.map +0 -1
- package/dist/module/types.js +0 -8
- package/dist/module/types.js.map +0 -1
- package/dist/openapi/index.d.ts +0 -5
- package/dist/openapi/index.d.ts.map +0 -1
- package/dist/openapi/index.js +0 -7
- package/dist/openapi/index.js.map +0 -1
- package/dist/openapi/openapi.module.d.ts +0 -52
- package/dist/openapi/openapi.module.d.ts.map +0 -1
- package/dist/openapi/openapi.module.js +0 -109
- package/dist/openapi/openapi.module.js.map +0 -1
- package/dist/openapi/openapi.tokens.d.ts +0 -12
- package/dist/openapi/openapi.tokens.d.ts.map +0 -1
- package/dist/openapi/openapi.tokens.js +0 -12
- package/dist/openapi/openapi.tokens.js.map +0 -1
- package/dist/openapi/services/index.d.ts +0 -3
- package/dist/openapi/services/index.d.ts.map +0 -1
- package/dist/openapi/services/index.js +0 -3
- package/dist/openapi/services/index.js.map +0 -1
- package/dist/openapi/services/openapi-config.service.d.ts +0 -43
- package/dist/openapi/services/openapi-config.service.d.ts.map +0 -1
- package/dist/openapi/services/openapi-config.service.js +0 -98
- package/dist/openapi/services/openapi-config.service.js.map +0 -1
- package/dist/openapi/services/openapi.service.d.ts +0 -52
- package/dist/openapi/services/openapi.service.d.ts.map +0 -1
- package/dist/openapi/services/openapi.service.js +0 -231
- package/dist/openapi/services/openapi.service.js.map +0 -1
- package/dist/openapi/types.d.ts +0 -84
- package/dist/openapi/types.d.ts.map +0 -1
- package/dist/openapi/types.js +0 -2
- package/dist/openapi/types.js.map +0 -1
- package/dist/queue/consumer-registry.d.ts +0 -77
- package/dist/queue/consumer-registry.d.ts.map +0 -1
- package/dist/queue/consumer-registry.js +0 -110
- package/dist/queue/consumer-registry.js.map +0 -1
- package/dist/queue/decorators/index.d.ts +0 -2
- package/dist/queue/decorators/index.d.ts.map +0 -1
- package/dist/queue/decorators/index.js +0 -2
- package/dist/queue/decorators/index.js.map +0 -1
- package/dist/queue/decorators/inject-queue.decorator.d.ts +0 -31
- package/dist/queue/decorators/inject-queue.decorator.d.ts.map +0 -1
- package/dist/queue/decorators/inject-queue.decorator.js +0 -33
- package/dist/queue/decorators/inject-queue.decorator.js.map +0 -1
- package/dist/queue/errors/index.d.ts +0 -3
- package/dist/queue/errors/index.d.ts.map +0 -1
- package/dist/queue/errors/index.js +0 -3
- package/dist/queue/errors/index.js.map +0 -1
- package/dist/queue/errors/queue-binding-not-found.error.d.ts +0 -12
- package/dist/queue/errors/queue-binding-not-found.error.d.ts.map +0 -1
- package/dist/queue/errors/queue-binding-not-found.error.js +0 -14
- package/dist/queue/errors/queue-binding-not-found.error.js.map +0 -1
- package/dist/queue/errors/queue-provider-not-supported.error.d.ts +0 -13
- package/dist/queue/errors/queue-provider-not-supported.error.d.ts.map +0 -1
- package/dist/queue/errors/queue-provider-not-supported.error.js +0 -15
- package/dist/queue/errors/queue-provider-not-supported.error.js.map +0 -1
- package/dist/queue/index.d.ts +0 -14
- package/dist/queue/index.d.ts.map +0 -1
- package/dist/queue/index.js +0 -21
- package/dist/queue/index.js.map +0 -1
- package/dist/queue/providers/cloudflare-queue.provider.d.ts +0 -42
- package/dist/queue/providers/cloudflare-queue.provider.d.ts.map +0 -1
- package/dist/queue/providers/cloudflare-queue.provider.js +0 -73
- package/dist/queue/providers/cloudflare-queue.provider.js.map +0 -1
- package/dist/queue/providers/index.d.ts +0 -4
- package/dist/queue/providers/index.d.ts.map +0 -1
- package/dist/queue/providers/index.js +0 -4
- package/dist/queue/providers/index.js.map +0 -1
- package/dist/queue/providers/queue-provider.interface.d.ts +0 -34
- package/dist/queue/providers/queue-provider.interface.d.ts.map +0 -1
- package/dist/queue/providers/queue-provider.interface.js +0 -2
- package/dist/queue/providers/queue-provider.interface.js.map +0 -1
- package/dist/queue/providers/sync-queue.provider.d.ts +0 -48
- package/dist/queue/providers/sync-queue.provider.d.ts.map +0 -1
- package/dist/queue/providers/sync-queue.provider.js +0 -89
- package/dist/queue/providers/sync-queue.provider.js.map +0 -1
- package/dist/queue/queue-consumer.d.ts +0 -62
- package/dist/queue/queue-consumer.d.ts.map +0 -1
- package/dist/queue/queue-consumer.js +0 -2
- package/dist/queue/queue-consumer.js.map +0 -1
- package/dist/queue/queue-manager.d.ts +0 -36
- package/dist/queue/queue-manager.d.ts.map +0 -1
- package/dist/queue/queue-manager.js +0 -80
- package/dist/queue/queue-manager.js.map +0 -1
- package/dist/queue/queue-name.d.ts +0 -50
- package/dist/queue/queue-name.d.ts.map +0 -1
- package/dist/queue/queue-name.js +0 -21
- package/dist/queue/queue-name.js.map +0 -1
- package/dist/queue/queue-registry.d.ts +0 -46
- package/dist/queue/queue-registry.d.ts.map +0 -1
- package/dist/queue/queue-registry.js +0 -78
- package/dist/queue/queue-registry.js.map +0 -1
- package/dist/queue/queue-sender.d.ts +0 -38
- package/dist/queue/queue-sender.d.ts.map +0 -1
- package/dist/queue/queue-sender.interface.d.ts +0 -46
- package/dist/queue/queue-sender.interface.d.ts.map +0 -1
- package/dist/queue/queue-sender.interface.js +0 -2
- package/dist/queue/queue-sender.interface.js.map +0 -1
- package/dist/queue/queue-sender.js +0 -54
- package/dist/queue/queue-sender.js.map +0 -1
- package/dist/queue/queue.module.d.ts +0 -80
- package/dist/queue/queue.module.d.ts.map +0 -1
- package/dist/queue/queue.module.js +0 -113
- package/dist/queue/queue.module.js.map +0 -1
- package/dist/queue/queue.tokens.d.ts +0 -7
- package/dist/queue/queue.tokens.d.ts.map +0 -1
- package/dist/queue/queue.tokens.js +0 -6
- package/dist/queue/queue.tokens.js.map +0 -1
- package/dist/queue/services/index.d.ts +0 -2
- package/dist/queue/services/index.d.ts.map +0 -1
- package/dist/queue/services/index.js +0 -2
- package/dist/queue/services/index.js.map +0 -1
- package/dist/queue/services/queue-provider-factory.d.ts +0 -41
- package/dist/queue/services/queue-provider-factory.d.ts.map +0 -1
- package/dist/queue/services/queue-provider-factory.js +0 -78
- package/dist/queue/services/queue-provider-factory.js.map +0 -1
- package/dist/router/constants.d.ts +0 -87
- package/dist/router/constants.d.ts.map +0 -1
- package/dist/router/constants.js +0 -69
- package/dist/router/constants.js.map +0 -1
- package/dist/router/controller.d.ts +0 -56
- package/dist/router/controller.d.ts.map +0 -1
- package/dist/router/controller.js +0 -2
- package/dist/router/controller.js.map +0 -1
- package/dist/router/decorators/controller.decorator.d.ts +0 -46
- package/dist/router/decorators/controller.decorator.d.ts.map +0 -1
- package/dist/router/decorators/controller.decorator.js +0 -70
- package/dist/router/decorators/controller.decorator.js.map +0 -1
- package/dist/router/decorators/http-method.decorator.d.ts +0 -83
- package/dist/router/decorators/http-method.decorator.d.ts.map +0 -1
- package/dist/router/decorators/http-method.decorator.js +0 -113
- package/dist/router/decorators/http-method.decorator.js.map +0 -1
- package/dist/router/decorators/index.d.ts +0 -4
- package/dist/router/decorators/index.d.ts.map +0 -1
- package/dist/router/decorators/index.js +0 -6
- package/dist/router/decorators/index.js.map +0 -1
- package/dist/router/decorators/route.decorator.d.ts +0 -90
- package/dist/router/decorators/route.decorator.d.ts.map +0 -1
- package/dist/router/decorators/route.decorator.js +0 -102
- package/dist/router/decorators/route.decorator.js.map +0 -1
- package/dist/router/errors/controller-method-not-found.error.d.ts +0 -11
- package/dist/router/errors/controller-method-not-found.error.d.ts.map +0 -1
- package/dist/router/errors/controller-method-not-found.error.js +0 -13
- package/dist/router/errors/controller-method-not-found.error.js.map +0 -1
- package/dist/router/errors/controller-registration.error.d.ts +0 -15
- package/dist/router/errors/controller-registration.error.d.ts.map +0 -1
- package/dist/router/errors/controller-registration.error.js +0 -20
- package/dist/router/errors/controller-registration.error.js.map +0 -1
- package/dist/router/errors/hono-app-already-configured.error.d.ts +0 -10
- package/dist/router/errors/hono-app-already-configured.error.d.ts.map +0 -1
- package/dist/router/errors/hono-app-already-configured.error.js +0 -12
- package/dist/router/errors/hono-app-already-configured.error.js.map +0 -1
- package/dist/router/errors/index.d.ts +0 -8
- package/dist/router/errors/index.d.ts.map +0 -1
- package/dist/router/errors/index.js +0 -8
- package/dist/router/errors/index.js.map +0 -1
- package/dist/router/errors/openapi-route-registration.error.d.ts +0 -17
- package/dist/router/errors/openapi-route-registration.error.d.ts.map +0 -1
- package/dist/router/errors/openapi-route-registration.error.js +0 -19
- package/dist/router/errors/openapi-route-registration.error.js.map +0 -1
- package/dist/router/errors/openapi-validation.error.d.ts +0 -19
- package/dist/router/errors/openapi-validation.error.d.ts.map +0 -1
- package/dist/router/errors/openapi-validation.error.js +0 -21
- package/dist/router/errors/openapi-validation.error.js.map +0 -1
- package/dist/router/errors/route-not-found.error.d.ts +0 -11
- package/dist/router/errors/route-not-found.error.d.ts.map +0 -1
- package/dist/router/errors/route-not-found.error.js +0 -13
- package/dist/router/errors/route-not-found.error.js.map +0 -1
- package/dist/router/errors/schema-validation.error.d.ts +0 -11
- package/dist/router/errors/schema-validation.error.d.ts.map +0 -1
- package/dist/router/errors/schema-validation.error.js +0 -17
- package/dist/router/errors/schema-validation.error.js.map +0 -1
- package/dist/router/hono-app.d.ts +0 -38
- package/dist/router/hono-app.d.ts.map +0 -1
- package/dist/router/hono-app.js +0 -126
- package/dist/router/hono-app.js.map +0 -1
- package/dist/router/index.d.ts +0 -16
- package/dist/router/index.d.ts.map +0 -1
- package/dist/router/index.js +0 -21
- package/dist/router/index.js.map +0 -1
- package/dist/router/middleware/index.d.ts +0 -2
- package/dist/router/middleware/index.d.ts.map +0 -1
- package/dist/router/middleware/index.js +0 -4
- package/dist/router/middleware/index.js.map +0 -1
- package/dist/router/middleware/logger.middleware.d.ts +0 -19
- package/dist/router/middleware/logger.middleware.d.ts.map +0 -1
- package/dist/router/middleware/logger.middleware.js +0 -32
- package/dist/router/middleware/logger.middleware.js.map +0 -1
- package/dist/router/middleware.interface.d.ts +0 -38
- package/dist/router/middleware.interface.d.ts.map +0 -1
- package/dist/router/middleware.interface.js +0 -2
- package/dist/router/middleware.interface.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -143
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -179
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/router.tokens.d.ts +0 -11
- package/dist/router/router.tokens.d.ts.map +0 -1
- package/dist/router/router.tokens.js +0 -11
- package/dist/router/router.tokens.js.map +0 -1
- package/dist/router/schemas/common.schemas.d.ts +0 -148
- package/dist/router/schemas/common.schemas.d.ts.map +0 -1
- package/dist/router/schemas/common.schemas.js +0 -88
- package/dist/router/schemas/common.schemas.js.map +0 -1
- package/dist/router/schemas/index.d.ts +0 -2
- package/dist/router/schemas/index.d.ts.map +0 -1
- package/dist/router/schemas/index.js +0 -2
- package/dist/router/schemas/index.js.map +0 -1
- package/dist/router/services/index.d.ts +0 -6
- package/dist/router/services/index.d.ts.map +0 -1
- package/dist/router/services/index.js +0 -6
- package/dist/router/services/index.js.map +0 -1
- package/dist/router/services/route-registration.service.d.ts +0 -129
- package/dist/router/services/route-registration.service.d.ts.map +0 -1
- package/dist/router/services/route-registration.service.js +0 -700
- package/dist/router/services/route-registration.service.js.map +0 -1
- package/dist/router/types.d.ts +0 -187
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -2
- package/dist/router/types.js.map +0 -1
- package/dist/storage/contracts/delete-file.input.d.ts +0 -7
- package/dist/storage/contracts/delete-file.input.d.ts.map +0 -1
- package/dist/storage/contracts/delete-file.input.js +0 -6
- package/dist/storage/contracts/delete-file.input.js.map +0 -1
- package/dist/storage/contracts/download-result.d.ts +0 -28
- package/dist/storage/contracts/download-result.d.ts.map +0 -1
- package/dist/storage/contracts/download-result.js +0 -2
- package/dist/storage/contracts/download-result.js.map +0 -1
- package/dist/storage/contracts/file-exists.input.d.ts +0 -7
- package/dist/storage/contracts/file-exists.input.d.ts.map +0 -1
- package/dist/storage/contracts/file-exists.input.js +0 -6
- package/dist/storage/contracts/file-exists.input.js.map +0 -1
- package/dist/storage/contracts/get-presigned-url.input.d.ts +0 -26
- package/dist/storage/contracts/get-presigned-url.input.d.ts.map +0 -1
- package/dist/storage/contracts/get-presigned-url.input.js +0 -14
- package/dist/storage/contracts/get-presigned-url.input.js.map +0 -1
- package/dist/storage/contracts/index.d.ts +0 -6
- package/dist/storage/contracts/index.d.ts.map +0 -1
- package/dist/storage/contracts/index.js +0 -6
- package/dist/storage/contracts/index.js.map +0 -1
- package/dist/storage/contracts/upload-file.input.d.ts +0 -34
- package/dist/storage/contracts/upload-file.input.d.ts.map +0 -1
- package/dist/storage/contracts/upload-file.input.js +0 -10
- package/dist/storage/contracts/upload-file.input.js.map +0 -1
- package/dist/storage/dom.polyfill.d.ts +0 -2
- package/dist/storage/dom.polyfill.d.ts.map +0 -1
- package/dist/storage/dom.polyfill.js +0 -30
- package/dist/storage/dom.polyfill.js.map +0 -1
- package/dist/storage/errors/disk-not-configured.error.d.ts +0 -5
- package/dist/storage/errors/disk-not-configured.error.d.ts.map +0 -1
- package/dist/storage/errors/disk-not-configured.error.js +0 -7
- package/dist/storage/errors/disk-not-configured.error.js.map +0 -1
- package/dist/storage/errors/file-not-found.error.d.ts +0 -5
- package/dist/storage/errors/file-not-found.error.d.ts.map +0 -1
- package/dist/storage/errors/file-not-found.error.js +0 -8
- package/dist/storage/errors/file-not-found.error.js.map +0 -1
- package/dist/storage/errors/file-too-large.error.d.ts +0 -5
- package/dist/storage/errors/file-too-large.error.d.ts.map +0 -1
- package/dist/storage/errors/file-too-large.error.js +0 -11
- package/dist/storage/errors/file-too-large.error.js.map +0 -1
- package/dist/storage/errors/index.d.ts +0 -9
- package/dist/storage/errors/index.d.ts.map +0 -1
- package/dist/storage/errors/index.js +0 -9
- package/dist/storage/errors/index.js.map +0 -1
- package/dist/storage/errors/invalid-disk.error.d.ts +0 -5
- package/dist/storage/errors/invalid-disk.error.d.ts.map +0 -1
- package/dist/storage/errors/invalid-disk.error.js +0 -8
- package/dist/storage/errors/invalid-disk.error.js.map +0 -1
- package/dist/storage/errors/invalid-file-type.error.d.ts +0 -5
- package/dist/storage/errors/invalid-file-type.error.d.ts.map +0 -1
- package/dist/storage/errors/invalid-file-type.error.js +0 -10
- package/dist/storage/errors/invalid-file-type.error.js.map +0 -1
- package/dist/storage/errors/presigned-url-invalid-expiry.error.d.ts +0 -5
- package/dist/storage/errors/presigned-url-invalid-expiry.error.d.ts.map +0 -1
- package/dist/storage/errors/presigned-url-invalid-expiry.error.js +0 -12
- package/dist/storage/errors/presigned-url-invalid-expiry.error.js.map +0 -1
- package/dist/storage/errors/storage-provider-not-supported.error.d.ts +0 -5
- package/dist/storage/errors/storage-provider-not-supported.error.d.ts.map +0 -1
- package/dist/storage/errors/storage-provider-not-supported.error.js +0 -8
- package/dist/storage/errors/storage-provider-not-supported.error.js.map +0 -1
- package/dist/storage/errors/storage-response-body-missing.error.d.ts +0 -5
- package/dist/storage/errors/storage-response-body-missing.error.d.ts.map +0 -1
- package/dist/storage/errors/storage-response-body-missing.error.js +0 -8
- package/dist/storage/errors/storage-response-body-missing.error.js.map +0 -1
- package/dist/storage/index.d.ts +0 -15
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -18
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/providers/s3-multipart-provider.interface.d.ts +0 -194
- package/dist/storage/providers/s3-multipart-provider.interface.d.ts.map +0 -1
- package/dist/storage/providers/s3-multipart-provider.interface.js +0 -2
- package/dist/storage/providers/s3-multipart-provider.interface.js.map +0 -1
- package/dist/storage/providers/s3-storage.provider.d.ts +0 -77
- package/dist/storage/providers/s3-storage.provider.d.ts.map +0 -1
- package/dist/storage/providers/s3-storage.provider.js +0 -310
- package/dist/storage/providers/s3-storage.provider.js.map +0 -1
- package/dist/storage/providers/storage-provider.interface.d.ts +0 -58
- package/dist/storage/providers/storage-provider.interface.d.ts.map +0 -1
- package/dist/storage/providers/storage-provider.interface.js +0 -2
- package/dist/storage/providers/storage-provider.interface.js.map +0 -1
- package/dist/storage/services/storage-manager.service.d.ts +0 -48
- package/dist/storage/services/storage-manager.service.d.ts.map +0 -1
- package/dist/storage/services/storage-manager.service.js +0 -111
- package/dist/storage/services/storage-manager.service.js.map +0 -1
- package/dist/storage/services/storage.service.d.ts +0 -137
- package/dist/storage/services/storage.service.d.ts.map +0 -1
- package/dist/storage/services/storage.service.js +0 -229
- package/dist/storage/services/storage.service.js.map +0 -1
- package/dist/storage/storage.module.d.ts +0 -52
- package/dist/storage/storage.module.d.ts.map +0 -1
- package/dist/storage/storage.module.js +0 -81
- package/dist/storage/storage.module.js.map +0 -1
- package/dist/storage/storage.tokens.d.ts +0 -10
- package/dist/storage/storage.tokens.d.ts.map +0 -1
- package/dist/storage/storage.tokens.js +0 -10
- package/dist/storage/storage.tokens.js.map +0 -1
- package/dist/storage/types.d.ts +0 -31
- package/dist/storage/types.d.ts.map +0 -1
- package/dist/storage/types.js +0 -2
- package/dist/storage/types.js.map +0 -1
- package/dist/stratal.d.ts +0 -39
- package/dist/stratal.d.ts.map +0 -1
- package/dist/stratal.js +0 -77
- package/dist/stratal.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/websocket/decorators/gateway.decorator.d.ts +0 -39
- package/dist/websocket/decorators/gateway.decorator.d.ts.map +0 -1
- package/dist/websocket/decorators/gateway.decorator.js +0 -55
- package/dist/websocket/decorators/gateway.decorator.js.map +0 -1
- package/dist/websocket/decorators/index.d.ts +0 -3
- package/dist/websocket/decorators/index.d.ts.map +0 -1
- package/dist/websocket/decorators/index.js +0 -3
- package/dist/websocket/decorators/index.js.map +0 -1
- package/dist/websocket/decorators/ws-event.decorator.d.ts +0 -59
- package/dist/websocket/decorators/ws-event.decorator.d.ts.map +0 -1
- package/dist/websocket/decorators/ws-event.decorator.js +0 -94
- package/dist/websocket/decorators/ws-event.decorator.js.map +0 -1
- package/dist/websocket/errors/websocket-body-not-available.error.d.ts +0 -5
- package/dist/websocket/errors/websocket-body-not-available.error.d.ts.map +0 -1
- package/dist/websocket/errors/websocket-body-not-available.error.js +0 -7
- package/dist/websocket/errors/websocket-body-not-available.error.js.map +0 -1
- package/dist/websocket/errors/websocket-duplicate-event-handler.error.d.ts +0 -5
- package/dist/websocket/errors/websocket-duplicate-event-handler.error.d.ts.map +0 -1
- package/dist/websocket/errors/websocket-duplicate-event-handler.error.js +0 -7
- package/dist/websocket/errors/websocket-duplicate-event-handler.error.js.map +0 -1
- package/dist/websocket/gateway-context.d.ts +0 -51
- package/dist/websocket/gateway-context.d.ts.map +0 -1
- package/dist/websocket/gateway-context.js +0 -66
- package/dist/websocket/gateway-context.js.map +0 -1
- package/dist/websocket/index.d.ts +0 -7
- package/dist/websocket/index.d.ts.map +0 -1
- package/dist/websocket/index.js +0 -5
- package/dist/websocket/index.js.map +0 -1
- package/dist/websocket/types.d.ts +0 -7
- package/dist/websocket/types.d.ts.map +0 -1
- package/dist/websocket/types.js +0 -2
- package/dist/websocket/types.js.map +0 -1
- package/dist/workers/index.d.ts +0 -5
- package/dist/workers/index.d.ts.map +0 -1
- package/dist/workers/index.js +0 -5
- package/dist/workers/index.js.map +0 -1
- package/dist/workers/run-in-scope.d.ts +0 -9
- package/dist/workers/run-in-scope.d.ts.map +0 -1
- package/dist/workers/run-in-scope.js +0 -13
- package/dist/workers/run-in-scope.js.map +0 -1
- package/dist/workers/stratal-durable-object.d.ts +0 -28
- package/dist/workers/stratal-durable-object.d.ts.map +0 -1
- package/dist/workers/stratal-durable-object.js +0 -34
- package/dist/workers/stratal-durable-object.js.map +0 -1
- package/dist/workers/stratal-worker-entrypoint.d.ts +0 -27
- package/dist/workers/stratal-worker-entrypoint.d.ts.map +0 -1
- package/dist/workers/stratal-worker-entrypoint.js +0 -28
- package/dist/workers/stratal-worker-entrypoint.js.map +0 -1
- package/dist/workers/stratal-workflow.d.ts +0 -27
- package/dist/workers/stratal-workflow.d.ts.map +0 -1
- package/dist/workers/stratal-workflow.js +0 -28
- package/dist/workers/stratal-workflow.js.map +0 -1
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { S as ApplicationError, b as ERROR_CODES, o as I18N_TOKENS, s as Scope } from "./errors-CtCi1wn6.mjs";
|
|
2
|
+
import { i as Transient, l as DI_TOKENS, n as __decorateParam, r as __decorateMetadata, t as __decorate } from "./decorate-D5j-d9_z.mjs";
|
|
3
|
+
import { r as Module } from "./module-BH7t7BGG.mjs";
|
|
4
|
+
import { inject } from "tsyringe";
|
|
5
|
+
//#region src/queue/consumer-registry.ts
|
|
6
|
+
let ConsumerRegistry = class ConsumerRegistry {
|
|
7
|
+
/** Map from message type to consumers handling that type */
|
|
8
|
+
consumersByType = /* @__PURE__ */ new Map();
|
|
9
|
+
/** Set of all registered consumers (for iteration) */
|
|
10
|
+
allConsumers = /* @__PURE__ */ new Set();
|
|
11
|
+
/**
|
|
12
|
+
* Register a queue consumer
|
|
13
|
+
*
|
|
14
|
+
* Indexes the consumer by each of its declared message types.
|
|
15
|
+
*
|
|
16
|
+
* @param consumer - Queue consumer to register
|
|
17
|
+
*/
|
|
18
|
+
register(consumer) {
|
|
19
|
+
if (this.allConsumers.has(consumer)) return;
|
|
20
|
+
this.allConsumers.add(consumer);
|
|
21
|
+
for (const messageType of consumer.messageTypes) {
|
|
22
|
+
const existing = this.consumersByType.get(messageType) ?? [];
|
|
23
|
+
existing.push(consumer);
|
|
24
|
+
this.consumersByType.set(messageType, existing);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all consumers that can handle a specific message type
|
|
29
|
+
*
|
|
30
|
+
* Returns consumers that either:
|
|
31
|
+
* - Explicitly declare the message type
|
|
32
|
+
* - Use '*' wildcard to handle all types
|
|
33
|
+
*
|
|
34
|
+
* @param messageType - The message type to find consumers for
|
|
35
|
+
* @returns Array of consumers that can handle this message type
|
|
36
|
+
*/
|
|
37
|
+
getConsumers(messageType) {
|
|
38
|
+
const exactMatch = this.consumersByType.get(messageType) ?? [];
|
|
39
|
+
const wildcardMatch = this.consumersByType.get("*") ?? [];
|
|
40
|
+
const combined = new Set([...exactMatch, ...wildcardMatch]);
|
|
41
|
+
return Array.from(combined);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if any consumers can handle a message type
|
|
45
|
+
*
|
|
46
|
+
* @param messageType - The message type to check
|
|
47
|
+
* @returns true if at least one consumer can handle this type
|
|
48
|
+
*/
|
|
49
|
+
hasConsumers(messageType) {
|
|
50
|
+
return this.getConsumers(messageType).length > 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all registered message types
|
|
54
|
+
*
|
|
55
|
+
* @returns Array of message types with registered consumers
|
|
56
|
+
*/
|
|
57
|
+
getMessageTypes() {
|
|
58
|
+
return Array.from(this.consumersByType.keys());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get all registered consumers
|
|
62
|
+
*
|
|
63
|
+
* @returns Array of all registered consumers
|
|
64
|
+
*/
|
|
65
|
+
getAllConsumers() {
|
|
66
|
+
return Array.from(this.allConsumers);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
ConsumerRegistry = __decorate([Transient(DI_TOKENS.ConsumerRegistry)], ConsumerRegistry);
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region src/queue/queue-sender.ts
|
|
72
|
+
/**
|
|
73
|
+
* Queue Sender
|
|
74
|
+
*
|
|
75
|
+
* Implementation of IQueueSender bound to a specific queue name.
|
|
76
|
+
* Created by QueueRegistry for each registered queue.
|
|
77
|
+
*
|
|
78
|
+
* Automatically enriches messages with:
|
|
79
|
+
* - `id`: UUID generated via crypto.randomUUID()
|
|
80
|
+
* - `timestamp`: Current time in milliseconds
|
|
81
|
+
* - `metadata.locale`: Current locale from I18n context
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* // Created by QueueRegistry, not directly instantiated
|
|
86
|
+
* const sender = registry.getQueue('notifications-queue')
|
|
87
|
+
*
|
|
88
|
+
* await sender.dispatch({
|
|
89
|
+
* type: 'email.send',
|
|
90
|
+
* payload: { to: 'user@example.com', subject: 'Hello' }
|
|
91
|
+
* })
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
var QueueSender = class {
|
|
95
|
+
constructor(queueName, provider, i18n) {
|
|
96
|
+
this.queueName = queueName;
|
|
97
|
+
this.provider = provider;
|
|
98
|
+
this.i18n = i18n;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Dispatch a message to this queue.
|
|
102
|
+
*
|
|
103
|
+
* @param message - Message to dispatch (without id/timestamp)
|
|
104
|
+
*/
|
|
105
|
+
async dispatch(message) {
|
|
106
|
+
const metadata = { ...message.metadata };
|
|
107
|
+
if (!metadata.locale) {
|
|
108
|
+
const locale = this.i18n.getLocale();
|
|
109
|
+
if (locale) metadata.locale = locale;
|
|
110
|
+
}
|
|
111
|
+
const fullMessage = {
|
|
112
|
+
id: crypto.randomUUID(),
|
|
113
|
+
timestamp: Date.now(),
|
|
114
|
+
...message,
|
|
115
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : void 0
|
|
116
|
+
};
|
|
117
|
+
await this.provider.send(this.queueName, fullMessage);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/queue/queue.tokens.ts
|
|
122
|
+
const QUEUE_TOKENS = {
|
|
123
|
+
QueueProviderFactory: Symbol.for("stratal:queue:provider:factory"),
|
|
124
|
+
QueueRegistry: Symbol.for("stratal:queue:registry"),
|
|
125
|
+
QueueModuleOptions: Symbol.for("stratal:queue:options")
|
|
126
|
+
};
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/queue/errors/queue-binding-not-found.error.ts
|
|
129
|
+
/**
|
|
130
|
+
* QueueBindingNotFoundError
|
|
131
|
+
*
|
|
132
|
+
* Thrown when attempting to access a Cloudflare Queue binding that hasn't been configured.
|
|
133
|
+
* This typically indicates that the queue binding is missing from wrangler.jsonc
|
|
134
|
+
* or the environment variables are not properly set.
|
|
135
|
+
*/
|
|
136
|
+
var QueueBindingNotFoundError = class extends ApplicationError {
|
|
137
|
+
constructor(queueName, bindingName) {
|
|
138
|
+
super("errors.queueBindingNotFound", ERROR_CODES.SYSTEM.QUEUE_BINDING_NOT_FOUND, {
|
|
139
|
+
queueName,
|
|
140
|
+
bindingName
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
//#endregion
|
|
145
|
+
//#region src/queue/errors/queue-provider-not-supported.error.ts
|
|
146
|
+
/**
|
|
147
|
+
* QueueProviderNotSupportedError
|
|
148
|
+
*
|
|
149
|
+
* Thrown when attempting to use a queue provider that is not supported.
|
|
150
|
+
* Valid providers are: 'cloudflare', 'sync'
|
|
151
|
+
*
|
|
152
|
+
* This typically indicates an invalid QUEUE_PROVIDER environment variable.
|
|
153
|
+
*/
|
|
154
|
+
var QueueProviderNotSupportedError = class extends ApplicationError {
|
|
155
|
+
constructor(provider) {
|
|
156
|
+
super("errors.queueProviderNotSupported", ERROR_CODES.SYSTEM.QUEUE_PROVIDER_NOT_SUPPORTED, { provider });
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
//#endregion
|
|
160
|
+
//#region src/queue/providers/cloudflare-queue.provider.ts
|
|
161
|
+
let CloudflareQueueProvider = class CloudflareQueueProvider {
|
|
162
|
+
constructor(env) {
|
|
163
|
+
this.env = env;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Send a message to a Cloudflare Queue
|
|
167
|
+
*
|
|
168
|
+
* @param queueName - Queue name (e.g., 'notifications-queue')
|
|
169
|
+
* @param message - Complete message with id, timestamp, and payload
|
|
170
|
+
* @throws {QueueBindingNotFoundError} If queue binding is not configured
|
|
171
|
+
*/
|
|
172
|
+
async send(queueName, message) {
|
|
173
|
+
await this.getQueue(queueName).send(message);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Resolve queue binding from Cloudflare environment
|
|
177
|
+
*
|
|
178
|
+
* Converts kebab-case queue name to UPPER_SNAKE_CASE binding name.
|
|
179
|
+
*
|
|
180
|
+
* @param queueName - Queue name (e.g., 'notifications-queue')
|
|
181
|
+
* @returns Cloudflare Queue binding
|
|
182
|
+
* @throws {QueueBindingNotFoundError} If binding not found in env
|
|
183
|
+
*/
|
|
184
|
+
getQueue(queueName) {
|
|
185
|
+
const bindingName = queueName.toUpperCase().replace(/-/g, "_");
|
|
186
|
+
const queue = this.env[bindingName];
|
|
187
|
+
if (!queue) throw new QueueBindingNotFoundError(queueName, bindingName);
|
|
188
|
+
return queue;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
CloudflareQueueProvider = __decorate([
|
|
192
|
+
Transient(),
|
|
193
|
+
__decorateParam(0, inject(DI_TOKENS.CloudflareEnv)),
|
|
194
|
+
__decorateMetadata("design:paramtypes", [Object])
|
|
195
|
+
], CloudflareQueueProvider);
|
|
196
|
+
//#endregion
|
|
197
|
+
//#region src/queue/providers/sync-queue.provider.ts
|
|
198
|
+
var _ref$2;
|
|
199
|
+
let SyncQueueProvider = class SyncQueueProvider {
|
|
200
|
+
constructor(registry) {
|
|
201
|
+
this.registry = registry;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Process a message synchronously
|
|
205
|
+
*
|
|
206
|
+
* Finds all matching consumers by message type and calls their handle() method.
|
|
207
|
+
* If any consumer throws, onError() is called and the error is re-thrown.
|
|
208
|
+
*
|
|
209
|
+
* @param _queueName - Queue name (not used for routing, consumers match by message type)
|
|
210
|
+
* @param message - Complete message with id, timestamp, and payload
|
|
211
|
+
* @throws Re-throws any error from consumer.handle() after calling onError()
|
|
212
|
+
*/
|
|
213
|
+
async send(_queueName, message) {
|
|
214
|
+
const consumers = this.registry.getConsumers(message.type);
|
|
215
|
+
for (const consumer of consumers) try {
|
|
216
|
+
await consumer.handle(message);
|
|
217
|
+
} catch (error) {
|
|
218
|
+
const errorInstance = error instanceof Error ? error : new Error(String(error));
|
|
219
|
+
if (consumer.onError) await consumer.onError(errorInstance, message);
|
|
220
|
+
throw errorInstance;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
SyncQueueProvider = __decorate([
|
|
225
|
+
Transient(),
|
|
226
|
+
__decorateParam(0, inject(DI_TOKENS.ConsumerRegistry)),
|
|
227
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$2 = typeof ConsumerRegistry !== "undefined" && ConsumerRegistry) === "function" ? _ref$2 : Object])
|
|
228
|
+
], SyncQueueProvider);
|
|
229
|
+
//#endregion
|
|
230
|
+
//#region src/queue/services/queue-provider-factory.ts
|
|
231
|
+
var _ref$1;
|
|
232
|
+
let QueueProviderFactory = class QueueProviderFactory {
|
|
233
|
+
constructor(env, registry, options) {
|
|
234
|
+
this.env = env;
|
|
235
|
+
this.registry = registry;
|
|
236
|
+
this.options = options;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Create a queue provider based on module configuration
|
|
240
|
+
*
|
|
241
|
+
* @returns Queue provider instance
|
|
242
|
+
* @throws {QueueProviderNotSupportedError} If provider type is not supported
|
|
243
|
+
*/
|
|
244
|
+
create() {
|
|
245
|
+
const providerType = this.options?.provider ?? "cloudflare";
|
|
246
|
+
switch (providerType) {
|
|
247
|
+
case "cloudflare": return new CloudflareQueueProvider(this.env);
|
|
248
|
+
case "sync": return new SyncQueueProvider(this.registry);
|
|
249
|
+
default: throw new QueueProviderNotSupportedError(providerType);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
QueueProviderFactory = __decorate([
|
|
254
|
+
Transient(QUEUE_TOKENS.QueueProviderFactory),
|
|
255
|
+
__decorateParam(0, inject(DI_TOKENS.CloudflareEnv)),
|
|
256
|
+
__decorateParam(1, inject(DI_TOKENS.ConsumerRegistry)),
|
|
257
|
+
__decorateParam(2, inject(QUEUE_TOKENS.QueueModuleOptions, { isOptional: true })),
|
|
258
|
+
__decorateMetadata("design:paramtypes", [
|
|
259
|
+
Object,
|
|
260
|
+
typeof (_ref$1 = typeof ConsumerRegistry !== "undefined" && ConsumerRegistry) === "function" ? _ref$1 : Object,
|
|
261
|
+
Object
|
|
262
|
+
])
|
|
263
|
+
], QueueProviderFactory);
|
|
264
|
+
//#endregion
|
|
265
|
+
//#region src/queue/queue-registry.ts
|
|
266
|
+
var _ref;
|
|
267
|
+
let QueueRegistry = class QueueRegistry {
|
|
268
|
+
provider;
|
|
269
|
+
senders = /* @__PURE__ */ new Map();
|
|
270
|
+
constructor(providerFactory, i18n) {
|
|
271
|
+
this.i18n = i18n;
|
|
272
|
+
this.provider = providerFactory.create();
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get or create a QueueSender for the specified queue name.
|
|
276
|
+
*
|
|
277
|
+
* Senders are cached per queue name within the request scope.
|
|
278
|
+
*
|
|
279
|
+
* @param queueName - The queue name to get a sender for
|
|
280
|
+
* @returns QueueSender bound to the specified queue
|
|
281
|
+
*/
|
|
282
|
+
getQueue(queueName) {
|
|
283
|
+
let sender = this.senders.get(queueName);
|
|
284
|
+
if (!sender) {
|
|
285
|
+
sender = new QueueSender(queueName, this.provider, this.i18n);
|
|
286
|
+
this.senders.set(queueName, sender);
|
|
287
|
+
}
|
|
288
|
+
return sender;
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
QueueRegistry = __decorate([
|
|
292
|
+
Transient(QUEUE_TOKENS.QueueRegistry),
|
|
293
|
+
__decorateParam(0, inject(QUEUE_TOKENS.QueueProviderFactory)),
|
|
294
|
+
__decorateParam(1, inject(I18N_TOKENS.I18nService)),
|
|
295
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref = typeof QueueProviderFactory !== "undefined" && QueueProviderFactory) === "function" ? _ref : Object, Object])
|
|
296
|
+
], QueueRegistry);
|
|
297
|
+
//#endregion
|
|
298
|
+
//#region src/queue/queue.module.ts
|
|
299
|
+
/**
|
|
300
|
+
* Queue Module
|
|
301
|
+
*
|
|
302
|
+
* Provides declarative queue infrastructure with provider abstraction.
|
|
303
|
+
*
|
|
304
|
+
* **Usage:**
|
|
305
|
+
* ```typescript
|
|
306
|
+
* // 1. Configure provider (once, in app root)
|
|
307
|
+
* QueueModule.forRootAsync({
|
|
308
|
+
* inject: [CONFIG_TOKENS.ConfigService],
|
|
309
|
+
* useFactory: (config) => ({ provider: config.get('queue').provider })
|
|
310
|
+
* })
|
|
311
|
+
*
|
|
312
|
+
* // 2. Register queues (queue name IS the injection token)
|
|
313
|
+
* QueueModule.registerQueue('notifications-queue')
|
|
314
|
+
* QueueModule.registerQueue('batch-notifications-queue')
|
|
315
|
+
*
|
|
316
|
+
* // 3. Inject and use
|
|
317
|
+
* constructor(@InjectQueue('notifications-queue') private queue: IQueueSender) {}
|
|
318
|
+
* await this.queue.dispatch({ type: 'email.send', payload: {...} })
|
|
319
|
+
* ```
|
|
320
|
+
*
|
|
321
|
+
* **Providers:**
|
|
322
|
+
* - `cloudflare`: Production provider using Cloudflare Queue bindings
|
|
323
|
+
* - `sync`: Testing provider that processes messages immediately
|
|
324
|
+
*/
|
|
325
|
+
var _QueueModule;
|
|
326
|
+
let QueueModule = _QueueModule = class QueueModule {
|
|
327
|
+
/**
|
|
328
|
+
* Configure queue infrastructure with async factory.
|
|
329
|
+
*
|
|
330
|
+
* Use when provider configuration depends on other services like ConfigService.
|
|
331
|
+
*
|
|
332
|
+
* @param options - Async configuration with factory and inject tokens
|
|
333
|
+
* @returns Dynamic module with queue infrastructure
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```typescript
|
|
337
|
+
* QueueModule.forRootAsync({
|
|
338
|
+
* inject: [CONFIG_TOKENS.ConfigService],
|
|
339
|
+
* useFactory: (config: IConfigService) => ({
|
|
340
|
+
* provider: config.get('queue').provider
|
|
341
|
+
* })
|
|
342
|
+
* })
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
345
|
+
static forRootAsync(options) {
|
|
346
|
+
return {
|
|
347
|
+
module: _QueueModule,
|
|
348
|
+
providers: [{
|
|
349
|
+
provide: QUEUE_TOKENS.QueueModuleOptions,
|
|
350
|
+
useFactory: options.useFactory,
|
|
351
|
+
inject: options.inject
|
|
352
|
+
}]
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Register a queue for injection.
|
|
357
|
+
*
|
|
358
|
+
* The queue name serves as both the identifier and the DI injection token.
|
|
359
|
+
* Queue names are typed via module augmentation of QueueNames interface.
|
|
360
|
+
*
|
|
361
|
+
* @param name - Queue name (typed with autocomplete if QueueNames is augmented)
|
|
362
|
+
* @returns Dynamic module that provides the queue sender
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* ```typescript
|
|
366
|
+
* // In AppModule imports
|
|
367
|
+
* QueueModule.registerQueue('notifications-queue')
|
|
368
|
+
*
|
|
369
|
+
* // Then inject using the queue name
|
|
370
|
+
* constructor(@InjectQueue('notifications-queue') private queue: IQueueSender) {}
|
|
371
|
+
* ```
|
|
372
|
+
*/
|
|
373
|
+
static registerQueue(name) {
|
|
374
|
+
return {
|
|
375
|
+
module: _QueueModule,
|
|
376
|
+
providers: [{
|
|
377
|
+
provide: name,
|
|
378
|
+
useFactory: (registry) => registry.getQueue(name),
|
|
379
|
+
inject: [QUEUE_TOKENS.QueueRegistry]
|
|
380
|
+
}]
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
QueueModule = _QueueModule = __decorate([Module({ providers: [
|
|
385
|
+
{
|
|
386
|
+
provide: DI_TOKENS.ConsumerRegistry,
|
|
387
|
+
useClass: ConsumerRegistry,
|
|
388
|
+
scope: Scope.Singleton
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
provide: QUEUE_TOKENS.QueueProviderFactory,
|
|
392
|
+
useClass: QueueProviderFactory,
|
|
393
|
+
scope: Scope.Singleton
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
provide: QUEUE_TOKENS.QueueRegistry,
|
|
397
|
+
useClass: QueueRegistry
|
|
398
|
+
}
|
|
399
|
+
] })], QueueModule);
|
|
400
|
+
//#endregion
|
|
401
|
+
export { CloudflareQueueProvider as a, QUEUE_TOKENS as c, SyncQueueProvider as i, QueueSender as l, QueueRegistry as n, QueueProviderNotSupportedError as o, QueueProviderFactory as r, QueueBindingNotFoundError as s, QueueModule as t, ConsumerRegistry as u };
|
|
402
|
+
|
|
403
|
+
//# sourceMappingURL=queue.module-BdXWUvIM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.module-BdXWUvIM.mjs","names":[],"sources":["../src/queue/consumer-registry.ts","../src/queue/queue-sender.ts","../src/queue/queue.tokens.ts","../src/queue/errors/queue-binding-not-found.error.ts","../src/queue/errors/queue-provider-not-supported.error.ts","../src/queue/providers/cloudflare-queue.provider.ts","../src/queue/providers/sync-queue.provider.ts","../src/queue/services/queue-provider-factory.ts","../src/queue/queue-registry.ts","../src/queue/queue.module.ts"],"sourcesContent":["import { Transient } from '../di/decorators'\nimport { DI_TOKENS } from '../di/tokens'\nimport type { IQueueConsumer } from './queue-consumer'\n\n/**\n * Consumer Registry\n *\n * Singleton service that holds all registered queue consumers indexed by message type.\n * Consumers declare the message types they handle, and this registry routes messages\n * to the appropriate consumers based on their types.\n *\n * **Message-Type Routing:**\n * - Consumers declare `messageTypes` array (e.g., `['email.send', 'email.batch.send']`)\n * - When a message arrives, consumers matching the message type are invoked\n * - A consumer can handle messages from ANY queue (routing is by type, not queue)\n * - Use `'*'` as a wildcard to handle all message types\n *\n * @example Consumer registration\n * ```typescript\n * // In consumer.ts\n * @Transient()\n * export class EmailConsumer implements IQueueConsumer {\n * readonly messageTypes = ['email.send', 'email.batch.send']\n * // ...\n * }\n *\n * // In module.ts\n * @Module({\n * consumers: [EmailConsumer]\n * })\n *\n * // Application auto-registers via ConsumerRegistry\n * this.consumerRegistry.register(consumer)\n * ```\n */\n@Transient(DI_TOKENS.ConsumerRegistry)\nexport class ConsumerRegistry {\n /** Map from message type to consumers handling that type */\n private consumersByType = new Map<string, IQueueConsumer[]>()\n\n /** Set of all registered consumers (for iteration) */\n private allConsumers = new Set<IQueueConsumer>()\n\n /**\n * Register a queue consumer\n *\n * Indexes the consumer by each of its declared message types.\n *\n * @param consumer - Queue consumer to register\n */\n register(consumer: IQueueConsumer): void {\n if (this.allConsumers.has(consumer)) {\n return // Already registered\n }\n\n this.allConsumers.add(consumer)\n\n for (const messageType of consumer.messageTypes) {\n const existing = this.consumersByType.get(messageType) ?? []\n existing.push(consumer)\n this.consumersByType.set(messageType, existing)\n }\n }\n\n /**\n * Get all consumers that can handle a specific message type\n *\n * Returns consumers that either:\n * - Explicitly declare the message type\n * - Use '*' wildcard to handle all types\n *\n * @param messageType - The message type to find consumers for\n * @returns Array of consumers that can handle this message type\n */\n getConsumers(messageType: string): IQueueConsumer[] {\n const exactMatch = this.consumersByType.get(messageType) ?? []\n const wildcardMatch = this.consumersByType.get('*') ?? []\n\n // Combine and dedupe\n const combined = new Set([...exactMatch, ...wildcardMatch])\n return Array.from(combined)\n }\n\n /**\n * Check if any consumers can handle a message type\n *\n * @param messageType - The message type to check\n * @returns true if at least one consumer can handle this type\n */\n hasConsumers(messageType: string): boolean {\n return this.getConsumers(messageType).length > 0\n }\n\n /**\n * Get all registered message types\n *\n * @returns Array of message types with registered consumers\n */\n getMessageTypes(): string[] {\n return Array.from(this.consumersByType.keys())\n }\n\n /**\n * Get all registered consumers\n *\n * @returns Array of all registered consumers\n */\n getAllConsumers(): IQueueConsumer[] {\n return Array.from(this.allConsumers)\n }\n}\n","import type { II18nService } from '../i18n/i18n.types'\nimport type { IQueueProvider } from './providers'\nimport type { QueueMessage } from './queue-consumer'\nimport type { DispatchMessage, IQueueSender } from './queue-sender.interface'\n\n/**\n * Queue Sender\n *\n * Implementation of IQueueSender bound to a specific queue name.\n * Created by QueueRegistry for each registered queue.\n *\n * Automatically enriches messages with:\n * - `id`: UUID generated via crypto.randomUUID()\n * - `timestamp`: Current time in milliseconds\n * - `metadata.locale`: Current locale from I18n context\n *\n * @example\n * ```typescript\n * // Created by QueueRegistry, not directly instantiated\n * const sender = registry.getQueue('notifications-queue')\n *\n * await sender.dispatch({\n * type: 'email.send',\n * payload: { to: 'user@example.com', subject: 'Hello' }\n * })\n * ```\n */\nexport class QueueSender implements IQueueSender {\n constructor(\n private readonly queueName: string,\n private readonly provider: IQueueProvider,\n private readonly i18n: II18nService\n ) {}\n\n /**\n * Dispatch a message to this queue.\n *\n * @param message - Message to dispatch (without id/timestamp)\n */\n async dispatch<T>(message: DispatchMessage<T>): Promise<void> {\n const metadata = { ...message.metadata }\n\n if (!metadata.locale) {\n const locale = this.i18n.getLocale()\n if (locale) {\n metadata.locale = locale\n }\n }\n\n const fullMessage: QueueMessage<T> = {\n id: crypto.randomUUID(),\n timestamp: Date.now(),\n ...message,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined\n }\n\n await this.provider.send(this.queueName, fullMessage)\n }\n}\n","export const QUEUE_TOKENS = {\n QueueProviderFactory: Symbol.for('stratal:queue:provider:factory'),\n QueueRegistry: Symbol.for('stratal:queue:registry'),\n QueueModuleOptions: Symbol.for('stratal:queue:options'),\n} as const\n\nexport type QueueToken = (typeof QUEUE_TOKENS)[keyof typeof QUEUE_TOKENS]\n","import { ApplicationError, ERROR_CODES } from '../../errors'\n\n/**\n * QueueBindingNotFoundError\n *\n * Thrown when attempting to access a Cloudflare Queue binding that hasn't been configured.\n * This typically indicates that the queue binding is missing from wrangler.jsonc\n * or the environment variables are not properly set.\n */\nexport class QueueBindingNotFoundError extends ApplicationError {\n constructor(queueName: string, bindingName: string) {\n super(\n 'errors.queueBindingNotFound',\n ERROR_CODES.SYSTEM.QUEUE_BINDING_NOT_FOUND,\n { queueName, bindingName }\n )\n }\n}\n","import { ApplicationError, ERROR_CODES } from '../../errors'\n\n/**\n * QueueProviderNotSupportedError\n *\n * Thrown when attempting to use a queue provider that is not supported.\n * Valid providers are: 'cloudflare', 'sync'\n *\n * This typically indicates an invalid QUEUE_PROVIDER environment variable.\n */\nexport class QueueProviderNotSupportedError extends ApplicationError {\n constructor(provider: string) {\n super(\n 'errors.queueProviderNotSupported',\n ERROR_CODES.SYSTEM.QUEUE_PROVIDER_NOT_SUPPORTED,\n { provider }\n )\n }\n}\n","import { inject } from 'tsyringe'\nimport { type StratalEnv } from '../../env'\nimport { Transient } from '../../di/decorators'\nimport { DI_TOKENS } from '../../di/tokens'\nimport { QueueBindingNotFoundError } from '../errors'\nimport type { QueueMessage } from '../queue-consumer'\nimport type { IQueueProvider } from './queue-provider.interface'\n\n/**\n * Cloudflare Queue Provider\n *\n * Sends messages to Cloudflare Queues by resolving bindings from the environment.\n * Used in production environments where Cloudflare Workers handle queue processing.\n *\n * **Binding Resolution:**\n * Queue names are converted to binding names:\n * - `notifications-queue` → `NOTIFICATIONS_QUEUE`\n *\n * @example\n * ```typescript\n * const provider = new CloudflareQueueProvider(env)\n * await provider.send('notifications-queue', message)\n * ```\n */\n@Transient()\nexport class CloudflareQueueProvider implements IQueueProvider {\n constructor(\n @inject(DI_TOKENS.CloudflareEnv) private readonly env: StratalEnv\n ) { }\n\n /**\n * Send a message to a Cloudflare Queue\n *\n * @param queueName - Queue name (e.g., 'notifications-queue')\n * @param message - Complete message with id, timestamp, and payload\n * @throws {QueueBindingNotFoundError} If queue binding is not configured\n */\n async send<T>(queueName: string, message: QueueMessage<T>): Promise<void> {\n const queue = this.getQueue(queueName)\n await queue.send(message)\n }\n\n /**\n * Resolve queue binding from Cloudflare environment\n *\n * Converts kebab-case queue name to UPPER_SNAKE_CASE binding name.\n *\n * @param queueName - Queue name (e.g., 'notifications-queue')\n * @returns Cloudflare Queue binding\n * @throws {QueueBindingNotFoundError} If binding not found in env\n */\n private getQueue(queueName: string): Queue {\n const bindingName = queueName.toUpperCase().replace(/-/g, '_')\n const queue = (this.env as unknown as Record<string, unknown>)[bindingName] as Queue | undefined\n\n if (!queue) {\n throw new QueueBindingNotFoundError(queueName, bindingName)\n }\n\n return queue\n }\n}\n","import { inject } from 'tsyringe'\nimport { Transient } from '../../di/decorators'\nimport { DI_TOKENS } from '../../di/tokens'\nimport { ConsumerRegistry } from '../consumer-registry'\nimport type { QueueMessage } from '../queue-consumer'\nimport type { IQueueProvider } from './queue-provider.interface'\n\n/**\n * Sync Queue Provider\n *\n * Processes messages immediately by finding matching consumers and calling\n * their handle() method directly. Used for testing and development where\n * real queue infrastructure is not available.\n *\n * **Behavior:**\n * - Messages are processed synchronously when send() is called\n * - Matching consumers are found via ConsumerRegistry by message type\n * - All matching consumers are called sequentially\n * - Errors are re-thrown after onError() is called (fail-fast for testing)\n *\n * **Consumer Matching:**\n * - Consumers are matched by message type, not queue name\n * - Wildcard ('*') matches all message types\n *\n * @example Testing with sync provider\n * ```typescript\n * const provider = new SyncQueueProvider(registry)\n * await provider.send('notifications-queue', {\n * id: '123',\n * timestamp: Date.now(),\n * type: 'email.send',\n * payload: { to: 'test@example.com' }\n * })\n * // Consumer's handle() is called immediately!\n * ```\n */\n@Transient()\nexport class SyncQueueProvider implements IQueueProvider {\n constructor(\n @inject(DI_TOKENS.ConsumerRegistry) private readonly registry: ConsumerRegistry\n ) {}\n\n /**\n * Process a message synchronously\n *\n * Finds all matching consumers by message type and calls their handle() method.\n * If any consumer throws, onError() is called and the error is re-thrown.\n *\n * @param _queueName - Queue name (not used for routing, consumers match by message type)\n * @param message - Complete message with id, timestamp, and payload\n * @throws Re-throws any error from consumer.handle() after calling onError()\n */\n async send<T>(_queueName: string, message: QueueMessage<T>): Promise<void> {\n // Consumers are matched by message type, not queue name\n const consumers = this.registry.getConsumers(message.type)\n\n // Process synchronously - call each matching consumer\n for (const consumer of consumers) {\n try {\n await consumer.handle(message)\n } catch (error) {\n const errorInstance = error instanceof Error\n ? error\n : new Error(String(error))\n\n // Call onError hook if defined\n if (consumer.onError) {\n await consumer.onError(errorInstance, message)\n }\n\n // Re-throw for fail-fast behavior in tests\n throw errorInstance\n }\n }\n }\n}\n","import { inject } from 'tsyringe'\nimport { type StratalEnv } from '../../env'\nimport { Transient } from '../../di/decorators'\nimport { DI_TOKENS } from '../../di/tokens'\nimport { ConsumerRegistry } from '../consumer-registry'\nimport { QueueProviderNotSupportedError } from '../errors'\nimport { CloudflareQueueProvider, SyncQueueProvider, type IQueueProvider } from '../providers'\nimport type { QueueModuleOptions } from '../queue.module'\nimport { QUEUE_TOKENS } from '../queue.tokens'\n\n/**\n * Queue Provider Factory\n *\n * Creates the appropriate queue provider based on configuration provided\n * via QueueModule.forRootAsync().\n *\n * **Provider Selection:**\n * - `cloudflare`: Production provider using Cloudflare Queue bindings\n * - `sync`: Testing provider that processes messages immediately\n *\n * @example\n * ```typescript\n * // Configuration via QueueModule.forRootAsync()\n * QueueModule.forRootAsync({\n * inject: [CONFIG_TOKENS.ConfigService],\n * useFactory: (config) => ({ provider: config.get('queue').provider })\n * })\n *\n * // Factory usage (internal)\n * const factory = container.resolve(QueueProviderFactory)\n * const provider = factory.create()\n * ```\n */\n@Transient(QUEUE_TOKENS.QueueProviderFactory)\nexport class QueueProviderFactory {\n constructor(\n @inject(DI_TOKENS.CloudflareEnv) private readonly env: StratalEnv,\n @inject(DI_TOKENS.ConsumerRegistry) private readonly registry: ConsumerRegistry,\n @inject(QUEUE_TOKENS.QueueModuleOptions, { isOptional: true }) private readonly options?: QueueModuleOptions,\n ) { }\n\n /**\n * Create a queue provider based on module configuration\n *\n * @returns Queue provider instance\n * @throws {QueueProviderNotSupportedError} If provider type is not supported\n */\n create(): IQueueProvider {\n const providerType = this.options?.provider ?? 'cloudflare'\n\n switch (providerType) {\n case 'cloudflare':\n return new CloudflareQueueProvider(this.env)\n\n case 'sync':\n return new SyncQueueProvider(this.registry)\n\n default:\n throw new QueueProviderNotSupportedError(providerType)\n }\n }\n}\n","import { inject } from 'tsyringe'\nimport { Transient } from '../di/decorators'\nimport { I18N_TOKENS } from '../i18n/i18n.tokens'\nimport type { II18nService } from '../i18n/i18n.types'\nimport type { IQueueProvider } from './providers'\nimport type { IQueueSender } from './queue-sender.interface'\nimport { QueueSender } from './queue-sender'\nimport { QUEUE_TOKENS } from './queue.tokens'\nimport { QueueProviderFactory } from './services'\n\n/**\n * Queue Registry\n *\n * Request-scoped factory service for creating QueueSender instances.\n * Caches senders per queue name within the request scope.\n *\n * This service is used internally by QueueModule.registerQueue() to provide\n * IQueueSender instances for each registered queue.\n *\n * **Why request-scoped?**\n * - Needs access to I18nService for locale-aware message metadata\n * - Provider is created once per request for consistency\n * - Queue senders are cached per request to avoid recreating them\n *\n * @example\n * ```typescript\n * // Used internally by QueueModule.registerQueue()\n * QueueModule.registerQueue('notifications-queue')\n *\n * // The module creates a factory provider:\n * {\n * provide: 'notifications-queue',\n * useFactory: (registry: QueueRegistry) => registry.getQueue('notifications-queue'),\n * inject: [QUEUE_TOKENS.QueueRegistry],\n * }\n * ```\n */\n@Transient(QUEUE_TOKENS.QueueRegistry)\nexport class QueueRegistry {\n private readonly provider: IQueueProvider\n private readonly senders = new Map<string, IQueueSender>()\n\n constructor(\n @inject(QUEUE_TOKENS.QueueProviderFactory) providerFactory: QueueProviderFactory,\n @inject(I18N_TOKENS.I18nService) private readonly i18n: II18nService\n ) {\n this.provider = providerFactory.create()\n }\n\n /**\n * Get or create a QueueSender for the specified queue name.\n *\n * Senders are cached per queue name within the request scope.\n *\n * @param queueName - The queue name to get a sender for\n * @returns QueueSender bound to the specified queue\n */\n getQueue(queueName: string): IQueueSender {\n let sender = this.senders.get(queueName)\n\n if (!sender) {\n sender = new QueueSender(queueName, this.provider, this.i18n)\n this.senders.set(queueName, sender)\n }\n\n return sender\n }\n}\n","/**\n * Queue Module\n *\n * Provides declarative queue infrastructure with provider abstraction.\n *\n * **Usage:**\n * ```typescript\n * // 1. Configure provider (once, in app root)\n * QueueModule.forRootAsync({\n * inject: [CONFIG_TOKENS.ConfigService],\n * useFactory: (config) => ({ provider: config.get('queue').provider })\n * })\n *\n * // 2. Register queues (queue name IS the injection token)\n * QueueModule.registerQueue('notifications-queue')\n * QueueModule.registerQueue('batch-notifications-queue')\n *\n * // 3. Inject and use\n * constructor(@InjectQueue('notifications-queue') private queue: IQueueSender) {}\n * await this.queue.dispatch({ type: 'email.send', payload: {...} })\n * ```\n *\n * **Providers:**\n * - `cloudflare`: Production provider using Cloudflare Queue bindings\n * - `sync`: Testing provider that processes messages immediately\n */\n\nimport { DI_TOKENS } from '../di/tokens'\nimport { Scope } from '../di/types'\nimport { Module } from '../module'\nimport type { AsyncModuleOptions, DynamicModule, InjectionToken } from '../module/types'\nimport { ConsumerRegistry } from './consumer-registry'\nimport type { QueueName } from './queue-name'\nimport { QueueRegistry } from './queue-registry'\nimport type { IQueueSender } from './queue-sender.interface'\nimport { QUEUE_TOKENS } from './queue.tokens'\nimport { QueueProviderFactory } from './services'\n\n/**\n * Queue module configuration options\n */\nexport interface QueueModuleOptions {\n /**\n * Queue provider type\n * - 'cloudflare': Production provider using Cloudflare Queue bindings\n * - 'sync': Testing provider that processes messages immediately\n */\n provider: 'cloudflare' | 'sync'\n}\n\n@Module({\n providers: [\n { provide: DI_TOKENS.ConsumerRegistry, useClass: ConsumerRegistry, scope: Scope.Singleton },\n { provide: QUEUE_TOKENS.QueueProviderFactory, useClass: QueueProviderFactory, scope: Scope.Singleton },\n { provide: QUEUE_TOKENS.QueueRegistry, useClass: QueueRegistry },\n ],\n})\nexport class QueueModule {\n /**\n * Configure queue infrastructure with async factory.\n *\n * Use when provider configuration depends on other services like ConfigService.\n *\n * @param options - Async configuration with factory and inject tokens\n * @returns Dynamic module with queue infrastructure\n *\n * @example\n * ```typescript\n * QueueModule.forRootAsync({\n * inject: [CONFIG_TOKENS.ConfigService],\n * useFactory: (config: IConfigService) => ({\n * provider: config.get('queue').provider\n * })\n * })\n * ```\n */\n static forRootAsync(options: AsyncModuleOptions<QueueModuleOptions>): DynamicModule {\n return {\n module: QueueModule,\n providers: [\n {\n provide: QUEUE_TOKENS.QueueModuleOptions,\n useFactory: options.useFactory,\n inject: options.inject,\n },\n ],\n }\n }\n\n /**\n * Register a queue for injection.\n *\n * The queue name serves as both the identifier and the DI injection token.\n * Queue names are typed via module augmentation of QueueNames interface.\n *\n * @param name - Queue name (typed with autocomplete if QueueNames is augmented)\n * @returns Dynamic module that provides the queue sender\n *\n * @example\n * ```typescript\n * // In AppModule imports\n * QueueModule.registerQueue('notifications-queue')\n *\n * // Then inject using the queue name\n * constructor(@InjectQueue('notifications-queue') private queue: IQueueSender) {}\n * ```\n */\n static registerQueue(name: QueueName): DynamicModule {\n return {\n module: QueueModule,\n providers: [\n {\n provide: name as InjectionToken<IQueueSender>,\n useFactory: (registry: QueueRegistry) => registry.getQueue(name),\n inject: [QUEUE_TOKENS.QueueRegistry],\n },\n ],\n }\n }\n}\n"],"mappings":";;;;;AAoCO,IAAA,mBAAA,MAAM,iBAAiB;;CAE5B,kCAA0B,IAAI,KAA+B;;CAG7D,+BAAuB,IAAI,KAAqB;;;;;;;;CAShD,SAAS,UAAgC;AACvC,MAAI,KAAK,aAAa,IAAI,SAAS,CACjC;AAGF,OAAK,aAAa,IAAI,SAAS;AAE/B,OAAK,MAAM,eAAe,SAAS,cAAc;GAC/C,MAAM,WAAW,KAAK,gBAAgB,IAAI,YAAY,IAAI,EAAE;AAC5D,YAAS,KAAK,SAAS;AACvB,QAAK,gBAAgB,IAAI,aAAa,SAAS;;;;;;;;;;;;;CAcnD,aAAa,aAAuC;EAClD,MAAM,aAAa,KAAK,gBAAgB,IAAI,YAAY,IAAI,EAAE;EAC9D,MAAM,gBAAgB,KAAK,gBAAgB,IAAI,IAAI,IAAI,EAAE;EAGzD,MAAM,WAAW,IAAI,IAAI,CAAC,GAAG,YAAY,GAAG,cAAc,CAAC;AAC3D,SAAO,MAAM,KAAK,SAAS;;;;;;;;CAS7B,aAAa,aAA8B;AACzC,SAAO,KAAK,aAAa,YAAY,CAAC,SAAS;;;;;;;CAQjD,kBAA4B;AAC1B,SAAO,MAAM,KAAK,KAAK,gBAAgB,MAAM,CAAC;;;;;;;CAQhD,kBAAoC;AAClC,SAAO,MAAM,KAAK,KAAK,aAAa;;;+BAzEvC,UAAU,UAAU,iBAAiB,CAAA,EAAA,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACRtC,IAAa,cAAb,MAAiD;CAC/C,YACE,WACA,UACA,MACA;AAHiB,OAAA,YAAA;AACA,OAAA,WAAA;AACA,OAAA,OAAA;;;;;;;CAQnB,MAAM,SAAY,SAA4C;EAC5D,MAAM,WAAW,EAAE,GAAG,QAAQ,UAAU;AAExC,MAAI,CAAC,SAAS,QAAQ;GACpB,MAAM,SAAS,KAAK,KAAK,WAAW;AACpC,OAAI,OACF,UAAS,SAAS;;EAItB,MAAM,cAA+B;GACnC,IAAI,OAAO,YAAY;GACvB,WAAW,KAAK,KAAK;GACrB,GAAG;GACH,UAAU,OAAO,KAAK,SAAS,CAAC,SAAS,IAAI,WAAW,KAAA;GACzD;AAED,QAAM,KAAK,SAAS,KAAK,KAAK,WAAW,YAAY;;;;;ACxDzD,MAAa,eAAe;CAC1B,sBAAsB,OAAO,IAAI,iCAAiC;CAClE,eAAe,OAAO,IAAI,yBAAyB;CACnD,oBAAoB,OAAO,IAAI,wBAAwB;CACxD;;;;;;;;;;ACKD,IAAa,4BAAb,cAA+C,iBAAiB;CAC9D,YAAY,WAAmB,aAAqB;AAClD,QACE,+BACA,YAAY,OAAO,yBACnB;GAAE;GAAW;GAAa,CAC3B;;;;;;;;;;;;;ACLL,IAAa,iCAAb,cAAoD,iBAAiB;CACnE,YAAY,UAAkB;AAC5B,QACE,oCACA,YAAY,OAAO,8BACnB,EAAE,UAAU,CACb;;;;;ACSE,IAAA,0BAAA,MAAM,wBAAkD;CAC7D,YACE,KACA;AADkD,OAAA,MAAA;;;;;;;;;CAUpD,MAAM,KAAQ,WAAmB,SAAyC;AAExE,QADc,KAAK,SAAS,UAAU,CAC1B,KAAK,QAAQ;;;;;;;;;;;CAY3B,SAAiB,WAA0B;EACzC,MAAM,cAAc,UAAU,aAAa,CAAC,QAAQ,MAAM,IAAI;EAC9D,MAAM,QAAS,KAAK,IAA2C;AAE/D,MAAI,CAAC,MACH,OAAM,IAAI,0BAA0B,WAAW,YAAY;AAG7D,SAAO;;;;CAnCV,WAAW;oBAGP,OAAO,UAAU,cAAc,CAAA;;;;;;ACU7B,IAAA,oBAAA,MAAM,kBAA4C;CACvD,YACE,UACA;AADqD,OAAA,WAAA;;;;;;;;;;;;CAavD,MAAM,KAAQ,YAAoB,SAAyC;EAEzE,MAAM,YAAY,KAAK,SAAS,aAAa,QAAQ,KAAK;AAG1D,OAAK,MAAM,YAAY,UACrB,KAAI;AACF,SAAM,SAAS,OAAO,QAAQ;WACvB,OAAO;GACd,MAAM,gBAAgB,iBAAiB,QACnC,QACA,IAAI,MAAM,OAAO,MAAM,CAAC;AAG5B,OAAI,SAAS,QACX,OAAM,SAAS,QAAQ,eAAe,QAAQ;AAIhD,SAAM;;;;;CAnCb,WAAW;oBAGP,OAAO,UAAU,iBAAiB,CAAA;;;;;;ACLhC,IAAA,uBAAA,MAAM,qBAAqB;CAChC,YACE,KACA,UACA,SACA;AAHkD,OAAA,MAAA;AACG,OAAA,WAAA;AAC2B,OAAA,UAAA;;;;;;;;CASlF,SAAyB;EACvB,MAAM,eAAe,KAAK,SAAS,YAAY;AAE/C,UAAQ,cAAR;GACE,KAAK,aACH,QAAO,IAAI,wBAAwB,KAAK,IAAI;GAE9C,KAAK,OACH,QAAO,IAAI,kBAAkB,KAAK,SAAS;GAE7C,QACE,OAAM,IAAI,+BAA+B,aAAa;;;;;CAzB7D,UAAU,aAAa,qBAAqB;oBAGxC,OAAO,UAAU,cAAc,CAAA;oBAC/B,OAAO,UAAU,iBAAiB,CAAA;oBAClC,OAAO,aAAa,oBAAoB,EAAE,YAAY,MAAM,CAAC,CAAA;;;;;;;;;;ACA3D,IAAA,gBAAA,MAAM,cAAc;CACzB;CACA,0BAA2B,IAAI,KAA2B;CAE1D,YACE,iBACA,MACA;AADkD,OAAA,OAAA;AAElD,OAAK,WAAW,gBAAgB,QAAQ;;;;;;;;;;CAW1C,SAAS,WAAiC;EACxC,IAAI,SAAS,KAAK,QAAQ,IAAI,UAAU;AAExC,MAAI,CAAC,QAAQ;AACX,YAAS,IAAI,YAAY,WAAW,KAAK,UAAU,KAAK,KAAK;AAC7D,QAAK,QAAQ,IAAI,WAAW,OAAO;;AAGrC,SAAO;;;;CA5BV,UAAU,aAAa,cAAc;oBAMjC,OAAO,aAAa,qBAAqB,CAAA;oBACzC,OAAO,YAAY,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACa7B,IAAA,cAAA,eAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;CAmBvB,OAAO,aAAa,SAAgE;AAClF,SAAO;GACL,QAAA;GACA,WAAW,CACT;IACE,SAAS,aAAa;IACtB,YAAY,QAAQ;IACpB,QAAQ,QAAQ;IACjB,CACF;GACF;;;;;;;;;;;;;;;;;;;;CAqBH,OAAO,cAAc,MAAgC;AACnD,SAAO;GACL,QAAA;GACA,WAAW,CACT;IACE,SAAS;IACT,aAAa,aAA4B,SAAS,SAAS,KAAK;IAChE,QAAQ,CAAC,aAAa,cAAc;IACrC,CACF;GACF;;;yCAnEJ,OAAO,EACN,WAAW;CACT;EAAE,SAAS,UAAU;EAAkB,UAAU;EAAkB,OAAO,MAAM;EAAW;CAC3F;EAAE,SAAS,aAAa;EAAsB,UAAU;EAAsB,OAAO,MAAM;EAAW;CACtG;EAAE,SAAS,aAAa;EAAe,UAAU;EAAe;CACjE,EACF,CAAC,CAAA,EAAA,YAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import "./errors-CtCi1wn6.mjs";
|
|
2
|
+
import "./decorate-D5j-d9_z.mjs";
|
|
3
|
+
import "./logger-BR1-s1Um.mjs";
|
|
4
|
+
import { EmailResendApiFailedError, ResendApiKeyMissingError } from "./email/index.mjs";
|
|
5
|
+
import { t as BaseEmailProvider } from "./base-email.provider-CNwsPbwm.mjs";
|
|
6
|
+
import { Resend } from "resend";
|
|
7
|
+
//#region src/email/providers/resend.provider.ts
|
|
8
|
+
/**
|
|
9
|
+
* Resend Email Provider
|
|
10
|
+
*
|
|
11
|
+
* Implementation of IEmailProvider using Resend API
|
|
12
|
+
* Docs: https://resend.com/docs
|
|
13
|
+
*/
|
|
14
|
+
var ResendProvider = class extends BaseEmailProvider {
|
|
15
|
+
client;
|
|
16
|
+
defaultFrom;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
super();
|
|
19
|
+
this.options = options;
|
|
20
|
+
if (!this.options.apiKey) throw new ResendApiKeyMissingError();
|
|
21
|
+
this.client = new Resend(this.options.apiKey);
|
|
22
|
+
this.defaultFrom = this.options.from;
|
|
23
|
+
}
|
|
24
|
+
async send(message) {
|
|
25
|
+
try {
|
|
26
|
+
const from = message.from ? `${message.from.name} <${message.from.email}>` : `${this.defaultFrom.name} <${this.defaultFrom.email}>`;
|
|
27
|
+
const to = Array.isArray(message.to) ? message.to : [message.to];
|
|
28
|
+
const response = await this.client.emails.send({
|
|
29
|
+
from,
|
|
30
|
+
to,
|
|
31
|
+
subject: message.subject,
|
|
32
|
+
html: message.html,
|
|
33
|
+
text: message.text,
|
|
34
|
+
...message.template && { template: message.template },
|
|
35
|
+
...message.replyTo && { replyTo: message.replyTo },
|
|
36
|
+
...message.cc && { cc: message.cc },
|
|
37
|
+
...message.bcc && { bcc: message.bcc },
|
|
38
|
+
...message.attachments && { attachments: await Promise.all(message.attachments.map(async (attachment) => ({
|
|
39
|
+
filename: attachment.filename,
|
|
40
|
+
content: await this.toBuffer(attachment.content)
|
|
41
|
+
}))) }
|
|
42
|
+
});
|
|
43
|
+
if (response.error) throw new EmailResendApiFailedError();
|
|
44
|
+
return {
|
|
45
|
+
messageId: response.data.id,
|
|
46
|
+
accepted: true,
|
|
47
|
+
metadata: { provider: "resend" }
|
|
48
|
+
};
|
|
49
|
+
} catch (error) {
|
|
50
|
+
if (error instanceof EmailResendApiFailedError || error instanceof ResendApiKeyMissingError) throw error;
|
|
51
|
+
throw new EmailResendApiFailedError();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convert attachment content to Buffer
|
|
56
|
+
*
|
|
57
|
+
* Resend SDK expects Buffer for attachment content.
|
|
58
|
+
* If content is already a Buffer, return as-is.
|
|
59
|
+
* If content is a ReadableStream, convert to Buffer.
|
|
60
|
+
*/
|
|
61
|
+
async toBuffer(content) {
|
|
62
|
+
if (Buffer.isBuffer(content)) return content;
|
|
63
|
+
const arrayBuffer = await new Response(content).arrayBuffer();
|
|
64
|
+
return Buffer.from(arrayBuffer);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//#endregion
|
|
68
|
+
export { ResendProvider };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=resend.provider-CQT5be5E.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resend.provider-CQT5be5E.mjs","names":[],"sources":["../src/email/providers/resend.provider.ts"],"sourcesContent":["import { Resend } from 'resend'\nimport type { ResolvedEmailAttachment, ResolvedEmailMessage } from '../contracts'\nimport type { EmailModuleOptions } from '../email.module'\nimport { EmailResendApiFailedError, ResendApiKeyMissingError } from '../errors'\nimport { BaseEmailProvider } from './base-email.provider'\nimport type { EmailSendResult } from './email-provider.interface'\n\n/**\n * Resend Email Provider\n *\n * Implementation of IEmailProvider using Resend API\n * Docs: https://resend.com/docs\n */\nexport class ResendProvider extends BaseEmailProvider {\n private readonly client: Resend\n private readonly defaultFrom: { name: string; email: string }\n\n constructor(\n private readonly options: EmailModuleOptions\n ) {\n super()\n\n // Validate Resend API key\n if (!this.options.apiKey) {\n throw new ResendApiKeyMissingError()\n }\n\n this.client = new Resend(this.options.apiKey)\n this.defaultFrom = this.options.from\n }\n\n async send(message: ResolvedEmailMessage): Promise<EmailSendResult> {\n try {\n const from = message.from\n ? `${message.from.name} <${message.from.email}>`\n : `${this.defaultFrom.name} <${this.defaultFrom.email}>`\n\n const to = Array.isArray(message.to) ? message.to : [message.to]\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- Resend SDK types\n const response = await this.client.emails.send({\n from,\n to,\n subject: message.subject,\n html: message.html,\n text: message.text,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Resend template extension\n ...((message as any).template && { template: (message as any).template }),\n ...(message.replyTo && { replyTo: message.replyTo }),\n ...(message.cc && { cc: message.cc }),\n ...(message.bcc && { bcc: message.bcc }),\n ...(message.attachments && {\n attachments: await Promise.all(\n message.attachments.map(async attachment => ({\n filename: attachment.filename,\n content: await this.toBuffer(attachment.content),\n }))\n ),\n }),\n })\n\n if (response.error) {\n throw new EmailResendApiFailedError()\n }\n\n return {\n messageId: response.data.id,\n accepted: true,\n metadata: {\n provider: 'resend',\n },\n }\n } catch (error) {\n if (error instanceof EmailResendApiFailedError || error instanceof ResendApiKeyMissingError) {\n throw error\n }\n\n throw new EmailResendApiFailedError()\n }\n }\n\n /**\n * Convert attachment content to Buffer\n *\n * Resend SDK expects Buffer for attachment content.\n * If content is already a Buffer, return as-is.\n * If content is a ReadableStream, convert to Buffer.\n */\n private async toBuffer(content: ResolvedEmailAttachment['content']): Promise<Buffer> {\n if (Buffer.isBuffer(content)) {\n return content\n }\n // Convert ReadableStream to Buffer\n const response = new Response(content)\n const arrayBuffer = await response.arrayBuffer()\n return Buffer.from(arrayBuffer)\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAa,iBAAb,cAAoC,kBAAkB;CACpD;CACA;CAEA,YACE,SACA;AACA,SAAO;AAFU,OAAA,UAAA;AAKjB,MAAI,CAAC,KAAK,QAAQ,OAChB,OAAM,IAAI,0BAA0B;AAGtC,OAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,OAAO;AAC7C,OAAK,cAAc,KAAK,QAAQ;;CAGlC,MAAM,KAAK,SAAyD;AAClE,MAAI;GACF,MAAM,OAAO,QAAQ,OACjB,GAAG,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,MAAM,KAC5C,GAAG,KAAK,YAAY,KAAK,IAAI,KAAK,YAAY,MAAM;GAExD,MAAM,KAAK,MAAM,QAAQ,QAAQ,GAAG,GAAG,QAAQ,KAAK,CAAC,QAAQ,GAAG;GAGhE,MAAM,WAAW,MAAM,KAAK,OAAO,OAAO,KAAK;IAC7C;IACA;IACA,SAAS,QAAQ;IACjB,MAAM,QAAQ;IACd,MAAM,QAAQ;IAEd,GAAK,QAAgB,YAAY,EAAE,UAAW,QAAgB,UAAU;IACxE,GAAI,QAAQ,WAAW,EAAE,SAAS,QAAQ,SAAS;IACnD,GAAI,QAAQ,MAAM,EAAE,IAAI,QAAQ,IAAI;IACpC,GAAI,QAAQ,OAAO,EAAE,KAAK,QAAQ,KAAK;IACvC,GAAI,QAAQ,eAAe,EACzB,aAAa,MAAM,QAAQ,IACzB,QAAQ,YAAY,IAAI,OAAM,gBAAe;KAC3C,UAAU,WAAW;KACrB,SAAS,MAAM,KAAK,SAAS,WAAW,QAAQ;KACjD,EAAE,CACJ,EACF;IACF,CAAC;AAEF,OAAI,SAAS,MACX,OAAM,IAAI,2BAA2B;AAGvC,UAAO;IACL,WAAW,SAAS,KAAK;IACzB,UAAU;IACV,UAAU,EACR,UAAU,UACX;IACF;WACM,OAAO;AACd,OAAI,iBAAiB,6BAA6B,iBAAiB,yBACjE,OAAM;AAGR,SAAM,IAAI,2BAA2B;;;;;;;;;;CAWzC,MAAc,SAAS,SAA8D;AACnF,MAAI,OAAO,SAAS,QAAQ,CAC1B,QAAO;EAIT,MAAM,cAAc,MADH,IAAI,SAAS,QAAQ,CACH,aAAa;AAChD,SAAO,OAAO,KAAK,YAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { A as Delete, At as RouteConfig, B as getControllerVersion, Bt as SECURITY_SCHEMES, C as successMessageSchema, Ct as IController, D as getDecoratedMethods, Dt as HttpRouteMetadata, E as Route, Et as ControllerOptions, F as getHttpDecoratedMethods, Ft as SecurityScheme, H as RouteRegistrationService, I as getHttpRouteMetadata, It as VersioningOptions, L as Controller, Lt as HTTP_METHODS, M as Patch, Mt as RouteResponseObject, N as Post, Nt as RouterEnv, O as getRouteConfig, Ot as RouteBody, P as Put, Pt as RouterVariables, R as getControllerOptions, Rt as ROUTER_CONTEXT_KEYS, S as paginationQuerySchema, St as Middleware, T as validationErrorResponseSchema, Tt as RouterContext, U as HonoApp, V as ROUTER_TOKENS, Vt as VERSION_NEUTRAL, _ as ControllerRegistrationError, b as errorResponseSchema, d as SSEMessage, f as SSEStreamingApi, g as OpenAPIRouteRegistrationError, h as OpenAPIValidationError, j as Get, jt as RouteResponse, k as All, kt as RouteBodyObject, m as RouteNotFoundError, p as StreamingApi, v as HonoAppAlreadyConfiguredError, w as uuidParamSchema, x as paginatedResponseSchema, y as commonErrorSchemas, z as getControllerRoute, zt as ROUTE_METADATA_KEYS } from "../index-D69rxo8H.mjs";
|
|
2
|
+
export { All, Controller, ControllerOptions, ControllerRegistrationError, Delete, Get, HTTP_METHODS, HonoApp, HonoAppAlreadyConfiguredError, HttpRouteMetadata, IController, Middleware, OpenAPIRouteRegistrationError, OpenAPIValidationError, Patch, Post, Put, ROUTER_CONTEXT_KEYS, ROUTER_TOKENS, ROUTE_METADATA_KEYS, Route, RouteBody, RouteBodyObject, RouteConfig, RouteNotFoundError, RouteRegistrationService, RouteResponse, RouteResponseObject, RouterContext, RouterEnv, RouterVariables, SECURITY_SCHEMES, SSEMessage, SSEStreamingApi, SecurityScheme, StreamingApi, VERSION_NEUTRAL, VersioningOptions, commonErrorSchemas, errorResponseSchema, getControllerOptions, getControllerRoute, getControllerVersion, getDecoratedMethods, getHttpDecoratedMethods, getHttpRouteMetadata, getRouteConfig, paginatedResponseSchema, paginationQuerySchema, successMessageSchema, uuidParamSchema, validationErrorResponseSchema };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { v as ROUTER_TOKENS } from "../errors-CtCi1wn6.mjs";
|
|
2
|
+
import "../decorate-D5j-d9_z.mjs";
|
|
3
|
+
import "../logger-BR1-s1Um.mjs";
|
|
4
|
+
import "../module-BH7t7BGG.mjs";
|
|
5
|
+
import "../events-CXl-o1Ad.mjs";
|
|
6
|
+
import "../command-DG_u5ob2.mjs";
|
|
7
|
+
import "../is-command-MZDCH-0T.mjs";
|
|
8
|
+
import "../is-seeder-BN9Ej1r7.mjs";
|
|
9
|
+
import { a as getControllerVersion, i as getControllerRoute, n as Controller, r as getControllerOptions } from "../middleware-iRhNjsPH.mjs";
|
|
10
|
+
import { a as ROUTER_CONTEXT_KEYS, c as VERSION_NEUTRAL, o as ROUTE_METADATA_KEYS, r as HTTP_METHODS, s as SECURITY_SCHEMES, t as RouterContext } from "../router-context-BLn4PrRG.mjs";
|
|
11
|
+
import "../validation-Dbt-snjx.mjs";
|
|
12
|
+
import { C as Get, D as getHttpDecoratedMethods, E as Put, O as getHttpRouteMetadata, S as Delete, T as Post, a as errorResponseSchema, b as getRouteConfig, c as successMessageSchema, d as RouteNotFoundError, f as OpenAPIValidationError, h as HonoAppAlreadyConfiguredError, i as commonErrorSchemas, l as uuidParamSchema, m as ControllerRegistrationError, n as HonoApp, o as paginatedResponseSchema, p as OpenAPIRouteRegistrationError, r as RouteRegistrationService, s as paginationQuerySchema, u as validationErrorResponseSchema, v as Route, w as Patch, x as All, y as getDecoratedMethods } from "../i18n.module-qNrpIVts.mjs";
|
|
13
|
+
import "../guards-DMbsAxSX.mjs";
|
|
14
|
+
import "../gateway-context-90CQEQDR.mjs";
|
|
15
|
+
export { All, Controller, ControllerRegistrationError, Delete, Get, HTTP_METHODS, HonoApp, HonoAppAlreadyConfiguredError, OpenAPIRouteRegistrationError, OpenAPIValidationError, Patch, Post, Put, ROUTER_CONTEXT_KEYS, ROUTER_TOKENS, ROUTE_METADATA_KEYS, Route, RouteNotFoundError, RouteRegistrationService, RouterContext, SECURITY_SCHEMES, VERSION_NEUTRAL, commonErrorSchemas, errorResponseSchema, getControllerOptions, getControllerRoute, getControllerVersion, getDecoratedMethods, getHttpDecoratedMethods, getHttpRouteMetadata, getRouteConfig, paginatedResponseSchema, paginationQuerySchema, successMessageSchema, uuidParamSchema, validationErrorResponseSchema };
|