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,194 @@
|
|
|
1
|
+
import type { IStorageProvider } from './storage-provider.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Options for creating a multipart upload
|
|
4
|
+
*/
|
|
5
|
+
export interface CreateMultipartOptions {
|
|
6
|
+
/** Content type (MIME type) */
|
|
7
|
+
contentType?: string;
|
|
8
|
+
/** Cache control header */
|
|
9
|
+
cacheControl?: string;
|
|
10
|
+
/** Custom S3 metadata */
|
|
11
|
+
metadata?: Record<string, string>;
|
|
12
|
+
/** S3 object tagging (key=value format) */
|
|
13
|
+
tagging?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Result of creating a multipart upload
|
|
17
|
+
*/
|
|
18
|
+
export interface CreateMultipartResult {
|
|
19
|
+
/** S3 upload ID for subsequent part uploads */
|
|
20
|
+
uploadId: string;
|
|
21
|
+
/** Object key */
|
|
22
|
+
key: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of uploading a part
|
|
26
|
+
*/
|
|
27
|
+
export interface UploadPartResult {
|
|
28
|
+
/** ETag returned by S3 */
|
|
29
|
+
etag: string;
|
|
30
|
+
/** Part number */
|
|
31
|
+
partNumber: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Part info for completing multipart upload
|
|
35
|
+
*/
|
|
36
|
+
export interface CompletedPart {
|
|
37
|
+
/** ETag from uploadPart */
|
|
38
|
+
etag: string;
|
|
39
|
+
/** Part number */
|
|
40
|
+
partNumber: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Result of completing a multipart upload
|
|
44
|
+
*/
|
|
45
|
+
export interface CompleteMultipartResult {
|
|
46
|
+
/** S3 location URL */
|
|
47
|
+
location?: string;
|
|
48
|
+
/** Object key */
|
|
49
|
+
key: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Individual part info from listParts
|
|
53
|
+
*/
|
|
54
|
+
export interface PartInfo {
|
|
55
|
+
/** Part number */
|
|
56
|
+
partNumber: number;
|
|
57
|
+
/** ETag */
|
|
58
|
+
etag: string;
|
|
59
|
+
/** Part size in bytes */
|
|
60
|
+
size: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Result of listing parts
|
|
64
|
+
*/
|
|
65
|
+
export interface ListPartsResult {
|
|
66
|
+
/** List of uploaded parts */
|
|
67
|
+
parts: PartInfo[];
|
|
68
|
+
/** Whether there are more parts */
|
|
69
|
+
isTruncated: boolean;
|
|
70
|
+
/** Marker for next page */
|
|
71
|
+
nextPartNumberMarker?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Individual upload info from listMultipartUploads
|
|
75
|
+
*/
|
|
76
|
+
export interface MultipartUploadInfo {
|
|
77
|
+
/** Object key */
|
|
78
|
+
key: string;
|
|
79
|
+
/** Upload ID */
|
|
80
|
+
uploadId: string;
|
|
81
|
+
/** When the upload was initiated */
|
|
82
|
+
initiated?: Date;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Result of listing multipart uploads
|
|
86
|
+
*/
|
|
87
|
+
export interface ListMultipartUploadsResult {
|
|
88
|
+
/** List of in-progress uploads */
|
|
89
|
+
uploads: MultipartUploadInfo[];
|
|
90
|
+
/** Whether there are more uploads */
|
|
91
|
+
isTruncated: boolean;
|
|
92
|
+
/** Marker for next page (key) */
|
|
93
|
+
nextKeyMarker?: string;
|
|
94
|
+
/** Marker for next page (uploadId) */
|
|
95
|
+
nextUploadIdMarker?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Result of headObject
|
|
99
|
+
*/
|
|
100
|
+
export interface HeadObjectResult {
|
|
101
|
+
/** Object size in bytes */
|
|
102
|
+
size: number;
|
|
103
|
+
/** Content type */
|
|
104
|
+
contentType?: string;
|
|
105
|
+
/** Custom metadata */
|
|
106
|
+
metadata?: Record<string, string>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Result of batch delete
|
|
110
|
+
*/
|
|
111
|
+
export interface DeleteObjectsResult {
|
|
112
|
+
/** Number of objects deleted */
|
|
113
|
+
deleted: number;
|
|
114
|
+
/** Errors that occurred */
|
|
115
|
+
errors: {
|
|
116
|
+
key: string;
|
|
117
|
+
code: string;
|
|
118
|
+
message: string;
|
|
119
|
+
}[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* S3-specific storage provider interface with multipart upload support
|
|
123
|
+
*
|
|
124
|
+
* Extends the generic IStorageProvider with S3 multipart upload operations.
|
|
125
|
+
* This interface is S3-specific - other providers (GCS, local) would have
|
|
126
|
+
* their own resumable upload interfaces if needed.
|
|
127
|
+
*/
|
|
128
|
+
export interface IS3MultipartProvider extends IStorageProvider {
|
|
129
|
+
/**
|
|
130
|
+
* Create a multipart upload
|
|
131
|
+
* @param key - Object key
|
|
132
|
+
* @param options - Upload options
|
|
133
|
+
* @returns Upload ID and key
|
|
134
|
+
*/
|
|
135
|
+
createMultipartUpload(key: string, options?: CreateMultipartOptions): Promise<CreateMultipartResult>;
|
|
136
|
+
/**
|
|
137
|
+
* Upload a part to an existing multipart upload
|
|
138
|
+
* @param key - Object key
|
|
139
|
+
* @param uploadId - Upload ID from createMultipartUpload
|
|
140
|
+
* @param partNumber - Part number (1-10000)
|
|
141
|
+
* @param body - Part data
|
|
142
|
+
* @returns ETag and part number
|
|
143
|
+
*/
|
|
144
|
+
uploadPart(key: string, uploadId: string, partNumber: number, body: Uint8Array): Promise<UploadPartResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Complete a multipart upload
|
|
147
|
+
* @param key - Object key
|
|
148
|
+
* @param uploadId - Upload ID
|
|
149
|
+
* @param parts - List of completed parts with ETags
|
|
150
|
+
* @returns Location and key
|
|
151
|
+
*/
|
|
152
|
+
completeMultipartUpload(key: string, uploadId: string, parts: CompletedPart[]): Promise<CompleteMultipartResult>;
|
|
153
|
+
/**
|
|
154
|
+
* Abort a multipart upload
|
|
155
|
+
* @param key - Object key
|
|
156
|
+
* @param uploadId - Upload ID
|
|
157
|
+
*/
|
|
158
|
+
abortMultipartUpload(key: string, uploadId: string): Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* List parts of a multipart upload
|
|
161
|
+
* @param key - Object key
|
|
162
|
+
* @param uploadId - Upload ID
|
|
163
|
+
* @param partNumberMarker - Optional marker for pagination
|
|
164
|
+
* @returns List of parts
|
|
165
|
+
*/
|
|
166
|
+
listParts(key: string, uploadId: string, partNumberMarker?: string): Promise<ListPartsResult>;
|
|
167
|
+
/**
|
|
168
|
+
* List all in-progress multipart uploads
|
|
169
|
+
* @param keyMarker - Optional key marker for pagination
|
|
170
|
+
* @param uploadIdMarker - Optional upload ID marker for pagination
|
|
171
|
+
* @returns List of uploads
|
|
172
|
+
*/
|
|
173
|
+
listMultipartUploads(keyMarker?: string, uploadIdMarker?: string): Promise<ListMultipartUploadsResult>;
|
|
174
|
+
/**
|
|
175
|
+
* Get object metadata without downloading the body
|
|
176
|
+
* Unlike exists() which returns boolean, this returns actual metadata
|
|
177
|
+
* @param key - Object key
|
|
178
|
+
* @returns Object metadata or null if not found
|
|
179
|
+
*/
|
|
180
|
+
headObject(key: string): Promise<HeadObjectResult | null>;
|
|
181
|
+
/**
|
|
182
|
+
* Delete multiple objects in a single request
|
|
183
|
+
* More efficient than individual delete() calls
|
|
184
|
+
* @param keys - Array of object keys
|
|
185
|
+
* @returns Delete results
|
|
186
|
+
*/
|
|
187
|
+
deleteObjects(keys: string[]): Promise<DeleteObjectsResult>;
|
|
188
|
+
/**
|
|
189
|
+
* Get the bucket name
|
|
190
|
+
* @returns Bucket name from configuration
|
|
191
|
+
*/
|
|
192
|
+
getBucket(): string;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=s3-multipart-provider.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-multipart-provider.interface.d.ts","sourceRoot":"","sources":["../../../src/storage/providers/s3-multipart-provider.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-multipart-provider.interface.js","sourceRoot":"","sources":["../../../src/storage/providers/s3-multipart-provider.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { StorageEntry } from 'stratal';
|
|
2
|
+
import type { DownloadResult, PresignedUrlResult, UploadOptions, UploadResult } from '../contracts';
|
|
3
|
+
import type { CompletedPart, CompleteMultipartResult, CreateMultipartOptions, CreateMultipartResult, DeleteObjectsResult, HeadObjectResult, IS3MultipartProvider, ListMultipartUploadsResult, ListPartsResult, UploadPartResult } from './s3-multipart-provider.interface';
|
|
4
|
+
import type { StreamingBlobPayloadInputTypes } from './storage-provider.interface';
|
|
5
|
+
/**
|
|
6
|
+
* S3 Storage Provider
|
|
7
|
+
* Implements storage operations using AWS SDK for S3-compatible storage
|
|
8
|
+
* Works with AWS S3, Cloudflare R2, MinIO, and other S3-compatible services
|
|
9
|
+
*
|
|
10
|
+
* Implements IS3MultipartProvider for multipart upload support needed by TUS
|
|
11
|
+
*/
|
|
12
|
+
export declare class S3StorageProvider implements IS3MultipartProvider {
|
|
13
|
+
private readonly client;
|
|
14
|
+
private readonly bucket;
|
|
15
|
+
private readonly disk;
|
|
16
|
+
constructor(config: StorageEntry);
|
|
17
|
+
upload(body: StreamingBlobPayloadInputTypes, path: string, options: UploadOptions): Promise<UploadResult>;
|
|
18
|
+
download(path: string): Promise<DownloadResult>;
|
|
19
|
+
delete(path: string): Promise<void>;
|
|
20
|
+
exists(path: string): Promise<boolean>;
|
|
21
|
+
getPresignedUrl(path: string, method: 'GET' | 'PUT' | 'DELETE' | 'HEAD', expiresIn: number): Promise<PresignedUrlResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Chunked upload for streaming data without known size
|
|
24
|
+
* Uses @aws-sdk/lib-storage for multipart upload handling
|
|
25
|
+
*
|
|
26
|
+
* Benefits:
|
|
27
|
+
* - Handles unknown Content-Length automatically
|
|
28
|
+
* - Automatic retry on transient failures
|
|
29
|
+
* - Cleanup of partial uploads on error
|
|
30
|
+
* - Works with S3-compatible storage (R2, MinIO, RustFS)
|
|
31
|
+
*
|
|
32
|
+
* @param body - Content to upload (stream or buffer)
|
|
33
|
+
* @param path - Full path including disk root
|
|
34
|
+
* @param options - Upload options (mimeType required, size optional)
|
|
35
|
+
* @returns Upload result with metadata
|
|
36
|
+
*/
|
|
37
|
+
chunkedUpload(body: StreamingBlobPayloadInputTypes, path: string, options: Omit<UploadOptions, 'size'> & {
|
|
38
|
+
size?: number;
|
|
39
|
+
}): Promise<UploadResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Get the bucket name
|
|
42
|
+
*/
|
|
43
|
+
getBucket(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get object metadata without downloading the body
|
|
46
|
+
*/
|
|
47
|
+
headObject(key: string): Promise<HeadObjectResult | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Delete multiple objects in a single request
|
|
50
|
+
*/
|
|
51
|
+
deleteObjects(keys: string[]): Promise<DeleteObjectsResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Create a multipart upload
|
|
54
|
+
*/
|
|
55
|
+
createMultipartUpload(key: string, options?: CreateMultipartOptions): Promise<CreateMultipartResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Upload a part to an existing multipart upload
|
|
58
|
+
*/
|
|
59
|
+
uploadPart(key: string, uploadId: string, partNumber: number, body: Uint8Array): Promise<UploadPartResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Complete a multipart upload
|
|
62
|
+
*/
|
|
63
|
+
completeMultipartUpload(key: string, uploadId: string, parts: CompletedPart[]): Promise<CompleteMultipartResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Abort a multipart upload
|
|
66
|
+
*/
|
|
67
|
+
abortMultipartUpload(key: string, uploadId: string): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* List parts of a multipart upload
|
|
70
|
+
*/
|
|
71
|
+
listParts(key: string, uploadId: string, partNumberMarker?: string): Promise<ListPartsResult>;
|
|
72
|
+
/**
|
|
73
|
+
* List all in-progress multipart uploads
|
|
74
|
+
*/
|
|
75
|
+
listMultipartUploads(keyMarker?: string, uploadIdMarker?: string): Promise<ListMultipartUploadsResult>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=s3-storage.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-storage.provider.d.ts","sourceRoot":"","sources":["../../../src/storage/providers/s3-storage.provider.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnG,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EACjB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAA;AAElF;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEjB,MAAM,EAAE,YAAY;IAgB1B,MAAM,CACV,IAAI,EAAE,8BAA8B,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC;IAuBlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsB/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAetC,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC;IA4B9B;;;;;;;;;;;;;;OAcG;IACG,aAAa,CACjB,IAAI,EAAE,8BAA8B,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,YAAY,CAAC;IAyCxB;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAc/D;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwBjE;;OAEG;IACG,qBAAqB,CACzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB,CAAC;IAkBjC;;OAEG;IACG,UAAU,CACd,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,gBAAgB,CAAC;IAkB5B;;OAEG;IACG,uBAAuB,CAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC,uBAAuB,CAAC;IAqBnC;;OAEG;IACG,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE;;OAEG;IACG,SAAS,CACb,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,eAAe,CAAC;IAqB3B;;OAEG;IACG,oBAAoB,CACxB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,0BAA0B,CAAC;CAoBvC"}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { AbortMultipartUploadCommand, CompleteMultipartUploadCommand, CreateMultipartUploadCommand, DeleteObjectCommand, DeleteObjectsCommand, GetObjectCommand, HeadObjectCommand, ListMultipartUploadsCommand, ListPartsCommand, PutObjectCommand, S3Client, UploadPartCommand } from '@aws-sdk/client-s3';
|
|
2
|
+
import { Upload } from '@aws-sdk/lib-storage';
|
|
3
|
+
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
4
|
+
import { StorageResponseBodyMissingError } from '../errors';
|
|
5
|
+
/**
|
|
6
|
+
* S3 Storage Provider
|
|
7
|
+
* Implements storage operations using AWS SDK for S3-compatible storage
|
|
8
|
+
* Works with AWS S3, Cloudflare R2, MinIO, and other S3-compatible services
|
|
9
|
+
*
|
|
10
|
+
* Implements IS3MultipartProvider for multipart upload support needed by TUS
|
|
11
|
+
*/
|
|
12
|
+
export class S3StorageProvider {
|
|
13
|
+
client;
|
|
14
|
+
bucket;
|
|
15
|
+
disk;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
// Configure S3Client for S3-compatible storage
|
|
18
|
+
this.client = new S3Client({
|
|
19
|
+
region: config.region || 'auto',
|
|
20
|
+
endpoint: config.endpoint,
|
|
21
|
+
credentials: {
|
|
22
|
+
accessKeyId: config.accessKeyId,
|
|
23
|
+
secretAccessKey: config.secretAccessKey,
|
|
24
|
+
},
|
|
25
|
+
forcePathStyle: true,
|
|
26
|
+
});
|
|
27
|
+
this.bucket = config.bucket;
|
|
28
|
+
this.disk = config.disk;
|
|
29
|
+
}
|
|
30
|
+
async upload(body, path, options) {
|
|
31
|
+
const command = new PutObjectCommand({
|
|
32
|
+
Bucket: this.bucket,
|
|
33
|
+
Key: path,
|
|
34
|
+
Body: body,
|
|
35
|
+
ContentType: options.mimeType,
|
|
36
|
+
ContentLength: options.size,
|
|
37
|
+
Metadata: options.metadata,
|
|
38
|
+
Tagging: options.tagging,
|
|
39
|
+
});
|
|
40
|
+
await this.client.send(command);
|
|
41
|
+
return {
|
|
42
|
+
path,
|
|
43
|
+
disk: this.disk,
|
|
44
|
+
fullPath: `${this.bucket}/${path}`,
|
|
45
|
+
size: options.size,
|
|
46
|
+
mimeType: options.mimeType ?? 'application/octet-stream',
|
|
47
|
+
uploadedAt: new Date(),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async download(path) {
|
|
51
|
+
const command = new GetObjectCommand({
|
|
52
|
+
Bucket: this.bucket,
|
|
53
|
+
Key: path,
|
|
54
|
+
});
|
|
55
|
+
const response = await this.client.send(command);
|
|
56
|
+
if (!response.Body) {
|
|
57
|
+
throw new StorageResponseBodyMissingError(path);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
toStream: () => response.Body?.transformToWebStream(),
|
|
61
|
+
contentType: response.ContentType ?? 'application/octet-stream',
|
|
62
|
+
size: response.ContentLength ?? 0,
|
|
63
|
+
metadata: response.Metadata,
|
|
64
|
+
toString: () => response.Body?.transformToString(),
|
|
65
|
+
toArrayBuffer: () => response.Body?.transformToByteArray(),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async delete(path) {
|
|
69
|
+
const command = new DeleteObjectCommand({
|
|
70
|
+
Bucket: this.bucket,
|
|
71
|
+
Key: path,
|
|
72
|
+
});
|
|
73
|
+
await this.client.send(command);
|
|
74
|
+
}
|
|
75
|
+
async exists(path) {
|
|
76
|
+
try {
|
|
77
|
+
const command = new HeadObjectCommand({
|
|
78
|
+
Bucket: this.bucket,
|
|
79
|
+
Key: path,
|
|
80
|
+
});
|
|
81
|
+
await this.client.send(command);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// HeadObject throws error if file doesn't exist
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async getPresignedUrl(path, method, expiresIn) {
|
|
90
|
+
// Select appropriate command based on method
|
|
91
|
+
let command;
|
|
92
|
+
switch (method) {
|
|
93
|
+
case 'GET':
|
|
94
|
+
command = new GetObjectCommand({ Bucket: this.bucket, Key: path });
|
|
95
|
+
break;
|
|
96
|
+
case 'PUT':
|
|
97
|
+
command = new PutObjectCommand({ Bucket: this.bucket, Key: path });
|
|
98
|
+
break;
|
|
99
|
+
case 'DELETE':
|
|
100
|
+
command = new DeleteObjectCommand({ Bucket: this.bucket, Key: path });
|
|
101
|
+
break;
|
|
102
|
+
case 'HEAD':
|
|
103
|
+
command = new HeadObjectCommand({ Bucket: this.bucket, Key: path });
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
const url = await getSignedUrl(this.client, command, { expiresIn });
|
|
107
|
+
return {
|
|
108
|
+
url,
|
|
109
|
+
expiresIn,
|
|
110
|
+
expiresAt: new Date(Date.now() + expiresIn * 1000),
|
|
111
|
+
method,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Chunked upload for streaming data without known size
|
|
116
|
+
* Uses @aws-sdk/lib-storage for multipart upload handling
|
|
117
|
+
*
|
|
118
|
+
* Benefits:
|
|
119
|
+
* - Handles unknown Content-Length automatically
|
|
120
|
+
* - Automatic retry on transient failures
|
|
121
|
+
* - Cleanup of partial uploads on error
|
|
122
|
+
* - Works with S3-compatible storage (R2, MinIO, RustFS)
|
|
123
|
+
*
|
|
124
|
+
* @param body - Content to upload (stream or buffer)
|
|
125
|
+
* @param path - Full path including disk root
|
|
126
|
+
* @param options - Upload options (mimeType required, size optional)
|
|
127
|
+
* @returns Upload result with metadata
|
|
128
|
+
*/
|
|
129
|
+
async chunkedUpload(body, path, options) {
|
|
130
|
+
const upload = new Upload({
|
|
131
|
+
client: this.client,
|
|
132
|
+
params: {
|
|
133
|
+
Bucket: this.bucket,
|
|
134
|
+
Key: path,
|
|
135
|
+
Body: body,
|
|
136
|
+
ContentType: options.mimeType,
|
|
137
|
+
},
|
|
138
|
+
// Concurrency configuration
|
|
139
|
+
queueSize: 4,
|
|
140
|
+
// Part size: 5MB minimum for S3
|
|
141
|
+
partSize: 5 * 1024 * 1024,
|
|
142
|
+
// Don't leave orphaned parts on error
|
|
143
|
+
leavePartsOnError: false,
|
|
144
|
+
});
|
|
145
|
+
await upload.done();
|
|
146
|
+
// Get the actual uploaded size via HeadObject
|
|
147
|
+
const headResponse = await this.client.send(new HeadObjectCommand({
|
|
148
|
+
Bucket: this.bucket,
|
|
149
|
+
Key: path,
|
|
150
|
+
}));
|
|
151
|
+
return {
|
|
152
|
+
path,
|
|
153
|
+
disk: this.disk,
|
|
154
|
+
fullPath: `${this.bucket}/${path}`,
|
|
155
|
+
size: headResponse.ContentLength ?? options.size ?? 0,
|
|
156
|
+
mimeType: options.mimeType ?? 'application/octet-stream',
|
|
157
|
+
uploadedAt: new Date(),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// ============================================
|
|
161
|
+
// IS3MultipartProvider - Multipart upload methods
|
|
162
|
+
// ============================================
|
|
163
|
+
/**
|
|
164
|
+
* Get the bucket name
|
|
165
|
+
*/
|
|
166
|
+
getBucket() {
|
|
167
|
+
return this.bucket;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get object metadata without downloading the body
|
|
171
|
+
*/
|
|
172
|
+
async headObject(key) {
|
|
173
|
+
const response = await this.client.send(new HeadObjectCommand({
|
|
174
|
+
Bucket: this.bucket,
|
|
175
|
+
Key: key,
|
|
176
|
+
}));
|
|
177
|
+
return {
|
|
178
|
+
size: response.ContentLength ?? 0,
|
|
179
|
+
contentType: response.ContentType,
|
|
180
|
+
metadata: response.Metadata,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Delete multiple objects in a single request
|
|
185
|
+
*/
|
|
186
|
+
async deleteObjects(keys) {
|
|
187
|
+
if (keys.length === 0) {
|
|
188
|
+
return { deleted: 0, errors: [] };
|
|
189
|
+
}
|
|
190
|
+
const response = await this.client.send(new DeleteObjectsCommand({
|
|
191
|
+
Bucket: this.bucket,
|
|
192
|
+
Delete: {
|
|
193
|
+
Objects: keys.map((key) => ({ Key: key })),
|
|
194
|
+
},
|
|
195
|
+
}));
|
|
196
|
+
return {
|
|
197
|
+
deleted: response.Deleted?.length ?? 0,
|
|
198
|
+
errors: (response.Errors ?? []).map((e) => ({
|
|
199
|
+
key: e.Key ?? '',
|
|
200
|
+
code: e.Code ?? 'Unknown',
|
|
201
|
+
message: e.Message ?? 'Unknown error',
|
|
202
|
+
})),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Create a multipart upload
|
|
207
|
+
*/
|
|
208
|
+
async createMultipartUpload(key, options) {
|
|
209
|
+
const response = await this.client.send(new CreateMultipartUploadCommand({
|
|
210
|
+
Bucket: this.bucket,
|
|
211
|
+
Key: key,
|
|
212
|
+
ContentType: options?.contentType,
|
|
213
|
+
CacheControl: options?.cacheControl,
|
|
214
|
+
Metadata: options?.metadata,
|
|
215
|
+
Tagging: options?.tagging,
|
|
216
|
+
}));
|
|
217
|
+
return {
|
|
218
|
+
uploadId: response.UploadId ?? '',
|
|
219
|
+
key: response.Key ?? '',
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Upload a part to an existing multipart upload
|
|
224
|
+
*/
|
|
225
|
+
async uploadPart(key, uploadId, partNumber, body) {
|
|
226
|
+
const response = await this.client.send(new UploadPartCommand({
|
|
227
|
+
Bucket: this.bucket,
|
|
228
|
+
Key: key,
|
|
229
|
+
UploadId: uploadId,
|
|
230
|
+
PartNumber: partNumber,
|
|
231
|
+
Body: body,
|
|
232
|
+
ContentLength: body.length,
|
|
233
|
+
}));
|
|
234
|
+
return {
|
|
235
|
+
etag: response.ETag ?? '',
|
|
236
|
+
partNumber,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Complete a multipart upload
|
|
241
|
+
*/
|
|
242
|
+
async completeMultipartUpload(key, uploadId, parts) {
|
|
243
|
+
const response = await this.client.send(new CompleteMultipartUploadCommand({
|
|
244
|
+
Bucket: this.bucket,
|
|
245
|
+
Key: key,
|
|
246
|
+
UploadId: uploadId,
|
|
247
|
+
MultipartUpload: {
|
|
248
|
+
Parts: parts.map((p) => ({
|
|
249
|
+
ETag: p.etag,
|
|
250
|
+
PartNumber: p.partNumber,
|
|
251
|
+
})),
|
|
252
|
+
},
|
|
253
|
+
}));
|
|
254
|
+
return {
|
|
255
|
+
location: response.Location,
|
|
256
|
+
key: response.Key ?? '',
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Abort a multipart upload
|
|
261
|
+
*/
|
|
262
|
+
async abortMultipartUpload(key, uploadId) {
|
|
263
|
+
await this.client.send(new AbortMultipartUploadCommand({
|
|
264
|
+
Bucket: this.bucket,
|
|
265
|
+
Key: key,
|
|
266
|
+
UploadId: uploadId,
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* List parts of a multipart upload
|
|
271
|
+
*/
|
|
272
|
+
async listParts(key, uploadId, partNumberMarker) {
|
|
273
|
+
const response = await this.client.send(new ListPartsCommand({
|
|
274
|
+
Bucket: this.bucket,
|
|
275
|
+
Key: key,
|
|
276
|
+
UploadId: uploadId,
|
|
277
|
+
PartNumberMarker: partNumberMarker,
|
|
278
|
+
}));
|
|
279
|
+
return {
|
|
280
|
+
parts: (response.Parts ?? []).map((p) => ({
|
|
281
|
+
partNumber: p.PartNumber ?? 0,
|
|
282
|
+
etag: p.ETag ?? '',
|
|
283
|
+
size: p.Size ?? 0,
|
|
284
|
+
})),
|
|
285
|
+
isTruncated: response.IsTruncated ?? false,
|
|
286
|
+
nextPartNumberMarker: response.NextPartNumberMarker?.toString(),
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* List all in-progress multipart uploads
|
|
291
|
+
*/
|
|
292
|
+
async listMultipartUploads(keyMarker, uploadIdMarker) {
|
|
293
|
+
const response = await this.client.send(new ListMultipartUploadsCommand({
|
|
294
|
+
Bucket: this.bucket,
|
|
295
|
+
KeyMarker: keyMarker,
|
|
296
|
+
UploadIdMarker: uploadIdMarker,
|
|
297
|
+
}));
|
|
298
|
+
return {
|
|
299
|
+
uploads: (response.Uploads ?? []).map((u) => ({
|
|
300
|
+
key: u.Key ?? '',
|
|
301
|
+
uploadId: u.UploadId ?? '',
|
|
302
|
+
initiated: u.Initiated,
|
|
303
|
+
})),
|
|
304
|
+
isTruncated: response.IsTruncated ?? false,
|
|
305
|
+
nextKeyMarker: response.NextKeyMarker,
|
|
306
|
+
nextUploadIdMarker: response.NextUploadIdMarker,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=s3-storage.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-storage.provider.js","sourceRoot":"","sources":["../../../src/storage/providers/s3-storage.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { PutObjectCommandInput } from '@aws-sdk/client-s3';
|
|
2
|
+
import type { DownloadResult, PresignedUrlResult, UploadOptions, UploadResult } from '../contracts';
|
|
3
|
+
/**
|
|
4
|
+
* Streaming blob payload input types from AWS SDK
|
|
5
|
+
* Represents the types that can be used as the Body of a PutObjectCommand
|
|
6
|
+
*/
|
|
7
|
+
export type StreamingBlobPayloadInputTypes = PutObjectCommandInput['Body'];
|
|
8
|
+
/**
|
|
9
|
+
* Storage provider interface
|
|
10
|
+
* Defines the contract for storage implementations (R2, S3, GCS, etc.)
|
|
11
|
+
*/
|
|
12
|
+
export interface IStorageProvider {
|
|
13
|
+
/**
|
|
14
|
+
* Upload content to storage
|
|
15
|
+
* @param body - Content to upload (stream, buffer, or string)
|
|
16
|
+
* @param path - Full path including disk root
|
|
17
|
+
* @param options - Upload options including size and mime type
|
|
18
|
+
* @returns Upload result with metadata
|
|
19
|
+
*/
|
|
20
|
+
upload(body: StreamingBlobPayloadInputTypes, path: string, options: UploadOptions): Promise<UploadResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Download a file from storage
|
|
23
|
+
* @param path - Full path to the file
|
|
24
|
+
* @returns Download result with stream and metadata
|
|
25
|
+
*/
|
|
26
|
+
download(path: string): Promise<DownloadResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Delete a file from storage
|
|
29
|
+
* @param path - Full path to the file
|
|
30
|
+
*/
|
|
31
|
+
delete(path: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a file exists in storage
|
|
34
|
+
* @param path - Full path to the file
|
|
35
|
+
* @returns True if file exists, false otherwise
|
|
36
|
+
*/
|
|
37
|
+
exists(path: string): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Generate a presigned URL for temporary access
|
|
40
|
+
* @param path - Full path to the file
|
|
41
|
+
* @param method - HTTP method (GET, PUT, DELETE, HEAD)
|
|
42
|
+
* @param expiresIn - Expiry time in seconds (1-604800)
|
|
43
|
+
* @returns Presigned URL result
|
|
44
|
+
*/
|
|
45
|
+
getPresignedUrl(path: string, method: 'GET' | 'PUT' | 'DELETE' | 'HEAD', expiresIn: number): Promise<PresignedUrlResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Chunked upload for streaming data without known size
|
|
48
|
+
* Uses multipart upload under the hood for reliability
|
|
49
|
+
* @param body - Content to upload (stream or buffer)
|
|
50
|
+
* @param path - Full path including disk root
|
|
51
|
+
* @param options - Upload options (mimeType required, size optional)
|
|
52
|
+
* @returns Upload result with metadata
|
|
53
|
+
*/
|
|
54
|
+
chunkedUpload(body: StreamingBlobPayloadInputTypes, path: string, options: Omit<UploadOptions, 'size'> & {
|
|
55
|
+
size?: number;
|
|
56
|
+
}): Promise<UploadResult>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=storage-provider.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-provider.interface.d.ts","sourceRoot":"","sources":["../../../src/storage/providers/storage-provider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnG;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAE1E;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAEzG;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAE/C;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEnC;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEtC;;;;;;OAMG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAE9B;;;;;;;OAOG;IACH,aAAa,CACX,IAAI,EAAE,8BAA8B,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,YAAY,CAAC,CAAA;CACzB"}
|