@venizia/ignis 0.2.0-8 → 0.2.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/LICENSE.md +0 -1
- package/README.md +118 -158
- package/dist/base/applications/base.d.ts +19 -13
- package/dist/base/applications/base.d.ts.map +1 -1
- package/dist/base/applications/base.js +95 -74
- package/dist/base/applications/base.js.map +1 -1
- package/dist/base/applications/boot-steps.d.ts +13 -0
- package/dist/base/applications/boot-steps.d.ts.map +1 -0
- package/dist/base/applications/boot-steps.js +23 -0
- package/dist/base/applications/boot-steps.js.map +1 -0
- package/dist/base/applications/common/index.d.ts +2 -0
- package/dist/base/applications/common/index.d.ts.map +1 -0
- package/dist/base/applications/common/index.js +18 -0
- package/dist/base/applications/common/index.js.map +1 -0
- package/dist/base/applications/{types.d.ts → common/types.d.ts} +11 -0
- package/dist/base/applications/common/types.d.ts.map +1 -0
- package/dist/base/applications/common/types.js.map +1 -0
- package/dist/base/applications/index.d.ts +2 -1
- package/dist/base/applications/index.d.ts.map +1 -1
- package/dist/base/applications/index.js +2 -1
- package/dist/base/applications/index.js.map +1 -1
- package/dist/base/applications/server.d.ts +6 -2
- package/dist/base/applications/server.d.ts.map +1 -1
- package/dist/base/applications/server.js +34 -2
- package/dist/base/applications/server.js.map +1 -1
- package/dist/base/controllers/grpc/adapter.js +2 -2
- package/dist/base/controllers/grpc/adapter.js.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.d.ts +3 -2
- package/dist/base/middlewares/app-error/app-error.middleware.d.ts.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.js +4 -3
- package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.js +13 -4
- package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/environments.d.ts +31 -10
- package/dist/common/environments.d.ts.map +1 -1
- package/dist/common/environments.js +33 -10
- package/dist/common/environments.js.map +1 -1
- package/dist/components/api-reference/component.d.ts.map +1 -1
- package/dist/components/api-reference/component.js +4 -3
- package/dist/components/api-reference/component.js.map +1 -1
- package/dist/components/api-reference/index.d.ts +1 -1
- package/dist/components/api-reference/index.d.ts.map +1 -1
- package/dist/components/api-reference/index.js +1 -1
- package/dist/components/api-reference/index.js.map +1 -1
- package/dist/components/api-reference/ui/factory.d.ts +14 -0
- package/dist/components/api-reference/ui/factory.d.ts.map +1 -0
- package/dist/components/api-reference/ui/factory.js +54 -0
- package/dist/components/api-reference/ui/factory.js.map +1 -0
- package/dist/components/api-reference/ui/index.d.ts +4 -0
- package/dist/components/api-reference/ui/index.d.ts.map +1 -0
- package/dist/components/api-reference/ui/index.js +20 -0
- package/dist/components/api-reference/ui/index.js.map +1 -0
- package/dist/components/api-reference/ui/scalar.d.ts +8 -0
- package/dist/components/api-reference/ui/scalar.d.ts.map +1 -0
- package/dist/components/api-reference/ui/scalar.js +28 -0
- package/dist/components/api-reference/ui/scalar.js.map +1 -0
- package/dist/components/api-reference/ui/swagger.d.ts +8 -0
- package/dist/components/api-reference/ui/swagger.d.ts.map +1 -0
- package/dist/components/api-reference/ui/swagger.js +28 -0
- package/dist/components/api-reference/ui/swagger.js.map +1 -0
- package/dist/components/auth/authenticate/component.d.ts +5 -0
- package/dist/components/auth/authenticate/component.d.ts.map +1 -1
- package/dist/components/auth/authenticate/component.js +23 -0
- package/dist/components/auth/authenticate/component.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/factory.d.ts +35 -3
- package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
- package/dist/components/auth/authenticate/controllers/jwks/definitions.d.ts +40 -20
- package/dist/components/auth/authenticate/controllers/jwks/definitions.d.ts.map +1 -1
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts +40 -20
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts +2 -2
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +12 -8
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js +5 -3
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts +1 -2
- package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.js +5 -3
- package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/jose-loader.d.ts +16 -0
- package/dist/components/auth/authenticate/services/jose-loader.d.ts.map +1 -0
- package/dist/components/auth/authenticate/services/jose-loader.js +25 -0
- package/dist/components/auth/authenticate/services/jose-loader.js.map +1 -0
- package/dist/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/service/signer.service.js +8 -5
- package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/service/verifier.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/service/verifier.service.js +10 -9
- package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/index.d.ts +1 -1
- package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/strategies/index.js +1 -1
- package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/jwks/index.d.ts +3 -0
- package/dist/components/auth/authenticate/strategies/jwks/index.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/jwks/index.js +19 -0
- package/dist/components/auth/authenticate/strategies/jwks/index.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts +13 -0
- package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/{jwks.strategy.js → jwks/issuer.js} +4 -27
- package/dist/components/auth/authenticate/strategies/jwks/issuer.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/{jwks.strategy.d.ts → jwks/verifier.d.ts} +2 -10
- package/dist/components/auth/authenticate/strategies/jwks/verifier.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/jwks/verifier.js +45 -0
- package/dist/components/auth/authenticate/strategies/jwks/verifier.js.map +1 -0
- package/dist/components/auth/authorize/adapters/base-filtered.d.ts +1 -1
- package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/common/index.d.ts +2 -0
- package/dist/components/auth/authorize/adapters/common/index.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/common/index.js +18 -0
- package/dist/components/auth/authorize/adapters/common/index.js.map +1 -0
- package/dist/components/auth/authorize/adapters/{types.d.ts → common/types.d.ts} +1 -1
- package/dist/components/auth/authorize/adapters/common/types.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/common/types.js.map +1 -0
- package/dist/components/auth/authorize/adapters/connector.d.ts +1 -1
- package/dist/components/auth/authorize/adapters/connector.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts +1 -1
- package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/index.d.ts +2 -2
- package/dist/components/auth/authorize/adapters/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/index.js +2 -2
- package/dist/components/auth/authorize/adapters/index.js.map +1 -1
- package/dist/components/auth/authorize/adapters/{scoped-casbin.adapter.d.ts → scoped-casbin/adapter.d.ts} +11 -55
- package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/{scoped-casbin.adapter.js → scoped-casbin/adapter.js} +27 -22
- package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.js.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts +2 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js +5 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts +3 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js +19 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts +50 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js +3 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts +4 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/index.js +19 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/index.js.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts +17 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js +11 -0
- package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js.map +1 -0
- package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/policy-line-codec.js +4 -2
- package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/base.d.ts.map +1 -1
- package/dist/components/auth/authorize/role-managers/base.js +2 -1
- package/dist/components/auth/authorize/role-managers/base.js.map +1 -1
- package/dist/components/auth/models/entities/policy-definition.model.d.ts +30 -9
- package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
- package/dist/components/auth/models/entities/policy-definition.model.js +36 -10
- package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
- package/dist/components/auth/models/entities/user.model.d.ts +2 -2
- package/dist/components/controller/grpc/grpc.component.d.ts.map +1 -1
- package/dist/components/controller/grpc/grpc.component.js +1 -5
- package/dist/components/controller/grpc/grpc.component.js.map +1 -1
- package/dist/components/health-check/common/constants.d.ts +5 -0
- package/dist/components/health-check/common/constants.d.ts.map +1 -0
- package/dist/components/health-check/common/constants.js +9 -0
- package/dist/components/health-check/common/constants.js.map +1 -0
- package/dist/components/health-check/common/index.d.ts +1 -0
- package/dist/components/health-check/common/index.d.ts.map +1 -1
- package/dist/components/health-check/common/index.js +1 -0
- package/dist/components/health-check/common/index.js.map +1 -1
- package/dist/components/health-check/common/keys.d.ts +2 -0
- package/dist/components/health-check/common/keys.d.ts.map +1 -1
- package/dist/components/health-check/common/keys.js +2 -0
- package/dist/components/health-check/common/keys.js.map +1 -1
- package/dist/components/health-check/common/rest-paths.d.ts +1 -0
- package/dist/components/health-check/common/rest-paths.d.ts.map +1 -1
- package/dist/components/health-check/common/rest-paths.js +1 -0
- package/dist/components/health-check/common/rest-paths.js.map +1 -1
- package/dist/components/health-check/common/types.d.ts +22 -0
- package/dist/components/health-check/common/types.d.ts.map +1 -1
- package/dist/components/health-check/component.d.ts +9 -3
- package/dist/components/health-check/component.d.ts.map +1 -1
- package/dist/components/health-check/component.js +38 -1
- package/dist/components/health-check/component.js.map +1 -1
- package/dist/components/health-check/controller.d.ts +10 -2
- package/dist/components/health-check/controller.d.ts.map +1 -1
- package/dist/components/health-check/controller.js +79 -13
- package/dist/components/health-check/controller.js.map +1 -1
- package/dist/components/health-check/index.d.ts +1 -0
- package/dist/components/health-check/index.d.ts.map +1 -1
- package/dist/components/health-check/index.js +1 -0
- package/dist/components/health-check/index.js.map +1 -1
- package/dist/components/health-check/reporter.d.ts +98 -0
- package/dist/components/health-check/reporter.d.ts.map +1 -0
- package/dist/components/health-check/reporter.js +138 -0
- package/dist/components/health-check/reporter.js.map +1 -0
- package/dist/components/mail/common/constants.d.ts +8 -0
- package/dist/components/mail/common/constants.d.ts.map +1 -1
- package/dist/components/mail/common/constants.js +9 -1
- package/dist/components/mail/common/constants.js.map +1 -1
- package/dist/components/mail/common/types/index.d.ts +6 -0
- package/dist/components/mail/common/types/index.d.ts.map +1 -0
- package/dist/components/mail/common/types/index.js +22 -0
- package/dist/components/mail/common/types/index.js.map +1 -0
- package/dist/components/mail/common/types/message.d.ts +49 -0
- package/dist/components/mail/common/types/message.d.ts.map +1 -0
- package/dist/components/mail/common/types/message.js +3 -0
- package/dist/components/mail/common/types/message.js.map +1 -0
- package/dist/components/mail/common/types/options.d.ts +65 -0
- package/dist/components/mail/common/types/options.d.ts.map +1 -0
- package/dist/components/mail/common/types/options.js +3 -0
- package/dist/components/mail/common/types/options.js.map +1 -0
- package/dist/components/mail/common/types/queue.d.ts +56 -0
- package/dist/components/mail/common/types/queue.d.ts.map +1 -0
- package/dist/components/mail/common/types/queue.js +3 -0
- package/dist/components/mail/common/types/queue.js.map +1 -0
- package/dist/components/mail/common/types/template.d.ts +33 -0
- package/dist/components/mail/common/types/template.d.ts.map +1 -0
- package/dist/components/mail/common/types/template.js +3 -0
- package/dist/components/mail/common/types/template.js.map +1 -0
- package/dist/components/mail/common/types/verification.d.ts +26 -0
- package/dist/components/mail/common/types/verification.d.ts.map +1 -0
- package/dist/components/mail/common/types/verification.js +3 -0
- package/dist/components/mail/common/types/verification.js.map +1 -0
- package/dist/components/mail/component.d.ts +4 -1
- package/dist/components/mail/component.d.ts.map +1 -1
- package/dist/components/mail/component.js +12 -0
- package/dist/components/mail/component.js.map +1 -1
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts +1 -0
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js +3 -0
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js +2 -1
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts +19 -0
- package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts.map +1 -0
- package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js +112 -0
- package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js.map +1 -0
- package/dist/components/mail/helpers/transporters/index.d.ts +2 -1
- package/dist/components/mail/helpers/transporters/index.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/index.js +2 -1
- package/dist/components/mail/helpers/transporters/index.js.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js +4 -3
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
- package/dist/components/mail/providers/mail-transporter.provider.d.ts +2 -0
- package/dist/components/mail/providers/mail-transporter.provider.d.ts.map +1 -1
- package/dist/components/mail/providers/mail-transporter.provider.js +35 -17
- package/dist/components/mail/providers/mail-transporter.provider.js.map +1 -1
- package/dist/components/mail/services/generators/index.d.ts +4 -0
- package/dist/components/mail/services/generators/index.d.ts.map +1 -0
- package/dist/components/mail/services/generators/index.js +20 -0
- package/dist/components/mail/services/generators/index.js.map +1 -0
- package/dist/components/mail/services/generators/numeric-code.d.ts +7 -0
- package/dist/components/mail/services/generators/numeric-code.d.ts.map +1 -0
- package/dist/components/mail/services/generators/numeric-code.js +20 -0
- package/dist/components/mail/services/generators/numeric-code.js.map +1 -0
- package/dist/components/mail/services/generators/random-token.d.ts +7 -0
- package/dist/components/mail/services/generators/random-token.d.ts.map +1 -0
- package/dist/components/mail/services/generators/random-token.js +18 -0
- package/dist/components/mail/services/generators/random-token.js.map +1 -0
- package/dist/components/mail/services/{generator.service.d.ts → generators/verification-data.d.ts} +2 -10
- package/dist/components/mail/services/generators/verification-data.d.ts.map +1 -0
- package/dist/components/mail/services/{generator.service.js → generators/verification-data.js} +5 -29
- package/dist/components/mail/services/generators/verification-data.js.map +1 -0
- package/dist/components/mail/services/index.d.ts +1 -1
- package/dist/components/mail/services/index.d.ts.map +1 -1
- package/dist/components/mail/services/index.js +1 -1
- package/dist/components/mail/services/index.js.map +1 -1
- package/dist/components/mail/services/mail.service.d.ts.map +1 -1
- package/dist/components/mail/services/mail.service.js +18 -17
- package/dist/components/mail/services/mail.service.js.map +1 -1
- package/dist/components/mail/utilities/address.utility.d.ts +9 -0
- package/dist/components/mail/utilities/address.utility.d.ts.map +1 -0
- package/dist/components/mail/utilities/address.utility.js +36 -0
- package/dist/components/mail/utilities/address.utility.js.map +1 -0
- package/dist/components/mail/utilities/index.d.ts +2 -0
- package/dist/components/mail/utilities/index.d.ts.map +1 -1
- package/dist/components/mail/utilities/index.js +2 -0
- package/dist/components/mail/utilities/index.js.map +1 -1
- package/dist/components/mail/utilities/mime.utility.d.ts +19 -0
- package/dist/components/mail/utilities/mime.utility.d.ts.map +1 -0
- package/dist/components/mail/utilities/mime.utility.js +414 -0
- package/dist/components/mail/utilities/mime.utility.js.map +1 -0
- package/dist/components/static-asset/common/commit-token.d.ts +23 -0
- package/dist/components/static-asset/common/commit-token.d.ts.map +1 -0
- package/dist/components/static-asset/common/commit-token.js +40 -0
- package/dist/components/static-asset/common/commit-token.js.map +1 -0
- package/dist/components/static-asset/common/constants.d.ts +13 -1
- package/dist/components/static-asset/common/constants.d.ts.map +1 -1
- package/dist/components/static-asset/common/constants.js +29 -2
- package/dist/components/static-asset/common/constants.js.map +1 -1
- package/dist/components/static-asset/common/errors.d.ts +43 -0
- package/dist/components/static-asset/common/errors.d.ts.map +1 -1
- package/dist/components/static-asset/common/errors.js +37 -0
- package/dist/components/static-asset/common/errors.js.map +1 -1
- package/dist/components/static-asset/common/index.d.ts +1 -0
- package/dist/components/static-asset/common/index.d.ts.map +1 -1
- package/dist/components/static-asset/common/index.js +1 -0
- package/dist/components/static-asset/common/index.js.map +1 -1
- package/dist/components/static-asset/common/keys.d.ts +1 -0
- package/dist/components/static-asset/common/keys.d.ts.map +1 -1
- package/dist/components/static-asset/common/keys.js +1 -0
- package/dist/components/static-asset/common/keys.js.map +1 -1
- package/dist/components/static-asset/common/types.d.ts +87 -30
- package/dist/components/static-asset/common/types.d.ts.map +1 -1
- package/dist/components/static-asset/component.d.ts +4 -1
- package/dist/components/static-asset/component.d.ts.map +1 -1
- package/dist/components/static-asset/component.js +21 -10
- package/dist/components/static-asset/component.js.map +1 -1
- package/dist/components/static-asset/controller/base.definition.d.ts +27 -554
- package/dist/components/static-asset/controller/base.definition.d.ts.map +1 -1
- package/dist/components/static-asset/controller/base.definition.js +250 -286
- package/dist/components/static-asset/controller/base.definition.js.map +1 -1
- package/dist/components/static-asset/controller/factory.d.ts +76 -7
- package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
- package/dist/components/static-asset/controller/factory.js +565 -138
- package/dist/components/static-asset/controller/factory.js.map +1 -1
- package/dist/components/static-asset/index.d.ts +1 -0
- package/dist/components/static-asset/index.d.ts.map +1 -1
- package/dist/components/static-asset/index.js +1 -0
- package/dist/components/static-asset/index.js.map +1 -1
- package/dist/components/static-asset/ingest.d.ts +58 -0
- package/dist/components/static-asset/ingest.d.ts.map +1 -0
- package/dist/components/static-asset/ingest.js +82 -0
- package/dist/components/static-asset/ingest.js.map +1 -0
- package/dist/components/static-asset/models/base.model.d.ts +44 -6
- package/dist/components/static-asset/models/base.model.d.ts.map +1 -1
- package/dist/components/static-asset/models/base.model.js +7 -1
- package/dist/components/static-asset/models/base.model.js.map +1 -1
- package/dist/components/websocket/handlers/bun.handler.d.ts.map +1 -1
- package/dist/components/websocket/handlers/bun.handler.js +2 -1
- package/dist/components/websocket/handlers/bun.handler.js.map +1 -1
- package/dist/connectors/postgres/drivers/postgres-js.d.mts +3 -0
- package/dist/connectors/postgres/drivers/postgres-js.d.mts.map +1 -0
- package/dist/connectors/postgres/drivers/postgres-js.mjs +3 -0
- package/dist/connectors/postgres/drivers/postgres-js.mjs.map +1 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +29 -26
- package/dist/base/applications/types.d.ts.map +0 -1
- package/dist/base/applications/types.js.map +0 -1
- package/dist/components/api-reference/ui-factory.d.ts +0 -24
- package/dist/components/api-reference/ui-factory.d.ts.map +0 -1
- package/dist/components/api-reference/ui-factory.js +0 -97
- package/dist/components/api-reference/ui-factory.js.map +0 -1
- package/dist/components/auth/authenticate/strategies/jwks.strategy.d.ts.map +0 -1
- package/dist/components/auth/authenticate/strategies/jwks.strategy.js.map +0 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +0 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +0 -1
- package/dist/components/auth/authorize/adapters/types.d.ts.map +0 -1
- package/dist/components/auth/authorize/adapters/types.js.map +0 -1
- package/dist/components/mail/common/types.d.ts +0 -201
- package/dist/components/mail/common/types.d.ts.map +0 -1
- package/dist/components/mail/common/types.js +0 -10
- package/dist/components/mail/common/types.js.map +0 -1
- package/dist/components/mail/services/generator.service.d.ts.map +0 -1
- package/dist/components/mail/services/generator.service.js.map +0 -1
- /package/dist/base/applications/{types.js → common/types.js} +0 -0
- /package/dist/components/auth/authorize/adapters/{types.js → common/types.js} +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { type TBuildInfoRecord } from '@venizia/ignis-helpers/core';
|
|
2
|
+
import type { IApplicationInfo } from '@venizia/ignis-kernel';
|
|
3
|
+
import type { IHealthCheckOptions } from './common';
|
|
4
|
+
/**
|
|
5
|
+
* Assembles what `GET /health` and `GET /health/stats` answer.
|
|
6
|
+
*
|
|
7
|
+
* Never reads the filesystem and never spawns `git`: the build stamp is PUSHED in at the
|
|
8
|
+
* entrypoint through {@link BuildInfoRegistry} (or the component's own options), so a
|
|
9
|
+
* `bun build --compile` binary and a Distroless image - neither of which has `node_modules`,
|
|
10
|
+
* `.git` or a readable `package.json` - report exactly what a dev machine does.
|
|
11
|
+
*/
|
|
12
|
+
export declare class HealthCheckReporter {
|
|
13
|
+
private static readonly BYTES_PER_MB;
|
|
14
|
+
/** Public liveness answer: liveness and the server clock, nothing a probe cannot already see. */
|
|
15
|
+
static buildSummary(): {
|
|
16
|
+
status: string;
|
|
17
|
+
timestamp: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Fail-closed, copying `AppErrorMiddleware.isProduction`: the default is MEMBERSHIP in
|
|
21
|
+
* `DEVELOPMENT_ENVS`, never inequality against `production`. `staging`, `uat`, `alpha` and a
|
|
22
|
+
* typo all keep this route shut, because the runtime and release it names are what picks an
|
|
23
|
+
* exploit. `ambient`, not `current`: an unset `NODE_ENV` is a host that cannot prove it is a dev
|
|
24
|
+
* machine, and `current` would mask it as `development`.
|
|
25
|
+
*
|
|
26
|
+
* `enable` is compared to `true`/`false` rather than read through `??`: this binding is
|
|
27
|
+
* env/config driven, and a JSON-derived `"false"` is truthy - an operator who wrote false would
|
|
28
|
+
* otherwise get the route mounted.
|
|
29
|
+
*/
|
|
30
|
+
static isStatsEnabled(opts: {
|
|
31
|
+
options: IHealthCheckOptions;
|
|
32
|
+
/** Reads the ambient environment; injected by tests so nothing has to write `process.env`. */
|
|
33
|
+
environment?: () => string | undefined;
|
|
34
|
+
}): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* No `secretKey` configured leaves the route open to whatever can reach the port - stated, not
|
|
37
|
+
* implied. Anything that is not a non-blank string fails CLOSED: a blank or config-derived
|
|
38
|
+
* non-string key is a pipeline that lost the variable, and reading it as "no key" would publish
|
|
39
|
+
* the route the operator meant to lock.
|
|
40
|
+
*
|
|
41
|
+
* The comparison is a plain `===`: a remote timing attack on a header compare is not practical
|
|
42
|
+
* through an HTTP stack, and a constant-time digest compare would buy nothing here.
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* Whether the stats route is mounted, unauthenticated, and on a host that cannot be shown to be a
|
|
46
|
+
* development one. That combination stays LEGAL - on a cluster-internal port it is often the right
|
|
47
|
+
* call - so this reports rather than refuses, and the component turns it into one warning at boot.
|
|
48
|
+
*
|
|
49
|
+
* It exists because `enable: true` bypasses the environment gate entirely: an operator who sets it
|
|
50
|
+
* for a local run and ships the same code publishes the runtime version, the release and the
|
|
51
|
+
* memory profile to whatever can reach the port. A blank `secretKey` is NOT unguarded - that fails
|
|
52
|
+
* closed in {@link isStatsAuthorized}.
|
|
53
|
+
*/
|
|
54
|
+
static isStatsUnguarded(opts: {
|
|
55
|
+
options: IHealthCheckOptions;
|
|
56
|
+
environment?: () => string | undefined;
|
|
57
|
+
}): boolean;
|
|
58
|
+
static isStatsAuthorized(opts: {
|
|
59
|
+
options: IHealthCheckOptions;
|
|
60
|
+
header?: string;
|
|
61
|
+
}): boolean;
|
|
62
|
+
/** The slot is a process-wide `globalThis` entry any dependency can write, and `IBuildInfo` types it without checking - so a non-string never reaches the response schema, which declares `z.string()`. */
|
|
63
|
+
private static extractText;
|
|
64
|
+
/**
|
|
65
|
+
* Explicit options win over the registry, and the application's own `getAppInfo()` fills what
|
|
66
|
+
* neither carries - so a host that ran no generator still reports its real name and version.
|
|
67
|
+
*/
|
|
68
|
+
static resolveBuildInfo(opts: {
|
|
69
|
+
options: IHealthCheckOptions;
|
|
70
|
+
appInfo?: IApplicationInfo;
|
|
71
|
+
}): TBuildInfoRecord;
|
|
72
|
+
/** `3661` -> `1h 1m 1s`: an operator reads a restart out of this faster than out of a float. */
|
|
73
|
+
static toHumanUptime(opts: {
|
|
74
|
+
seconds: number;
|
|
75
|
+
}): string;
|
|
76
|
+
private static toMegabytes;
|
|
77
|
+
static buildStats(opts: {
|
|
78
|
+
options: IHealthCheckOptions;
|
|
79
|
+
appInfo?: IApplicationInfo;
|
|
80
|
+
}): {
|
|
81
|
+
build: Required<import("@venizia/ignis-helpers").IBuildInfo>;
|
|
82
|
+
process: {
|
|
83
|
+
pid: number;
|
|
84
|
+
uptime: number;
|
|
85
|
+
uptimeHuman: string;
|
|
86
|
+
runtime: string;
|
|
87
|
+
environment: string;
|
|
88
|
+
};
|
|
89
|
+
memory: {
|
|
90
|
+
rss: string;
|
|
91
|
+
heapUsed: string;
|
|
92
|
+
heapTotal: string;
|
|
93
|
+
};
|
|
94
|
+
status: string;
|
|
95
|
+
timestamp: string;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/components/health-check/reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAe;IAEnD,iGAAiG;IACjG,MAAM,CAAC,YAAY,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAI5D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,OAAO,EAAE,mBAAmB,CAAC;QAC7B,8FAA8F;QAC9F,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO;IAcX;;;;;;;;OAQG;IACH;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC5B,OAAO,EAAE,mBAAmB,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO;IAiBX,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAa1F,2MAA2M;IAC3M,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC5B,OAAO,EAAE,mBAAmB,CAAC;QAC7B,OAAO,CAAC,EAAE,gBAAgB,CAAC;KAC5B,GAAG,gBAAgB;IAepB,gGAAgG;IAChG,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IASvD,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;KAAE;;;;;;;;;;;;;;gBA9HnD,MAAM;mBAAa,MAAM;;CAqJ3D"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthCheckReporter = void 0;
|
|
4
|
+
const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
5
|
+
const core_1 = require("@venizia/ignis-helpers/core");
|
|
6
|
+
/**
|
|
7
|
+
* Assembles what `GET /health` and `GET /health/stats` answer.
|
|
8
|
+
*
|
|
9
|
+
* Never reads the filesystem and never spawns `git`: the build stamp is PUSHED in at the
|
|
10
|
+
* entrypoint through {@link BuildInfoRegistry} (or the component's own options), so a
|
|
11
|
+
* `bun build --compile` binary and a Distroless image - neither of which has `node_modules`,
|
|
12
|
+
* `.git` or a readable `package.json` - report exactly what a dev machine does.
|
|
13
|
+
*/
|
|
14
|
+
class HealthCheckReporter {
|
|
15
|
+
static { this.BYTES_PER_MB = 1024 * 1024; }
|
|
16
|
+
/** Public liveness answer: liveness and the server clock, nothing a probe cannot already see. */
|
|
17
|
+
static buildSummary() {
|
|
18
|
+
return { status: 'ok', timestamp: new Date().toISOString() };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Fail-closed, copying `AppErrorMiddleware.isProduction`: the default is MEMBERSHIP in
|
|
22
|
+
* `DEVELOPMENT_ENVS`, never inequality against `production`. `staging`, `uat`, `alpha` and a
|
|
23
|
+
* typo all keep this route shut, because the runtime and release it names are what picks an
|
|
24
|
+
* exploit. `ambient`, not `current`: an unset `NODE_ENV` is a host that cannot prove it is a dev
|
|
25
|
+
* machine, and `current` would mask it as `development`.
|
|
26
|
+
*
|
|
27
|
+
* `enable` is compared to `true`/`false` rather than read through `??`: this binding is
|
|
28
|
+
* env/config driven, and a JSON-derived `"false"` is truthy - an operator who wrote false would
|
|
29
|
+
* otherwise get the route mounted.
|
|
30
|
+
*/
|
|
31
|
+
static isStatsEnabled(opts) {
|
|
32
|
+
const { enable } = opts.options.stats ?? {};
|
|
33
|
+
if (typeof enable === 'boolean') {
|
|
34
|
+
return enable;
|
|
35
|
+
}
|
|
36
|
+
const ambient = opts.environment ? opts.environment() : ignis_helpers_1.Environment.ambient;
|
|
37
|
+
if (ambient === undefined) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return ignis_helpers_1.Environment.DEVELOPMENT_ENVS.has(ambient.toLowerCase());
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* No `secretKey` configured leaves the route open to whatever can reach the port - stated, not
|
|
44
|
+
* implied. Anything that is not a non-blank string fails CLOSED: a blank or config-derived
|
|
45
|
+
* non-string key is a pipeline that lost the variable, and reading it as "no key" would publish
|
|
46
|
+
* the route the operator meant to lock.
|
|
47
|
+
*
|
|
48
|
+
* The comparison is a plain `===`: a remote timing attack on a header compare is not practical
|
|
49
|
+
* through an HTTP stack, and a constant-time digest compare would buy nothing here.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Whether the stats route is mounted, unauthenticated, and on a host that cannot be shown to be a
|
|
53
|
+
* development one. That combination stays LEGAL - on a cluster-internal port it is often the right
|
|
54
|
+
* call - so this reports rather than refuses, and the component turns it into one warning at boot.
|
|
55
|
+
*
|
|
56
|
+
* It exists because `enable: true` bypasses the environment gate entirely: an operator who sets it
|
|
57
|
+
* for a local run and ships the same code publishes the runtime version, the release and the
|
|
58
|
+
* memory profile to whatever can reach the port. A blank `secretKey` is NOT unguarded - that fails
|
|
59
|
+
* closed in {@link isStatsAuthorized}.
|
|
60
|
+
*/
|
|
61
|
+
static isStatsUnguarded(opts) {
|
|
62
|
+
if (!HealthCheckReporter.isStatsEnabled(opts)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
if (opts.options.stats?.secretKey !== undefined) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const ambient = opts.environment ? opts.environment() : ignis_helpers_1.Environment.ambient;
|
|
69
|
+
if (ambient === undefined) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return !ignis_helpers_1.Environment.DEVELOPMENT_ENVS.has(ambient.toLowerCase());
|
|
73
|
+
}
|
|
74
|
+
static isStatsAuthorized(opts) {
|
|
75
|
+
const secretKey = opts.options.stats?.secretKey;
|
|
76
|
+
if (secretKey === undefined) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (typeof secretKey !== 'string' || secretKey.trim().length === 0) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return opts.header === secretKey;
|
|
83
|
+
}
|
|
84
|
+
/** The slot is a process-wide `globalThis` entry any dependency can write, and `IBuildInfo` types it without checking - so a non-string never reaches the response schema, which declares `z.string()`. */
|
|
85
|
+
static extractText(opts) {
|
|
86
|
+
return typeof opts.value === 'string' && opts.value.length > 0 ? opts.value : undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Explicit options win over the registry, and the application's own `getAppInfo()` fills what
|
|
90
|
+
* neither carries - so a host that ran no generator still reports its real name and version.
|
|
91
|
+
*/
|
|
92
|
+
static resolveBuildInfo(opts) {
|
|
93
|
+
const stamp = opts.options.stats?.buildInfo ?? core_1.BuildInfoRegistry.get() ?? {};
|
|
94
|
+
const extract = HealthCheckReporter.extractText;
|
|
95
|
+
return {
|
|
96
|
+
service: extract({ value: stamp.service }) ?? opts.appInfo?.name ?? core_1.BuildInfoRegistry.UNSPECIFIED,
|
|
97
|
+
version: extract({ value: stamp.version }) ?? opts.appInfo?.version ?? core_1.BuildInfoRegistry.UNSPECIFIED,
|
|
98
|
+
commit: extract({ value: stamp.commit }) ?? core_1.BuildInfoRegistry.UNSPECIFIED,
|
|
99
|
+
branch: extract({ value: stamp.branch }) ?? core_1.BuildInfoRegistry.UNSPECIFIED,
|
|
100
|
+
builtAt: extract({ value: stamp.builtAt }) ?? core_1.BuildInfoRegistry.UNSPECIFIED,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** `3661` -> `1h 1m 1s`: an operator reads a restart out of this faster than out of a float. */
|
|
104
|
+
static toHumanUptime(opts) {
|
|
105
|
+
const total = Math.floor(opts.seconds);
|
|
106
|
+
const hours = Math.floor(total / 3600);
|
|
107
|
+
const minutes = Math.floor((total % 3600) / 60);
|
|
108
|
+
const seconds = total % 60;
|
|
109
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
110
|
+
}
|
|
111
|
+
static toMegabytes(opts) {
|
|
112
|
+
return `${(opts.bytes / HealthCheckReporter.BYTES_PER_MB).toFixed(1)} MB`;
|
|
113
|
+
}
|
|
114
|
+
static buildStats(opts) {
|
|
115
|
+
const memory = process.memoryUsage();
|
|
116
|
+
const uptime = process.uptime();
|
|
117
|
+
return {
|
|
118
|
+
...HealthCheckReporter.buildSummary(),
|
|
119
|
+
build: HealthCheckReporter.resolveBuildInfo(opts),
|
|
120
|
+
process: {
|
|
121
|
+
pid: process.pid,
|
|
122
|
+
uptime,
|
|
123
|
+
uptimeHuman: HealthCheckReporter.toHumanUptime({ seconds: uptime }),
|
|
124
|
+
// `versions.node` carries no `v` prefix, so both runtimes read `<name> <semver>`.
|
|
125
|
+
runtime: ignis_helpers_1.RuntimeModules.isBun() ? `bun ${Bun.version}` : `node ${process.versions.node}`,
|
|
126
|
+
// `ambient`, not `current`: an unset `NODE_ENV` is reported as such, never dressed up as `development`.
|
|
127
|
+
environment: ignis_helpers_1.Environment.ambient ?? core_1.BuildInfoRegistry.UNSPECIFIED,
|
|
128
|
+
},
|
|
129
|
+
memory: {
|
|
130
|
+
rss: HealthCheckReporter.toMegabytes({ bytes: memory.rss }),
|
|
131
|
+
heapUsed: HealthCheckReporter.toMegabytes({ bytes: memory.heapUsed }),
|
|
132
|
+
heapTotal: HealthCheckReporter.toMegabytes({ bytes: memory.heapTotal }),
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.HealthCheckReporter = HealthCheckReporter;
|
|
138
|
+
//# sourceMappingURL=reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/components/health-check/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TConstValue } from '@venizia/ignis-helpers/common';
|
|
1
2
|
export declare class MailDefaults {
|
|
2
3
|
static readonly BATCH_CONCURRENCY = 5;
|
|
3
4
|
static readonly FALLBACK_FROM = "noreply@example.com";
|
|
@@ -28,4 +29,11 @@ export declare class BullMQExecutorModes {
|
|
|
28
29
|
static readonly MODE_SET: Set<string>;
|
|
29
30
|
static isValid(value: string): boolean;
|
|
30
31
|
}
|
|
32
|
+
export declare class MailProviders {
|
|
33
|
+
static readonly NODEMAILER = "nodemailer";
|
|
34
|
+
static readonly MAILGUN = "mailgun";
|
|
35
|
+
static readonly CUSTOM = "custom";
|
|
36
|
+
static readonly AMAZON_SES = "amazon-ses";
|
|
37
|
+
}
|
|
38
|
+
export type TMailProvider = TConstValue<typeof MailProviders>;
|
|
31
39
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,qBAAa,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IACtC,MAAM,CAAC,QAAQ,CAAC,aAAa,yBAAyB;CACvD;AAED,yKAAyK;AACzK,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAiE;IAC5F,MAAM,CAAC,QAAQ,CAAC,mBAAmB,SAEhC;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAE9B;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAE9B;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,SAE/B;CACJ;AAED,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,iBAAiB,mDAAmD;CACrF;AAED,qBAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAElC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAC9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAmE;IAC3F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAElC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;CAC3C;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BullMQExecutorModes = exports.MailQueueExecutorTypes = exports.MailExecutorErrors = exports.MailErrorCodes = exports.MailDefaults = void 0;
|
|
3
|
+
exports.MailProviders = exports.BullMQExecutorModes = exports.MailQueueExecutorTypes = exports.MailExecutorErrors = exports.MailErrorCodes = exports.MailDefaults = void 0;
|
|
4
4
|
const core_1 = require("@venizia/ignis-helpers/core");
|
|
5
5
|
class MailDefaults {
|
|
6
6
|
static { this.BATCH_CONCURRENCY = 5; }
|
|
@@ -51,4 +51,12 @@ class BullMQExecutorModes {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
exports.BullMQExecutorModes = BullMQExecutorModes;
|
|
54
|
+
class MailProviders {
|
|
55
|
+
static { this.NODEMAILER = 'nodemailer'; }
|
|
56
|
+
static { this.MAILGUN = 'mailgun'; }
|
|
57
|
+
static { this.CUSTOM = 'custom'; }
|
|
58
|
+
// Amazon SES supports both SMTP and HTTPS - this provider is the HTTPS API path; SMTP goes through NODEMAILER instead.
|
|
59
|
+
static { this.AMAZON_SES = 'amazon-ses'; }
|
|
60
|
+
}
|
|
61
|
+
exports.MailProviders = MailProviders;
|
|
54
62
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/mail/common/constants.ts"],"names":[],"mappings":";;;AACA,sDAA0D;AAE1D,MAAa,YAAY;aACP,sBAAiB,GAAG,CAAC,CAAC;aACtB,kBAAa,GAAG,qBAAqB,CAAC;;AAFxD,oCAGC;AAED,yKAAyK;AACzK,MAAa,cAAc;aACT,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC;KACjD,CAAC,CAAC;aACa,gBAAW,GAAG,kBAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;aAC5E,wBAAmB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACtD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAAC;KAC/C,CAAC,CAAC;aACa,sBAAiB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACpD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAC7C,CAAC,CAAC;aACa,sBAAiB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACpD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAC7C,CAAC,CAAC;aACa,uBAAkB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC;KAC9C,CAAC,CAAC;;AAhBL,wCAiBC;AAED,MAAa,kBAAkB;aACb,sBAAiB,GAAG,+CAA+C,CAAC;;AADtF,gDAEC;AAED,MAAa,sBAAsB;aACjB,WAAM,GAAG,QAAQ,CAAC;aAClB,mBAAc,GAAG,gBAAgB,CAAC;aAClC,WAAM,GAAG,QAAQ,CAAC;aAElB,eAAU,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AARH,wDASC;AAED,MAAa,mBAAmB;aACd,eAAU,GAAG,YAAY,CAAC;aAC1B,gBAAW,GAAG,aAAa,CAAC;aAC5B,SAAI,GAAG,MAAM,CAAC;aAEd,aAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;;AARH,kDASC;AAED,MAAa,aAAa;aACR,eAAU,GAAG,YAAY,CAAC;aAC1B,YAAO,GAAG,SAAS,CAAC;aACpB,WAAM,GAAG,QAAQ,CAAC;IAClC,uHAAuH;aACvG,eAAU,GAAG,YAAY,CAAC;;AAL5C,sCAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./message"), exports);
|
|
18
|
+
__exportStar(require("./options"), exports);
|
|
19
|
+
__exportStar(require("./queue"), exports);
|
|
20
|
+
__exportStar(require("./template"), exports);
|
|
21
|
+
__exportStar(require("./verification"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,iDAA+B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
export interface IMailAttachment {
|
|
3
|
+
filename?: string;
|
|
4
|
+
contentType?: string;
|
|
5
|
+
path?: string;
|
|
6
|
+
content?: string | Buffer | Readable;
|
|
7
|
+
encoding?: BufferEncoding;
|
|
8
|
+
cid?: string;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
export interface IMailMessage {
|
|
12
|
+
from?: string;
|
|
13
|
+
to: string | string[];
|
|
14
|
+
cc?: string | string[];
|
|
15
|
+
bcc?: string | string[];
|
|
16
|
+
replyTo?: string;
|
|
17
|
+
subject: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
html?: string;
|
|
20
|
+
attachments?: IMailAttachment[];
|
|
21
|
+
headers?: Record<string, string>;
|
|
22
|
+
requireValidate?: boolean;
|
|
23
|
+
[key: string]: any;
|
|
24
|
+
}
|
|
25
|
+
export interface IMailSendResult {
|
|
26
|
+
success: boolean;
|
|
27
|
+
messageId?: string;
|
|
28
|
+
response?: any;
|
|
29
|
+
error?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IMailTransport {
|
|
32
|
+
send(message: IMailMessage): Promise<IMailSendResult>;
|
|
33
|
+
verify(): Promise<boolean>;
|
|
34
|
+
close?(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export interface IMailService {
|
|
37
|
+
send(message: IMailMessage): Promise<IMailSendResult>;
|
|
38
|
+
sendBatch(messages: IMailMessage[], options?: {
|
|
39
|
+
concurrency?: number;
|
|
40
|
+
}): Promise<IMailSendResult[]>;
|
|
41
|
+
sendTemplate(opts: {
|
|
42
|
+
templateName: string;
|
|
43
|
+
data: Record<string, any>;
|
|
44
|
+
recipients: string | string[];
|
|
45
|
+
options?: Partial<IMailMessage>;
|
|
46
|
+
}): Promise<IMailSendResult>;
|
|
47
|
+
verify(): Promise<boolean>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtD,SAAS,CACP,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9B,YAAY,CAAC,IAAI,EAAE;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;KACjC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { AnyType } from '@venizia/ignis-helpers/common';
|
|
2
|
+
import type SMTPTransport from 'nodemailer/lib/smtp-transport';
|
|
3
|
+
import type { IMailTransport } from './message';
|
|
4
|
+
export interface IBaseMailOptions {
|
|
5
|
+
from?: string;
|
|
6
|
+
fromName?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface INodemailerMailOptions extends IBaseMailOptions {
|
|
9
|
+
provider: 'nodemailer';
|
|
10
|
+
config: TNodemailerConfig;
|
|
11
|
+
module?: TNodemailerModule;
|
|
12
|
+
}
|
|
13
|
+
export interface IMailgunMailOptions extends IBaseMailOptions {
|
|
14
|
+
provider: 'mailgun';
|
|
15
|
+
config: TMailgunConfig;
|
|
16
|
+
module?: TMailgunModule;
|
|
17
|
+
}
|
|
18
|
+
export interface IAmazonSesMailOptions extends IBaseMailOptions {
|
|
19
|
+
provider: 'amazon-ses';
|
|
20
|
+
config: TAmazonSesConfig;
|
|
21
|
+
module?: TAmazonSesModule;
|
|
22
|
+
}
|
|
23
|
+
export interface ICustomMailOptions extends IBaseMailOptions {
|
|
24
|
+
provider: 'custom';
|
|
25
|
+
config: IMailTransport;
|
|
26
|
+
}
|
|
27
|
+
export interface IGenericMailOptions extends IBaseMailOptions {
|
|
28
|
+
provider: string;
|
|
29
|
+
config: Record<string, AnyType>;
|
|
30
|
+
}
|
|
31
|
+
export type TMailOptions = INodemailerMailOptions | IAmazonSesMailOptions | IMailgunMailOptions | ICustomMailOptions | IGenericMailOptions;
|
|
32
|
+
export type TNodemailerConfig = SMTPTransport | SMTPTransport.Options | string;
|
|
33
|
+
export type TMailgunConfig = AnyType & {
|
|
34
|
+
domain: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The peer module itself, handed over by an application that already holds it. A `bun build
|
|
38
|
+
* --compile` binary carries no `node_modules`, so the runtime lookup these transports fall back to
|
|
39
|
+
* has nothing to resolve against - passing the module through the options is what a compiled
|
|
40
|
+
* application does instead. Typed as the shape each transport actually uses, so a wrong module is
|
|
41
|
+
* a compile error rather than a boot crash.
|
|
42
|
+
*/
|
|
43
|
+
export type TNodemailerModule = {
|
|
44
|
+
createTransport: (config: AnyType, defaults?: AnyType) => AnyType;
|
|
45
|
+
};
|
|
46
|
+
export type TMailgunModule = new (formData: AnyType) => AnyType;
|
|
47
|
+
export type TAmazonSesConfig = {
|
|
48
|
+
region: string;
|
|
49
|
+
credentials?: {
|
|
50
|
+
accessKeyId: string;
|
|
51
|
+
secretAccessKey: string;
|
|
52
|
+
sessionToken?: string;
|
|
53
|
+
};
|
|
54
|
+
endpoint?: string;
|
|
55
|
+
};
|
|
56
|
+
/** Same story as {@link TNodemailerModule} - a compiled binary hands this over explicitly since there is no `node_modules` to resolve `@aws-sdk/client-sesv2` against. */
|
|
57
|
+
export type TAmazonSesModule<TConfig extends AnyType = AnyType, TClient extends AnyType = AnyType> = {
|
|
58
|
+
SESv2Client: new (config: TConfig) => TClient;
|
|
59
|
+
SendEmailCommand: new (input: AnyType) => AnyType;
|
|
60
|
+
GetAccountCommand: new (input?: AnyType) => AnyType;
|
|
61
|
+
};
|
|
62
|
+
export type TAmazonSesClient = Pick<TAmazonSesModule, 'SendEmailCommand' | 'GetAccountCommand'> & {
|
|
63
|
+
client: AnyType;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,aAAa,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;AAG/E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0KAA0K;AAC1K,MAAM,MAAM,gBAAgB,CAC1B,OAAO,SAAS,OAAO,GAAG,OAAO,EACjC,OAAO,SAAS,OAAO,GAAG,OAAO,IAC/B;IACF,WAAW,EAAE,KAAK,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC9C,gBAAgB,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAClD,iBAAiB,EAAE,KAAK,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,GAAG;IAChG,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TConstValue } from '@venizia/ignis-helpers/common';
|
|
2
|
+
import type { IRedisSingleHelperOptions } from '@venizia/ignis-helpers';
|
|
3
|
+
import type { BullMQExecutorModes, MailQueueExecutorTypes } from '../constants';
|
|
4
|
+
export interface IMailQueueOptions {
|
|
5
|
+
priority?: number;
|
|
6
|
+
delay?: number;
|
|
7
|
+
attempts?: number;
|
|
8
|
+
backoff?: {
|
|
9
|
+
type: 'fixed' | 'exponential';
|
|
10
|
+
delay: number;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface IMailProcessorResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
message: string;
|
|
16
|
+
expiresInMinutes: number;
|
|
17
|
+
nextResendAt?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface IMailQueueResult {
|
|
20
|
+
jobId?: string;
|
|
21
|
+
queued: boolean;
|
|
22
|
+
message: string;
|
|
23
|
+
result?: IMailProcessorResult;
|
|
24
|
+
}
|
|
25
|
+
export interface IMailQueueExecutor {
|
|
26
|
+
enqueueVerificationEmail(email: string, options?: IMailQueueOptions): Promise<IMailQueueResult>;
|
|
27
|
+
setProcessor(processor: (email: string) => Promise<IMailProcessorResult>): void;
|
|
28
|
+
}
|
|
29
|
+
/** Envelope every queue-backed executor stores for one pending verification email. */
|
|
30
|
+
export interface IQueueJobPayload {
|
|
31
|
+
id: string;
|
|
32
|
+
email: string;
|
|
33
|
+
options?: IMailQueueOptions;
|
|
34
|
+
attempts: number;
|
|
35
|
+
scheduledAt: number;
|
|
36
|
+
}
|
|
37
|
+
export interface IInternalQueueMailExecutorOpts {
|
|
38
|
+
identifier: string;
|
|
39
|
+
}
|
|
40
|
+
export interface IBullMQMailExecutorOpts {
|
|
41
|
+
/** `redis.module` passes `ioredis` itself - see `module` below for why. */
|
|
42
|
+
redis: IRedisSingleHelperOptions;
|
|
43
|
+
queue: {
|
|
44
|
+
identifier: string;
|
|
45
|
+
name: string;
|
|
46
|
+
};
|
|
47
|
+
mode: TConstValue<typeof BullMQExecutorModes>;
|
|
48
|
+
/** `bullmq` itself, for a `bun build --compile` binary that has no `node_modules` to load it from. */
|
|
49
|
+
module?: typeof import('bullmq');
|
|
50
|
+
}
|
|
51
|
+
export interface IMailQueueExecutorConfig {
|
|
52
|
+
type: TConstValue<typeof MailQueueExecutorTypes>;
|
|
53
|
+
internalQueue?: IInternalQueueMailExecutorOpts;
|
|
54
|
+
bullmq?: IBullMQMailExecutorOpts;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChG,YAAY,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;CACjF;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,KAAK,EAAE,yBAAyB,CAAC;IACjC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,EAAE,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAC9C,sGAAsG;IACtG,MAAM,CAAC,EAAE,cAAc,QAAQ,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAC/C,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/queue.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AnyType } from '@venizia/ignis-helpers/common';
|
|
2
|
+
export interface ITemplate {
|
|
3
|
+
name: string;
|
|
4
|
+
content?: string;
|
|
5
|
+
render?: (data: Record<string, AnyType>) => string;
|
|
6
|
+
subject?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IMailTemplateEngine {
|
|
10
|
+
render(opts: {
|
|
11
|
+
templateData?: string;
|
|
12
|
+
templateName?: string;
|
|
13
|
+
data: Record<string, any>;
|
|
14
|
+
requireValidate?: boolean;
|
|
15
|
+
}): string;
|
|
16
|
+
registerTemplate(opts: {
|
|
17
|
+
name: string;
|
|
18
|
+
content: string;
|
|
19
|
+
}): void;
|
|
20
|
+
validateTemplateData(opts: {
|
|
21
|
+
template: string;
|
|
22
|
+
data: Record<string, any>;
|
|
23
|
+
}): {
|
|
24
|
+
isValid: boolean;
|
|
25
|
+
missingKeys: string[];
|
|
26
|
+
allKeys: string[];
|
|
27
|
+
};
|
|
28
|
+
getTemplate(name: string): ITemplate | undefined;
|
|
29
|
+
listTemplates(): ITemplate[];
|
|
30
|
+
hasTemplate(name: string): boolean;
|
|
31
|
+
removeTemplate(name: string): boolean;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,MAAM,CAAC;IACX,gBAAgB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChE,oBAAoB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG;QAC3E,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACjD,aAAa,IAAI,SAAS,EAAE,CAAC;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/components/mail/common/types/template.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface IVerificationGenerationOptions {
|
|
2
|
+
codeLength: number;
|
|
3
|
+
tokenBytes: number;
|
|
4
|
+
codeExpiryMinutes: number;
|
|
5
|
+
tokenExpiryHours: number;
|
|
6
|
+
}
|
|
7
|
+
export interface IVerificationData {
|
|
8
|
+
verificationCode: string;
|
|
9
|
+
codeGeneratedAt: string;
|
|
10
|
+
codeExpiresAt: string;
|
|
11
|
+
codeAttempts: number;
|
|
12
|
+
verificationToken: string;
|
|
13
|
+
tokenGeneratedAt: string;
|
|
14
|
+
tokenExpiresAt: string;
|
|
15
|
+
lastCodeSentAt: string;
|
|
16
|
+
}
|
|
17
|
+
export interface IVerificationCodeGenerator {
|
|
18
|
+
generateCode(length: number): string;
|
|
19
|
+
}
|
|
20
|
+
export interface IVerificationTokenGenerator {
|
|
21
|
+
generateToken(bytes: number): string;
|
|
22
|
+
}
|
|
23
|
+
export interface IVerificationDataGenerator {
|
|
24
|
+
generateVerificationData(options: IVerificationGenerationOptions): IVerificationData;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=verification.d.ts.map
|