stratal 0.0.1
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/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/application.d.ts +118 -0
- package/dist/application.d.ts.map +1 -0
- package/dist/application.js +247 -0
- package/dist/application.js.map +1 -0
- package/dist/cache/cache.module.d.ts +14 -0
- package/dist/cache/cache.module.d.ts.map +1 -0
- package/dist/cache/cache.module.js +32 -0
- package/dist/cache/cache.module.js.map +1 -0
- package/dist/cache/cache.tokens.d.ts +5 -0
- package/dist/cache/cache.tokens.d.ts.map +1 -0
- package/dist/cache/cache.tokens.js +4 -0
- package/dist/cache/cache.tokens.js.map +1 -0
- package/dist/cache/errors/cache-delete.error.d.ts +11 -0
- package/dist/cache/errors/cache-delete.error.d.ts.map +1 -0
- package/dist/cache/errors/cache-delete.error.js +14 -0
- package/dist/cache/errors/cache-delete.error.js.map +1 -0
- package/dist/cache/errors/cache-get.error.d.ts +11 -0
- package/dist/cache/errors/cache-get.error.d.ts.map +1 -0
- package/dist/cache/errors/cache-get.error.js +14 -0
- package/dist/cache/errors/cache-get.error.js.map +1 -0
- package/dist/cache/errors/cache-list.error.d.ts +10 -0
- package/dist/cache/errors/cache-list.error.d.ts.map +1 -0
- package/dist/cache/errors/cache-list.error.js +13 -0
- package/dist/cache/errors/cache-list.error.js.map +1 -0
- package/dist/cache/errors/cache-put.error.d.ts +11 -0
- package/dist/cache/errors/cache-put.error.d.ts.map +1 -0
- package/dist/cache/errors/cache-put.error.js +14 -0
- package/dist/cache/errors/cache-put.error.js.map +1 -0
- package/dist/cache/errors/index.d.ts +5 -0
- package/dist/cache/errors/index.d.ts.map +1 -0
- package/dist/cache/errors/index.js +5 -0
- package/dist/cache/errors/index.js.map +1 -0
- package/dist/cache/index.d.ts +5 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/services/cache.service.d.ts +152 -0
- package/dist/cache/services/cache.service.d.ts.map +1 -0
- package/dist/cache/services/cache.service.js +223 -0
- package/dist/cache/services/cache.service.js.map +1 -0
- package/dist/cache/services/index.d.ts +2 -0
- package/dist/cache/services/index.d.ts.map +1 -0
- package/dist/cache/services/index.js +2 -0
- package/dist/cache/services/index.js.map +1 -0
- package/dist/config/config.module.d.ts +79 -0
- package/dist/config/config.module.d.ts.map +1 -0
- package/dist/config/config.module.js +120 -0
- package/dist/config/config.module.js.map +1 -0
- package/dist/config/config.tokens.d.ts +4 -0
- package/dist/config/config.tokens.d.ts.map +1 -0
- package/dist/config/config.tokens.js +4 -0
- package/dist/config/config.tokens.js.map +1 -0
- package/dist/config/config.types.d.ts +68 -0
- package/dist/config/config.types.d.ts.map +1 -0
- package/dist/config/config.types.js +9 -0
- package/dist/config/config.types.js.map +1 -0
- package/dist/config/errors/config-not-initialized.error.d.ts +12 -0
- package/dist/config/errors/config-not-initialized.error.d.ts.map +1 -0
- package/dist/config/errors/config-not-initialized.error.js +15 -0
- package/dist/config/errors/config-not-initialized.error.js.map +1 -0
- package/dist/config/errors/index.d.ts +2 -0
- package/dist/config/errors/index.d.ts.map +1 -0
- package/dist/config/errors/index.js +2 -0
- package/dist/config/errors/index.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +9 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/register-as.d.ts +62 -0
- package/dist/config/register-as.d.ts.map +1 -0
- package/dist/config/register-as.js +48 -0
- package/dist/config/register-as.js.map +1 -0
- package/dist/config/services/config.service.d.ts +58 -0
- package/dist/config/services/config.service.d.ts.map +1 -0
- package/dist/config/services/config.service.js +123 -0
- package/dist/config/services/config.service.js.map +1 -0
- package/dist/cron/cron-job.d.ts +55 -0
- package/dist/cron/cron-job.d.ts.map +1 -0
- package/dist/cron/cron-job.js +2 -0
- package/dist/cron/cron-job.js.map +1 -0
- package/dist/cron/cron-manager.d.ts +60 -0
- package/dist/cron/cron-manager.d.ts.map +1 -0
- package/dist/cron/cron-manager.js +120 -0
- package/dist/cron/cron-manager.js.map +1 -0
- package/dist/cron/errors/cron-execution.error.d.ts +10 -0
- package/dist/cron/errors/cron-execution.error.d.ts.map +1 -0
- package/dist/cron/errors/cron-execution.error.js +17 -0
- package/dist/cron/errors/cron-execution.error.js.map +1 -0
- package/dist/cron/index.d.ts +4 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/index.js +3 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/di/conditional-binding-builder.d.ts +93 -0
- package/dist/di/conditional-binding-builder.d.ts.map +1 -0
- package/dist/di/conditional-binding-builder.js +115 -0
- package/dist/di/conditional-binding-builder.js.map +1 -0
- package/dist/di/container.d.ts +399 -0
- package/dist/di/container.d.ts.map +1 -0
- package/dist/di/container.js +466 -0
- package/dist/di/container.js.map +1 -0
- package/dist/di/decorators/inject-param.decorator.d.ts +67 -0
- package/dist/di/decorators/inject-param.decorator.d.ts.map +1 -0
- package/dist/di/decorators/inject-param.decorator.js +53 -0
- package/dist/di/decorators/inject-param.decorator.js.map +1 -0
- package/dist/di/decorators.d.ts +57 -0
- package/dist/di/decorators.d.ts.map +1 -0
- package/dist/di/decorators.js +74 -0
- package/dist/di/decorators.js.map +1 -0
- package/dist/di/errors/conditional-binding-fallback.error.d.ts +16 -0
- package/dist/di/errors/conditional-binding-fallback.error.d.ts.map +1 -0
- package/dist/di/errors/conditional-binding-fallback.error.js +19 -0
- package/dist/di/errors/conditional-binding-fallback.error.js.map +1 -0
- package/dist/di/errors/index.d.ts +3 -0
- package/dist/di/errors/index.d.ts.map +1 -0
- package/dist/di/errors/index.js +3 -0
- package/dist/di/errors/index.js.map +1 -0
- package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts +12 -0
- package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts.map +1 -0
- package/dist/di/errors/request-scope-operation-not-allowed.error.js +15 -0
- package/dist/di/errors/request-scope-operation-not-allowed.error.js.map +1 -0
- package/dist/di/index.d.ts +13 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +11 -0
- package/dist/di/index.js.map +1 -0
- package/dist/di/request-context-store.d.ts +122 -0
- package/dist/di/request-context-store.d.ts.map +1 -0
- package/dist/di/request-context-store.js +135 -0
- package/dist/di/request-context-store.js.map +1 -0
- package/dist/di/tokens.d.ts +25 -0
- package/dist/di/tokens.d.ts.map +1 -0
- package/dist/di/tokens.js +27 -0
- package/dist/di/tokens.js.map +1 -0
- package/dist/di/types.d.ts +56 -0
- package/dist/di/types.d.ts.map +1 -0
- package/dist/di/types.js +34 -0
- package/dist/di/types.js.map +1 -0
- package/dist/email/consumers/email.consumer.d.ts +43 -0
- package/dist/email/consumers/email.consumer.d.ts.map +1 -0
- package/dist/email/consumers/email.consumer.js +133 -0
- package/dist/email/consumers/email.consumer.js.map +1 -0
- package/dist/email/consumers/index.d.ts +2 -0
- package/dist/email/consumers/index.d.ts.map +1 -0
- package/dist/email/consumers/index.js +2 -0
- package/dist/email/consumers/index.js.map +1 -0
- package/dist/email/contracts/email-attachment.d.ts +61 -0
- package/dist/email/contracts/email-attachment.d.ts.map +1 -0
- package/dist/email/contracts/email-attachment.js +58 -0
- package/dist/email/contracts/email-attachment.js.map +1 -0
- package/dist/email/contracts/email-message.contract.d.ts +58 -0
- package/dist/email/contracts/email-message.contract.d.ts.map +1 -0
- package/dist/email/contracts/email-message.contract.js +62 -0
- package/dist/email/contracts/email-message.contract.js.map +1 -0
- package/dist/email/contracts/index.d.ts +4 -0
- package/dist/email/contracts/index.d.ts.map +1 -0
- package/dist/email/contracts/index.js +4 -0
- package/dist/email/contracts/index.js.map +1 -0
- package/dist/email/contracts/send-email.input.d.ts +72 -0
- package/dist/email/contracts/send-email.input.d.ts.map +1 -0
- package/dist/email/contracts/send-email.input.js +28 -0
- package/dist/email/contracts/send-email.input.js.map +1 -0
- package/dist/email/email.module.d.ts +122 -0
- package/dist/email/email.module.d.ts.map +1 -0
- package/dist/email/email.module.js +129 -0
- package/dist/email/email.module.js.map +1 -0
- package/dist/email/email.tokens.d.ts +33 -0
- package/dist/email/email.tokens.d.ts.map +1 -0
- package/dist/email/email.tokens.js +33 -0
- package/dist/email/email.tokens.js.map +1 -0
- package/dist/email/errors/email-provider-not-supported.error.d.ts +13 -0
- package/dist/email/errors/email-provider-not-supported.error.d.ts.map +1 -0
- package/dist/email/errors/email-provider-not-supported.error.js +15 -0
- package/dist/email/errors/email-provider-not-supported.error.js.map +1 -0
- package/dist/email/errors/email-resend-api-failed.error.d.ts +13 -0
- package/dist/email/errors/email-resend-api-failed.error.d.ts.map +1 -0
- package/dist/email/errors/email-resend-api-failed.error.js +15 -0
- package/dist/email/errors/email-resend-api-failed.error.js.map +1 -0
- package/dist/email/errors/email-smtp-connection-failed.error.d.ts +13 -0
- package/dist/email/errors/email-smtp-connection-failed.error.d.ts.map +1 -0
- package/dist/email/errors/email-smtp-connection-failed.error.js +15 -0
- package/dist/email/errors/email-smtp-connection-failed.error.js.map +1 -0
- package/dist/email/errors/index.d.ts +7 -0
- package/dist/email/errors/index.d.ts.map +1 -0
- package/dist/email/errors/index.js +7 -0
- package/dist/email/errors/index.js.map +1 -0
- package/dist/email/errors/resend-api-key-missing.error.d.ts +13 -0
- package/dist/email/errors/resend-api-key-missing.error.d.ts.map +1 -0
- package/dist/email/errors/resend-api-key-missing.error.js +15 -0
- package/dist/email/errors/resend-api-key-missing.error.js.map +1 -0
- package/dist/email/errors/smtp-configuration-missing.error.d.ts +13 -0
- package/dist/email/errors/smtp-configuration-missing.error.d.ts.map +1 -0
- package/dist/email/errors/smtp-configuration-missing.error.js +15 -0
- package/dist/email/errors/smtp-configuration-missing.error.js.map +1 -0
- package/dist/email/errors/smtp-host-missing.error.d.ts +13 -0
- package/dist/email/errors/smtp-host-missing.error.d.ts.map +1 -0
- package/dist/email/errors/smtp-host-missing.error.js +15 -0
- package/dist/email/errors/smtp-host-missing.error.js.map +1 -0
- package/dist/email/index.d.ts +6 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +8 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/providers/base-email.provider.d.ts +22 -0
- package/dist/email/providers/base-email.provider.d.ts.map +1 -0
- package/dist/email/providers/base-email.provider.js +43 -0
- package/dist/email/providers/base-email.provider.js.map +1 -0
- package/dist/email/providers/email-provider.interface.d.ts +66 -0
- package/dist/email/providers/email-provider.interface.d.ts.map +1 -0
- package/dist/email/providers/email-provider.interface.js +2 -0
- package/dist/email/providers/email-provider.interface.js.map +1 -0
- package/dist/email/providers/index.d.ts +5 -0
- package/dist/email/providers/index.d.ts.map +1 -0
- package/dist/email/providers/index.js +5 -0
- package/dist/email/providers/index.js.map +1 -0
- package/dist/email/providers/resend.provider.d.ts +26 -0
- package/dist/email/providers/resend.provider.d.ts.map +1 -0
- package/dist/email/providers/resend.provider.js +84 -0
- package/dist/email/providers/resend.provider.js.map +1 -0
- package/dist/email/providers/smtp.provider.d.ts +25 -0
- package/dist/email/providers/smtp.provider.d.ts.map +1 -0
- package/dist/email/providers/smtp.provider.js +86 -0
- package/dist/email/providers/smtp.provider.js.map +1 -0
- package/dist/email/services/email-provider-factory.d.ts +24 -0
- package/dist/email/services/email-provider-factory.d.ts.map +1 -0
- package/dist/email/services/email-provider-factory.js +59 -0
- package/dist/email/services/email-provider-factory.js.map +1 -0
- package/dist/email/services/email.service.d.ts +51 -0
- package/dist/email/services/email.service.d.ts.map +1 -0
- package/dist/email/services/email.service.js +75 -0
- package/dist/email/services/email.service.js.map +1 -0
- package/dist/email/services/index.d.ts +3 -0
- package/dist/email/services/index.d.ts.map +1 -0
- package/dist/email/services/index.js +3 -0
- package/dist/email/services/index.js.map +1 -0
- package/dist/env.d.ts +21 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +2 -0
- package/dist/env.js.map +1 -0
- package/dist/errors/application-error.d.ts +80 -0
- package/dist/errors/application-error.d.ts.map +1 -0
- package/dist/errors/application-error.js +118 -0
- package/dist/errors/application-error.js.map +1 -0
- package/dist/errors/error-codes.d.ts +198 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +180 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/get-http-status.d.ts +12 -0
- package/dist/errors/get-http-status.d.ts.map +1 -0
- package/dist/errors/get-http-status.js +62 -0
- package/dist/errors/get-http-status.js.map +1 -0
- package/dist/errors/index.d.ts +5 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +5 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/is-application-error.d.ts +9 -0
- package/dist/errors/is-application-error.d.ts.map +1 -0
- package/dist/errors/is-application-error.js +11 -0
- package/dist/errors/is-application-error.js.map +1 -0
- package/dist/guards/guard-execution.service.d.ts +37 -0
- package/dist/guards/guard-execution.service.d.ts.map +1 -0
- package/dist/guards/guard-execution.service.js +74 -0
- package/dist/guards/guard-execution.service.js.map +1 -0
- package/dist/guards/index.d.ts +12 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +12 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/types.d.ts +60 -0
- package/dist/guards/types.d.ts.map +1 -0
- package/dist/guards/types.js +5 -0
- package/dist/guards/types.js.map +1 -0
- package/dist/guards/use-guards.decorator.d.ts +73 -0
- package/dist/guards/use-guards.decorator.d.ts.map +1 -0
- package/dist/guards/use-guards.decorator.js +89 -0
- package/dist/guards/use-guards.decorator.js.map +1 -0
- package/dist/i18n/errors/index.d.ts +6 -0
- package/dist/i18n/errors/index.d.ts.map +1 -0
- package/dist/i18n/errors/index.js +6 -0
- package/dist/i18n/errors/index.js.map +1 -0
- package/dist/i18n/errors/locale-not-supported.error.d.ts +12 -0
- package/dist/i18n/errors/locale-not-supported.error.d.ts.map +1 -0
- package/dist/i18n/errors/locale-not-supported.error.js +15 -0
- package/dist/i18n/errors/locale-not-supported.error.js.map +1 -0
- package/dist/i18n/errors/translation-missing.error.d.ts +12 -0
- package/dist/i18n/errors/translation-missing.error.d.ts.map +1 -0
- package/dist/i18n/errors/translation-missing.error.js +15 -0
- package/dist/i18n/errors/translation-missing.error.js.map +1 -0
- package/dist/i18n/i18n.module.d.ts +60 -0
- package/dist/i18n/i18n.module.d.ts.map +1 -0
- package/dist/i18n/i18n.module.js +103 -0
- package/dist/i18n/i18n.module.js.map +1 -0
- package/dist/i18n/i18n.options.d.ts +60 -0
- package/dist/i18n/i18n.options.d.ts.map +1 -0
- package/dist/i18n/i18n.options.js +18 -0
- package/dist/i18n/i18n.options.js.map +1 -0
- package/dist/i18n/i18n.tokens.d.ts +13 -0
- package/dist/i18n/i18n.tokens.d.ts.map +1 -0
- package/dist/i18n/i18n.tokens.js +13 -0
- package/dist/i18n/i18n.tokens.js.map +1 -0
- package/dist/i18n/i18n.types.d.ts +78 -0
- package/dist/i18n/i18n.types.d.ts.map +1 -0
- package/dist/i18n/i18n.types.js +8 -0
- package/dist/i18n/i18n.types.js.map +1 -0
- package/dist/i18n/index.d.ts +12 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +12 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/messages/en/common.d.ts +23 -0
- package/dist/i18n/messages/en/common.d.ts.map +1 -0
- package/dist/i18n/messages/en/common.js +23 -0
- package/dist/i18n/messages/en/common.js.map +1 -0
- package/dist/i18n/messages/en/emails.d.ts +12 -0
- package/dist/i18n/messages/en/emails.d.ts.map +1 -0
- package/dist/i18n/messages/en/emails.js +12 -0
- package/dist/i18n/messages/en/emails.js.map +1 -0
- package/dist/i18n/messages/en/errors.d.ts +115 -0
- package/dist/i18n/messages/en/errors.d.ts.map +1 -0
- package/dist/i18n/messages/en/errors.js +132 -0
- package/dist/i18n/messages/en/errors.js.map +1 -0
- package/dist/i18n/messages/en/index.d.ts +13 -0
- package/dist/i18n/messages/en/index.d.ts.map +1 -0
- package/dist/i18n/messages/en/index.js +13 -0
- package/dist/i18n/messages/en/index.js.map +1 -0
- package/dist/i18n/messages/en/validation.d.ts +38 -0
- package/dist/i18n/messages/en/validation.d.ts.map +1 -0
- package/dist/i18n/messages/en/validation.js +38 -0
- package/dist/i18n/messages/en/validation.js.map +1 -0
- package/dist/i18n/messages/en/zod.d.ts +125 -0
- package/dist/i18n/messages/en/zod.d.ts.map +1 -0
- package/dist/i18n/messages/en/zod.js +132 -0
- package/dist/i18n/messages/en/zod.js.map +1 -0
- package/dist/i18n/messages/index.d.ts +27 -0
- package/dist/i18n/messages/index.d.ts.map +1 -0
- package/dist/i18n/messages/index.js +25 -0
- package/dist/i18n/messages/index.js.map +1 -0
- package/dist/i18n/middleware/i18n-context.middleware.d.ts +15 -0
- package/dist/i18n/middleware/i18n-context.middleware.d.ts.map +1 -0
- package/dist/i18n/middleware/i18n-context.middleware.js +42 -0
- package/dist/i18n/middleware/i18n-context.middleware.js.map +1 -0
- package/dist/i18n/middleware/index.d.ts +6 -0
- package/dist/i18n/middleware/index.d.ts.map +1 -0
- package/dist/i18n/middleware/index.js +6 -0
- package/dist/i18n/middleware/index.js.map +1 -0
- package/dist/i18n/middleware/locale-extraction.middleware.d.ts +19 -0
- package/dist/i18n/middleware/locale-extraction.middleware.d.ts.map +1 -0
- package/dist/i18n/middleware/locale-extraction.middleware.js +49 -0
- package/dist/i18n/middleware/locale-extraction.middleware.js.map +1 -0
- package/dist/i18n/services/i18n.service.d.ts +62 -0
- package/dist/i18n/services/i18n.service.d.ts.map +1 -0
- package/dist/i18n/services/i18n.service.js +118 -0
- package/dist/i18n/services/i18n.service.js.map +1 -0
- package/dist/i18n/services/message-loader.service.d.ts +47 -0
- package/dist/i18n/services/message-loader.service.d.ts.map +1 -0
- package/dist/i18n/services/message-loader.service.js +121 -0
- package/dist/i18n/services/message-loader.service.js.map +1 -0
- package/dist/i18n/setup.d.ts +27 -0
- package/dist/i18n/setup.d.ts.map +1 -0
- package/dist/i18n/setup.js +40 -0
- package/dist/i18n/setup.js.map +1 -0
- package/dist/i18n/validation/index.d.ts +9 -0
- package/dist/i18n/validation/index.d.ts.map +1 -0
- package/dist/i18n/validation/index.js +10 -0
- package/dist/i18n/validation/index.js.map +1 -0
- package/dist/i18n/validation/validation.context.d.ts +34 -0
- package/dist/i18n/validation/validation.context.d.ts.map +1 -0
- package/dist/i18n/validation/validation.context.js +42 -0
- package/dist/i18n/validation/validation.context.js.map +1 -0
- package/dist/i18n/validation/validation.error-map.d.ts +8 -0
- package/dist/i18n/validation/validation.error-map.d.ts.map +1 -0
- package/dist/i18n/validation/validation.error-map.js +158 -0
- package/dist/i18n/validation/validation.error-map.js.map +1 -0
- package/dist/i18n/validation/validation.types.d.ts +44 -0
- package/dist/i18n/validation/validation.types.d.ts.map +1 -0
- package/dist/i18n/validation/validation.types.js +2 -0
- package/dist/i18n/validation/validation.types.js.map +1 -0
- package/dist/i18n/validation/with-i18n.d.ts +29 -0
- package/dist/i18n/validation/with-i18n.d.ts.map +1 -0
- package/dist/i18n/validation/with-i18n.js +40 -0
- package/dist/i18n/validation/with-i18n.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/error-handler/error-response.d.ts +32 -0
- package/dist/infrastructure/error-handler/error-response.d.ts.map +1 -0
- package/dist/infrastructure/error-handler/error-response.js +14 -0
- package/dist/infrastructure/error-handler/error-response.js.map +1 -0
- package/dist/infrastructure/error-handler/global-error-handler.d.ts +81 -0
- package/dist/infrastructure/error-handler/global-error-handler.d.ts.map +1 -0
- package/dist/infrastructure/error-handler/global-error-handler.js +178 -0
- package/dist/infrastructure/error-handler/global-error-handler.js.map +1 -0
- package/dist/infrastructure/error-handler/index.d.ts +6 -0
- package/dist/infrastructure/error-handler/index.d.ts.map +1 -0
- package/dist/infrastructure/error-handler/index.js +5 -0
- package/dist/infrastructure/error-handler/index.js.map +1 -0
- package/dist/infrastructure/error-handler/internal-error.d.ts +16 -0
- package/dist/infrastructure/error-handler/internal-error.d.ts.map +1 -0
- package/dist/infrastructure/error-handler/internal-error.js +19 -0
- package/dist/infrastructure/error-handler/internal-error.js.map +1 -0
- package/dist/infrastructure/errors/index.d.ts +2 -0
- package/dist/infrastructure/errors/index.d.ts.map +1 -0
- package/dist/infrastructure/errors/index.js +2 -0
- package/dist/infrastructure/errors/index.js.map +1 -0
- package/dist/infrastructure/errors/request-container-not-initialized.error.d.ts +12 -0
- package/dist/infrastructure/errors/request-container-not-initialized.error.d.ts.map +1 -0
- package/dist/infrastructure/errors/request-container-not-initialized.error.js +15 -0
- package/dist/infrastructure/errors/request-container-not-initialized.error.js.map +1 -0
- package/dist/infrastructure/index.d.ts +3 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +3 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/logger/contracts/index.d.ts +4 -0
- package/dist/logger/contracts/index.d.ts.map +1 -0
- package/dist/logger/contracts/index.js +4 -0
- package/dist/logger/contracts/index.js.map +1 -0
- package/dist/logger/contracts/log-context.d.ts +16 -0
- package/dist/logger/contracts/log-context.d.ts.map +1 -0
- package/dist/logger/contracts/log-context.js +2 -0
- package/dist/logger/contracts/log-context.js.map +1 -0
- package/dist/logger/contracts/log-entry.d.ts +17 -0
- package/dist/logger/contracts/log-entry.d.ts.map +1 -0
- package/dist/logger/contracts/log-entry.js +2 -0
- package/dist/logger/contracts/log-entry.js.map +1 -0
- package/dist/logger/contracts/log-level.d.ts +16 -0
- package/dist/logger/contracts/log-level.d.ts.map +1 -0
- package/dist/logger/contracts/log-level.js +22 -0
- package/dist/logger/contracts/log-level.js.map +1 -0
- package/dist/logger/formatters/formatter.interface.d.ts +14 -0
- package/dist/logger/formatters/formatter.interface.d.ts.map +1 -0
- package/dist/logger/formatters/formatter.interface.js +2 -0
- package/dist/logger/formatters/formatter.interface.js.map +1 -0
- package/dist/logger/formatters/index.d.ts +4 -0
- package/dist/logger/formatters/index.d.ts.map +1 -0
- package/dist/logger/formatters/index.js +4 -0
- package/dist/logger/formatters/index.js.map +1 -0
- package/dist/logger/formatters/json-formatter.d.ts +22 -0
- package/dist/logger/formatters/json-formatter.d.ts.map +1 -0
- package/dist/logger/formatters/json-formatter.js +28 -0
- package/dist/logger/formatters/json-formatter.js.map +1 -0
- package/dist/logger/formatters/pretty-formatter.d.ts +19 -0
- package/dist/logger/formatters/pretty-formatter.d.ts.map +1 -0
- package/dist/logger/formatters/pretty-formatter.js +42 -0
- package/dist/logger/formatters/pretty-formatter.js.map +1 -0
- package/dist/logger/index.d.ts +7 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +10 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/logger.tokens.d.ts +29 -0
- package/dist/logger/logger.tokens.d.ts.map +1 -0
- package/dist/logger/logger.tokens.js +29 -0
- package/dist/logger/logger.tokens.js.map +1 -0
- package/dist/logger/services/index.d.ts +2 -0
- package/dist/logger/services/index.d.ts.map +1 -0
- package/dist/logger/services/index.js +2 -0
- package/dist/logger/services/index.js.map +1 -0
- package/dist/logger/services/logger.service.d.ts +86 -0
- package/dist/logger/services/logger.service.d.ts.map +1 -0
- package/dist/logger/services/logger.service.js +161 -0
- package/dist/logger/services/logger.service.js.map +1 -0
- package/dist/logger/transports/base-transport.d.ts +24 -0
- package/dist/logger/transports/base-transport.d.ts.map +1 -0
- package/dist/logger/transports/base-transport.js +23 -0
- package/dist/logger/transports/base-transport.js.map +1 -0
- package/dist/logger/transports/console-transport.d.ts +19 -0
- package/dist/logger/transports/console-transport.d.ts.map +1 -0
- package/dist/logger/transports/console-transport.js +53 -0
- package/dist/logger/transports/console-transport.js.map +1 -0
- package/dist/logger/transports/index.d.ts +4 -0
- package/dist/logger/transports/index.d.ts.map +1 -0
- package/dist/logger/transports/index.js +4 -0
- package/dist/logger/transports/index.js.map +1 -0
- package/dist/logger/transports/transport.interface.d.ts +21 -0
- package/dist/logger/transports/transport.interface.d.ts.map +1 -0
- package/dist/logger/transports/transport.interface.js +2 -0
- package/dist/logger/transports/transport.interface.js.map +1 -0
- package/dist/middleware/index.d.ts +24 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +23 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/middleware-configuration.service.d.ts +64 -0
- package/dist/middleware/middleware-configuration.service.d.ts.map +1 -0
- package/dist/middleware/middleware-configuration.service.js +210 -0
- package/dist/middleware/middleware-configuration.service.js.map +1 -0
- package/dist/middleware/middleware-consumer.d.ts +57 -0
- package/dist/middleware/middleware-consumer.d.ts.map +1 -0
- package/dist/middleware/middleware-consumer.js +130 -0
- package/dist/middleware/middleware-consumer.js.map +1 -0
- package/dist/middleware/types.d.ts +94 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +2 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/module/errors/index.d.ts +5 -0
- package/dist/module/errors/index.d.ts.map +1 -0
- package/dist/module/errors/index.js +5 -0
- package/dist/module/errors/index.js.map +1 -0
- package/dist/module/errors/invalid-module-provider.error.d.ts +11 -0
- package/dist/module/errors/invalid-module-provider.error.d.ts.map +1 -0
- package/dist/module/errors/invalid-module-provider.error.js +14 -0
- package/dist/module/errors/invalid-module-provider.error.js.map +1 -0
- package/dist/module/errors/module-already-registered.error.d.ts +11 -0
- package/dist/module/errors/module-already-registered.error.d.ts.map +1 -0
- package/dist/module/errors/module-already-registered.error.js +14 -0
- package/dist/module/errors/module-already-registered.error.js.map +1 -0
- package/dist/module/errors/module-circular-dependency.error.d.ts +11 -0
- package/dist/module/errors/module-circular-dependency.error.d.ts.map +1 -0
- package/dist/module/errors/module-circular-dependency.error.js +15 -0
- package/dist/module/errors/module-circular-dependency.error.js.map +1 -0
- package/dist/module/errors/module-dependency-not-found.error.d.ts +11 -0
- package/dist/module/errors/module-dependency-not-found.error.d.ts.map +1 -0
- package/dist/module/errors/module-dependency-not-found.error.js +14 -0
- package/dist/module/errors/module-dependency-not-found.error.js.map +1 -0
- package/dist/module/index.d.ts +4 -0
- package/dist/module/index.d.ts.map +1 -0
- package/dist/module/index.js +7 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/module-registry.d.ts +101 -0
- package/dist/module/module-registry.d.ts.map +1 -0
- package/dist/module/module-registry.js +278 -0
- package/dist/module/module-registry.js.map +1 -0
- package/dist/module/module.decorator.d.ts +34 -0
- package/dist/module/module.decorator.d.ts.map +1 -0
- package/dist/module/module.decorator.js +107 -0
- package/dist/module/module.decorator.js.map +1 -0
- package/dist/module/types.d.ts +240 -0
- package/dist/module/types.d.ts.map +1 -0
- package/dist/module/types.js +8 -0
- package/dist/module/types.js.map +1 -0
- package/dist/openapi/index.d.ts +5 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +7 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/openapi.module.d.ts +52 -0
- package/dist/openapi/openapi.module.d.ts.map +1 -0
- package/dist/openapi/openapi.module.js +110 -0
- package/dist/openapi/openapi.module.js.map +1 -0
- package/dist/openapi/openapi.tokens.d.ts +12 -0
- package/dist/openapi/openapi.tokens.d.ts.map +1 -0
- package/dist/openapi/openapi.tokens.js +12 -0
- package/dist/openapi/openapi.tokens.js.map +1 -0
- package/dist/openapi/services/index.d.ts +3 -0
- package/dist/openapi/services/index.d.ts.map +1 -0
- package/dist/openapi/services/index.js +3 -0
- package/dist/openapi/services/index.js.map +1 -0
- package/dist/openapi/services/openapi-config.service.d.ts +43 -0
- package/dist/openapi/services/openapi-config.service.d.ts.map +1 -0
- package/dist/openapi/services/openapi-config.service.js +98 -0
- package/dist/openapi/services/openapi-config.service.js.map +1 -0
- package/dist/openapi/services/openapi.service.d.ts +52 -0
- package/dist/openapi/services/openapi.service.d.ts.map +1 -0
- package/dist/openapi/services/openapi.service.js +228 -0
- package/dist/openapi/services/openapi.service.js.map +1 -0
- package/dist/openapi/types.d.ts +61 -0
- package/dist/openapi/types.d.ts.map +1 -0
- package/dist/openapi/types.js +2 -0
- package/dist/openapi/types.js.map +1 -0
- package/dist/polyfills/dom.polyfill.d.ts +2 -0
- package/dist/polyfills/dom.polyfill.d.ts.map +1 -0
- package/dist/polyfills/dom.polyfill.js +30 -0
- package/dist/polyfills/dom.polyfill.js.map +1 -0
- package/dist/polyfills/index.d.ts +8 -0
- package/dist/polyfills/index.d.ts.map +1 -0
- package/dist/polyfills/index.js +8 -0
- package/dist/polyfills/index.js.map +1 -0
- package/dist/queue/consumer-registry.d.ts +77 -0
- package/dist/queue/consumer-registry.d.ts.map +1 -0
- package/dist/queue/consumer-registry.js +110 -0
- package/dist/queue/consumer-registry.js.map +1 -0
- package/dist/queue/decorators/index.d.ts +2 -0
- package/dist/queue/decorators/index.d.ts.map +1 -0
- package/dist/queue/decorators/index.js +2 -0
- package/dist/queue/decorators/index.js.map +1 -0
- package/dist/queue/decorators/inject-queue.decorator.d.ts +31 -0
- package/dist/queue/decorators/inject-queue.decorator.d.ts.map +1 -0
- package/dist/queue/decorators/inject-queue.decorator.js +33 -0
- package/dist/queue/decorators/inject-queue.decorator.js.map +1 -0
- package/dist/queue/errors/index.d.ts +3 -0
- package/dist/queue/errors/index.d.ts.map +1 -0
- package/dist/queue/errors/index.js +3 -0
- package/dist/queue/errors/index.js.map +1 -0
- package/dist/queue/errors/queue-binding-not-found.error.d.ts +12 -0
- package/dist/queue/errors/queue-binding-not-found.error.d.ts.map +1 -0
- package/dist/queue/errors/queue-binding-not-found.error.js +15 -0
- package/dist/queue/errors/queue-binding-not-found.error.js.map +1 -0
- package/dist/queue/errors/queue-provider-not-supported.error.d.ts +13 -0
- package/dist/queue/errors/queue-provider-not-supported.error.d.ts.map +1 -0
- package/dist/queue/errors/queue-provider-not-supported.error.js +16 -0
- package/dist/queue/errors/queue-provider-not-supported.error.js.map +1 -0
- package/dist/queue/index.d.ts +14 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +21 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/providers/cloudflare-queue.provider.d.ts +42 -0
- package/dist/queue/providers/cloudflare-queue.provider.d.ts.map +1 -0
- package/dist/queue/providers/cloudflare-queue.provider.js +73 -0
- package/dist/queue/providers/cloudflare-queue.provider.js.map +1 -0
- package/dist/queue/providers/index.d.ts +4 -0
- package/dist/queue/providers/index.d.ts.map +1 -0
- package/dist/queue/providers/index.js +4 -0
- package/dist/queue/providers/index.js.map +1 -0
- package/dist/queue/providers/queue-provider.interface.d.ts +34 -0
- package/dist/queue/providers/queue-provider.interface.d.ts.map +1 -0
- package/dist/queue/providers/queue-provider.interface.js +2 -0
- package/dist/queue/providers/queue-provider.interface.js.map +1 -0
- package/dist/queue/providers/sync-queue.provider.d.ts +48 -0
- package/dist/queue/providers/sync-queue.provider.d.ts.map +1 -0
- package/dist/queue/providers/sync-queue.provider.js +89 -0
- package/dist/queue/providers/sync-queue.provider.js.map +1 -0
- package/dist/queue/queue-consumer.d.ts +64 -0
- package/dist/queue/queue-consumer.d.ts.map +1 -0
- package/dist/queue/queue-consumer.js +2 -0
- package/dist/queue/queue-consumer.js.map +1 -0
- package/dist/queue/queue-manager.d.ts +36 -0
- package/dist/queue/queue-manager.d.ts.map +1 -0
- package/dist/queue/queue-manager.js +80 -0
- package/dist/queue/queue-manager.js.map +1 -0
- package/dist/queue/queue-name.d.ts +50 -0
- package/dist/queue/queue-name.d.ts.map +1 -0
- package/dist/queue/queue-name.js +21 -0
- package/dist/queue/queue-name.js.map +1 -0
- package/dist/queue/queue-registry.d.ts +46 -0
- package/dist/queue/queue-registry.d.ts.map +1 -0
- package/dist/queue/queue-registry.js +78 -0
- package/dist/queue/queue-registry.js.map +1 -0
- package/dist/queue/queue-sender.d.ts +38 -0
- package/dist/queue/queue-sender.d.ts.map +1 -0
- package/dist/queue/queue-sender.interface.d.ts +46 -0
- package/dist/queue/queue-sender.interface.d.ts.map +1 -0
- package/dist/queue/queue-sender.interface.js +2 -0
- package/dist/queue/queue-sender.interface.js.map +1 -0
- package/dist/queue/queue-sender.js +54 -0
- package/dist/queue/queue-sender.js.map +1 -0
- package/dist/queue/queue.module.d.ts +80 -0
- package/dist/queue/queue.module.d.ts.map +1 -0
- package/dist/queue/queue.module.js +113 -0
- package/dist/queue/queue.module.js.map +1 -0
- package/dist/queue/queue.tokens.d.ts +7 -0
- package/dist/queue/queue.tokens.d.ts.map +1 -0
- package/dist/queue/queue.tokens.js +6 -0
- package/dist/queue/queue.tokens.js.map +1 -0
- package/dist/queue/services/index.d.ts +2 -0
- package/dist/queue/services/index.d.ts.map +1 -0
- package/dist/queue/services/index.js +2 -0
- package/dist/queue/services/index.js.map +1 -0
- package/dist/queue/services/queue-provider-factory.d.ts +41 -0
- package/dist/queue/services/queue-provider-factory.d.ts.map +1 -0
- package/dist/queue/services/queue-provider-factory.js +78 -0
- package/dist/queue/services/queue-provider-factory.js.map +1 -0
- package/dist/router/constants.d.ts +72 -0
- package/dist/router/constants.d.ts.map +1 -0
- package/dist/router/constants.js +54 -0
- package/dist/router/constants.js.map +1 -0
- package/dist/router/controller.d.ts +56 -0
- package/dist/router/controller.d.ts.map +1 -0
- package/dist/router/controller.js +2 -0
- package/dist/router/controller.js.map +1 -0
- package/dist/router/decorators/controller.decorator.d.ts +55 -0
- package/dist/router/decorators/controller.decorator.d.ts.map +1 -0
- package/dist/router/decorators/controller.decorator.js +76 -0
- package/dist/router/decorators/controller.decorator.js.map +1 -0
- package/dist/router/decorators/index.d.ts +3 -0
- package/dist/router/decorators/index.d.ts.map +1 -0
- package/dist/router/decorators/index.js +7 -0
- package/dist/router/decorators/index.js.map +1 -0
- package/dist/router/decorators/route.decorator.d.ts +87 -0
- package/dist/router/decorators/route.decorator.d.ts.map +1 -0
- package/dist/router/decorators/route.decorator.js +99 -0
- package/dist/router/decorators/route.decorator.js.map +1 -0
- package/dist/router/errors/controller-method-not-found.error.d.ts +11 -0
- package/dist/router/errors/controller-method-not-found.error.d.ts.map +1 -0
- package/dist/router/errors/controller-method-not-found.error.js +14 -0
- package/dist/router/errors/controller-method-not-found.error.js.map +1 -0
- package/dist/router/errors/controller-registration.error.d.ts +15 -0
- package/dist/router/errors/controller-registration.error.d.ts.map +1 -0
- package/dist/router/errors/controller-registration.error.js +21 -0
- package/dist/router/errors/controller-registration.error.js.map +1 -0
- package/dist/router/errors/index.d.ts +9 -0
- package/dist/router/errors/index.d.ts.map +1 -0
- package/dist/router/errors/index.js +11 -0
- package/dist/router/errors/index.js.map +1 -0
- package/dist/router/errors/openapi-route-registration.error.d.ts +17 -0
- package/dist/router/errors/openapi-route-registration.error.d.ts.map +1 -0
- package/dist/router/errors/openapi-route-registration.error.js +20 -0
- package/dist/router/errors/openapi-route-registration.error.js.map +1 -0
- package/dist/router/errors/openapi-validation.error.d.ts +19 -0
- package/dist/router/errors/openapi-validation.error.d.ts.map +1 -0
- package/dist/router/errors/openapi-validation.error.js +22 -0
- package/dist/router/errors/openapi-validation.error.js.map +1 -0
- package/dist/router/errors/route-not-found.error.d.ts +11 -0
- package/dist/router/errors/route-not-found.error.d.ts.map +1 -0
- package/dist/router/errors/route-not-found.error.js +14 -0
- package/dist/router/errors/route-not-found.error.js.map +1 -0
- package/dist/router/errors/router-already-configured.error.d.ts +5 -0
- package/dist/router/errors/router-already-configured.error.d.ts.map +1 -0
- package/dist/router/errors/router-already-configured.error.js +8 -0
- package/dist/router/errors/router-already-configured.error.js.map +1 -0
- package/dist/router/errors/router-not-configured.error.d.ts +5 -0
- package/dist/router/errors/router-not-configured.error.d.ts.map +1 -0
- package/dist/router/errors/router-not-configured.error.js +8 -0
- package/dist/router/errors/router-not-configured.error.js.map +1 -0
- package/dist/router/errors/schema-validation.error.d.ts +11 -0
- package/dist/router/errors/schema-validation.error.d.ts.map +1 -0
- package/dist/router/errors/schema-validation.error.js +18 -0
- package/dist/router/errors/schema-validation.error.js.map +1 -0
- package/dist/router/index.d.ts +13 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +18 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/middleware/index.d.ts +2 -0
- package/dist/router/middleware/index.d.ts.map +1 -0
- package/dist/router/middleware/index.js +4 -0
- package/dist/router/middleware/index.js.map +1 -0
- package/dist/router/middleware/logger.middleware.d.ts +19 -0
- package/dist/router/middleware/logger.middleware.d.ts.map +1 -0
- package/dist/router/middleware/logger.middleware.js +32 -0
- package/dist/router/middleware/logger.middleware.js.map +1 -0
- package/dist/router/middleware.interface.d.ts +38 -0
- package/dist/router/middleware.interface.d.ts.map +1 -0
- package/dist/router/middleware.interface.js +2 -0
- package/dist/router/middleware.interface.js.map +1 -0
- package/dist/router/router-context.d.ts +117 -0
- package/dist/router/router-context.d.ts.map +1 -0
- package/dist/router/router-context.js +145 -0
- package/dist/router/router-context.js.map +1 -0
- package/dist/router/router.service.d.ts +62 -0
- package/dist/router/router.service.d.ts.map +1 -0
- package/dist/router/router.service.js +166 -0
- package/dist/router/router.service.js.map +1 -0
- package/dist/router/router.tokens.d.ts +39 -0
- package/dist/router/router.tokens.d.ts.map +1 -0
- package/dist/router/router.tokens.js +39 -0
- package/dist/router/router.tokens.js.map +1 -0
- package/dist/router/schemas/common.schemas.d.ts +148 -0
- package/dist/router/schemas/common.schemas.d.ts.map +1 -0
- package/dist/router/schemas/common.schemas.js +88 -0
- package/dist/router/schemas/common.schemas.js.map +1 -0
- package/dist/router/schemas/index.d.ts +2 -0
- package/dist/router/schemas/index.d.ts.map +1 -0
- package/dist/router/schemas/index.js +2 -0
- package/dist/router/schemas/index.js.map +1 -0
- package/dist/router/services/index.d.ts +7 -0
- package/dist/router/services/index.d.ts.map +1 -0
- package/dist/router/services/index.js +7 -0
- package/dist/router/services/index.js.map +1 -0
- package/dist/router/services/request-scope.service.d.ts +44 -0
- package/dist/router/services/request-scope.service.d.ts.map +1 -0
- package/dist/router/services/request-scope.service.js +78 -0
- package/dist/router/services/request-scope.service.js.map +1 -0
- package/dist/router/services/route-registration.service.d.ts +94 -0
- package/dist/router/services/route-registration.service.d.ts.map +1 -0
- package/dist/router/services/route-registration.service.js +451 -0
- package/dist/router/services/route-registration.service.js.map +1 -0
- package/dist/router/types.d.ts +130 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +2 -0
- package/dist/router/types.js.map +1 -0
- package/dist/storage/contracts/delete-file.input.d.ts +7 -0
- package/dist/storage/contracts/delete-file.input.d.ts.map +1 -0
- package/dist/storage/contracts/delete-file.input.js +6 -0
- package/dist/storage/contracts/delete-file.input.js.map +1 -0
- package/dist/storage/contracts/download-result.d.ts +28 -0
- package/dist/storage/contracts/download-result.d.ts.map +1 -0
- package/dist/storage/contracts/download-result.js +2 -0
- package/dist/storage/contracts/download-result.js.map +1 -0
- package/dist/storage/contracts/file-exists.input.d.ts +7 -0
- package/dist/storage/contracts/file-exists.input.d.ts.map +1 -0
- package/dist/storage/contracts/file-exists.input.js +6 -0
- package/dist/storage/contracts/file-exists.input.js.map +1 -0
- package/dist/storage/contracts/get-presigned-url.input.d.ts +26 -0
- package/dist/storage/contracts/get-presigned-url.input.d.ts.map +1 -0
- package/dist/storage/contracts/get-presigned-url.input.js +14 -0
- package/dist/storage/contracts/get-presigned-url.input.js.map +1 -0
- package/dist/storage/contracts/index.d.ts +6 -0
- package/dist/storage/contracts/index.d.ts.map +1 -0
- package/dist/storage/contracts/index.js +6 -0
- package/dist/storage/contracts/index.js.map +1 -0
- package/dist/storage/contracts/upload-file.input.d.ts +34 -0
- package/dist/storage/contracts/upload-file.input.d.ts.map +1 -0
- package/dist/storage/contracts/upload-file.input.js +10 -0
- package/dist/storage/contracts/upload-file.input.js.map +1 -0
- package/dist/storage/errors/disk-not-configured.error.d.ts +5 -0
- package/dist/storage/errors/disk-not-configured.error.d.ts.map +1 -0
- package/dist/storage/errors/disk-not-configured.error.js +7 -0
- package/dist/storage/errors/disk-not-configured.error.js.map +1 -0
- package/dist/storage/errors/file-not-found.error.d.ts +5 -0
- package/dist/storage/errors/file-not-found.error.d.ts.map +1 -0
- package/dist/storage/errors/file-not-found.error.js +8 -0
- package/dist/storage/errors/file-not-found.error.js.map +1 -0
- package/dist/storage/errors/file-too-large.error.d.ts +5 -0
- package/dist/storage/errors/file-too-large.error.d.ts.map +1 -0
- package/dist/storage/errors/file-too-large.error.js +11 -0
- package/dist/storage/errors/file-too-large.error.js.map +1 -0
- package/dist/storage/errors/index.d.ts +9 -0
- package/dist/storage/errors/index.d.ts.map +1 -0
- package/dist/storage/errors/index.js +9 -0
- package/dist/storage/errors/index.js.map +1 -0
- package/dist/storage/errors/invalid-disk.error.d.ts +5 -0
- package/dist/storage/errors/invalid-disk.error.d.ts.map +1 -0
- package/dist/storage/errors/invalid-disk.error.js +8 -0
- package/dist/storage/errors/invalid-disk.error.js.map +1 -0
- package/dist/storage/errors/invalid-file-type.error.d.ts +5 -0
- package/dist/storage/errors/invalid-file-type.error.d.ts.map +1 -0
- package/dist/storage/errors/invalid-file-type.error.js +10 -0
- package/dist/storage/errors/invalid-file-type.error.js.map +1 -0
- package/dist/storage/errors/presigned-url-invalid-expiry.error.d.ts +5 -0
- package/dist/storage/errors/presigned-url-invalid-expiry.error.d.ts.map +1 -0
- package/dist/storage/errors/presigned-url-invalid-expiry.error.js +12 -0
- package/dist/storage/errors/presigned-url-invalid-expiry.error.js.map +1 -0
- package/dist/storage/errors/storage-provider-not-supported.error.d.ts +5 -0
- package/dist/storage/errors/storage-provider-not-supported.error.d.ts.map +1 -0
- package/dist/storage/errors/storage-provider-not-supported.error.js +8 -0
- package/dist/storage/errors/storage-provider-not-supported.error.js.map +1 -0
- package/dist/storage/errors/storage-response-body-missing.error.d.ts +5 -0
- package/dist/storage/errors/storage-response-body-missing.error.d.ts.map +1 -0
- package/dist/storage/errors/storage-response-body-missing.error.js +8 -0
- package/dist/storage/errors/storage-response-body-missing.error.js.map +1 -0
- package/dist/storage/index.d.ts +15 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +18 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/providers/s3-multipart-provider.interface.d.ts +194 -0
- package/dist/storage/providers/s3-multipart-provider.interface.d.ts.map +1 -0
- package/dist/storage/providers/s3-multipart-provider.interface.js +2 -0
- package/dist/storage/providers/s3-multipart-provider.interface.js.map +1 -0
- package/dist/storage/providers/s3-storage.provider.d.ts +77 -0
- package/dist/storage/providers/s3-storage.provider.d.ts.map +1 -0
- package/dist/storage/providers/s3-storage.provider.js +310 -0
- package/dist/storage/providers/s3-storage.provider.js.map +1 -0
- package/dist/storage/providers/storage-provider.interface.d.ts +58 -0
- package/dist/storage/providers/storage-provider.interface.d.ts.map +1 -0
- package/dist/storage/providers/storage-provider.interface.js +2 -0
- package/dist/storage/providers/storage-provider.interface.js.map +1 -0
- package/dist/storage/services/storage-manager.service.d.ts +48 -0
- package/dist/storage/services/storage-manager.service.d.ts.map +1 -0
- package/dist/storage/services/storage-manager.service.js +111 -0
- package/dist/storage/services/storage-manager.service.js.map +1 -0
- package/dist/storage/services/storage.service.d.ts +140 -0
- package/dist/storage/services/storage.service.d.ts.map +1 -0
- package/dist/storage/services/storage.service.js +232 -0
- package/dist/storage/services/storage.service.js.map +1 -0
- package/dist/storage/storage.module.d.ts +52 -0
- package/dist/storage/storage.module.d.ts.map +1 -0
- package/dist/storage/storage.module.js +81 -0
- package/dist/storage/storage.module.js.map +1 -0
- package/dist/storage/storage.tokens.d.ts +10 -0
- package/dist/storage/storage.tokens.d.ts.map +1 -0
- package/dist/storage/storage.tokens.js +10 -0
- package/dist/storage/storage.tokens.js.map +1 -0
- package/dist/storage/types.d.ts +31 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/worker/index.d.ts +2 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +2 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/module-worker.d.ts +48 -0
- package/dist/worker/module-worker.d.ts.map +1 -0
- package/dist/worker/module-worker.js +88 -0
- package/dist/worker/module-worker.js.map +1 -0
- package/dist/worker/stratal-worker.d.ts +48 -0
- package/dist/worker/stratal-worker.d.ts.map +1 -0
- package/dist/worker/stratal-worker.js +88 -0
- package/dist/worker/stratal-worker.js.map +1 -0
- package/package.json +148 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
import { LOGGER_TOKENS } from '../logger/logger.tokens';
|
|
2
|
+
import { ConditionalBindingBuilderImpl } from './conditional-binding-builder';
|
|
3
|
+
import { RequestScopeOperationNotAllowedError } from './errors/request-scope-operation-not-allowed.error';
|
|
4
|
+
import { RequestContextStore } from './request-context-store';
|
|
5
|
+
import { CONTAINER_TOKEN, DI_TOKENS } from './tokens';
|
|
6
|
+
/**
|
|
7
|
+
* Unified Container for DI management
|
|
8
|
+
*
|
|
9
|
+
* Manages the two-tier container hierarchy:
|
|
10
|
+
* - Global scope: Singletons, base instances of request-scoped services
|
|
11
|
+
* - Request scope: Context-enriched instances per HTTP request
|
|
12
|
+
*
|
|
13
|
+
* @example Basic registration
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { container as tsyringeRootContainer } from 'tsyringe'
|
|
16
|
+
*
|
|
17
|
+
* const container = new Container({
|
|
18
|
+
* env,
|
|
19
|
+
* ctx,
|
|
20
|
+
* container: tsyringeRootContainer.createChildContainer()
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* // Auto-extract token and scope from decorator
|
|
24
|
+
* container.register(I18nService)
|
|
25
|
+
*
|
|
26
|
+
* // Explicit token with auto-scope detection
|
|
27
|
+
* container.register(MY_TOKEN, MyService)
|
|
28
|
+
*
|
|
29
|
+
* // Explicit singleton registration
|
|
30
|
+
* container.registerSingleton(ConfigService)
|
|
31
|
+
*
|
|
32
|
+
* // Register a value
|
|
33
|
+
* container.registerValue(MY_TOKEN, myInstance)
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example Resolution
|
|
37
|
+
* ```typescript
|
|
38
|
+
* // Resolves from container
|
|
39
|
+
* const service = container.resolve(MY_TOKEN)
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Request scope (automatic lifecycle)
|
|
43
|
+
* ```typescript
|
|
44
|
+
* await container.runInRequestScope(routerContext, async () => {
|
|
45
|
+
* const i18n = container.resolve(I18N_TOKEN)
|
|
46
|
+
* // i18n is context-enriched for this request
|
|
47
|
+
* })
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example Request scope (manual lifecycle)
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const reqContainer = container.createRequestScope(routerContext)
|
|
53
|
+
* reqContainer.registerValue(DI_TOKENS.TenantContext, tenantContext)
|
|
54
|
+
* await reqContainer.runWithContextStore(async () => {
|
|
55
|
+
* // use reqContainer...
|
|
56
|
+
* })
|
|
57
|
+
* // Cleanup is automatic
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export class Container {
|
|
61
|
+
container;
|
|
62
|
+
contextStore;
|
|
63
|
+
env;
|
|
64
|
+
ctx;
|
|
65
|
+
isRequestScoped;
|
|
66
|
+
constructor(options) {
|
|
67
|
+
this.env = options.env;
|
|
68
|
+
this.ctx = options.ctx;
|
|
69
|
+
this.isRequestScoped = options.isRequestScoped ?? false;
|
|
70
|
+
this.contextStore = RequestContextStore.getInstance();
|
|
71
|
+
this.container = options.container;
|
|
72
|
+
// Only register bindings for global container (not request-scoped)
|
|
73
|
+
if (!this.isRequestScoped) {
|
|
74
|
+
this.container.register(DI_TOKENS.CloudflareEnv, { useValue: options.env });
|
|
75
|
+
this.container.register(DI_TOKENS.ExecutionContext, { useValue: options.ctx });
|
|
76
|
+
this.container.register(CONTAINER_TOKEN, { useValue: this });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
get logger() {
|
|
80
|
+
return this.container.resolve(LOGGER_TOKENS.LoggerService);
|
|
81
|
+
}
|
|
82
|
+
register(tokenOrClass, serviceClassOrScope, scope) {
|
|
83
|
+
let token;
|
|
84
|
+
let serviceClass;
|
|
85
|
+
let lifecycle;
|
|
86
|
+
if (typeof serviceClassOrScope === 'function') {
|
|
87
|
+
// Called as register(token, class, scope?)
|
|
88
|
+
token = tokenOrClass;
|
|
89
|
+
serviceClass = serviceClassOrScope;
|
|
90
|
+
lifecycle = scope;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Called as register(class, scope?)
|
|
94
|
+
token = tokenOrClass;
|
|
95
|
+
serviceClass = tokenOrClass;
|
|
96
|
+
lifecycle = serviceClassOrScope;
|
|
97
|
+
}
|
|
98
|
+
if (lifecycle !== undefined) {
|
|
99
|
+
this.container.register(token, { useClass: serviceClass }, { lifecycle });
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.container.register(token, { useClass: serviceClass });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
registerSingleton(tokenOrClass, serviceClass) {
|
|
106
|
+
if (serviceClass !== undefined) {
|
|
107
|
+
this.container.registerSingleton(tokenOrClass, serviceClass);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const targetClass = tokenOrClass;
|
|
111
|
+
this.container.registerSingleton(targetClass, targetClass);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Register a value (instance) directly
|
|
116
|
+
*
|
|
117
|
+
* Use for registering pre-created instances or primitive values.
|
|
118
|
+
*
|
|
119
|
+
* @param token - DI token for resolution
|
|
120
|
+
* @param value - Value to register
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* container.registerValue(CONFIG_TOKEN, configInstance)
|
|
125
|
+
* container.registerValue(DI_TOKENS.Application, app)
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
registerValue(token, value) {
|
|
129
|
+
this.container.register(token, { useValue: value });
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Register with factory function
|
|
133
|
+
*
|
|
134
|
+
* Use when instance creation requires custom logic or other resolved dependencies.
|
|
135
|
+
*
|
|
136
|
+
* @param token - DI token for resolution
|
|
137
|
+
* @param factory - Factory function that receives the Container
|
|
138
|
+
* @param scope - Optional lifecycle scope (defaults to Transient)
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* container.registerFactory(FORMATTER_TOKEN, (c) => {
|
|
143
|
+
* const config = c.resolve(CONFIG_TOKEN)
|
|
144
|
+
* return config.get('logging').formatter === 'pretty'
|
|
145
|
+
* ? new PrettyFormatter()
|
|
146
|
+
* : new JsonFormatter()
|
|
147
|
+
* }, Scope.Singleton)
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
registerFactory(token, factory) {
|
|
151
|
+
this.container.register(token, { useFactory: () => factory(this) });
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Register an alias to an existing token
|
|
155
|
+
*
|
|
156
|
+
* Creates a redirect so that resolving the alias token returns the same
|
|
157
|
+
* instance as the target token. This is useful for:
|
|
158
|
+
* - Interface tokens that alias concrete implementations
|
|
159
|
+
* - Multiple entry points to the same service
|
|
160
|
+
*
|
|
161
|
+
* @param alias - The alias token to register
|
|
162
|
+
* @param target - The target token to redirect to
|
|
163
|
+
*
|
|
164
|
+
* @example Interface abstraction
|
|
165
|
+
* ```typescript
|
|
166
|
+
* // Register concrete implementation
|
|
167
|
+
* container.register(UserService)
|
|
168
|
+
*
|
|
169
|
+
* // Create alias for interface token
|
|
170
|
+
* container.registerExisting(I_USER_SERVICE, UserService)
|
|
171
|
+
*
|
|
172
|
+
* // Both resolve to the same instance
|
|
173
|
+
* const a = container.resolve(UserService)
|
|
174
|
+
* const b = container.resolve(I_USER_SERVICE)
|
|
175
|
+
* // a === b (same instance)
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
registerExisting(alias, target) {
|
|
179
|
+
this.container.register(alias, { useToken: target });
|
|
180
|
+
}
|
|
181
|
+
// ============================================================
|
|
182
|
+
// Resolution Methods
|
|
183
|
+
// ============================================================
|
|
184
|
+
/**
|
|
185
|
+
* Resolve a service from the container
|
|
186
|
+
*
|
|
187
|
+
* @param token - DI token for the service
|
|
188
|
+
* @returns Resolved service instance
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* const logger = container.resolve(LOGGER_TOKEN)
|
|
193
|
+
* const config = container.resolve<IConfigService>(CONFIG_TOKEN)
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
resolve(token) {
|
|
197
|
+
return this.container.resolve(token);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check if a token is registered
|
|
201
|
+
*
|
|
202
|
+
* @param token - DI token to check
|
|
203
|
+
* @returns true if token is registered
|
|
204
|
+
*/
|
|
205
|
+
isRegistered(token) {
|
|
206
|
+
return this.container.isRegistered(token);
|
|
207
|
+
}
|
|
208
|
+
// ============================================================
|
|
209
|
+
// Conditional Registration Methods
|
|
210
|
+
// ============================================================
|
|
211
|
+
/**
|
|
212
|
+
* Start a conditional binding with predicate evaluation
|
|
213
|
+
*
|
|
214
|
+
* Creates a fluent builder for registering a service that chooses between
|
|
215
|
+
* two implementations based on a predicate evaluated at resolution time.
|
|
216
|
+
*
|
|
217
|
+
* @param predicate - Function that returns true/false to determine implementation.
|
|
218
|
+
* Receives a container with `resolve()` method for resolving dependencies.
|
|
219
|
+
* @param options - Optional configuration (cache: whether to cache predicate result)
|
|
220
|
+
* @returns Fluent builder for specifying token and implementations
|
|
221
|
+
*
|
|
222
|
+
* @example Environment-based implementation selection
|
|
223
|
+
* ```typescript
|
|
224
|
+
* container
|
|
225
|
+
* .when((c) => c.resolve(CONFIG_TOKEN).get('env') === 'development')
|
|
226
|
+
* .use(FORMATTER_TOKEN)
|
|
227
|
+
* .give(PrettyFormatter)
|
|
228
|
+
* .otherwise(JsonFormatter)
|
|
229
|
+
* ```
|
|
230
|
+
*
|
|
231
|
+
* @example Feature flag with cached predicate
|
|
232
|
+
* ```typescript
|
|
233
|
+
* container
|
|
234
|
+
* .when((c) => c.resolve(FEATURE_FLAGS_TOKEN).isEnabled('newPaymentGateway'), { cache: true })
|
|
235
|
+
* .use(PAYMENT_TOKEN)
|
|
236
|
+
* .give(StripePaymentService)
|
|
237
|
+
* .otherwise(LegacyPaymentService)
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
when(predicate, options = {}) {
|
|
241
|
+
return new ConditionalBindingBuilderImpl(this.container, this, predicate, options);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Replace a service registration with a decorated version
|
|
245
|
+
*
|
|
246
|
+
* Resolves the current instance, applies the decorator, and re-registers
|
|
247
|
+
* the decorated instance. This is a one-time operation at initialization time.
|
|
248
|
+
*
|
|
249
|
+
* **IMPORTANT:** This method can only be used in a module's `onInitialize()` method.
|
|
250
|
+
* The `onInitialize()` hook runs after all modules have registered their services
|
|
251
|
+
* via the `@Module` decorator, ensuring all dependencies are available for resolution.
|
|
252
|
+
*
|
|
253
|
+
* @param token - DI token of the service to extend
|
|
254
|
+
* @param decorator - Function that receives the service and returns decorated version
|
|
255
|
+
*
|
|
256
|
+
* @example Add logging to database service (in onInitialize)
|
|
257
|
+
* ```typescript
|
|
258
|
+
* // In your module's onInitialize() method:
|
|
259
|
+
* import type { OnInitialize, ModuleContext } from 'stratal/module'
|
|
260
|
+
*
|
|
261
|
+
* @Module({ providers: [...] })
|
|
262
|
+
* export class MyModule implements OnInitialize {
|
|
263
|
+
* onInitialize({ container }: ModuleContext): void {
|
|
264
|
+
* container.extend(DI_TOKENS.Database, (db, c) => {
|
|
265
|
+
* const logger = c.resolve(LOGGER_TOKENS.LoggerService)
|
|
266
|
+
* return new LoggingDatabaseDecorator(db, logger)
|
|
267
|
+
* })
|
|
268
|
+
* }
|
|
269
|
+
* }
|
|
270
|
+
* // DI_TOKENS.Database now resolves to LoggingDatabaseDecorator
|
|
271
|
+
* ```
|
|
272
|
+
*
|
|
273
|
+
* @example Chain multiple decorators
|
|
274
|
+
* ```typescript
|
|
275
|
+
* // In onInitialize()
|
|
276
|
+
* container.extend(SERVICE_TOKEN, (svc) => new LoggingDecorator(svc))
|
|
277
|
+
* container.extend(SERVICE_TOKEN, (svc) => new CachingDecorator(svc))
|
|
278
|
+
* // SERVICE_TOKEN now resolves to CachingDecorator(LoggingDecorator(original))
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
extend(token, decorator) {
|
|
282
|
+
// Resolve current instance
|
|
283
|
+
const currentInstance = this.container.resolve(token);
|
|
284
|
+
// Apply decorator
|
|
285
|
+
const decoratedInstance = decorator(currentInstance, this);
|
|
286
|
+
// Re-register with decorated instance (replaces existing registration)
|
|
287
|
+
this.container.register(token, { useValue: decoratedInstance });
|
|
288
|
+
}
|
|
289
|
+
// ============================================================
|
|
290
|
+
// Request Scope Management
|
|
291
|
+
// ============================================================
|
|
292
|
+
/**
|
|
293
|
+
* Check if currently in request context
|
|
294
|
+
*
|
|
295
|
+
* @returns true if in request context (inside runInRequestScope or runWithContextStore)
|
|
296
|
+
*/
|
|
297
|
+
isInRequestContext() {
|
|
298
|
+
return this.contextStore.hasRequestContext();
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Run callback within request scope
|
|
302
|
+
*
|
|
303
|
+
* Creates a child container with fresh instances for services registered with `scope: Scope.Request`.
|
|
304
|
+
* Automatically handles lifecycle (setup and cleanup).
|
|
305
|
+
*
|
|
306
|
+
* Also wraps with RequestContextStore for Zod i18n validation support.
|
|
307
|
+
*
|
|
308
|
+
* Can only be called on global container (not request-scoped).
|
|
309
|
+
*
|
|
310
|
+
* @param routerContext - RouterContext for the current request
|
|
311
|
+
* @param callback - Async operation to run with request context
|
|
312
|
+
* @returns Result of callback execution
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* await container.runInRequestScope(routerContext, async () => {
|
|
317
|
+
* const i18n = container.resolve(I18N_TOKEN)
|
|
318
|
+
* const message = i18n.t('common.welcome')
|
|
319
|
+
* // ...
|
|
320
|
+
* })
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
async runInRequestScope(routerContext, callback) {
|
|
324
|
+
if (this.isRequestScoped) {
|
|
325
|
+
throw new RequestScopeOperationNotAllowedError('runInRequestScope');
|
|
326
|
+
}
|
|
327
|
+
const requestChildContainer = this.createRequestChildContainer(routerContext);
|
|
328
|
+
try {
|
|
329
|
+
// Wrap with contextStore for Zod i18n validation
|
|
330
|
+
return await this.contextStore.run(requestChildContainer, callback);
|
|
331
|
+
}
|
|
332
|
+
finally {
|
|
333
|
+
await this.cleanupRequestContainer(requestChildContainer);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Create request scope container
|
|
338
|
+
*
|
|
339
|
+
* Use when you need manual control over the request container lifecycle,
|
|
340
|
+
* typically in middleware. Returns a new Container instance wrapping
|
|
341
|
+
* a request-scoped child container.
|
|
342
|
+
*
|
|
343
|
+
* Can only be called on global container (not request-scoped).
|
|
344
|
+
*
|
|
345
|
+
* @param routerContext - RouterContext for the current request
|
|
346
|
+
* @returns Request-scoped Container instance
|
|
347
|
+
*
|
|
348
|
+
* @example
|
|
349
|
+
* ```typescript
|
|
350
|
+
* const reqContainer = container.createRequestScope(routerContext)
|
|
351
|
+
* reqContainer.registerValue(DI_TOKENS.TenantContext, tenantContext)
|
|
352
|
+
* await reqContainer.runWithContextStore(async () => {
|
|
353
|
+
* // use reqContainer...
|
|
354
|
+
* })
|
|
355
|
+
* // Cleanup is automatic
|
|
356
|
+
* ```
|
|
357
|
+
*/
|
|
358
|
+
createRequestScope(routerContext) {
|
|
359
|
+
if (this.isRequestScoped) {
|
|
360
|
+
throw new RequestScopeOperationNotAllowedError('createRequestScope');
|
|
361
|
+
}
|
|
362
|
+
const requestChildContainer = this.createRequestChildContainer(routerContext);
|
|
363
|
+
return new Container({
|
|
364
|
+
env: this.env,
|
|
365
|
+
ctx: this.ctx,
|
|
366
|
+
container: requestChildContainer,
|
|
367
|
+
isRequestScoped: true
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Run callback within request scope context store
|
|
372
|
+
*
|
|
373
|
+
* Wraps callback with RequestContextStore (for Zod i18n validation)
|
|
374
|
+
* and automatically handles cleanup after callback completes.
|
|
375
|
+
*
|
|
376
|
+
* Can only be called on request-scoped container (not global).
|
|
377
|
+
*
|
|
378
|
+
* @param callback - Async operation to run with context
|
|
379
|
+
* @returns Result of callback execution
|
|
380
|
+
*
|
|
381
|
+
* @example
|
|
382
|
+
* ```typescript
|
|
383
|
+
* const reqContainer = container.createRequestScope(routerContext)
|
|
384
|
+
* reqContainer.registerValue(DI_TOKENS.TenantContext, tenantContext)
|
|
385
|
+
* await reqContainer.runWithContextStore(async () => {
|
|
386
|
+
* const i18n = reqContainer.resolve(I18N_TOKENS.I18nService)
|
|
387
|
+
* // ...
|
|
388
|
+
* })
|
|
389
|
+
* // Cleanup is automatic
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
async runWithContextStore(callback) {
|
|
393
|
+
if (!this.isRequestScoped) {
|
|
394
|
+
throw new RequestScopeOperationNotAllowedError('runWithContextStore');
|
|
395
|
+
}
|
|
396
|
+
try {
|
|
397
|
+
return await this.contextStore.run(this.container, callback);
|
|
398
|
+
}
|
|
399
|
+
finally {
|
|
400
|
+
await this.cleanupRequestContainer(this.container);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// ============================================================
|
|
404
|
+
// Escape Hatches
|
|
405
|
+
// ============================================================
|
|
406
|
+
/**
|
|
407
|
+
* Get underlying tsyringe container
|
|
408
|
+
*
|
|
409
|
+
* Use sparingly - prefer Container methods for most operations.
|
|
410
|
+
* Useful for advanced scenarios or compatibility with existing code.
|
|
411
|
+
* @returns The underlying DependencyContainer
|
|
412
|
+
*/
|
|
413
|
+
getTsyringeContainer() {
|
|
414
|
+
return this.container;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Get current request container from context store (if in request context)
|
|
418
|
+
* @deprecated Use container.runWithContextStore() instead
|
|
419
|
+
* @returns Request container if in request context, undefined otherwise
|
|
420
|
+
*/
|
|
421
|
+
getRequestContainer() {
|
|
422
|
+
return this.contextStore.getRequestContainer();
|
|
423
|
+
}
|
|
424
|
+
// ============================================================
|
|
425
|
+
// Private Methods
|
|
426
|
+
// ============================================================
|
|
427
|
+
/**
|
|
428
|
+
* Create request child container with RouterContext registered
|
|
429
|
+
*
|
|
430
|
+
* Services registered with `scope: Scope.Request` will automatically get fresh instances
|
|
431
|
+
* in the child container. RouterContext is registered so services can inject it for
|
|
432
|
+
* request-specific data.
|
|
433
|
+
*/
|
|
434
|
+
createRequestChildContainer(routerContext) {
|
|
435
|
+
const requestContainer = this.container.createChildContainer();
|
|
436
|
+
// Register RouterContext in request container
|
|
437
|
+
// Services registered with scope: Scope.Request can inject this via DI_TOKENS.RouterContext
|
|
438
|
+
const ROUTER_TOKENS = { RouterContext: Symbol.for('RouterContext') };
|
|
439
|
+
requestContainer.register(ROUTER_TOKENS.RouterContext, { useValue: routerContext });
|
|
440
|
+
return requestContainer;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Cleanup request container (disconnect database, etc.)
|
|
444
|
+
*
|
|
445
|
+
* Disposes the ConnectionManager to close all database pools.
|
|
446
|
+
* This is called after each request to prevent connection leaks.
|
|
447
|
+
*/
|
|
448
|
+
async cleanupRequestContainer(requestContainer) {
|
|
449
|
+
try {
|
|
450
|
+
if (requestContainer.isRegistered(DI_TOKENS.ConnectionManager)) {
|
|
451
|
+
const connectionManager = requestContainer.resolve(DI_TOKENS.ConnectionManager);
|
|
452
|
+
await connectionManager.dispose();
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
this.logger.warn('Failed to dispose ConnectionManager', { error });
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
dispose() {
|
|
460
|
+
this.logger.info('Container disposed.');
|
|
461
|
+
return this.container.dispose();
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
// Re-export tsyringe utilities for convenience
|
|
465
|
+
export { container, inject, injectable, singleton } from 'tsyringe';
|
|
466
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Method Parameter Injection Decorator
|
|
3
|
+
*
|
|
4
|
+
* Enables DI for controller method parameters. Parameters marked with
|
|
5
|
+
* @InjectParam(token) are resolved from the request-scoped container
|
|
6
|
+
* at method invocation time.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* @Route({ response: userSchema })
|
|
11
|
+
* async show(
|
|
12
|
+
* ctx: RouterContext,
|
|
13
|
+
* @InjectParam(UserService) userService: UserService,
|
|
14
|
+
* @InjectParam(CacheService) cache: CacheService
|
|
15
|
+
* ): Promise<Response> {
|
|
16
|
+
* // userService and cache auto-resolved from request container
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type InjectionToken from 'tsyringe/dist/typings/providers/injection-token';
|
|
21
|
+
/**
|
|
22
|
+
* Metadata key for storing parameter injection information
|
|
23
|
+
*/
|
|
24
|
+
export declare const INJECT_PARAM_METADATA_KEY: unique symbol;
|
|
25
|
+
/**
|
|
26
|
+
* Describes a parameter injection
|
|
27
|
+
*/
|
|
28
|
+
export interface ParamInjection {
|
|
29
|
+
/** Parameter index in the method signature (0-based) */
|
|
30
|
+
index: number;
|
|
31
|
+
/** DI token to resolve */
|
|
32
|
+
token: InjectionToken;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Mark a method parameter for DI injection
|
|
36
|
+
*
|
|
37
|
+
* The parameter will be resolved from the request-scoped container
|
|
38
|
+
* when the controller method is invoked.
|
|
39
|
+
*
|
|
40
|
+
* @param token - DI token to resolve (class or symbol)
|
|
41
|
+
*
|
|
42
|
+
* @example With class token
|
|
43
|
+
* ```typescript
|
|
44
|
+
* async show(
|
|
45
|
+
* ctx: RouterContext,
|
|
46
|
+
* @InjectParam(UserService) userService: UserService
|
|
47
|
+
* ) { }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example With symbol token
|
|
51
|
+
* ```typescript
|
|
52
|
+
* async show(
|
|
53
|
+
* ctx: RouterContext,
|
|
54
|
+
* @InjectParam(DI_TOKENS.Cache) cache: ICacheService
|
|
55
|
+
* ) { }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function InjectParam<T>(token: InjectionToken<T>): ParameterDecorator;
|
|
59
|
+
/**
|
|
60
|
+
* Get method parameter injections
|
|
61
|
+
*
|
|
62
|
+
* @param target - Controller prototype
|
|
63
|
+
* @param propertyKey - Method name
|
|
64
|
+
* @returns Array of parameter injections sorted by index
|
|
65
|
+
*/
|
|
66
|
+
export declare function getMethodInjections(target: object, propertyKey: string | symbol): ParamInjection[];
|
|
67
|
+
//# sourceMappingURL=inject-param.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-param.decorator.d.ts","sourceRoot":"","sources":["../../../src/di/decorators/inject-param.decorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,cAAc,MAAM,iDAAiD,CAAA;AAEjF;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAyB,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,KAAK,EAAE,cAAc,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAgB3E;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,EAAE,CAKlG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata key for storing parameter injection information
|
|
3
|
+
*/
|
|
4
|
+
export const INJECT_PARAM_METADATA_KEY = Symbol('inject:param');
|
|
5
|
+
/**
|
|
6
|
+
* Mark a method parameter for DI injection
|
|
7
|
+
*
|
|
8
|
+
* The parameter will be resolved from the request-scoped container
|
|
9
|
+
* when the controller method is invoked.
|
|
10
|
+
*
|
|
11
|
+
* @param token - DI token to resolve (class or symbol)
|
|
12
|
+
*
|
|
13
|
+
* @example With class token
|
|
14
|
+
* ```typescript
|
|
15
|
+
* async show(
|
|
16
|
+
* ctx: RouterContext,
|
|
17
|
+
* @InjectParam(UserService) userService: UserService
|
|
18
|
+
* ) { }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example With symbol token
|
|
22
|
+
* ```typescript
|
|
23
|
+
* async show(
|
|
24
|
+
* ctx: RouterContext,
|
|
25
|
+
* @InjectParam(DI_TOKENS.Cache) cache: ICacheService
|
|
26
|
+
* ) { }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function InjectParam(token) {
|
|
30
|
+
return (target, propertyKey, parameterIndex) => {
|
|
31
|
+
if (propertyKey === undefined) {
|
|
32
|
+
throw new Error('@InjectParam can only be used on method parameters, not constructor parameters');
|
|
33
|
+
}
|
|
34
|
+
const existingInjections = Reflect.getMetadata(INJECT_PARAM_METADATA_KEY, target, propertyKey) ?? [];
|
|
35
|
+
existingInjections.push({
|
|
36
|
+
index: parameterIndex,
|
|
37
|
+
token,
|
|
38
|
+
});
|
|
39
|
+
Reflect.defineMetadata(INJECT_PARAM_METADATA_KEY, existingInjections, target, propertyKey);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get method parameter injections
|
|
44
|
+
*
|
|
45
|
+
* @param target - Controller prototype
|
|
46
|
+
* @param propertyKey - Method name
|
|
47
|
+
* @returns Array of parameter injections sorted by index
|
|
48
|
+
*/
|
|
49
|
+
export function getMethodInjections(target, propertyKey) {
|
|
50
|
+
const injections = Reflect.getMetadata(INJECT_PARAM_METADATA_KEY, target, propertyKey) ?? [];
|
|
51
|
+
return injections.sort((a, b) => a.index - b.index);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=inject-param.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-param.decorator.js","sourceRoot":"","sources":["../../../src/di/decorators/inject-param.decorator.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AAY/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,WAAW,CAAI,KAAwB;IACrD,OAAO,CAAC,MAAc,EAAE,WAAwC,EAAE,cAAsB,EAAE,EAAE;QAC1F,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAA;QACnG,CAAC;QAED,MAAM,kBAAkB,GACrB,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,MAAM,EAAE,WAAW,CAAkC,IAAI,EAAE,CAAA;QAE7G,kBAAkB,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,cAAc;YACrB,KAAK;SACN,CAAC,CAAA;QAEF,OAAO,CAAC,cAAc,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IAC5F,CAAC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,WAA4B;IAC9E,MAAM,UAAU,GACb,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,MAAM,EAAE,WAAW,CAAkC,IAAI,EAAE,CAAA;IAE7G,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;AACrD,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type InjectionToken from 'tsyringe/dist/typings/providers/injection-token';
|
|
2
|
+
export { InjectParam, getMethodInjections, type ParamInjection, INJECT_PARAM_METADATA_KEY, } from './decorators/inject-param.decorator';
|
|
3
|
+
/**
|
|
4
|
+
* Mark a class as injectable
|
|
5
|
+
*
|
|
6
|
+
* This decorator wraps tsyringe's @injectable decorator and optionally
|
|
7
|
+
* associates a token with the class. The actual lifecycle (Singleton, Request,
|
|
8
|
+
* Transient) is determined at registration time, not decoration time.
|
|
9
|
+
*
|
|
10
|
+
* **Lifecycle Control:**
|
|
11
|
+
* - Use `scope: Scope.Singleton` in module providers for singleton
|
|
12
|
+
* - Use `scope: Scope.Request` in module providers for request-scoped
|
|
13
|
+
* - Default is Transient (new instance per resolution)
|
|
14
|
+
*
|
|
15
|
+
* @param token - Optional DI token for service resolution
|
|
16
|
+
*
|
|
17
|
+
* @example Basic usage (no token)
|
|
18
|
+
* ```typescript
|
|
19
|
+
* @Transient()
|
|
20
|
+
* export class UserService {
|
|
21
|
+
* constructor(@inject(DI_TOKENS.Database) private db: DatabaseService) {}
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* // In module:
|
|
25
|
+
* @Module({
|
|
26
|
+
* providers: [UserService] // Transient by default
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example With token
|
|
31
|
+
* ```typescript
|
|
32
|
+
* @Transient(DI_TOKENS.ConnectionManager)
|
|
33
|
+
* export class ConnectionManager implements Disposable {
|
|
34
|
+
* // ...
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* // In Application.ts:
|
|
38
|
+
* container.register(DI_TOKENS.ConnectionManager, ConnectionManager, Scope.Request)
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Singleton via provider scope
|
|
42
|
+
* ```typescript
|
|
43
|
+
* @Transient()
|
|
44
|
+
* export class ConsumerRegistry {
|
|
45
|
+
* // ...
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* // In module:
|
|
49
|
+
* @Module({
|
|
50
|
+
* providers: [
|
|
51
|
+
* { provide: DI_TOKENS.ConsumerRegistry, useClass: ConsumerRegistry, scope: Scope.Singleton }
|
|
52
|
+
* ]
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function Transient<T>(token?: InjectionToken<T>): <TFunction extends abstract new (...args: never[]) => unknown>(target: TFunction) => TFunction;
|
|
57
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,cAAc,MAAM,iDAAiD,CAAA;AAGjF,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,KAAK,cAAc,EACnB,yBAAyB,GAC1B,MAAM,qCAAqC,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,IACnC,SAAS,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,QAAQ,SAAS,KAAG,SAAS,CAK7G"}
|