zibri 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/application.d.ts +23 -21
- package/dist/cjs/application.d.ts.map +1 -1
- package/dist/cjs/application.js +221 -76
- package/dist/cjs/application.js.map +1 -1
- package/dist/cjs/assets/asset-service.interface.d.ts +4 -17
- package/dist/cjs/assets/asset-service.interface.d.ts.map +1 -1
- package/dist/cjs/assets/asset.service.d.ts +7 -8
- package/dist/cjs/assets/asset.service.d.ts.map +1 -1
- package/dist/cjs/assets/asset.service.js +10 -6
- package/dist/cjs/assets/asset.service.js.map +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp-credentials.model.js +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp-credentials.model.js.map +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp.two-factor-method.d.ts +4 -3
- package/dist/cjs/auth/2fa/methods/otp/otp.two-factor-method.d.ts.map +1 -1
- package/dist/cjs/auth/2fa/methods/otp/otp.two-factor-method.js +6 -17
- package/dist/cjs/auth/2fa/methods/otp/otp.two-factor-method.js.map +1 -1
- package/dist/cjs/auth/2fa/methods/two-factor-method.interface.d.ts +6 -4
- package/dist/cjs/auth/2fa/methods/two-factor-method.interface.d.ts.map +1 -1
- package/dist/cjs/auth/2fa/methods/two-factor-method.interface.js +21 -0
- package/dist/cjs/auth/2fa/methods/two-factor-method.interface.js.map +1 -1
- package/dist/cjs/auth/2fa/two-factor-service.interface.d.ts +0 -4
- package/dist/cjs/auth/2fa/two-factor-service.interface.d.ts.map +1 -1
- package/dist/cjs/auth/2fa/two-factor.service.d.ts +7 -8
- package/dist/cjs/auth/2fa/two-factor.service.d.ts.map +1 -1
- package/dist/cjs/auth/2fa/two-factor.service.js +26 -10
- package/dist/cjs/auth/2fa/two-factor.service.js.map +1 -1
- package/dist/cjs/auth/auth-service.interface.d.ts +0 -4
- package/dist/cjs/auth/auth-service.interface.d.ts.map +1 -1
- package/dist/cjs/auth/auth.service.d.ts +9 -10
- package/dist/cjs/auth/auth.service.d.ts.map +1 -1
- package/dist/cjs/auth/auth.service.js +28 -13
- package/dist/cjs/auth/auth.service.js.map +1 -1
- package/dist/cjs/auth/models/password-reset-token.model.js +1 -1
- package/dist/cjs/auth/models/password-reset-token.model.js.map +1 -1
- package/dist/cjs/auth/strategies/auth-strategy.interface.d.ts +7 -4
- package/dist/cjs/auth/strategies/auth-strategy.interface.d.ts.map +1 -1
- package/dist/cjs/auth/strategies/auth-strategy.interface.js +28 -0
- package/dist/cjs/auth/strategies/auth-strategy.interface.js.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-auth.controller.d.ts +13 -0
- package/dist/cjs/auth/strategies/jwt/jwt-auth.controller.d.ts.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-auth.controller.js +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-auth.controller.js.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-credentials.model.js +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-credentials.model.js.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-refresh-token.model.js +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt-refresh-token.model.js.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.d.ts +15 -10
- package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.d.ts.map +1 -1
- package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.js +61 -52
- package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.js.map +1 -1
- package/dist/cjs/auth/user/user.service.d.ts.map +1 -1
- package/dist/cjs/auth/user/user.service.js +12 -2
- package/dist/cjs/auth/user/user.service.js.map +1 -1
- package/dist/cjs/backup/backup-entity.model.js +1 -1
- package/dist/cjs/backup/backup-entity.model.js.map +1 -1
- package/dist/cjs/backup/backup-resource-entity.model.js +1 -1
- package/dist/cjs/backup/backup-resource-entity.model.js.map +1 -1
- package/dist/cjs/backup/backup-service.interface.d.ts +0 -4
- package/dist/cjs/backup/backup-service.interface.d.ts.map +1 -1
- package/dist/cjs/backup/backup.service.d.ts +9 -3
- package/dist/cjs/backup/backup.service.d.ts.map +1 -1
- package/dist/cjs/backup/backup.service.js +37 -7
- package/dist/cjs/backup/backup.service.js.map +1 -1
- package/dist/cjs/backup/transports/fs.backup-transport.d.ts +3 -3
- package/dist/cjs/backup/transports/fs.backup-transport.d.ts.map +1 -1
- package/dist/cjs/backup/transports/fs.backup-transport.js.map +1 -1
- package/dist/cjs/change-sets/change-set-repository.d.ts +2 -2
- package/dist/cjs/change-sets/change-set-repository.d.ts.map +1 -1
- package/dist/cjs/change-sets/change-set-repository.js +8 -7
- package/dist/cjs/change-sets/change-set-repository.js.map +1 -1
- package/dist/cjs/cron/cron-job.model.d.ts +6 -1
- package/dist/cjs/cron/cron-job.model.d.ts.map +1 -1
- package/dist/cjs/cron/cron-job.model.js +7 -0
- package/dist/cjs/cron/cron-job.model.js.map +1 -1
- package/dist/cjs/cron/cron-service.interface.d.ts +0 -5
- package/dist/cjs/cron/cron-service.interface.d.ts.map +1 -1
- package/dist/cjs/cron/cron.service.d.ts +9 -9
- package/dist/cjs/cron/cron.service.d.ts.map +1 -1
- package/dist/cjs/cron/cron.service.js +31 -8
- package/dist/cjs/cron/cron.service.js.map +1 -1
- package/dist/cjs/data-source/data-source-service.interface.d.ts +3 -5
- package/dist/cjs/data-source/data-source-service.interface.d.ts.map +1 -1
- package/dist/cjs/data-source/data-source.service.d.ts +6 -3
- package/dist/cjs/data-source/data-source.service.d.ts.map +1 -1
- package/dist/cjs/data-source/data-source.service.js +39 -36
- package/dist/cjs/data-source/data-source.service.js.map +1 -1
- package/dist/cjs/data-source/data-sources/data-source.interface.d.ts +11 -0
- package/dist/cjs/data-source/data-sources/data-source.interface.d.ts.map +1 -1
- package/dist/cjs/data-source/data-sources/data-source.interface.js +28 -0
- package/dist/cjs/data-source/data-sources/data-source.interface.js.map +1 -1
- package/dist/cjs/data-source/data-sources/postgres-data-source.model.d.ts +4 -6
- package/dist/cjs/data-source/data-sources/postgres-data-source.model.d.ts.map +1 -1
- package/dist/cjs/data-source/data-sources/postgres-data-source.model.js +30 -8
- package/dist/cjs/data-source/data-sources/postgres-data-source.model.js.map +1 -1
- package/dist/cjs/data-source/decorators/data-source.decorator.d.ts.map +1 -1
- package/dist/cjs/data-source/decorators/data-source.decorator.js +0 -1
- package/dist/cjs/data-source/decorators/data-source.decorator.js.map +1 -1
- package/dist/cjs/data-source/repository.d.ts.map +1 -1
- package/dist/cjs/data-source/repository.js +0 -1
- package/dist/cjs/data-source/repository.js.map +1 -1
- package/dist/cjs/di/decorators/injectable.decorator.d.ts +15 -2
- package/dist/cjs/di/decorators/injectable.decorator.d.ts.map +1 -1
- package/dist/cjs/di/decorators/injectable.decorator.js +10 -4
- package/dist/cjs/di/decorators/injectable.decorator.js.map +1 -1
- package/dist/cjs/di/default/zibri-di-providers.default.d.ts.map +1 -1
- package/dist/cjs/di/default/zibri-di-providers.default.js +4 -6
- package/dist/cjs/di/default/zibri-di-providers.default.js.map +1 -1
- package/dist/cjs/di/default/zibri-di-tokens.default.d.ts +5 -6
- package/dist/cjs/di/default/zibri-di-tokens.default.d.ts.map +1 -1
- package/dist/cjs/di/default/zibri-di-tokens.default.js +2 -2
- package/dist/cjs/di/default/zibri-di-tokens.default.js.map +1 -1
- package/dist/cjs/di/di-container.d.ts +6 -1
- package/dist/cjs/di/di-container.d.ts.map +1 -1
- package/dist/cjs/di/di-container.js +34 -2
- package/dist/cjs/di/di-container.js.map +1 -1
- package/dist/cjs/di/errors/no-provider.error.d.ts.map +1 -1
- package/dist/cjs/di/errors/no-provider.error.js +2 -2
- package/dist/cjs/di/errors/no-provider.error.js.map +1 -1
- package/dist/cjs/di/get-all-registered-tokens.function.d.ts +7 -0
- package/dist/cjs/di/get-all-registered-tokens.function.d.ts.map +1 -0
- package/dist/cjs/di/get-all-registered-tokens.function.js +12 -0
- package/dist/cjs/di/get-all-registered-tokens.function.js.map +1 -0
- package/dist/cjs/di/models/di-provider.model.d.ts +3 -3
- package/dist/cjs/di/models/di-provider.model.d.ts.map +1 -1
- package/dist/cjs/di/register.function.d.ts +1 -1
- package/dist/cjs/di/register.function.js +2 -2
- package/dist/cjs/email/email-service.interface.d.ts +0 -5
- package/dist/cjs/email/email-service.interface.d.ts.map +1 -1
- package/dist/cjs/email/email.service.d.ts +9 -12
- package/dist/cjs/email/email.service.d.ts.map +1 -1
- package/dist/cjs/email/email.service.js +33 -14
- package/dist/cjs/email/email.service.js.map +1 -1
- package/dist/cjs/email/models/email-attachment.model.d.ts +2 -2
- package/dist/cjs/email/models/email-attachment.model.d.ts.map +1 -1
- package/dist/cjs/email/models/email-attachment.model.js.map +1 -1
- package/dist/cjs/email/send-queued-emails.cron-job.d.ts +3 -0
- package/dist/cjs/email/send-queued-emails.cron-job.d.ts.map +1 -1
- package/dist/cjs/email/send-queued-emails.cron-job.js +15 -5
- package/dist/cjs/email/send-queued-emails.cron-job.js.map +1 -1
- package/dist/cjs/entity/decorators/entity.decorator.d.ts +6 -2
- package/dist/cjs/entity/decorators/entity.decorator.d.ts.map +1 -1
- package/dist/cjs/entity/decorators/entity.decorator.js +5 -3
- package/dist/cjs/entity/decorators/entity.decorator.js.map +1 -1
- package/dist/cjs/entity/generation/generate-entity-files-for-provider.function.d.ts +2 -2
- package/dist/cjs/entity/generation/generate-entity-files-for-provider.function.d.ts.map +1 -1
- package/dist/cjs/entity/generation/generate-entity-files-for-provider.function.js.map +1 -1
- package/dist/cjs/entity/generation/generate-entity-files.function.js.map +1 -1
- package/dist/cjs/entity/generation/providers/open-api-file.provider.d.ts +3 -3
- package/dist/cjs/entity/generation/providers/open-api-file.provider.d.ts.map +1 -1
- package/dist/cjs/entity/generation/providers/open-api-file.provider.js.map +1 -1
- package/dist/cjs/error-handling/error-handler.js +1 -1
- package/dist/cjs/error-handling/error-handler.js.map +1 -1
- package/dist/cjs/error-handling/errors/http.error.d.ts +0 -5
- package/dist/cjs/error-handling/errors/http.error.d.ts.map +1 -1
- package/dist/cjs/error-handling/errors/http.error.js +1 -5
- package/dist/cjs/error-handling/errors/http.error.js.map +1 -1
- package/dist/cjs/error-handling/errors/missing-tokens.error.d.ts +8 -0
- package/dist/cjs/error-handling/errors/missing-tokens.error.d.ts.map +1 -0
- package/dist/cjs/error-handling/errors/missing-tokens.error.js +22 -0
- package/dist/cjs/error-handling/errors/missing-tokens.error.js.map +1 -0
- package/dist/cjs/global/after-app-init.interface.d.ts +26 -0
- package/dist/cjs/global/after-app-init.interface.d.ts.map +1 -0
- package/dist/cjs/global/after-app-init.interface.js +24 -0
- package/dist/cjs/global/after-app-init.interface.js.map +1 -0
- package/dist/cjs/global/after-app-shutdown.interface.d.ts +29 -0
- package/dist/cjs/global/after-app-shutdown.interface.d.ts.map +1 -0
- package/dist/cjs/global/after-app-shutdown.interface.js +24 -0
- package/dist/cjs/global/after-app-shutdown.interface.js.map +1 -0
- package/dist/cjs/global/app-state.enum.d.ts +11 -0
- package/dist/cjs/global/app-state.enum.d.ts.map +1 -0
- package/dist/cjs/global/app-state.enum.js +15 -0
- package/dist/cjs/global/app-state.enum.js.map +1 -0
- package/dist/cjs/global/before-app-init.interface.d.ts +22 -0
- package/dist/cjs/global/before-app-init.interface.d.ts.map +1 -0
- package/dist/cjs/global/before-app-init.interface.js +24 -0
- package/dist/cjs/global/before-app-init.interface.js.map +1 -0
- package/dist/cjs/global/before-app-shutdown.interface.d.ts +31 -0
- package/dist/cjs/global/before-app-shutdown.interface.d.ts.map +1 -0
- package/dist/cjs/global/before-app-shutdown.interface.js +24 -0
- package/dist/cjs/global/before-app-shutdown.interface.js.map +1 -0
- package/dist/cjs/global/global-registry.d.ts +21 -21
- package/dist/cjs/global/global-registry.d.ts.map +1 -1
- package/dist/cjs/global/global-registry.js +81 -55
- package/dist/cjs/global/global-registry.js.map +1 -1
- package/dist/cjs/global/on-app-init.interface.d.ts +16 -0
- package/dist/cjs/global/on-app-init.interface.d.ts.map +1 -0
- package/dist/cjs/global/on-app-init.interface.js +24 -0
- package/dist/cjs/global/on-app-init.interface.js.map +1 -0
- package/dist/cjs/global/on-app-shutdown.interface.d.ts +21 -0
- package/dist/cjs/global/on-app-shutdown.interface.d.ts.map +1 -0
- package/dist/cjs/global/on-app-shutdown.interface.js +24 -0
- package/dist/cjs/global/on-app-shutdown.interface.js.map +1 -0
- package/dist/cjs/global/on-app-start.interface.d.ts +16 -0
- package/dist/cjs/global/on-app-start.interface.d.ts.map +1 -0
- package/dist/cjs/global/on-app-start.interface.js +24 -0
- package/dist/cjs/global/on-app-start.interface.js.map +1 -0
- package/dist/cjs/handlebars/generate-handlebar-type-files.function.d.ts +5 -4
- package/dist/cjs/handlebars/generate-handlebar-type-files.function.d.ts.map +1 -1
- package/dist/cjs/handlebars/generate-handlebar-type-files.function.js +5 -3
- package/dist/cjs/handlebars/generate-handlebar-type-files.function.js.map +1 -1
- package/dist/cjs/handlebars/handlebar.utilities.d.ts +17 -1
- package/dist/cjs/handlebars/handlebar.utilities.d.ts.map +1 -1
- package/dist/cjs/handlebars/handlebar.utilities.js +23 -4
- package/dist/cjs/handlebars/handlebar.utilities.js.map +1 -1
- package/dist/cjs/http-client/http-client.d.ts.map +1 -1
- package/dist/cjs/http-client/http-client.error.d.ts +62 -0
- package/dist/cjs/http-client/http-client.error.d.ts.map +1 -0
- package/dist/cjs/http-client/http-client.error.js +48 -0
- package/dist/cjs/http-client/http-client.error.js.map +1 -0
- package/dist/cjs/http-client/http-client.js +57 -4
- package/dist/cjs/http-client/http-client.js.map +1 -1
- package/dist/cjs/index.d.ts +28 -7
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +30 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/logging/log-cleanup.cron-job.d.ts +4 -2
- package/dist/cjs/logging/log-cleanup.cron-job.d.ts.map +1 -1
- package/dist/cjs/logging/log-cleanup.cron-job.js +9 -7
- package/dist/cjs/logging/log-cleanup.cron-job.js.map +1 -1
- package/dist/cjs/logging/log.model.js +1 -1
- package/dist/cjs/logging/log.model.js.map +1 -1
- package/dist/cjs/logging/logger.d.ts +3 -2
- package/dist/cjs/logging/logger.d.ts.map +1 -1
- package/dist/cjs/logging/logger.interface.d.ts +0 -5
- package/dist/cjs/logging/logger.interface.d.ts.map +1 -1
- package/dist/cjs/logging/logger.js +4 -2
- package/dist/cjs/logging/logger.js.map +1 -1
- package/dist/cjs/logging/transport/log-to-email.function.d.ts +2 -1
- package/dist/cjs/logging/transport/log-to-email.function.d.ts.map +1 -1
- package/dist/cjs/logging/transport/log-to-email.function.js +3 -17
- package/dist/cjs/logging/transport/log-to-email.function.js.map +1 -1
- package/dist/cjs/logging/transport/logger-transport.model.d.ts +15 -0
- package/dist/cjs/logging/transport/logger-transport.model.d.ts.map +1 -1
- package/dist/cjs/logging/transport/logger-transport.model.js.map +1 -1
- package/dist/cjs/metrics/metrics-service.interface.d.ts +0 -5
- package/dist/cjs/metrics/metrics-service.interface.d.ts.map +1 -1
- package/dist/cjs/metrics/metrics.service.d.ts +6 -3
- package/dist/cjs/metrics/metrics.service.d.ts.map +1 -1
- package/dist/cjs/metrics/metrics.service.js +26 -7
- package/dist/cjs/metrics/metrics.service.js.map +1 -1
- package/dist/cjs/metrics/scrape-metrics.cron-job.d.ts +3 -2
- package/dist/cjs/metrics/scrape-metrics.cron-job.d.ts.map +1 -1
- package/dist/cjs/metrics/scrape-metrics.cron-job.js +9 -7
- package/dist/cjs/metrics/scrape-metrics.cron-job.js.map +1 -1
- package/dist/cjs/multithreading/services/multithreading-service.interface.d.ts +0 -8
- package/dist/cjs/multithreading/services/multithreading-service.interface.d.ts.map +1 -1
- package/dist/cjs/multithreading/services/multithreading.service.d.ts +7 -5
- package/dist/cjs/multithreading/services/multithreading.service.d.ts.map +1 -1
- package/dist/cjs/multithreading/services/multithreading.service.js +11 -9
- package/dist/cjs/multithreading/services/multithreading.service.js.map +1 -1
- package/dist/cjs/open-api/open-api-service.interface.d.ts +0 -4
- package/dist/cjs/open-api/open-api-service.interface.d.ts.map +1 -1
- package/dist/cjs/open-api/open-api.service.d.ts +10 -4
- package/dist/cjs/open-api/open-api.service.d.ts.map +1 -1
- package/dist/cjs/open-api/open-api.service.js +44 -19
- package/dist/cjs/open-api/open-api.service.js.map +1 -1
- package/dist/cjs/parsing/body-parser.interface.d.ts +0 -5
- package/dist/cjs/parsing/body-parser.interface.d.ts.map +1 -1
- package/dist/cjs/parsing/form-data/file-response.model.d.ts +2 -2
- package/dist/cjs/parsing/form-data/file-response.model.d.ts.map +1 -1
- package/dist/cjs/parsing/form-data/file-response.model.js.map +1 -1
- package/dist/cjs/parsing/form-data/file.model.d.ts +2 -2
- package/dist/cjs/parsing/form-data/file.model.d.ts.map +1 -1
- package/dist/cjs/parsing/form-data/file.model.js.map +1 -1
- package/dist/cjs/parsing/form-data/form-data-body-parser-cleanup.cron-job.d.ts +3 -0
- package/dist/cjs/parsing/form-data/form-data-body-parser-cleanup.cron-job.d.ts.map +1 -1
- package/dist/cjs/parsing/form-data/form-data-body-parser-cleanup.cron-job.js +17 -7
- package/dist/cjs/parsing/form-data/form-data-body-parser-cleanup.cron-job.js.map +1 -1
- package/dist/cjs/parsing/form-data/form-data.body-parser.d.ts +3 -2
- package/dist/cjs/parsing/form-data/form-data.body-parser.d.ts.map +1 -1
- package/dist/cjs/parsing/form-data/form-data.body-parser.js +1 -1
- package/dist/cjs/parsing/form-data/form-data.body-parser.js.map +1 -1
- package/dist/cjs/parsing/form-data/form-data.model.d.ts +3 -3
- package/dist/cjs/parsing/form-data/form-data.model.d.ts.map +1 -1
- package/dist/cjs/parsing/form-data/form-data.model.js.map +1 -1
- package/dist/cjs/parsing/parser.d.ts +4 -3
- package/dist/cjs/parsing/parser.d.ts.map +1 -1
- package/dist/cjs/parsing/parser.interface.d.ts +0 -5
- package/dist/cjs/parsing/parser.interface.d.ts.map +1 -1
- package/dist/cjs/parsing/parser.js +20 -4
- package/dist/cjs/parsing/parser.js.map +1 -1
- package/dist/cjs/plugin/invoicing/invoicing.plugin.d.ts +2 -1
- package/dist/cjs/plugin/invoicing/invoicing.plugin.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/invoicing.plugin.js +10 -8
- package/dist/cjs/plugin/invoicing/invoicing.plugin.js.map +1 -1
- package/dist/cjs/plugin/invoicing/invoicing.tokens.d.ts +1 -1
- package/dist/cjs/plugin/invoicing/invoicing.tokens.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/invoicing.tokens.js +2 -2
- package/dist/cjs/plugin/invoicing/invoicing.tokens.js.map +1 -1
- package/dist/cjs/plugin/invoicing/models/invoice.model.js +1 -1
- package/dist/cjs/plugin/invoicing/models/invoice.model.js.map +1 -1
- package/dist/cjs/plugin/invoicing/models/number-invoices.model.js +1 -1
- package/dist/cjs/plugin/invoicing/models/number-invoices.model.js.map +1 -1
- package/dist/cjs/plugin/invoicing/services/conformance/en16931/en16931-conformance.service.js +2 -2
- package/dist/cjs/plugin/invoicing/services/conformance/en16931/en16931-conformance.service.js.map +1 -1
- package/dist/cjs/plugin/invoicing/services/conformance/en16931/peppol-conformance.service.js +1 -1
- package/dist/cjs/plugin/invoicing/services/conformance/en16931/peppol-conformance.service.js.map +1 -1
- package/dist/cjs/plugin/invoicing/services/conformance/en16931/x-rechnung-conformance.service.js +1 -1
- package/dist/cjs/plugin/invoicing/services/conformance/en16931/x-rechnung-conformance.service.js.map +1 -1
- package/dist/cjs/plugin/invoicing/services/invoice-calc.service.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/services/invoice-calc.service.js +12 -2
- package/dist/cjs/plugin/invoicing/services/invoice-calc.service.js.map +1 -1
- package/dist/cjs/plugin/invoicing/services/invoice-number.service.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/services/invoice-number.service.js +4 -2
- package/dist/cjs/plugin/invoicing/services/invoice-number.service.js.map +1 -1
- package/dist/cjs/plugin/invoicing/services/invoice-pdf.service.d.ts.map +1 -1
- package/dist/cjs/plugin/invoicing/services/invoice-pdf.service.js +5 -3
- package/dist/cjs/plugin/invoicing/services/invoice-pdf.service.js.map +1 -1
- package/dist/cjs/plugin/mailing-list/mailing-list.controller.d.ts +26 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.controller.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.controller.js +132 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.controller.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.plugin.d.ts +12 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.plugin.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.plugin.js +37 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.plugin.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.tokens.d.ts +20 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.tokens.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.tokens.js +22 -0
- package/dist/cjs/plugin/mailing-list/mailing-list.tokens.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-base-email-template.model.d.ts +35 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-base-email-template.model.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-base-email-template.model.js +3 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-base-email-template.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-preferences-page-template.model.d.ts +26 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-preferences-page-template.model.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-preferences-page-template.model.js +3 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-preferences-page-template.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.d.ts +26 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.js +3 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.d.ts +26 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.js +3 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscriber.model.d.ts.map +1 -0
- package/dist/cjs/{email → plugin}/mailing-list/models/mailing-list-subscriber.model.js +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscriber.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.d.ts.map +1 -0
- package/dist/cjs/{email → plugin}/mailing-list/models/mailing-list-subscription-confirmation-token.model.js +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.d.ts +26 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.js +3 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/mailing-list.model.d.ts.map +1 -0
- package/dist/cjs/{email → plugin}/mailing-list/models/mailing-list.model.js +1 -1
- package/dist/cjs/plugin/mailing-list/models/mailing-list.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/update-mailing-list-preferences.model.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/models/update-mailing-list-preferences.model.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/services/mailing-list-service.interface.d.ts +68 -0
- package/dist/cjs/plugin/mailing-list/services/mailing-list-service.interface.d.ts.map +1 -0
- package/dist/cjs/{email/mailing-list → plugin/mailing-list/services}/mailing-list-service.interface.js +2 -2
- package/dist/cjs/plugin/mailing-list/services/mailing-list-service.interface.js.map +1 -0
- package/dist/cjs/plugin/mailing-list/services/mailing-list.service.d.ts +36 -0
- package/dist/cjs/plugin/mailing-list/services/mailing-list.service.d.ts.map +1 -0
- package/dist/cjs/plugin/mailing-list/services/mailing-list.service.js +168 -0
- package/dist/cjs/plugin/mailing-list/services/mailing-list.service.js.map +1 -0
- package/dist/cjs/plugin/payment/models/payment-plugin-options-input.model.d.ts +2 -7
- package/dist/cjs/plugin/payment/models/payment-plugin-options-input.model.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/models/payment-plugin-options.model.d.ts +2 -7
- package/dist/cjs/plugin/payment/models/payment-plugin-options.model.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/models/payment.model.d.ts +4 -0
- package/dist/cjs/plugin/payment/models/payment.model.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/models/payment.model.js +9 -1
- package/dist/cjs/plugin/payment/models/payment.model.js.map +1 -1
- package/dist/cjs/plugin/payment/payment.plugin.d.ts +2 -1
- package/dist/cjs/plugin/payment/payment.plugin.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/payment.plugin.js +24 -10
- package/dist/cjs/plugin/payment/payment.plugin.js.map +1 -1
- package/dist/cjs/plugin/payment/payment.tokens.d.ts +17 -9
- package/dist/cjs/plugin/payment/payment.tokens.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/payment.tokens.js +15 -3
- package/dist/cjs/plugin/payment/payment.tokens.js.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.d.ts +9 -2
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.js +17 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal-client.js.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal.payment-provider.d.ts +20 -11
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal.payment-provider.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js +1 -7
- package/dist/cjs/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js.map +1 -1
- package/dist/cjs/plugin/payment/providers/payment-provider.interface.d.ts +49 -32
- package/dist/cjs/plugin/payment/providers/payment-provider.interface.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/services/payment-service.interface.d.ts +6 -7
- package/dist/cjs/plugin/payment/services/payment-service.interface.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/services/payment-service.types.d.ts +24 -44
- package/dist/cjs/plugin/payment/services/payment-service.types.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/services/payment.service.d.ts +2 -6
- package/dist/cjs/plugin/payment/services/payment.service.d.ts.map +1 -1
- package/dist/cjs/plugin/payment/services/payment.service.js +8 -4
- package/dist/cjs/plugin/payment/services/payment.service.js.map +1 -1
- package/dist/cjs/plugin/plugin.model.d.ts +1 -1
- package/dist/cjs/preact/generate-client-scripts.function.d.ts +4 -8
- package/dist/cjs/preact/generate-client-scripts.function.d.ts.map +1 -1
- package/dist/cjs/preact/generate-client-scripts.function.js +6 -9
- package/dist/cjs/preact/generate-client-scripts.function.js.map +1 -1
- package/dist/cjs/preact/preact-email-component.model.d.ts +6 -0
- package/dist/cjs/preact/preact-email-component.model.d.ts.map +1 -0
- package/dist/cjs/preact/preact-email-component.model.js +3 -0
- package/dist/cjs/preact/preact-email-component.model.js.map +1 -0
- package/dist/cjs/preact/preact.utilities.d.ts +18 -4
- package/dist/cjs/preact/preact.utilities.d.ts.map +1 -1
- package/dist/cjs/preact/preact.utilities.js +41 -5
- package/dist/cjs/preact/preact.utilities.js.map +1 -1
- package/dist/cjs/preact/validate-email-templates.function.d.ts +5 -0
- package/dist/cjs/preact/validate-email-templates.function.d.ts.map +1 -0
- package/dist/cjs/preact/validate-email-templates.function.js +10 -0
- package/dist/cjs/preact/validate-email-templates.function.js.map +1 -0
- package/dist/cjs/routing/decorators/controller.decorator.d.ts +16 -1
- package/dist/cjs/routing/decorators/controller.decorator.d.ts.map +1 -1
- package/dist/cjs/routing/decorators/controller.decorator.js +7 -2
- package/dist/cjs/routing/decorators/controller.decorator.js.map +1 -1
- package/dist/cjs/routing/models/crud-controller.model.js.map +1 -1
- package/dist/cjs/routing/request.context.d.ts +1 -1
- package/dist/cjs/routing/request.context.d.ts.map +1 -1
- package/dist/cjs/routing/request.context.js +1 -4
- package/dist/cjs/routing/request.context.js.map +1 -1
- package/dist/cjs/routing/router.d.ts +12 -7
- package/dist/cjs/routing/router.d.ts.map +1 -1
- package/dist/cjs/routing/router.interface.d.ts +1 -10
- package/dist/cjs/routing/router.interface.d.ts.map +1 -1
- package/dist/cjs/routing/router.js +40 -20
- package/dist/cjs/routing/router.js.map +1 -1
- package/dist/cjs/utilities/fs.utilities.d.ts +20 -20
- package/dist/cjs/utilities/fs.utilities.d.ts.map +1 -1
- package/dist/cjs/utilities/fs.utilities.js.map +1 -1
- package/dist/cjs/utilities/metadata-injection-keys.enum.d.ts +3 -3
- package/dist/cjs/utilities/metadata-injection-keys.enum.d.ts.map +1 -1
- package/dist/cjs/utilities/metadata-injection-keys.enum.js +4 -3
- package/dist/cjs/utilities/metadata-injection-keys.enum.js.map +1 -1
- package/dist/cjs/utilities/metadata.utilities.d.ts +6 -5
- package/dist/cjs/utilities/metadata.utilities.d.ts.map +1 -1
- package/dist/cjs/utilities/metadata.utilities.js +16 -9
- package/dist/cjs/utilities/metadata.utilities.js.map +1 -1
- package/dist/cjs/utilities/promise.utilities.d.ts +7 -0
- package/dist/cjs/utilities/promise.utilities.d.ts.map +1 -1
- package/dist/cjs/utilities/promise.utilities.js +26 -0
- package/dist/cjs/utilities/promise.utilities.js.map +1 -1
- package/dist/cjs/utilities/validate-entities-registered.function.d.ts +3 -1
- package/dist/cjs/utilities/validate-entities-registered.function.d.ts.map +1 -1
- package/dist/cjs/utilities/validate-entities-registered.function.js +3 -3
- package/dist/cjs/utilities/validate-entities-registered.function.js.map +1 -1
- package/dist/cjs/utilities/validate-tokens-registered.function.d.ts +9 -0
- package/dist/cjs/utilities/validate-tokens-registered.function.d.ts.map +1 -0
- package/dist/cjs/utilities/validate-tokens-registered.function.js +27 -0
- package/dist/cjs/utilities/validate-tokens-registered.function.js.map +1 -0
- package/dist/cjs/validation/validation.service.d.ts.map +1 -1
- package/dist/cjs/validation/validation.service.js +6 -2
- package/dist/cjs/validation/validation.service.js.map +1 -1
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.d.ts +8 -2
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.d.ts.map +1 -1
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.js +4 -2
- package/dist/cjs/websocket/decorators/websocket-controller.decorator.js.map +1 -1
- package/dist/cjs/websocket/services/websocket-service.interface.d.ts +0 -5
- package/dist/cjs/websocket/services/websocket-service.interface.d.ts.map +1 -1
- package/dist/cjs/websocket/services/websocket.service.d.ts +5 -2
- package/dist/cjs/websocket/services/websocket.service.d.ts.map +1 -1
- package/dist/cjs/websocket/services/websocket.service.js +9 -3
- package/dist/cjs/websocket/services/websocket.service.js.map +1 -1
- package/dist/esm/application.js +221 -76
- package/dist/esm/application.js.map +1 -1
- package/dist/esm/assets/asset.service.js +10 -6
- package/dist/esm/assets/asset.service.js.map +1 -1
- package/dist/esm/auth/2fa/methods/otp/otp-credentials.model.js +1 -1
- package/dist/esm/auth/2fa/methods/otp/otp-credentials.model.js.map +1 -1
- package/dist/esm/auth/2fa/methods/otp/otp.two-factor-method.js +7 -18
- package/dist/esm/auth/2fa/methods/otp/otp.two-factor-method.js.map +1 -1
- package/dist/esm/auth/2fa/methods/two-factor-method.interface.js +20 -1
- package/dist/esm/auth/2fa/methods/two-factor-method.interface.js.map +1 -1
- package/dist/esm/auth/2fa/two-factor.service.js +27 -10
- package/dist/esm/auth/2fa/two-factor.service.js.map +1 -1
- package/dist/esm/auth/auth.service.js +29 -13
- package/dist/esm/auth/auth.service.js.map +1 -1
- package/dist/esm/auth/models/password-reset-token.model.js +1 -1
- package/dist/esm/auth/models/password-reset-token.model.js.map +1 -1
- package/dist/esm/auth/strategies/auth-strategy.interface.js +27 -1
- package/dist/esm/auth/strategies/auth-strategy.interface.js.map +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-auth.controller.js +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-auth.controller.js.map +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-credentials.model.js +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-credentials.model.js.map +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-refresh-token.model.js +1 -1
- package/dist/esm/auth/strategies/jwt/jwt-refresh-token.model.js.map +1 -1
- package/dist/esm/auth/strategies/jwt/jwt.auth-strategy.js +63 -53
- package/dist/esm/auth/strategies/jwt/jwt.auth-strategy.js.map +1 -1
- package/dist/esm/auth/user/user.service.js +13 -2
- package/dist/esm/auth/user/user.service.js.map +1 -1
- package/dist/esm/backup/backup-entity.model.js +1 -1
- package/dist/esm/backup/backup-entity.model.js.map +1 -1
- package/dist/esm/backup/backup-resource-entity.model.js +1 -1
- package/dist/esm/backup/backup-resource-entity.model.js.map +1 -1
- package/dist/esm/backup/backup.service.js +39 -8
- package/dist/esm/backup/backup.service.js.map +1 -1
- package/dist/esm/backup/transports/fs.backup-transport.js.map +1 -1
- package/dist/esm/change-sets/change-set-repository.js +8 -7
- package/dist/esm/change-sets/change-set-repository.js.map +1 -1
- package/dist/esm/cron/cron-job.model.js +7 -0
- package/dist/esm/cron/cron-job.model.js.map +1 -1
- package/dist/esm/cron/cron.service.js +32 -8
- package/dist/esm/cron/cron.service.js.map +1 -1
- package/dist/esm/data-source/data-source.service.js +40 -36
- package/dist/esm/data-source/data-source.service.js.map +1 -1
- package/dist/esm/data-source/data-sources/data-source.interface.js +27 -1
- package/dist/esm/data-source/data-sources/data-source.interface.js.map +1 -1
- package/dist/esm/data-source/data-sources/postgres-data-source.model.js +31 -8
- package/dist/esm/data-source/data-sources/postgres-data-source.model.js.map +1 -1
- package/dist/esm/data-source/decorators/data-source.decorator.js +0 -1
- package/dist/esm/data-source/decorators/data-source.decorator.js.map +1 -1
- package/dist/esm/data-source/repository.js +0 -1
- package/dist/esm/data-source/repository.js.map +1 -1
- package/dist/esm/di/decorators/injectable.decorator.js +10 -4
- package/dist/esm/di/decorators/injectable.decorator.js.map +1 -1
- package/dist/esm/di/default/zibri-di-providers.default.js +4 -6
- package/dist/esm/di/default/zibri-di-providers.default.js.map +1 -1
- package/dist/esm/di/default/zibri-di-tokens.default.js +2 -2
- package/dist/esm/di/default/zibri-di-tokens.default.js.map +1 -1
- package/dist/esm/di/di-container.js +34 -2
- package/dist/esm/di/di-container.js.map +1 -1
- package/dist/esm/di/errors/no-provider.error.js +2 -2
- package/dist/esm/di/errors/no-provider.error.js.map +1 -1
- package/dist/esm/di/get-all-registered-tokens.function.js +9 -0
- package/dist/esm/di/get-all-registered-tokens.function.js.map +1 -0
- package/dist/esm/di/register.function.js +2 -2
- package/dist/esm/email/email.service.js +35 -15
- package/dist/esm/email/email.service.js.map +1 -1
- package/dist/esm/email/models/email-attachment.model.js.map +1 -1
- package/dist/esm/email/send-queued-emails.cron-job.js +15 -5
- package/dist/esm/email/send-queued-emails.cron-job.js.map +1 -1
- package/dist/esm/entity/decorators/entity.decorator.js +5 -3
- package/dist/esm/entity/decorators/entity.decorator.js.map +1 -1
- package/dist/esm/entity/generation/generate-entity-files-for-provider.function.js.map +1 -1
- package/dist/esm/entity/generation/generate-entity-files.function.js.map +1 -1
- package/dist/esm/entity/generation/providers/open-api-file.provider.js.map +1 -1
- package/dist/esm/error-handling/error-handler.js +1 -1
- package/dist/esm/error-handling/error-handler.js.map +1 -1
- package/dist/esm/error-handling/errors/http.error.js +1 -5
- package/dist/esm/error-handling/errors/http.error.js.map +1 -1
- package/dist/esm/error-handling/errors/missing-tokens.error.js +18 -0
- package/dist/esm/error-handling/errors/missing-tokens.error.js.map +1 -0
- package/dist/esm/global/after-app-init.interface.js +21 -0
- package/dist/esm/global/after-app-init.interface.js.map +1 -0
- package/dist/esm/global/after-app-shutdown.interface.js +21 -0
- package/dist/esm/global/after-app-shutdown.interface.js.map +1 -0
- package/dist/esm/global/app-state.enum.js +12 -0
- package/dist/esm/global/app-state.enum.js.map +1 -0
- package/dist/esm/global/before-app-init.interface.js +21 -0
- package/dist/esm/global/before-app-init.interface.js.map +1 -0
- package/dist/esm/global/before-app-shutdown.interface.js +21 -0
- package/dist/esm/global/before-app-shutdown.interface.js.map +1 -0
- package/dist/esm/global/global-registry.js +64 -38
- package/dist/esm/global/global-registry.js.map +1 -1
- package/dist/esm/global/on-app-init.interface.js +21 -0
- package/dist/esm/global/on-app-init.interface.js.map +1 -0
- package/dist/esm/global/on-app-shutdown.interface.js +21 -0
- package/dist/esm/global/on-app-shutdown.interface.js.map +1 -0
- package/dist/esm/global/on-app-start.interface.js +21 -0
- package/dist/esm/global/on-app-start.interface.js.map +1 -0
- package/dist/esm/handlebars/generate-handlebar-type-files.function.js +5 -3
- package/dist/esm/handlebars/generate-handlebar-type-files.function.js.map +1 -1
- package/dist/esm/handlebars/handlebar.utilities.js +23 -4
- package/dist/esm/handlebars/handlebar.utilities.js.map +1 -1
- package/dist/esm/http-client/http-client.error.js +43 -0
- package/dist/esm/http-client/http-client.error.js.map +1 -0
- package/dist/esm/http-client/http-client.js +24 -1
- package/dist/esm/http-client/http-client.js.map +1 -1
- package/dist/esm/index.js +30 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/logging/log-cleanup.cron-job.js +10 -8
- package/dist/esm/logging/log-cleanup.cron-job.js.map +1 -1
- package/dist/esm/logging/log.model.js +1 -1
- package/dist/esm/logging/log.model.js.map +1 -1
- package/dist/esm/logging/logger.js +4 -2
- package/dist/esm/logging/logger.js.map +1 -1
- package/dist/esm/logging/transport/log-to-email.function.js +3 -17
- package/dist/esm/logging/transport/log-to-email.function.js.map +1 -1
- package/dist/esm/logging/transport/logger-transport.model.js.map +1 -1
- package/dist/esm/metrics/metrics.service.js +27 -7
- package/dist/esm/metrics/metrics.service.js.map +1 -1
- package/dist/esm/metrics/scrape-metrics.cron-job.js +9 -7
- package/dist/esm/metrics/scrape-metrics.cron-job.js.map +1 -1
- package/dist/esm/multithreading/services/multithreading.service.js +11 -9
- package/dist/esm/multithreading/services/multithreading.service.js.map +1 -1
- package/dist/esm/open-api/open-api.service.js +45 -19
- package/dist/esm/open-api/open-api.service.js.map +1 -1
- package/dist/esm/parsing/form-data/file-response.model.js.map +1 -1
- package/dist/esm/parsing/form-data/file.model.js.map +1 -1
- package/dist/esm/parsing/form-data/form-data-body-parser-cleanup.cron-job.js +17 -7
- package/dist/esm/parsing/form-data/form-data-body-parser-cleanup.cron-job.js.map +1 -1
- package/dist/esm/parsing/form-data/form-data.body-parser.js +1 -1
- package/dist/esm/parsing/form-data/form-data.body-parser.js.map +1 -1
- package/dist/esm/parsing/form-data/form-data.model.js.map +1 -1
- package/dist/esm/parsing/parser.js +21 -4
- package/dist/esm/parsing/parser.js.map +1 -1
- package/dist/esm/plugin/invoicing/invoicing.plugin.js +10 -8
- package/dist/esm/plugin/invoicing/invoicing.plugin.js.map +1 -1
- package/dist/esm/plugin/invoicing/invoicing.tokens.js +1 -1
- package/dist/esm/plugin/invoicing/invoicing.tokens.js.map +1 -1
- package/dist/esm/plugin/invoicing/models/invoice.model.js +1 -1
- package/dist/esm/plugin/invoicing/models/invoice.model.js.map +1 -1
- package/dist/esm/plugin/invoicing/models/number-invoices.model.js +1 -1
- package/dist/esm/plugin/invoicing/models/number-invoices.model.js.map +1 -1
- package/dist/esm/plugin/invoicing/services/conformance/en16931/en16931-conformance.service.js +3 -3
- package/dist/esm/plugin/invoicing/services/conformance/en16931/en16931-conformance.service.js.map +1 -1
- package/dist/esm/plugin/invoicing/services/conformance/en16931/peppol-conformance.service.js +1 -1
- package/dist/esm/plugin/invoicing/services/conformance/en16931/peppol-conformance.service.js.map +1 -1
- package/dist/esm/plugin/invoicing/services/conformance/en16931/x-rechnung-conformance.service.js +1 -1
- package/dist/esm/plugin/invoicing/services/conformance/en16931/x-rechnung-conformance.service.js.map +1 -1
- package/dist/esm/plugin/invoicing/services/invoice-calc.service.js +13 -2
- package/dist/esm/plugin/invoicing/services/invoice-calc.service.js.map +1 -1
- package/dist/esm/plugin/invoicing/services/invoice-number.service.js +4 -2
- package/dist/esm/plugin/invoicing/services/invoice-number.service.js.map +1 -1
- package/dist/esm/plugin/invoicing/services/invoice-pdf.service.js +6 -4
- package/dist/esm/plugin/invoicing/services/invoice-pdf.service.js.map +1 -1
- package/dist/esm/plugin/mailing-list/mailing-list.controller.js +129 -0
- package/dist/esm/plugin/mailing-list/mailing-list.controller.js.map +1 -0
- package/dist/esm/plugin/mailing-list/mailing-list.plugin.js +33 -0
- package/dist/esm/plugin/mailing-list/mailing-list.plugin.js.map +1 -0
- package/dist/esm/plugin/mailing-list/mailing-list.tokens.js +19 -0
- package/dist/esm/plugin/mailing-list/mailing-list.tokens.js.map +1 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-base-email-template.model.js +2 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-base-email-template.model.js.map +1 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-preferences-page-template.model.js +2 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-preferences-page-template.model.js.map +1 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.js +2 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.js.map +1 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.js +2 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.js.map +1 -0
- package/dist/esm/{email → plugin}/mailing-list/models/mailing-list-subscriber.model.js +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscriber.model.js.map +1 -0
- package/dist/esm/{email → plugin}/mailing-list/models/mailing-list-subscription-confirmation-token.model.js +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list-subscription-confirmation-token.model.js.map +1 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.js +2 -0
- package/dist/esm/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.js.map +1 -0
- package/dist/esm/{email → plugin}/mailing-list/models/mailing-list.model.js +1 -1
- package/dist/esm/plugin/mailing-list/models/mailing-list.model.js.map +1 -0
- package/dist/esm/plugin/mailing-list/models/update-mailing-list-preferences.model.js.map +1 -0
- package/dist/esm/plugin/mailing-list/services/mailing-list-service.interface.js +8 -0
- package/dist/esm/plugin/mailing-list/services/mailing-list-service.interface.js.map +1 -0
- package/dist/esm/plugin/mailing-list/services/mailing-list.service.js +165 -0
- package/dist/esm/plugin/mailing-list/services/mailing-list.service.js.map +1 -0
- package/dist/esm/plugin/payment/models/payment.model.js +9 -1
- package/dist/esm/plugin/payment/models/payment.model.js.map +1 -1
- package/dist/esm/plugin/payment/payment.plugin.js +25 -11
- package/dist/esm/plugin/payment/payment.plugin.js.map +1 -1
- package/dist/esm/plugin/payment/payment.tokens.js +14 -2
- package/dist/esm/plugin/payment/payment.tokens.js.map +1 -1
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal-client.js +17 -1
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal-client.js.map +1 -1
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js +1 -7
- package/dist/esm/plugin/payment/providers/pay-pal/pay-pal.payment-provider.js.map +1 -1
- package/dist/esm/plugin/payment/services/payment.service.js +9 -5
- package/dist/esm/plugin/payment/services/payment.service.js.map +1 -1
- package/dist/esm/preact/generate-client-scripts.function.js +6 -9
- package/dist/esm/preact/generate-client-scripts.function.js.map +1 -1
- package/dist/esm/preact/preact-email-component.model.js +2 -0
- package/dist/esm/preact/preact-email-component.model.js.map +1 -0
- package/dist/esm/preact/preact.utilities.js +41 -5
- package/dist/esm/preact/preact.utilities.js.map +1 -1
- package/dist/esm/preact/validate-email-templates.function.js +7 -0
- package/dist/esm/preact/validate-email-templates.function.js.map +1 -0
- package/dist/esm/routing/decorators/controller.decorator.js +7 -2
- package/dist/esm/routing/decorators/controller.decorator.js.map +1 -1
- package/dist/esm/routing/models/crud-controller.model.js.map +1 -1
- package/dist/esm/routing/request.context.js +1 -4
- package/dist/esm/routing/request.context.js.map +1 -1
- package/dist/esm/routing/router.js +41 -20
- package/dist/esm/routing/router.js.map +1 -1
- package/dist/esm/utilities/fs.utilities.js.map +1 -1
- package/dist/esm/utilities/metadata-injection-keys.enum.js +4 -3
- package/dist/esm/utilities/metadata-injection-keys.enum.js.map +1 -1
- package/dist/esm/utilities/metadata.utilities.js +16 -9
- package/dist/esm/utilities/metadata.utilities.js.map +1 -1
- package/dist/esm/utilities/promise.utilities.js +26 -0
- package/dist/esm/utilities/promise.utilities.js.map +1 -1
- package/dist/esm/utilities/validate-entities-registered.function.js +3 -3
- package/dist/esm/utilities/validate-entities-registered.function.js.map +1 -1
- package/dist/esm/utilities/validate-tokens-registered.function.js +24 -0
- package/dist/esm/utilities/validate-tokens-registered.function.js.map +1 -0
- package/dist/esm/validation/validation.service.js +7 -2
- package/dist/esm/validation/validation.service.js.map +1 -1
- package/dist/esm/websocket/decorators/websocket-controller.decorator.js +4 -2
- package/dist/esm/websocket/decorators/websocket-controller.decorator.js.map +1 -1
- package/dist/esm/websocket/services/websocket.service.js +9 -3
- package/dist/esm/websocket/services/websocket.service.js.map +1 -1
- package/package.json +3 -3
- package/src/__testing__/constants.ts +7 -3
- package/src/__testing__/mocks/assets/thread-job.worker.cjs +92 -0
- package/src/__testing__/mocks/entities/jwt-user.entity.ts +6 -0
- package/src/__testing__/mocks/entities/roles.enum.ts +4 -0
- package/src/__testing__/test-server/create-test-data-source.function.ts +67 -0
- package/src/__testing__/test-server/plugins.ts +3 -0
- package/src/__testing__/test-server/providers.ts +77 -0
- package/src/__testing__/test-server/start-test-server.function.ts +86 -0
- package/src/__testing__/test-server/user-repository.ts +34 -0
- package/src/application.ts +257 -103
- package/src/assets/asset-service.interface.ts +4 -18
- package/src/assets/asset-service.test.ts +3 -3
- package/src/assets/asset.service.ts +22 -15
- package/src/auth/2fa/methods/otp/otp-credentials.model.ts +1 -1
- package/src/auth/2fa/methods/otp/otp.two-factor-method.ts +4 -20
- package/src/auth/2fa/methods/two-factor-method.interface.ts +23 -4
- package/src/auth/2fa/two-factor-service.interface.ts +0 -4
- package/src/auth/2fa/two-factor.service.ts +13 -12
- package/src/auth/auth-service.interface.ts +0 -4
- package/src/auth/auth.service.ts +16 -18
- package/src/auth/models/password-reset-token.model.ts +1 -1
- package/src/auth/strategies/auth-strategy.interface.ts +31 -4
- package/src/auth/strategies/jwt/jwt-auth.controller.ts +17 -1
- package/src/auth/strategies/jwt/jwt-credentials.model.ts +1 -1
- package/src/auth/strategies/jwt/jwt-refresh-token.model.ts +1 -1
- package/src/auth/strategies/jwt/jwt.auth-strategy.ts +46 -62
- package/src/auth/user/user.service.ts +2 -0
- package/src/backup/backup-entity.model.ts +1 -1
- package/src/backup/backup-resource-entity.model.ts +1 -1
- package/src/backup/backup-service.interface.ts +0 -4
- package/src/backup/backup-service.test.ts +18 -32
- package/src/backup/backup.service.ts +28 -10
- package/src/backup/transports/fs.backup-transport.ts +9 -9
- package/src/change-sets/change-set-repository.ts +10 -9
- package/src/cron/cron-job.model.ts +9 -1
- package/src/cron/cron-service.interface.ts +0 -5
- package/src/cron/cron.service.ts +21 -12
- package/src/data-source/data-source-service.interface.ts +4 -6
- package/src/data-source/data-source.service.ts +27 -40
- package/src/data-source/data-sources/data-source.interface.ts +36 -0
- package/src/data-source/data-sources/postgres-data-source.model.ts +18 -8
- package/src/data-source/decorators/data-source.decorator.ts +1 -2
- package/src/data-source/migration/migration.test.ts +2 -2
- package/src/data-source/repository.ts +0 -1
- package/src/data-source/transaction/transaction.test.ts +13 -34
- package/src/di/decorators/injectable.decorator.ts +28 -5
- package/src/di/default/zibri-di-providers.default.ts +4 -6
- package/src/di/default/zibri-di-tokens.default.ts +6 -8
- package/src/di/di-container.ts +41 -2
- package/src/di/errors/no-provider.error.ts +4 -2
- package/src/di/get-all-registered-tokens.function.ts +10 -0
- package/src/di/models/di-provider.model.ts +3 -3
- package/src/di/register.function.ts +2 -2
- package/src/di/unregister.function.ts +2 -2
- package/src/email/email-service.interface.ts +0 -5
- package/src/email/email.service.ts +20 -15
- package/src/email/models/email-attachment.model.ts +2 -2
- package/src/email/send-queued-emails.cron-job.ts +10 -6
- package/src/entity/decorators/entity.decorator.ts +10 -4
- package/src/entity/generation/generate-entity-files-for-provider.function.ts +3 -3
- package/src/entity/generation/generate-entity-files.function.ts +5 -5
- package/src/entity/generation/providers/open-api-file.provider.ts +2 -2
- package/src/error-handling/error-handler.ts +1 -1
- package/src/error-handling/errors/http.error.ts +1 -5
- package/src/error-handling/errors/missing-tokens.error.ts +19 -0
- package/src/global/after-app-init.interface.ts +43 -0
- package/src/global/after-app-shutdown.interface.ts +46 -0
- package/src/global/app-state.enum.ts +10 -0
- package/src/global/before-app-init.interface.ts +39 -0
- package/src/global/before-app-shutdown.interface.ts +48 -0
- package/src/global/global-registry.ts +66 -39
- package/src/global/on-app-init.interface.ts +33 -0
- package/src/global/on-app-shutdown.interface.ts +38 -0
- package/src/global/on-app-start.interface.ts +33 -0
- package/src/handlebars/generate-handlebar-type-files.function.ts +12 -9
- package/src/handlebars/handlebar.utilities.ts +30 -6
- package/src/http-client/http-client.error.ts +94 -0
- package/src/http-client/http-client.ts +29 -2
- package/src/index.ts +33 -10
- package/src/logging/log-cleanup.cron-job.ts +5 -8
- package/src/logging/log.model.ts +1 -1
- package/src/logging/logger.interface.ts +0 -5
- package/src/logging/logger.ts +6 -3
- package/src/logging/transport/log-to-email.function.ts +11 -25
- package/src/logging/transport/logger-transport.model.ts +16 -0
- package/src/metrics/metrics-service.interface.ts +0 -5
- package/src/metrics/metrics.service.ts +12 -7
- package/src/metrics/scrape-metrics.cron-job.ts +6 -8
- package/src/multithreading/services/multithreading-service.interface.ts +1 -10
- package/src/multithreading/services/multithreading.service.test.ts +6 -3
- package/src/multithreading/services/multithreading.service.ts +12 -8
- package/src/open-api/open-api-service.interface.ts +0 -4
- package/src/open-api/open-api.service.ts +37 -28
- package/src/parsing/body-parser.interface.ts +0 -5
- package/src/parsing/form-data/file-response.model.ts +3 -3
- package/src/parsing/form-data/file.model.ts +2 -2
- package/src/parsing/form-data/form-data-body-parser-cleanup.cron-job.ts +14 -11
- package/src/parsing/form-data/form-data.body-parser.ts +10 -9
- package/src/parsing/form-data/form-data.model.ts +4 -4
- package/src/parsing/parser.interface.ts +1 -6
- package/src/parsing/parser.ts +10 -4
- package/src/plugin/invoicing/invoicing.plugin.ts +12 -9
- package/src/plugin/invoicing/invoicing.tokens.ts +1 -1
- package/src/plugin/invoicing/models/invoice.model.ts +1 -1
- package/src/plugin/invoicing/models/number-invoices.model.ts +1 -1
- package/src/plugin/invoicing/services/conformance/en16931/en16931-conformance.service.ts +3 -3
- package/src/plugin/invoicing/services/conformance/en16931/peppol-conformance.service.test.ts +23 -38
- package/src/plugin/invoicing/services/conformance/en16931/peppol-conformance.service.ts +1 -1
- package/src/plugin/invoicing/services/conformance/en16931/x-rechnung-conformance.service.test.ts +24 -39
- package/src/plugin/invoicing/services/conformance/en16931/x-rechnung-conformance.service.ts +1 -1
- package/src/plugin/invoicing/services/invoice-calc.service.ts +2 -0
- package/src/plugin/invoicing/services/invoice-number.service.test.ts +21 -42
- package/src/plugin/invoicing/services/invoice-number.service.ts +4 -2
- package/src/plugin/invoicing/services/invoice-pdf.service.test.ts +23 -51
- package/src/plugin/invoicing/services/invoice-pdf.service.ts +6 -4
- package/src/plugin/mailing-list/mailing-list.controller.ts +114 -0
- package/src/plugin/mailing-list/mailing-list.plugin.ts +37 -0
- package/src/plugin/mailing-list/mailing-list.tokens.ts +37 -0
- package/src/plugin/mailing-list/models/mailing-list-base-email-template.model.ts +36 -0
- package/src/plugin/mailing-list/models/mailing-list-preferences-page-template.model.ts +26 -0
- package/src/plugin/mailing-list/models/mailing-list-subscribe-confirmation-email-template.model.ts +26 -0
- package/src/plugin/mailing-list/models/mailing-list-subscribe-success-page-template.model.ts +26 -0
- package/src/{email → plugin}/mailing-list/models/mailing-list-subscriber.model.ts +1 -1
- package/src/{email → plugin}/mailing-list/models/mailing-list-subscription-confirmation-token.model.ts +1 -1
- package/src/plugin/mailing-list/models/mailing-list-unsubscribe-confirmation-page-template.model.ts +26 -0
- package/src/{email → plugin}/mailing-list/models/mailing-list.model.ts +1 -1
- package/src/plugin/mailing-list/services/mailing-list-service.interface.ts +75 -0
- package/src/plugin/mailing-list/services/mailing-list.service.ts +192 -0
- package/src/plugin/payment/models/payment-plugin-options-input.model.ts +2 -14
- package/src/plugin/payment/models/payment-plugin-options.model.ts +2 -14
- package/src/plugin/payment/models/payment.model.ts +6 -1
- package/src/plugin/payment/payment.plugin.ts +33 -13
- package/src/plugin/payment/payment.tokens.ts +18 -14
- package/src/plugin/payment/providers/pay-pal/pay-pal-client.ts +21 -3
- package/src/plugin/payment/providers/pay-pal/pay-pal.payment-provider.test.ts +280 -0
- package/src/plugin/payment/providers/pay-pal/pay-pal.payment-provider.ts +27 -13
- package/src/plugin/payment/providers/payment-provider.interface.ts +93 -41
- package/src/plugin/payment/services/payment-service.interface.ts +14 -14
- package/src/plugin/payment/services/payment-service.types.ts +33 -191
- package/src/plugin/payment/services/payment.service.ts +12 -18
- package/src/plugin/plugin.model.ts +1 -1
- package/src/preact/generate-client-scripts.function.ts +13 -15
- package/src/preact/preact-email-component.model.ts +6 -0
- package/src/preact/preact.utilities.ts +65 -12
- package/src/preact/validate-email-templates.function.ts +8 -0
- package/src/routing/decorators/controller.decorator.ts +22 -2
- package/src/routing/models/crud-controller.model.ts +1 -1
- package/src/routing/request.context.ts +2 -5
- package/src/routing/router.interface.ts +1 -14
- package/src/routing/router.ts +32 -28
- package/src/utilities/fs.utilities.ts +26 -26
- package/src/utilities/metadata-injection-keys.enum.ts +4 -3
- package/src/utilities/metadata.utilities.ts +21 -10
- package/src/utilities/promise.utilities.ts +34 -0
- package/src/utilities/validate-entities-registered.function.ts +4 -3
- package/src/utilities/validate-tokens-registered.function.ts +25 -0
- package/src/validation/validation.service.ts +4 -2
- package/src/websocket/decorators/websocket-controller.decorator.ts +10 -3
- package/src/websocket/services/websocket-service.interface.ts +0 -5
- package/src/websocket/services/websocket.service.ts +13 -4
- package/dist/cjs/email/mailing-list/mailing-list-service.interface.d.ts +0 -63
- package/dist/cjs/email/mailing-list/mailing-list-service.interface.d.ts.map +0 -1
- package/dist/cjs/email/mailing-list/mailing-list-service.interface.js.map +0 -1
- package/dist/cjs/email/mailing-list/mailing-list.service.d.ts +0 -36
- package/dist/cjs/email/mailing-list/mailing-list.service.d.ts.map +0 -1
- package/dist/cjs/email/mailing-list/mailing-list.service.js +0 -133
- package/dist/cjs/email/mailing-list/mailing-list.service.js.map +0 -1
- package/dist/cjs/email/mailing-list/models/mailing-list-subscriber.model.d.ts.map +0 -1
- package/dist/cjs/email/mailing-list/models/mailing-list-subscriber.model.js.map +0 -1
- package/dist/cjs/email/mailing-list/models/mailing-list-subscription-confirmation-token.model.d.ts.map +0 -1
- package/dist/cjs/email/mailing-list/models/mailing-list-subscription-confirmation-token.model.js.map +0 -1
- package/dist/cjs/email/mailing-list/models/mailing-list.model.d.ts.map +0 -1
- package/dist/cjs/email/mailing-list/models/mailing-list.model.js.map +0 -1
- package/dist/cjs/email/mailing-list/models/update-mailing-list-preferences.model.d.ts.map +0 -1
- package/dist/cjs/email/mailing-list/models/update-mailing-list-preferences.model.js.map +0 -1
- package/dist/cjs/handlebars/render-template.function.d.ts +0 -85
- package/dist/cjs/handlebars/render-template.function.d.ts.map +0 -1
- package/dist/cjs/handlebars/render-template.function.js +0 -44
- package/dist/cjs/handlebars/render-template.function.js.map +0 -1
- package/dist/esm/email/mailing-list/mailing-list-service.interface.js +0 -8
- package/dist/esm/email/mailing-list/mailing-list-service.interface.js.map +0 -1
- package/dist/esm/email/mailing-list/mailing-list.service.js +0 -129
- package/dist/esm/email/mailing-list/mailing-list.service.js.map +0 -1
- package/dist/esm/email/mailing-list/models/mailing-list-subscriber.model.js.map +0 -1
- package/dist/esm/email/mailing-list/models/mailing-list-subscription-confirmation-token.model.js.map +0 -1
- package/dist/esm/email/mailing-list/models/mailing-list.model.js.map +0 -1
- package/dist/esm/email/mailing-list/models/update-mailing-list-preferences.model.js.map +0 -1
- package/dist/esm/handlebars/render-template.function.js +0 -39
- package/dist/esm/handlebars/render-template.function.js.map +0 -1
- package/src/email/mailing-list/mailing-list-service.interface.ts +0 -72
- package/src/email/mailing-list/mailing-list.service.ts +0 -175
- package/src/handlebars/render-template.function.ts +0 -118
- /package/dist/cjs/{email → plugin}/mailing-list/models/mailing-list-subscriber.model.d.ts +0 -0
- /package/dist/cjs/{email → plugin}/mailing-list/models/mailing-list-subscription-confirmation-token.model.d.ts +0 -0
- /package/dist/cjs/{email → plugin}/mailing-list/models/mailing-list.model.d.ts +0 -0
- /package/dist/cjs/{email → plugin}/mailing-list/models/update-mailing-list-preferences.model.d.ts +0 -0
- /package/dist/cjs/{email → plugin}/mailing-list/models/update-mailing-list-preferences.model.js +0 -0
- /package/dist/esm/{email → plugin}/mailing-list/models/update-mailing-list-preferences.model.js +0 -0
- /package/src/{email → plugin}/mailing-list/models/update-mailing-list-preferences.model.ts +0 -0
|
@@ -1,21 +1,44 @@
|
|
|
1
1
|
import { GlobalRegistry } from '../../global/global-registry';
|
|
2
2
|
import { Newable } from '../../types/newable.type';
|
|
3
3
|
import { MetadataUtilities } from '../../utilities/metadata.utilities';
|
|
4
|
+
import { DiProvider } from '../models/di-provider.model';
|
|
4
5
|
import { DiToken } from '../models/di-token.model';
|
|
5
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Options for the \@injectable decorator.
|
|
9
|
+
*/
|
|
10
|
+
export type InjectableOptions<T> = {
|
|
11
|
+
/**
|
|
12
|
+
* An optional token where the marked class should be registered under instead of the class.
|
|
13
|
+
*/
|
|
14
|
+
token?: DiToken<T>,
|
|
15
|
+
/**
|
|
16
|
+
* When the injectable should be registered. Defaults to 'immediately'.
|
|
17
|
+
*/
|
|
18
|
+
register?: 'immediately' | 'onUse'
|
|
19
|
+
};
|
|
20
|
+
|
|
6
21
|
/**
|
|
7
22
|
* Marks a class to be injectable.
|
|
8
|
-
* @param
|
|
23
|
+
* @param options - Options for the injectable.
|
|
9
24
|
*/
|
|
10
|
-
export function Injectable<T>(
|
|
25
|
+
export function Injectable<T>(options: InjectableOptions<T> = {}): ClassDecorator {
|
|
26
|
+
const { register = 'immediately', token } = options;
|
|
27
|
+
|
|
11
28
|
return target => {
|
|
12
29
|
MetadataUtilities.setDiToken(target, token);
|
|
13
30
|
// eslint-disable-next-line unicorn/error-message
|
|
14
31
|
const stack: string = new Error().stack ?? '';
|
|
15
32
|
MetadataUtilities.setFilePath(target, stack);
|
|
16
|
-
|
|
33
|
+
|
|
34
|
+
const provider: DiProvider<T> = {
|
|
17
35
|
token: (token ?? target) as DiToken<T>,
|
|
18
|
-
useClass: target as unknown as Newable<
|
|
19
|
-
}
|
|
36
|
+
useClass: target as unknown as Newable<T>
|
|
37
|
+
};
|
|
38
|
+
if (register === 'immediately') {
|
|
39
|
+
GlobalRegistry.injectables.push(provider);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
GlobalRegistry.lazyInjectables.push(provider);
|
|
20
43
|
};
|
|
21
44
|
}
|
|
@@ -14,7 +14,6 @@ import { BackupService } from '../../backup/backup.service';
|
|
|
14
14
|
import { CronService } from '../../cron/cron.service';
|
|
15
15
|
import { DataSourceService } from '../../data-source/data-source.service';
|
|
16
16
|
import { EmailService } from '../../email/email.service';
|
|
17
|
-
import { MailingListService } from '../../email/mailing-list/mailing-list.service';
|
|
18
17
|
import { errorHandler } from '../../error-handling/error-handler';
|
|
19
18
|
import { HttpClient } from '../../http-client/http-client';
|
|
20
19
|
import { LocalizeOptionsInput } from '../../localization/models/localize-options.model';
|
|
@@ -70,19 +69,18 @@ export const ZIBRI_DI_PROVIDERS: DiTokenProviderRecord<typeof ZIBRI_DI_TOKENS> =
|
|
|
70
69
|
PARSER: { useClass: Parser },
|
|
71
70
|
VALIDATION_SERVICE: { useClass: ValidationService },
|
|
72
71
|
DATA_SOURCE_SERVICE: { useClass: DataSourceService },
|
|
73
|
-
AUTH_SERVICE: {
|
|
74
|
-
TWO_FACTOR_SERVICE: {
|
|
72
|
+
AUTH_SERVICE: { useClass: AuthService },
|
|
73
|
+
TWO_FACTOR_SERVICE: { useClass: TwoFactorService },
|
|
75
74
|
OTP_HEADER: { useFactory: () => 'X-Authorization-OTP' },
|
|
76
75
|
OTP_LENGTH: { useFactory: () => 6 },
|
|
77
|
-
USER_SERVICE: {
|
|
76
|
+
USER_SERVICE: { useClass: UserService },
|
|
78
77
|
JWT_ACCESS_TOKEN_SECRET: { useFactory: () => undefined },
|
|
79
78
|
JWT_REFRESH_TOKEN_SECRET: { useFactory: () => undefined },
|
|
79
|
+
JWT_PASSWORD_RESET_EMAIL_TEMPLATE: { useFactory: () => undefined },
|
|
80
80
|
JWT_ACCESS_TOKEN_EXPIRES_IN_MS: { useFactory: () => Ms.HOUR },
|
|
81
81
|
JWT_REFRESH_TOKEN_EXPIRES_IN_MS: { useFactory: () => 100 * Ms.DAY },
|
|
82
82
|
CRON_SERVICE: { useClass: CronService },
|
|
83
83
|
EMAIL_SERVICE: { useClass: EmailService },
|
|
84
|
-
MAILING_LIST_SERVICE: { useClass: MailingListService },
|
|
85
|
-
MAILING_LIST_SUBSCRIPTION_CONFIRMATION_TOKEN_EXPIRES_IN_MS: { useFactory: () => Ms.DAY },
|
|
86
84
|
FILE_UPLOAD_TEMP_FOLDER: { useFactory: () => FsUtilities.getPath(__dirname, 'temp') },
|
|
87
85
|
LOCALIZE_OPTIONS_INPUT: { useFactory: () => ({}) },
|
|
88
86
|
LOCALIZE_OPTIONS: {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { AssetServiceInterface } from '../../assets/asset-service.interface';
|
|
2
2
|
import { TwoFactorServiceInterface } from '../../auth/2fa/two-factor-service.interface';
|
|
3
3
|
import { AuthServiceInterface } from '../../auth/auth-service.interface';
|
|
4
|
+
import { PasswordResetEmailTemplate } from '../../auth/strategies/jwt/jwt-auth.controller';
|
|
4
5
|
import { UserServiceInterface } from '../../auth/user/user-service.interface';
|
|
5
6
|
import { BackupServiceInterface } from '../../backup/backup-service.interface';
|
|
6
7
|
import { CronServiceInterface } from '../../cron/cron-service.interface';
|
|
7
8
|
import { DataSourceServiceInterface } from '../../data-source/data-source-service.interface';
|
|
8
9
|
import { EmailServiceInterface } from '../../email/email-service.interface';
|
|
9
|
-
import { MailingListServiceInterface } from '../../email/mailing-list/mailing-list-service.interface';
|
|
10
10
|
import { EmailConfigInput } from '../../email/models/email-config.model';
|
|
11
11
|
import { GlobalErrorHandler, ErrorPageTemplate } from '../../error-handling/error-handler.model';
|
|
12
12
|
import { HttpRequest } from '../../http/http-request.model';
|
|
@@ -24,7 +24,7 @@ import { MultithreadingServiceInterface } from '../../multithreading/services/mu
|
|
|
24
24
|
import { OpenApiServiceInterface } from '../../open-api/open-api-service.interface';
|
|
25
25
|
import { ParserInterface } from '../../parsing/parser.interface';
|
|
26
26
|
import { RouterInterface } from '../../routing/router.interface';
|
|
27
|
-
import {
|
|
27
|
+
import { FsPath } from '../../utilities/fs.utilities';
|
|
28
28
|
import { ValidationServiceInterface } from '../../validation/validation-service.interface';
|
|
29
29
|
import { WebsocketOptions } from '../../websocket/models/websocket-options.model';
|
|
30
30
|
import { WebsocketServiceInterface } from '../../websocket/services/websocket-service.interface';
|
|
@@ -64,12 +64,11 @@ export const ZIBRI_DI_TOKENS = {
|
|
|
64
64
|
JWT_REFRESH_TOKEN_EXPIRES_IN_MS: ziToken<number>('zi.jwt_refresh_token_expires_in_ms'),
|
|
65
65
|
JWT_PASSWORD_RESET_TOKEN_EXPIRES_IN_MS: ziToken<number>('zi.jwt_password_reset_token_expires_in_ms'),
|
|
66
66
|
JWT_CONFIRM_PASSWORD_RESET_URL: ziToken<string | undefined>('zi.jwt_confirm_password_reset_url'),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
),
|
|
67
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
68
|
+
JWT_PASSWORD_RESET_EMAIL_TEMPLATE: ziToken<PasswordResetEmailTemplate<any, any> | undefined>('zi.jwt_password_reset_email_template'),
|
|
70
69
|
USER_SERVICE: ziToken<UserServiceInterface>('zi.user_service'),
|
|
71
70
|
CRON_SERVICE: ziToken<CronServiceInterface>('zi.cron_service'),
|
|
72
|
-
FILE_UPLOAD_TEMP_FOLDER: ziToken<
|
|
71
|
+
FILE_UPLOAD_TEMP_FOLDER: ziToken<FsPath>('zi.file_upload_temp_folder'),
|
|
73
72
|
LOCALIZE_OPTIONS_INPUT: ziToken<LocalizeOptionsInput>('zi.localize_options_input'),
|
|
74
73
|
LOCALIZE_OPTIONS: ziToken<LocalizeOptions>('zi.localize_options'),
|
|
75
74
|
FORMAT_DATE: ziToken<FormatDateFn>('zi.format_date'),
|
|
@@ -77,8 +76,7 @@ export const ZIBRI_DI_TOKENS = {
|
|
|
77
76
|
FORMAT_PERCENT: ziToken<FormatPercentFn>('zi.format_percent'),
|
|
78
77
|
EMAIL_SERVICE: ziToken<EmailServiceInterface>('zi.email_service'),
|
|
79
78
|
EMAIL_CONFIG: ziToken<EmailConfigInput | undefined>('zi.email_config'),
|
|
80
|
-
|
|
81
|
-
CURRENT_REQUEST: ziToken<HttpRequest>('zi.current_request'),
|
|
79
|
+
CURRENT_REQUEST: ziToken<HttpRequest | undefined>('zi.current_request'),
|
|
82
80
|
MULTITHREADING_SERVICE: ziToken<MultithreadingServiceInterface>('zi.multithreading_service'),
|
|
83
81
|
MULTITHREADING_OPTIONS: ziToken<MultithreadingOptions>('zi.multithreading_options'),
|
|
84
82
|
// eslint-disable-next-line typescript/no-explicit-any
|
package/src/di/di-container.ts
CHANGED
|
@@ -26,6 +26,25 @@ export class DiContainer {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Gets all registered tokens of the DI Container.
|
|
31
|
+
* @returns The tokens as an array.
|
|
32
|
+
*/
|
|
33
|
+
getAllRegisteredTokens(): DiToken<unknown>[] {
|
|
34
|
+
const seen: Set<unknown> = new Set<unknown>();
|
|
35
|
+
const unique: DiToken<unknown>[] = [];
|
|
36
|
+
|
|
37
|
+
for (const [token, provider] of this.providers) {
|
|
38
|
+
const identity: unknown = provider.useClass ?? provider.useFactory ?? provider.useValue ?? token;
|
|
39
|
+
if (!seen.has(identity)) {
|
|
40
|
+
seen.add(identity);
|
|
41
|
+
unique.push(token);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return unique;
|
|
46
|
+
}
|
|
47
|
+
|
|
29
48
|
/**
|
|
30
49
|
* Gets the DI Container instance.
|
|
31
50
|
* @returns The instance.
|
|
@@ -47,7 +66,7 @@ export class DiContainer {
|
|
|
47
66
|
/**
|
|
48
67
|
* Removes the provided token from the dependency injection system.
|
|
49
68
|
* @param token - The token to unregister.
|
|
50
|
-
* @throws When the app is initialized or
|
|
69
|
+
* @throws When the app is initialized or started.
|
|
51
70
|
*/
|
|
52
71
|
unregister<T>(token: DiToken<T>): void {
|
|
53
72
|
this.providers.delete(token);
|
|
@@ -65,11 +84,26 @@ export class DiContainer {
|
|
|
65
84
|
return this.instances.get(token) as T;
|
|
66
85
|
}
|
|
67
86
|
|
|
68
|
-
|
|
87
|
+
let provider: DiProvider<T> | undefined = this.providers.get(token) as DiProvider<T> | undefined;
|
|
88
|
+
if (!provider) {
|
|
89
|
+
const lazy: DiProvider<unknown> | undefined = GlobalRegistry.lazyInjectables.find(p => p.token === token);
|
|
90
|
+
if (lazy) {
|
|
91
|
+
this.register(lazy); // promote into providers so future lookups are O(1)
|
|
92
|
+
provider = lazy as DiProvider<T>;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
69
96
|
if (!provider) {
|
|
70
97
|
throw new NoProviderError(token, resolvingStack);
|
|
71
98
|
}
|
|
72
99
|
|
|
100
|
+
// If useClass, check if we already have an instance of that class cached under the class itself
|
|
101
|
+
if (provider.useClass && this.instances.has(provider.useClass as unknown as DiToken<unknown>)) {
|
|
102
|
+
const existing: T = this.instances.get(provider.useClass as unknown as DiToken<unknown>) as T;
|
|
103
|
+
this.instances.set(token, existing); // cache under this token too for next time
|
|
104
|
+
return existing;
|
|
105
|
+
}
|
|
106
|
+
|
|
73
107
|
if (provider.useClass || provider.useFactory) {
|
|
74
108
|
resolvingStack.push(provider.useClass ?? provider.useFactory);
|
|
75
109
|
}
|
|
@@ -78,6 +112,11 @@ export class DiContainer {
|
|
|
78
112
|
resolvingStack.pop();
|
|
79
113
|
|
|
80
114
|
this.instances.set(provider.token, instance);
|
|
115
|
+
|
|
116
|
+
if (provider.useClass) {
|
|
117
|
+
this.instances.set(provider.useClass as unknown as DiToken<unknown>, instance);
|
|
118
|
+
}
|
|
119
|
+
|
|
81
120
|
return instance;
|
|
82
121
|
}
|
|
83
122
|
|
|
@@ -19,8 +19,10 @@ function getNoProviderMessage(token: DiToken<unknown>, resolvingStack: Function[
|
|
|
19
19
|
return `No provider for token "${token.key}". Did you forget to decorate it with @Inject()?`;
|
|
20
20
|
}
|
|
21
21
|
const currentClass: Function = resolvingStack[resolvingStack.length - 1];
|
|
22
|
-
const
|
|
23
|
-
const index: number =
|
|
22
|
+
const injectTokens: Record<number, DiToken<unknown>> = MetadataUtilities.getInjectParamTokens(currentClass);
|
|
23
|
+
const index: number = Number(
|
|
24
|
+
Object.entries(injectTokens).find(([, t]) => t === token)?.[0] ?? -1
|
|
25
|
+
);
|
|
24
26
|
return `No provider for the token at index ${index} of class "${currentClass.name}". Did you forget to decorate it with @Inject()?`;
|
|
25
27
|
}
|
|
26
28
|
return `No provider for class "${token.name}". Did you forget to decorate it with @Injectable()?`;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DiContainer } from './di-container';
|
|
2
|
+
import { DiToken } from './models/di-token.model';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Gets all registered DI tokens.
|
|
6
|
+
* @returns The tokens as an array.
|
|
7
|
+
*/
|
|
8
|
+
export function getAllRegisteredTokens(): DiToken<unknown>[] {
|
|
9
|
+
return DiContainer.getInstance().getAllRegisteredTokens();
|
|
10
|
+
}
|
|
@@ -38,7 +38,7 @@ type ClassDiProvider<T> = BaseDiProvider<T> & {
|
|
|
38
38
|
/**
|
|
39
39
|
* A class to register for the token.
|
|
40
40
|
*/
|
|
41
|
-
useClass: Newable<
|
|
41
|
+
useClass: Newable<T>,
|
|
42
42
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
43
43
|
useFactory?: never,
|
|
44
44
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
@@ -50,7 +50,7 @@ type FactoryDiProvider<T> = BaseDiProvider<T> & {
|
|
|
50
50
|
/**
|
|
51
51
|
* A factory function that resolves the value to register for the token.
|
|
52
52
|
*/
|
|
53
|
-
useFactory: (...deps: unknown[]) =>
|
|
53
|
+
useFactory: (...deps: unknown[]) => T,
|
|
54
54
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
55
55
|
useClass?: never,
|
|
56
56
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
@@ -62,7 +62,7 @@ type ValueDiProvider<T> = BaseDiProvider<T> & {
|
|
|
62
62
|
/**
|
|
63
63
|
* A value to register for the token.
|
|
64
64
|
*/
|
|
65
|
-
useValue:
|
|
65
|
+
useValue: T,
|
|
66
66
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
67
67
|
useFactory?: never,
|
|
68
68
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
@@ -5,10 +5,10 @@ import { DiProvider } from './models/di-provider.model';
|
|
|
5
5
|
/**
|
|
6
6
|
* Registers a new DI provider.
|
|
7
7
|
* @param provider - The provider to register.
|
|
8
|
-
* @throws When the app is initialized or
|
|
8
|
+
* @throws When the app is initialized or started.
|
|
9
9
|
*/
|
|
10
10
|
export function register<T>(provider: DiProvider<T>): void {
|
|
11
|
-
if (GlobalRegistry.isAppInitialized() || GlobalRegistry.
|
|
11
|
+
if (GlobalRegistry.isAppInitialized() || GlobalRegistry.isAppStarted()) {
|
|
12
12
|
throw new Error('You can only register providers before the app has been initialized');
|
|
13
13
|
}
|
|
14
14
|
const di: DiContainer = DiContainer.getInstance();
|
|
@@ -5,10 +5,10 @@ import { DiToken } from './models/di-token.model';
|
|
|
5
5
|
/**
|
|
6
6
|
* Removes the provided token from the dependency injection system.
|
|
7
7
|
* @param token - The token to unregister.
|
|
8
|
-
* @throws When the app is initialized or
|
|
8
|
+
* @throws When the app is initialized or started.
|
|
9
9
|
*/
|
|
10
10
|
export function unregister<T>(token: DiToken<T>): void {
|
|
11
|
-
if (GlobalRegistry.isAppInitialized() || GlobalRegistry.
|
|
11
|
+
if (GlobalRegistry.isAppInitialized() || GlobalRegistry.isAppStarted()) {
|
|
12
12
|
throw new Error('You can only unregister providers before the app has been initialized');
|
|
13
13
|
}
|
|
14
14
|
const di: DiContainer = DiContainer.getInstance();
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import { ZibriApplication } from '../application';
|
|
2
1
|
import { QueueEmailData } from './models/create-email-data.model';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Interface for a email service.
|
|
6
5
|
*/
|
|
7
6
|
export interface EmailServiceInterface {
|
|
8
|
-
/**
|
|
9
|
-
* Attaches the service to the Zibri application.
|
|
10
|
-
*/
|
|
11
|
-
attachTo: (app: ZibriApplication) => void,
|
|
12
7
|
/**
|
|
13
8
|
* Queues a new email.
|
|
14
9
|
*/
|
|
@@ -7,29 +7,30 @@ import { CreateEmailData, QueueEmailData } from './models/create-email-data.mode
|
|
|
7
7
|
import { SendQueuedEmailsCronJob } from './send-queued-emails.cron-job';
|
|
8
8
|
import { Repository } from '../data-source/repository';
|
|
9
9
|
import { Email } from './models/email.model';
|
|
10
|
-
import {
|
|
10
|
+
import { InjectRepository } from '../di/decorators/inject-repository.decorator';
|
|
11
|
+
import { Inject } from '../di/decorators/inject.decorator';
|
|
12
|
+
import { Injectable } from '../di/decorators/injectable.decorator';
|
|
11
13
|
import { ZIBRI_DI_TOKENS } from '../di/default/zibri-di-tokens.default';
|
|
12
14
|
import { inject } from '../di/inject.function';
|
|
13
|
-
import { LoggerInterface } from '../logging/logger.interface';
|
|
15
|
+
import { type LoggerInterface } from '../logging/logger.interface';
|
|
14
16
|
import { RateLimiter } from '../rate-limiting/rate-limiter';
|
|
15
17
|
import { FsUtilities } from '../utilities/fs.utilities';
|
|
16
18
|
import { EmailAttachment } from './models/email-attachment.model';
|
|
17
19
|
import { EmailConfig, EmailConfigInput } from './models/email-config.model';
|
|
18
20
|
import { EmailPriority } from './models/email-priority.enum';
|
|
19
21
|
import { EmailStatus } from './models/email-status.enum';
|
|
22
|
+
import { OnAppInit } from '../global/on-app-init.interface';
|
|
23
|
+
import { OnAppShutdown } from '../global/on-app-shutdown.interface';
|
|
20
24
|
|
|
21
25
|
/**
|
|
22
26
|
* Default email service implementation of Zibri.
|
|
23
27
|
*/
|
|
24
|
-
|
|
28
|
+
@Injectable({ register: 'onUse' })
|
|
29
|
+
export class EmailService implements EmailServiceInterface, OnAppInit, OnAppShutdown {
|
|
25
30
|
/**
|
|
26
31
|
* The internal nodemailer transporter.
|
|
27
32
|
*/
|
|
28
33
|
protected readonly transporter: Transporter<SMTPTransport.SentMessageInfo, SMTPTransport.Options>;
|
|
29
|
-
/**
|
|
30
|
-
* The repository that handles storing and receiving emails from the db.
|
|
31
|
-
*/
|
|
32
|
-
protected readonly emailRepository: Repository<Email, CreateEmailData>;
|
|
33
34
|
/**
|
|
34
35
|
* The email configuration.
|
|
35
36
|
*/
|
|
@@ -38,13 +39,13 @@ export class EmailService implements EmailServiceInterface {
|
|
|
38
39
|
* A rate limiter to prevent overloading the email provider.
|
|
39
40
|
*/
|
|
40
41
|
protected readonly rateLimiter: RateLimiter;
|
|
41
|
-
/**
|
|
42
|
-
* A logger.
|
|
43
|
-
*/
|
|
44
|
-
protected readonly logger: LoggerInterface;
|
|
45
42
|
|
|
46
|
-
constructor(
|
|
47
|
-
|
|
43
|
+
constructor(
|
|
44
|
+
@Inject(ZIBRI_DI_TOKENS.LOGGER)
|
|
45
|
+
private readonly logger: LoggerInterface,
|
|
46
|
+
@InjectRepository(Email)
|
|
47
|
+
private readonly emailRepository: Repository<Email, CreateEmailData>
|
|
48
|
+
) {
|
|
48
49
|
const config: EmailConfigInput | undefined = inject(ZIBRI_DI_TOKENS.EMAIL_CONFIG);
|
|
49
50
|
if (!config) {
|
|
50
51
|
throw new Error('no email config was provided for the token "ZIBRI_DI_TOKENS.MAIL_CONFIG"');
|
|
@@ -55,14 +56,18 @@ export class EmailService implements EmailServiceInterface {
|
|
|
55
56
|
};
|
|
56
57
|
this.rateLimiter = RateLimiter.perHour(this.config.maxEmailsPerHour);
|
|
57
58
|
this.transporter = createTransport({ ...this.config, secure: config?.port === 465 });
|
|
58
|
-
this.logger = inject(ZIBRI_DI_TOKENS.LOGGER);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
62
|
-
|
|
62
|
+
onAppInit(app: ZibriApplication): void {
|
|
63
63
|
app.options.cronJobs.push(SendQueuedEmailsCronJob);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
67
|
+
onAppShutdown(): void {
|
|
68
|
+
this.transporter.close();
|
|
69
|
+
}
|
|
70
|
+
|
|
66
71
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
67
72
|
async queue(data: QueueEmailData): Promise<void> {
|
|
68
73
|
await this.emailRepository.create({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Property } from '../../entity/decorators/property.decorator';
|
|
2
|
-
import { type
|
|
2
|
+
import { type FsPath } from '../../utilities/fs.utilities';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* An email attachment, consisting of filename and path.
|
|
@@ -15,5 +15,5 @@ export class EmailAttachment {
|
|
|
15
15
|
* The path of the attachment.
|
|
16
16
|
*/
|
|
17
17
|
@Property.string()
|
|
18
|
-
path!:
|
|
18
|
+
path!: FsPath;
|
|
19
19
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { EmailServiceInterface } from './email-service.interface';
|
|
1
|
+
import { type EmailServiceInterface } from './email-service.interface';
|
|
2
2
|
import { CronJob, InitialCronConfig } from '../cron/cron-job.model';
|
|
3
|
-
import {
|
|
3
|
+
import { Inject } from '../di/decorators/inject.decorator';
|
|
4
4
|
import { ZIBRI_DI_TOKENS } from '../di/default/zibri-di-tokens.default';
|
|
5
|
-
import { inject } from '../di/inject.function';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Cron Job for sending out queued emails.
|
|
9
8
|
*/
|
|
10
|
-
@Injectable()
|
|
11
9
|
export class SendQueuedEmailsCronJob extends CronJob {
|
|
12
10
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
13
11
|
initialConfig: InitialCronConfig = {
|
|
@@ -16,12 +14,18 @@ export class SendQueuedEmailsCronJob extends CronJob {
|
|
|
16
14
|
runOnInit: false
|
|
17
15
|
};
|
|
18
16
|
|
|
17
|
+
constructor(
|
|
18
|
+
@Inject(ZIBRI_DI_TOKENS.EMAIL_SERVICE)
|
|
19
|
+
private readonly emailService: EmailServiceInterface
|
|
20
|
+
) {
|
|
21
|
+
super();
|
|
22
|
+
}
|
|
23
|
+
|
|
19
24
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
20
25
|
async onTick(): Promise<void> {
|
|
21
|
-
const emailService: EmailServiceInterface = inject(ZIBRI_DI_TOKENS.EMAIL_SERVICE);
|
|
22
26
|
let goOn: boolean = true;
|
|
23
27
|
while (goOn) {
|
|
24
|
-
goOn = await emailService.sendQueuedEmails();
|
|
28
|
+
goOn = await this.emailService.sendQueuedEmails();
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
}
|
|
@@ -11,17 +11,23 @@ export type EntityMetadata = {
|
|
|
11
11
|
/**
|
|
12
12
|
* The name of the table in the db.
|
|
13
13
|
*/
|
|
14
|
-
tableName: string
|
|
14
|
+
tableName: string,
|
|
15
|
+
/**
|
|
16
|
+
* Whether or not this entity is allowed to exist without belonging to a data source.
|
|
17
|
+
*/
|
|
18
|
+
allowOrphan: boolean
|
|
15
19
|
};
|
|
16
20
|
|
|
17
21
|
/**
|
|
18
22
|
* Marks an entity.
|
|
19
|
-
* @param
|
|
23
|
+
* @param options - Configuration options for the entity.
|
|
20
24
|
*/
|
|
21
|
-
export function Entity(
|
|
25
|
+
export function Entity(options: Partial<EntityMetadata> = {}): ClassDecorator {
|
|
26
|
+
const { tableName, allowOrphan = false } = options;
|
|
22
27
|
return target => {
|
|
23
28
|
const metadata: EntityMetadata = {
|
|
24
|
-
tableName: tableName ?? toSnakeCase(target.name)
|
|
29
|
+
tableName: tableName ?? toSnakeCase(target.name),
|
|
30
|
+
allowOrphan
|
|
25
31
|
};
|
|
26
32
|
MetadataUtilities.setEntityMetadata(target as unknown as Newable<BaseEntity>, metadata);
|
|
27
33
|
GlobalRegistry.entityClasses.push(target as unknown as Newable<BaseEntity>);
|
|
@@ -4,7 +4,7 @@ import { getEntityFileName } from './get-entity-file-name.function';
|
|
|
4
4
|
import { EntityGenerationProvider } from './providers/entity-generation-provider.interface';
|
|
5
5
|
import { warn } from '../../logging/logger.helpers';
|
|
6
6
|
import { OpenApiDefinition, OpenApiSchemas, OpenApiOperation, OpenApiResponseObject, OpenApiReferenceObject, OpenApiSchemaObject } from '../../open-api/open-api.model';
|
|
7
|
-
import { FsUtilities,
|
|
7
|
+
import { FsUtilities, FsPath } from '../../utilities/fs.utilities';
|
|
8
8
|
import { ObjectUtilities } from '../../utilities/object.utilities';
|
|
9
9
|
import { toKebabCase } from '../../utilities/to-kebab-case.function';
|
|
10
10
|
import { toPascalCase } from '../../utilities/to-pascal-case.function';
|
|
@@ -16,7 +16,7 @@ export type FileToGenerate = {
|
|
|
16
16
|
/**
|
|
17
17
|
* The path where the file should be generated.
|
|
18
18
|
*/
|
|
19
|
-
path:
|
|
19
|
+
path: FsPath,
|
|
20
20
|
/**
|
|
21
21
|
* The actual content of the file in lines.
|
|
22
22
|
*/
|
|
@@ -123,7 +123,7 @@ export async function generateEntityFilesForProvider(
|
|
|
123
123
|
const fileName: string = getEntityFileName(provider.prefix, key);
|
|
124
124
|
|
|
125
125
|
// eslint-disable-next-line sonar/no-duplicate-string
|
|
126
|
-
const filePath:
|
|
126
|
+
const filePath: FsPath = FsUtilities.getPath(cwd, 'src/models/generated', toKebabCase(provider.prefix), fileName);
|
|
127
127
|
if (await FsUtilities.exists(filePath)) {
|
|
128
128
|
processedSchemas.add(key);
|
|
129
129
|
continue;
|
|
@@ -2,14 +2,14 @@ import { register } from 'ts-node';
|
|
|
2
2
|
|
|
3
3
|
import { FileToGenerate, generateEntityFilesForProvider, GenerateEntityFilesForProviderResult } from './generate-entity-files-for-provider.function';
|
|
4
4
|
import { EntityGenerationProvider } from './providers/entity-generation-provider.interface';
|
|
5
|
-
import { FsUtilities,
|
|
5
|
+
import { FsUtilities, FsPath } from '../../utilities/fs.utilities';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Resolves providers from the src/models/generated/providers.ts file and generates entities from them.
|
|
9
9
|
*/
|
|
10
10
|
export async function generateEntityFiles(): Promise<void> {
|
|
11
11
|
const cwd: string = process.cwd();
|
|
12
|
-
const providersPath:
|
|
12
|
+
const providersPath: FsPath = await resolveProvidersPath(cwd);
|
|
13
13
|
const ext: string = FsUtilities.extensionName(providersPath).toLowerCase();
|
|
14
14
|
if (ext !== '.ts') {
|
|
15
15
|
return;
|
|
@@ -44,14 +44,14 @@ export async function generateEntityFiles(): Promise<void> {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
47
|
-
async function resolveProvidersPath(cwd: string): Promise<
|
|
48
|
-
const candidates:
|
|
47
|
+
async function resolveProvidersPath(cwd: string): Promise<FsPath> {
|
|
48
|
+
const candidates: FsPath[] = [
|
|
49
49
|
FsUtilities.getPath(cwd, 'src/models/generated/providers.js'),
|
|
50
50
|
FsUtilities.getPath(cwd, 'src/models/generated/providers.cjs'),
|
|
51
51
|
FsUtilities.getPath(cwd, 'src/models/generated/providers.mjs'),
|
|
52
52
|
FsUtilities.getPath(cwd, 'src/models/generated/providers.ts')
|
|
53
53
|
];
|
|
54
|
-
const providersPath:
|
|
54
|
+
const providersPath: FsPath = await Promise.any(candidates.map(async p => {
|
|
55
55
|
if (await FsUtilities.exists(p)) {
|
|
56
56
|
return p;
|
|
57
57
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EntityGenerationProvider } from './entity-generation-provider.interface';
|
|
2
2
|
import { openApiToV3 } from './open-api-to-v3.function';
|
|
3
3
|
import { OpenApiDefinition } from '../../../open-api/open-api.model';
|
|
4
|
-
import { FsUtilities,
|
|
4
|
+
import { FsUtilities, FsPath } from '../../../utilities/fs.utilities';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* An entity generation provider using a local open api file.
|
|
@@ -9,7 +9,7 @@ import { FsUtilities, Path } from '../../../utilities/fs.utilities';
|
|
|
9
9
|
export class OpenApiFileProvider implements EntityGenerationProvider {
|
|
10
10
|
constructor(
|
|
11
11
|
readonly prefix: string,
|
|
12
|
-
protected readonly filePath:
|
|
12
|
+
protected readonly filePath: FsPath,
|
|
13
13
|
readonly generateSchemasFromPaths: boolean = false,
|
|
14
14
|
readonly markAsEntities: boolean = false
|
|
15
15
|
) {}
|
|
@@ -61,7 +61,7 @@ export const errorHandler: GlobalErrorHandler = async (error: unknown, req: Http
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
try {
|
|
64
|
-
const html: string = await PreactUtilities.
|
|
64
|
+
const html: string = await PreactUtilities.renderPage(template, { error: httpError });
|
|
65
65
|
res.setHeader(KnownHeader.CONTENT_TYPE, MimeType.HTML);
|
|
66
66
|
res.status(httpError.status).send(html);
|
|
67
67
|
}
|
|
@@ -27,11 +27,7 @@ export abstract class HttpError extends Error {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
* Check whether or not the given value is a http error.
|
|
32
|
-
* @param value - The value to check.
|
|
33
|
-
* @returns True when value is an instance of HttpError, false otherwise.
|
|
34
|
-
*/
|
|
30
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
35
31
|
export function isHttpError(value: unknown): value is HttpError {
|
|
36
32
|
return value instanceof HttpError;
|
|
37
33
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DiToken } from '../../di/models/di-token.model';
|
|
2
|
+
import { InjectionToken } from '../../di/models/injection-token.model';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* An error to throw when there are tokens that are not injectable.
|
|
6
|
+
*/
|
|
7
|
+
export class MissingTokensError extends Error {
|
|
8
|
+
constructor(context: string, tokens: DiToken<unknown>[]) {
|
|
9
|
+
const messages: string[] = [
|
|
10
|
+
`Error initializing ${context}`,
|
|
11
|
+
'Could not inject the following tokens:'
|
|
12
|
+
];
|
|
13
|
+
for (const token of tokens) {
|
|
14
|
+
messages.push(` - ${token instanceof InjectionToken ? token.key : token.name}`);
|
|
15
|
+
}
|
|
16
|
+
super(messages.join('\n'));
|
|
17
|
+
this.name = 'MissingTokensError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ZibriApplication } from '../application';
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line jsdoc/require-returns
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the given value implements the AfterAppInit interface.
|
|
6
|
+
* @param value - The value to check.
|
|
7
|
+
*/
|
|
8
|
+
export function implementsAfterAppInit(value: unknown): value is AfterAppInit {
|
|
9
|
+
if (typeof value !== 'object') {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (value == undefined) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (!('afterAppInit' in value)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (typeof value.afterAppInit !== 'function') {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Runs just after the app initializes.
|
|
27
|
+
* This is useful for things like the cron or websocket service,
|
|
28
|
+
* which creates new work that might rely on other services already being operational.
|
|
29
|
+
*
|
|
30
|
+
* In most cases you probably want to implement OnAppInit.
|
|
31
|
+
* Most relevant things like eg. The data source service are already operational there, as they implement the BeforeAppInit interface.
|
|
32
|
+
*/
|
|
33
|
+
export interface AfterAppInit {
|
|
34
|
+
/**
|
|
35
|
+
* Runs just after the app initializes.
|
|
36
|
+
* This is useful for things like the cron or websocket service,
|
|
37
|
+
* which creates new work that might rely on other services already being operational.
|
|
38
|
+
*
|
|
39
|
+
* In most cases you probably want to implement OnAppInit.
|
|
40
|
+
* Most relevant things like eg. The data source service are already operational there, as they implement the BeforeAppInit interface.
|
|
41
|
+
*/
|
|
42
|
+
afterAppInit: (app: ZibriApplication) => void | Promise<void>
|
|
43
|
+
}
|