@digitaldefiance/node-express-suite 3.7.5 → 3.7.6
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/package.json +5 -4
- package/src/__tests__/fixtures/{index.ts → index.d.ts} +1 -0
- package/src/__tests__/fixtures/index.d.ts.map +1 -0
- package/src/__tests__/fixtures/index.js +5 -0
- package/src/__tests__/fixtures/index.js.map +1 -0
- package/src/__tests__/fixtures/model-mocks.mock.d.ts +12 -0
- package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +1 -0
- package/src/__tests__/fixtures/model-mocks.mock.js +102 -0
- package/src/__tests__/fixtures/model-mocks.mock.js.map +1 -0
- package/src/__tests__/helpers/application.mock.d.ts +8 -0
- package/src/__tests__/helpers/application.mock.d.ts.map +1 -0
- package/src/__tests__/helpers/application.mock.js +77 -0
- package/src/__tests__/helpers/application.mock.js.map +1 -0
- package/src/__tests__/helpers/{index.ts → index.d.ts} +1 -0
- package/src/__tests__/helpers/index.d.ts.map +1 -0
- package/src/__tests__/helpers/index.js +7 -0
- package/src/__tests__/helpers/index.js.map +1 -0
- package/src/__tests__/helpers/setup-test-env.d.ts +12 -0
- package/src/__tests__/helpers/setup-test-env.d.ts.map +1 -0
- package/src/__tests__/helpers/setup-test-env.js +121 -0
- package/src/__tests__/helpers/setup-test-env.js.map +1 -0
- package/src/__tests__/{index.ts → index.d.ts} +1 -0
- package/src/__tests__/index.d.ts.map +1 -0
- package/src/__tests__/index.js +6 -0
- package/src/__tests__/index.js.map +1 -0
- package/src/application-base.d.ts +128 -0
- package/src/application-base.d.ts.map +1 -0
- package/src/application-base.js +364 -0
- package/src/application-base.js.map +1 -0
- package/src/application-concrete.d.ts +26 -0
- package/src/application-concrete.d.ts.map +1 -0
- package/src/application-concrete.js +34 -0
- package/src/application-concrete.js.map +1 -0
- package/src/application.d.ts +34 -0
- package/src/application.d.ts.map +1 -0
- package/src/application.js +172 -0
- package/src/application.js.map +1 -0
- package/src/backup-code.d.ts +72 -0
- package/src/backup-code.d.ts.map +1 -0
- package/src/backup-code.js +243 -0
- package/src/backup-code.js.map +1 -0
- package/src/builders/application-builder.d.ts +47 -0
- package/src/builders/application-builder.d.ts.map +1 -0
- package/src/builders/application-builder.js +76 -0
- package/src/builders/application-builder.js.map +1 -0
- package/src/builders/{index.ts → index.d.ts} +1 -0
- package/src/builders/index.d.ts.map +1 -0
- package/src/builders/index.js +5 -0
- package/src/builders/index.js.map +1 -0
- package/src/constants.d.ts +21 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +63 -0
- package/src/constants.js.map +1 -0
- package/src/container/{index.ts → index.d.ts} +1 -0
- package/src/container/index.d.ts.map +1 -0
- package/src/container/index.js +6 -0
- package/src/container/index.js.map +1 -0
- package/src/container/service-container.d.ts +45 -0
- package/src/container/service-container.d.ts.map +1 -0
- package/src/container/service-container.js +68 -0
- package/src/container/service-container.js.map +1 -0
- package/src/container/{service-definitions.ts → service-definitions.d.ts} +10 -11
- package/src/container/service-definitions.d.ts.map +1 -0
- package/src/container/service-definitions.js +21 -0
- package/src/container/service-definitions.js.map +1 -0
- package/src/controllers/base.d.ts +80 -0
- package/src/controllers/base.d.ts.map +1 -0
- package/src/controllers/base.js +318 -0
- package/src/controllers/base.js.map +1 -0
- package/src/controllers/{index.ts → index.d.ts} +1 -0
- package/src/controllers/index.d.ts.map +1 -0
- package/src/controllers/index.js +6 -0
- package/src/controllers/index.js.map +1 -0
- package/src/controllers/user.d.ts +66 -0
- package/src/controllers/user.d.ts.map +1 -0
- package/src/controllers/user.js +936 -0
- package/src/controllers/user.js.map +1 -0
- package/src/database/{database-initializer.ts → database-initializer.d.ts} +3 -4
- package/src/database/database-initializer.d.ts.map +1 -0
- package/src/database/database-initializer.js +8 -0
- package/src/database/database-initializer.js.map +1 -0
- package/src/database/{index.ts → index.d.ts} +1 -0
- package/src/database/index.d.ts.map +1 -0
- package/src/database/index.js +5 -0
- package/src/database/index.js.map +1 -0
- package/src/decorators/base-controller.d.ts +22 -0
- package/src/decorators/base-controller.d.ts.map +1 -0
- package/src/decorators/base-controller.js +71 -0
- package/src/decorators/base-controller.js.map +1 -0
- package/src/decorators/controller.d.ts +43 -0
- package/src/decorators/controller.d.ts.map +1 -0
- package/src/decorators/controller.js +73 -0
- package/src/decorators/controller.js.map +1 -0
- package/src/decorators/{index.ts → index.d.ts} +1 -0
- package/src/decorators/index.d.ts.map +1 -0
- package/src/decorators/index.js +7 -0
- package/src/decorators/index.js.map +1 -0
- package/src/decorators/zod-validation.d.ts +10 -0
- package/src/decorators/zod-validation.d.ts.map +1 -0
- package/src/decorators/zod-validation.js +53 -0
- package/src/decorators/zod-validation.js.map +1 -0
- package/src/defaults.d.ts +12 -0
- package/src/defaults.d.ts.map +1 -0
- package/src/defaults.js +210 -0
- package/src/defaults.js.map +1 -0
- package/src/documents/{base.ts → base.d.ts} +2 -4
- package/src/documents/base.d.ts.map +1 -0
- package/src/documents/base.js +8 -0
- package/src/documents/base.js.map +1 -0
- package/src/documents/{email-token.ts → email-token.d.ts} +3 -8
- package/src/documents/email-token.d.ts.map +1 -0
- package/src/documents/email-token.js +8 -0
- package/src/documents/email-token.js.map +1 -0
- package/src/documents/{index.ts → index.d.ts} +1 -0
- package/src/documents/index.d.ts.map +1 -0
- package/src/documents/index.js +3 -0
- package/src/documents/index.js.map +1 -0
- package/src/documents/{mnemonic.ts → mnemonic.d.ts} +2 -6
- package/src/documents/mnemonic.d.ts.map +1 -0
- package/src/documents/mnemonic.js +8 -0
- package/src/documents/mnemonic.js.map +1 -0
- package/src/documents/{role.ts → role.d.ts} +2 -6
- package/src/documents/role.d.ts.map +1 -0
- package/src/documents/role.js +8 -0
- package/src/documents/role.js.map +1 -0
- package/src/documents/{used-direct-login-token.ts → used-direct-login-token.d.ts} +2 -4
- package/src/documents/used-direct-login-token.d.ts.map +1 -0
- package/src/documents/used-direct-login-token.js +8 -0
- package/src/documents/used-direct-login-token.js.map +1 -0
- package/src/documents/{user-role.ts → user-role.d.ts} +2 -6
- package/src/documents/user-role.d.ts.map +1 -0
- package/src/documents/user-role.js +8 -0
- package/src/documents/user-role.js.map +1 -0
- package/src/documents/{user.ts → user.d.ts} +2 -6
- package/src/documents/user.d.ts.map +1 -0
- package/src/documents/user.js +8 -0
- package/src/documents/user.js.map +1 -0
- package/src/enumerations/base-model-name.d.ts +43 -0
- package/src/enumerations/base-model-name.d.ts.map +1 -0
- package/src/enumerations/base-model-name.js +39 -0
- package/src/enumerations/base-model-name.js.map +1 -0
- package/src/enumerations/{index.ts → index.d.ts} +1 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/index.js +8 -0
- package/src/enumerations/index.js.map +1 -0
- package/src/enumerations/{length-encoding-type.ts → length-encoding-type.d.ts} +6 -6
- package/src/enumerations/length-encoding-type.d.ts.map +1 -0
- package/src/enumerations/length-encoding-type.js +20 -0
- package/src/enumerations/length-encoding-type.js.map +1 -0
- package/src/enumerations/schema-collection.d.ts +39 -0
- package/src/enumerations/schema-collection.d.ts.map +1 -0
- package/src/enumerations/schema-collection.js +43 -0
- package/src/enumerations/schema-collection.js.map +1 -0
- package/src/enumerations/{symmetric-error-type.ts → symmetric-error-type.d.ts} +4 -4
- package/src/enumerations/symmetric-error-type.d.ts.map +1 -0
- package/src/enumerations/symmetric-error-type.js +17 -0
- package/src/enumerations/symmetric-error-type.js.map +1 -0
- package/src/environment.d.ts +194 -0
- package/src/environment.d.ts.map +1 -0
- package/src/environment.js +646 -0
- package/src/environment.js.map +1 -0
- package/src/errors/express-validation.d.ts +24 -0
- package/src/errors/express-validation.d.ts.map +1 -0
- package/src/errors/express-validation.js +33 -0
- package/src/errors/express-validation.js.map +1 -0
- package/src/errors/{index.ts → index.d.ts} +1 -0
- package/src/errors/index.d.ts.map +1 -0
- package/src/errors/index.js +16 -0
- package/src/errors/index.js.map +1 -0
- package/src/errors/invalid-backup-code-version.d.ts +19 -0
- package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
- package/src/errors/invalid-backup-code-version.js +29 -0
- package/src/errors/invalid-backup-code-version.js.map +1 -0
- package/src/errors/invalid-jwt-token.d.ts +17 -0
- package/src/errors/invalid-jwt-token.d.ts.map +1 -0
- package/src/errors/invalid-jwt-token.js +24 -0
- package/src/errors/invalid-jwt-token.js.map +1 -0
- package/src/errors/invalid-model.d.ts +18 -0
- package/src/errors/invalid-model.d.ts.map +1 -0
- package/src/errors/invalid-model.js +26 -0
- package/src/errors/invalid-model.js.map +1 -0
- package/src/errors/invalid-new-password.d.ts +19 -0
- package/src/errors/invalid-new-password.d.ts.map +1 -0
- package/src/errors/invalid-new-password.js +28 -0
- package/src/errors/invalid-new-password.js.map +1 -0
- package/src/errors/invalid-password.d.ts +19 -0
- package/src/errors/invalid-password.d.ts.map +1 -0
- package/src/errors/invalid-password.js +28 -0
- package/src/errors/invalid-password.js.map +1 -0
- package/src/errors/missing-validated-data.d.ts +24 -0
- package/src/errors/missing-validated-data.d.ts.map +1 -0
- package/src/errors/missing-validated-data.js +53 -0
- package/src/errors/missing-validated-data.js.map +1 -0
- package/src/errors/mnemonic-or-password-required.d.ts +17 -0
- package/src/errors/mnemonic-or-password-required.d.ts.map +1 -0
- package/src/errors/mnemonic-or-password-required.js +26 -0
- package/src/errors/mnemonic-or-password-required.js.map +1 -0
- package/src/errors/model-not-registered.d.ts +18 -0
- package/src/errors/model-not-registered.d.ts.map +1 -0
- package/src/errors/model-not-registered.js +26 -0
- package/src/errors/model-not-registered.js.map +1 -0
- package/src/errors/mongoose-validation.d.ts +28 -0
- package/src/errors/mongoose-validation.d.ts.map +1 -0
- package/src/errors/mongoose-validation.js +33 -0
- package/src/errors/mongoose-validation.js.map +1 -0
- package/src/errors/symmetric.d.ts +23 -0
- package/src/errors/symmetric.d.ts.map +1 -0
- package/src/errors/symmetric.js +37 -0
- package/src/errors/symmetric.js.map +1 -0
- package/src/errors/token-expired.d.ts +17 -0
- package/src/errors/token-expired.d.ts.map +1 -0
- package/src/errors/token-expired.js +24 -0
- package/src/errors/token-expired.js.map +1 -0
- package/src/get-language.d.ts +12 -0
- package/src/get-language.d.ts.map +1 -0
- package/src/get-language.js +40 -0
- package/src/get-language.js.map +1 -0
- package/src/get-timezone.d.ts +12 -0
- package/src/get-timezone.d.ts.map +1 -0
- package/src/get-timezone.js +53 -0
- package/src/get-timezone.js.map +1 -0
- package/src/{index.ts → index.d.ts} +2 -44
- package/src/index.d.ts.map +1 -0
- package/src/index.js +80 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/{api-error-response.ts → api-error-response.d.ts} +2 -3
- package/src/interfaces/api-error-response.d.ts.map +1 -0
- package/src/interfaces/api-error-response.js +8 -0
- package/src/interfaces/api-error-response.js.map +1 -0
- package/src/interfaces/{api-express-validation-error-response.ts → api-express-validation-error-response.d.ts} +3 -4
- package/src/interfaces/api-express-validation-error-response.d.ts.map +1 -0
- package/src/interfaces/api-express-validation-error-response.js +8 -0
- package/src/interfaces/api-express-validation-error-response.js.map +1 -0
- package/src/interfaces/{api-message-response.ts → api-message-response.d.ts} +2 -2
- package/src/interfaces/api-message-response.d.ts.map +1 -0
- package/src/interfaces/api-message-response.js +8 -0
- package/src/interfaces/api-message-response.js.map +1 -0
- package/src/interfaces/{api-mongo-validation-error-response.ts → api-mongo-validation-error-response.d.ts} +2 -3
- package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
- package/src/interfaces/api-mongo-validation-error-response.js +8 -0
- package/src/interfaces/api-mongo-validation-error-response.js.map +1 -0
- package/src/interfaces/api-responses/{backup-codes-response.ts → backup-codes-response.d.ts} +2 -3
- package/src/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/backup-codes-response.js +8 -0
- package/src/interfaces/api-responses/backup-codes-response.js.map +1 -0
- package/src/interfaces/api-responses/{challenge-response.ts → challenge-response.d.ts} +5 -6
- package/src/interfaces/api-responses/challenge-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/challenge-response.js +7 -0
- package/src/interfaces/api-responses/challenge-response.js.map +1 -0
- package/src/interfaces/api-responses/{code-count-response.ts → code-count-response.d.ts} +2 -3
- package/src/interfaces/api-responses/code-count-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/code-count-response.js +8 -0
- package/src/interfaces/api-responses/code-count-response.js.map +1 -0
- package/src/interfaces/api-responses/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/api-responses/index.d.ts.map +1 -0
- package/src/interfaces/api-responses/index.js +12 -0
- package/src/interfaces/api-responses/index.js.map +1 -0
- package/src/interfaces/api-responses/{login-response.ts → login-response.d.ts} +4 -5
- package/src/interfaces/api-responses/login-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/login-response.js +8 -0
- package/src/interfaces/api-responses/login-response.js.map +1 -0
- package/src/interfaces/api-responses/{mnemonic-response.ts → mnemonic-response.d.ts} +3 -4
- package/src/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/mnemonic-response.js +7 -0
- package/src/interfaces/api-responses/mnemonic-response.js.map +1 -0
- package/src/interfaces/api-responses/{registration-response.ts → registration-response.d.ts} +5 -6
- package/src/interfaces/api-responses/registration-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/registration-response.js +7 -0
- package/src/interfaces/api-responses/registration-response.js.map +1 -0
- package/src/interfaces/api-responses/{request-user-response.ts → request-user-response.d.ts} +2 -3
- package/src/interfaces/api-responses/request-user-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/request-user-response.js +8 -0
- package/src/interfaces/api-responses/request-user-response.js.map +1 -0
- package/src/interfaces/api-responses/{user-settings-response.ts → user-settings-response.d.ts} +9 -10
- package/src/interfaces/api-responses/user-settings-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/user-settings-response.js +8 -0
- package/src/interfaces/api-responses/user-settings-response.js.map +1 -0
- package/src/interfaces/application.d.ts +39 -0
- package/src/interfaces/application.d.ts.map +1 -0
- package/src/interfaces/application.js +8 -0
- package/src/interfaces/application.js.map +1 -0
- package/src/interfaces/backend-objects/{email-token.ts → email-token.d.ts} +3 -8
- package/src/interfaces/backend-objects/email-token.d.ts.map +1 -0
- package/src/interfaces/backend-objects/email-token.js +8 -0
- package/src/interfaces/backend-objects/email-token.js.map +1 -0
- package/src/interfaces/backend-objects/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/backend-objects/index.d.ts.map +1 -0
- package/src/interfaces/backend-objects/index.js +8 -0
- package/src/interfaces/backend-objects/index.js.map +1 -0
- package/src/interfaces/backend-objects/{request-user.ts → request-user.d.ts} +2 -6
- package/src/interfaces/backend-objects/request-user.d.ts.map +1 -0
- package/src/interfaces/backend-objects/request-user.js +8 -0
- package/src/interfaces/backend-objects/request-user.js.map +1 -0
- package/src/interfaces/backend-objects/{role.ts → role.d.ts} +2 -7
- package/src/interfaces/backend-objects/role.d.ts.map +1 -0
- package/src/interfaces/backend-objects/role.js +8 -0
- package/src/interfaces/backend-objects/role.js.map +1 -0
- package/src/interfaces/backend-objects/{user.ts → user.d.ts} +2 -6
- package/src/interfaces/backend-objects/user.d.ts.map +1 -0
- package/src/interfaces/backend-objects/user.js +8 -0
- package/src/interfaces/backend-objects/user.js.map +1 -0
- package/src/interfaces/{checksum-config.ts → checksum-config.d.ts} +3 -3
- package/src/interfaces/checksum-config.d.ts.map +1 -0
- package/src/interfaces/checksum-config.js +8 -0
- package/src/interfaces/checksum-config.js.map +1 -0
- package/src/interfaces/checksum-consts.d.ts +20 -0
- package/src/interfaces/checksum-consts.d.ts.map +1 -0
- package/src/interfaces/checksum-consts.js +8 -0
- package/src/interfaces/checksum-consts.js.map +1 -0
- package/src/interfaces/constants.d.ts +107 -0
- package/src/interfaces/constants.d.ts.map +1 -0
- package/src/interfaces/constants.js +8 -0
- package/src/interfaces/constants.js.map +1 -0
- package/src/interfaces/{controller-config.ts → controller-config.d.ts} +15 -31
- package/src/interfaces/controller-config.d.ts.map +1 -0
- package/src/interfaces/controller-config.js +8 -0
- package/src/interfaces/controller-config.js.map +1 -0
- package/src/interfaces/{create-user-basics.ts → create-user-basics.d.ts} +13 -13
- package/src/interfaces/create-user-basics.d.ts.map +1 -0
- package/src/interfaces/create-user-basics.js +8 -0
- package/src/interfaces/create-user-basics.js.map +1 -0
- package/src/interfaces/{csp-config.ts → csp-config.d.ts} +5 -15
- package/src/interfaces/csp-config.d.ts.map +1 -0
- package/src/interfaces/csp-config.js +23 -0
- package/src/interfaces/csp-config.js.map +1 -0
- package/src/interfaces/{csp-definition.ts → csp-definition.d.ts} +9 -46
- package/src/interfaces/csp-definition.d.ts.map +1 -0
- package/src/interfaces/csp-definition.js +32 -0
- package/src/interfaces/csp-definition.js.map +1 -0
- package/src/interfaces/{db-init-result.ts → db-init-result.d.ts} +2 -3
- package/src/interfaces/db-init-result.d.ts.map +1 -0
- package/src/interfaces/db-init-result.js +8 -0
- package/src/interfaces/db-init-result.js.map +1 -0
- package/src/interfaces/{deep-partial.ts → deep-partial.d.ts} +2 -2
- package/src/interfaces/deep-partial.d.ts.map +1 -0
- package/src/interfaces/deep-partial.js +8 -0
- package/src/interfaces/deep-partial.js.map +1 -0
- package/src/interfaces/{discriminator-collections.ts → discriminator-collections.d.ts} +4 -8
- package/src/interfaces/discriminator-collections.d.ts.map +1 -0
- package/src/interfaces/discriminator-collections.js +8 -0
- package/src/interfaces/discriminator-collections.js.map +1 -0
- package/src/interfaces/email-service.d.ts +21 -0
- package/src/interfaces/email-service.d.ts.map +1 -0
- package/src/interfaces/email-service.js +8 -0
- package/src/interfaces/email-service.js.map +1 -0
- package/src/interfaces/environment-mongo.d.ts +85 -0
- package/src/interfaces/environment-mongo.d.ts.map +1 -0
- package/src/interfaces/environment-mongo.js +8 -0
- package/src/interfaces/environment-mongo.js.map +1 -0
- package/src/interfaces/environment.d.ts +190 -0
- package/src/interfaces/environment.d.ts.map +1 -0
- package/src/interfaces/environment.js +8 -0
- package/src/interfaces/environment.js.map +1 -0
- package/src/interfaces/{failable-result.ts → failable-result.d.ts} +5 -5
- package/src/interfaces/failable-result.d.ts.map +1 -0
- package/src/interfaces/failable-result.js +8 -0
- package/src/interfaces/failable-result.js.map +1 -0
- package/src/interfaces/{fec-consts.ts → fec-consts.d.ts} +3 -3
- package/src/interfaces/fec-consts.d.ts.map +1 -0
- package/src/interfaces/fec-consts.js +8 -0
- package/src/interfaces/fec-consts.js.map +1 -0
- package/src/interfaces/{flexible-csp.ts → flexible-csp.d.ts} +5 -16
- package/src/interfaces/flexible-csp.d.ts.map +1 -0
- package/src/interfaces/flexible-csp.js +24 -0
- package/src/interfaces/flexible-csp.js.map +1 -0
- package/src/interfaces/{handleable-error-options.ts → handleable-error-options.d.ts} +5 -5
- package/src/interfaces/handleable-error-options.d.ts.map +1 -0
- package/src/interfaces/handleable-error-options.js +8 -0
- package/src/interfaces/handleable-error-options.js.map +1 -0
- package/src/interfaces/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/index.d.ts.map +1 -0
- package/src/interfaces/index.js +38 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/jwt-consts.d.ts +20 -0
- package/src/interfaces/jwt-consts.d.ts.map +1 -0
- package/src/interfaces/jwt-consts.js +8 -0
- package/src/interfaces/jwt-consts.js.map +1 -0
- package/src/interfaces/{jwt-sign-response.ts → jwt-sign-response.d.ts} +9 -18
- package/src/interfaces/jwt-sign-response.d.ts.map +1 -0
- package/src/interfaces/jwt-sign-response.js +8 -0
- package/src/interfaces/jwt-sign-response.js.map +1 -0
- package/src/interfaces/models/{email-token.ts → email-token.d.ts} +1 -2
- package/src/interfaces/models/email-token.d.ts.map +1 -0
- package/src/interfaces/models/email-token.js +8 -0
- package/src/interfaces/models/email-token.js.map +1 -0
- package/src/interfaces/models/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/models/index.d.ts.map +1 -0
- package/src/interfaces/models/index.js +11 -0
- package/src/interfaces/models/index.js.map +1 -0
- package/src/interfaces/models/{mnemonic.ts → mnemonic.d.ts} +1 -2
- package/src/interfaces/models/mnemonic.d.ts.map +1 -0
- package/src/interfaces/models/mnemonic.js +8 -0
- package/src/interfaces/models/mnemonic.js.map +1 -0
- package/src/interfaces/models/{role.ts → role.d.ts} +1 -2
- package/src/interfaces/models/role.d.ts.map +1 -0
- package/src/interfaces/models/role.js +8 -0
- package/src/interfaces/models/role.js.map +1 -0
- package/src/interfaces/models/{token-role.ts → token-role.d.ts} +2 -6
- package/src/interfaces/models/token-role.d.ts.map +1 -0
- package/src/interfaces/models/token-role.js +8 -0
- package/src/interfaces/models/token-role.js.map +1 -0
- package/src/interfaces/models/{used-direct-login-token.ts → used-direct-login-token.d.ts} +2 -4
- package/src/interfaces/models/used-direct-login-token.d.ts.map +1 -0
- package/src/interfaces/models/used-direct-login-token.js +8 -0
- package/src/interfaces/models/used-direct-login-token.js.map +1 -0
- package/src/interfaces/models/{user-role.ts → user-role.d.ts} +2 -6
- package/src/interfaces/models/user-role.d.ts.map +1 -0
- package/src/interfaces/models/user-role.js +8 -0
- package/src/interfaces/models/user-role.js.map +1 -0
- package/src/interfaces/models/{user.ts → user.d.ts} +3 -12
- package/src/interfaces/models/user.d.ts.map +1 -0
- package/src/interfaces/models/user.js +8 -0
- package/src/interfaces/models/user.js.map +1 -0
- package/src/interfaces/{mongo-errors.ts → mongo-errors.d.ts} +2 -3
- package/src/interfaces/mongo-errors.d.ts.map +1 -0
- package/src/interfaces/mongo-errors.js +8 -0
- package/src/interfaces/mongo-errors.js.map +1 -0
- package/src/interfaces/request-user.d.ts +67 -0
- package/src/interfaces/request-user.d.ts.map +1 -0
- package/src/interfaces/request-user.js +8 -0
- package/src/interfaces/request-user.js.map +1 -0
- package/src/interfaces/required-string-keys.d.ts +28 -0
- package/src/interfaces/required-string-keys.d.ts.map +1 -0
- package/src/interfaces/required-string-keys.js +8 -0
- package/src/interfaces/required-string-keys.js.map +1 -0
- package/src/interfaces/{schema.ts → schema.d.ts} +22 -28
- package/src/interfaces/schema.d.ts.map +1 -0
- package/src/interfaces/schema.js +8 -0
- package/src/interfaces/schema.js.map +1 -0
- package/src/interfaces/server-init-result.d.ts +45 -0
- package/src/interfaces/server-init-result.d.ts.map +1 -0
- package/src/interfaces/server-init-result.js +8 -0
- package/src/interfaces/server-init-result.js.map +1 -0
- package/src/interfaces/{status-code-response.ts → status-code-response.d.ts} +4 -5
- package/src/interfaces/status-code-response.d.ts.map +1 -0
- package/src/interfaces/status-code-response.js +8 -0
- package/src/interfaces/status-code-response.js.map +1 -0
- package/src/interfaces/{symmetric-encryption-results.ts → symmetric-encryption-results.d.ts} +3 -3
- package/src/interfaces/symmetric-encryption-results.d.ts.map +1 -1
- package/src/interfaces/symmetric-encryption-results.js +5 -0
- package/src/interfaces/symmetric-encryption-results.js.map +1 -1
- package/src/interfaces/{test-environment.ts → test-environment.d.ts} +6 -7
- package/src/interfaces/test-environment.d.ts.map +1 -0
- package/src/interfaces/test-environment.js +8 -0
- package/src/interfaces/test-environment.js.map +1 -0
- package/src/interfaces/{token-response.ts → token-response.d.ts} +2 -3
- package/src/interfaces/token-response.d.ts.map +1 -0
- package/src/interfaces/token-response.js +8 -0
- package/src/interfaces/token-response.js.map +1 -0
- package/src/middleware-utils.d.ts +31 -0
- package/src/middleware-utils.d.ts.map +1 -0
- package/src/middleware-utils.js +117 -0
- package/src/middleware-utils.js.map +1 -0
- package/src/middlewares/authenticate-crypto.d.ts +27 -0
- package/src/middlewares/authenticate-crypto.d.ts.map +1 -0
- package/src/middlewares/authenticate-crypto.js +143 -0
- package/src/middlewares/authenticate-crypto.js.map +1 -0
- package/src/middlewares/authenticate-token.d.ts +34 -0
- package/src/middlewares/authenticate-token.d.ts.map +1 -0
- package/src/middlewares/authenticate-token.js +117 -0
- package/src/middlewares/authenticate-token.js.map +1 -0
- package/src/middlewares/cleanup-crypto.d.ts +16 -0
- package/src/middlewares/cleanup-crypto.d.ts.map +1 -0
- package/src/middlewares/cleanup-crypto.js +41 -0
- package/src/middlewares/cleanup-crypto.js.map +1 -0
- package/src/middlewares/{index.ts → index.d.ts} +1 -0
- package/src/middlewares/index.d.ts.map +1 -0
- package/src/middlewares/index.js +8 -0
- package/src/middlewares/index.js.map +1 -0
- package/src/middlewares/{set-global-context-language.ts → set-global-context-language.d.ts} +2 -24
- package/src/middlewares/set-global-context-language.d.ts.map +1 -0
- package/src/middlewares/set-global-context-language.js +27 -0
- package/src/middlewares/set-global-context-language.js.map +1 -0
- package/src/model-registry.d.ts +79 -0
- package/src/model-registry.d.ts.map +1 -0
- package/src/model-registry.js +97 -0
- package/src/model-registry.js.map +1 -0
- package/src/models/{email-token.ts → email-token.d.ts} +2 -27
- package/src/models/email-token.d.ts.map +1 -0
- package/src/models/email-token.js +16 -0
- package/src/models/email-token.js.map +1 -0
- package/src/models/{index.ts → index.d.ts} +1 -0
- package/src/models/index.d.ts.map +1 -0
- package/src/models/index.js +10 -0
- package/src/models/index.js.map +1 -0
- package/src/models/{mnemonic.ts → mnemonic.d.ts} +2 -20
- package/src/models/mnemonic.d.ts.map +1 -0
- package/src/models/mnemonic.js +27 -0
- package/src/models/mnemonic.js.map +1 -0
- package/src/models/{role.ts → role.d.ts} +2 -16
- package/src/models/role.d.ts.map +1 -0
- package/src/models/role.js +27 -0
- package/src/models/role.js.map +1 -0
- package/src/models/{used-direct-login-token.ts → used-direct-login-token.d.ts} +2 -27
- package/src/models/used-direct-login-token.d.ts.map +1 -0
- package/src/models/used-direct-login-token.js +16 -0
- package/src/models/used-direct-login-token.js.map +1 -0
- package/src/models/{user-role.ts → user-role.d.ts} +2 -19
- package/src/models/user-role.d.ts.map +1 -0
- package/src/models/user-role.js +26 -0
- package/src/models/user-role.js.map +1 -0
- package/src/models/{user.ts → user.d.ts} +2 -20
- package/src/models/user.d.ts.map +1 -0
- package/src/models/user.js +27 -0
- package/src/models/user.js.map +1 -0
- package/src/pipeline/{index.ts → index.d.ts} +1 -0
- package/src/pipeline/index.d.ts.map +1 -0
- package/src/pipeline/index.js +5 -0
- package/src/pipeline/index.js.map +1 -0
- package/src/pipeline/pipeline-builder.d.ts +16 -0
- package/src/pipeline/pipeline-builder.d.ts.map +1 -0
- package/src/pipeline/pipeline-builder.js +26 -0
- package/src/pipeline/pipeline-builder.js.map +1 -0
- package/src/plugins/{index.ts → index.d.ts} +1 -0
- package/src/plugins/index.d.ts.map +1 -0
- package/src/plugins/index.js +6 -0
- package/src/plugins/index.js.map +1 -0
- package/src/plugins/{plugin-interface.ts → plugin-interface.d.ts} +5 -6
- package/src/plugins/plugin-interface.d.ts.map +1 -0
- package/src/plugins/plugin-interface.js +8 -0
- package/src/plugins/plugin-interface.js.map +1 -0
- package/src/plugins/plugin-manager.d.ts +22 -0
- package/src/plugins/plugin-manager.d.ts.map +1 -0
- package/src/plugins/plugin-manager.js +46 -0
- package/src/plugins/plugin-manager.js.map +1 -0
- package/src/registry/email-service-registry.d.ts +49 -0
- package/src/registry/email-service-registry.d.ts.map +1 -0
- package/src/registry/email-service-registry.js +64 -0
- package/src/registry/email-service-registry.js.map +1 -0
- package/src/registry/{index.ts → index.d.ts} +1 -0
- package/src/registry/index.d.ts.map +1 -0
- package/src/registry/index.js +6 -0
- package/src/registry/index.js.map +1 -0
- package/src/responses/{index.ts → index.d.ts} +1 -0
- package/src/responses/index.d.ts.map +1 -0
- package/src/responses/index.js +5 -0
- package/src/responses/index.js.map +1 -0
- package/src/responses/response-builder.d.ts +103 -0
- package/src/responses/response-builder.d.ts.map +1 -0
- package/src/responses/response-builder.js +142 -0
- package/src/responses/response-builder.js.map +1 -0
- package/src/routers/api.d.ts +59 -0
- package/src/routers/api.d.ts.map +1 -0
- package/src/routers/api.js +110 -0
- package/src/routers/api.js.map +1 -0
- package/src/routers/app.d.ts +87 -0
- package/src/routers/app.d.ts.map +1 -0
- package/src/routers/app.js +285 -0
- package/src/routers/app.js.map +1 -0
- package/src/routers/{base.ts → base.d.ts} +11 -19
- package/src/routers/base.d.ts.map +1 -0
- package/src/routers/base.js +31 -0
- package/src/routers/base.js.map +1 -0
- package/src/routers/{index.ts → index.d.ts} +1 -0
- package/src/routers/index.d.ts.map +1 -0
- package/src/routers/index.js +7 -0
- package/src/routers/index.js.map +1 -0
- package/src/routers/router-config.d.ts +35 -0
- package/src/routers/router-config.d.ts.map +1 -0
- package/src/routers/router-config.js +16 -0
- package/src/routers/router-config.js.map +1 -0
- package/src/routing/index.d.ts +2 -0
- package/src/routing/index.d.ts.map +1 -0
- package/src/routing/index.js +5 -0
- package/src/routing/index.js.map +1 -0
- package/src/routing/route-builder.d.ts +121 -0
- package/src/routing/route-builder.d.ts.map +1 -0
- package/src/routing/route-builder.js +167 -0
- package/src/routing/route-builder.js.map +1 -0
- package/src/schemas/email-token.d.ts +65 -0
- package/src/schemas/email-token.d.ts.map +1 -0
- package/src/schemas/email-token.js +68 -0
- package/src/schemas/email-token.js.map +1 -0
- package/src/schemas/{index.ts → index.d.ts} +1 -0
- package/src/schemas/index.d.ts.map +1 -0
- package/src/schemas/index.js +11 -0
- package/src/schemas/index.js.map +1 -0
- package/src/schemas/mnemonic.d.ts +37 -0
- package/src/schemas/mnemonic.d.ts.map +1 -0
- package/src/schemas/mnemonic.js +41 -0
- package/src/schemas/mnemonic.js.map +1 -0
- package/src/schemas/role.d.ts +57 -0
- package/src/schemas/role.d.ts.map +1 -0
- package/src/schemas/role.js +102 -0
- package/src/schemas/role.js.map +1 -0
- package/src/schemas/schema.d.ts +62 -0
- package/src/schemas/schema.d.ts.map +1 -0
- package/src/schemas/schema.js +81 -0
- package/src/schemas/schema.js.map +1 -0
- package/src/schemas/used-direct-login-token.d.ts +49 -0
- package/src/schemas/used-direct-login-token.d.ts.map +1 -0
- package/src/schemas/used-direct-login-token.js +35 -0
- package/src/schemas/used-direct-login-token.js.map +1 -0
- package/src/schemas/user-role.d.ts +52 -0
- package/src/schemas/user-role.d.ts.map +1 -0
- package/src/schemas/user-role.js +67 -0
- package/src/schemas/user-role.js.map +1 -0
- package/src/schemas/user.d.ts +43 -0
- package/src/schemas/user.d.ts.map +1 -0
- package/src/schemas/user.js +214 -0
- package/src/schemas/user.js.map +1 -0
- package/src/services/backup-code.d.ts +80 -0
- package/src/services/backup-code.d.ts.map +1 -0
- package/src/services/backup-code.js +189 -0
- package/src/services/backup-code.js.map +1 -0
- package/src/services/base.d.ts +22 -0
- package/src/services/base.d.ts.map +1 -0
- package/src/services/base.js +26 -0
- package/src/services/base.js.map +1 -0
- package/src/services/checksum.d.ts +90 -0
- package/src/services/checksum.d.ts.map +1 -0
- package/src/services/checksum.js +166 -0
- package/src/services/checksum.js.map +1 -0
- package/src/services/database-initialization.d.ts +138 -0
- package/src/services/database-initialization.d.ts.map +1 -0
- package/src/services/database-initialization.js +904 -0
- package/src/services/database-initialization.js.map +1 -0
- package/src/services/{db-init-cache.ts → db-init-cache.d.ts} +6 -16
- package/src/services/db-init-cache.d.ts.map +1 -0
- package/src/services/db-init-cache.js +7 -0
- package/src/services/db-init-cache.js.map +1 -0
- package/src/services/direct-login-token.d.ts +28 -0
- package/src/services/direct-login-token.d.ts.map +1 -0
- package/src/services/direct-login-token.js +62 -0
- package/src/services/direct-login-token.js.map +1 -0
- package/src/services/dummy-email-service.d.ts +30 -0
- package/src/services/dummy-email-service.d.ts.map +1 -0
- package/src/services/dummy-email-service.js +35 -0
- package/src/services/dummy-email-service.js.map +1 -0
- package/src/services/fec-usage-example.d.ts +58 -0
- package/src/services/fec-usage-example.d.ts.map +1 -0
- package/src/services/fec-usage-example.js +95 -0
- package/src/services/fec-usage-example.js.map +1 -0
- package/src/services/fec.d.ts +88 -0
- package/src/services/fec.d.ts.map +1 -0
- package/src/services/fec.js +246 -0
- package/src/services/fec.js.map +1 -0
- package/src/services/{index.ts → index.d.ts} +1 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.js +22 -0
- package/src/services/index.js.map +1 -0
- package/src/services/jwt.d.ts +45 -0
- package/src/services/jwt.d.ts.map +1 -0
- package/src/services/jwt.js +105 -0
- package/src/services/jwt.js.map +1 -0
- package/src/services/key-wrapping.d.ts +139 -0
- package/src/services/key-wrapping.d.ts.map +1 -0
- package/src/services/key-wrapping.js +372 -0
- package/src/services/key-wrapping.js.map +1 -0
- package/src/services/mnemonic.d.ts +68 -0
- package/src/services/mnemonic.d.ts.map +1 -0
- package/src/services/mnemonic.js +120 -0
- package/src/services/mnemonic.js.map +1 -0
- package/src/services/request-user.d.ts +45 -0
- package/src/services/request-user.d.ts.map +1 -0
- package/src/services/request-user.js +90 -0
- package/src/services/request-user.js.map +1 -0
- package/src/services/role.d.ts +97 -0
- package/src/services/role.d.ts.map +1 -0
- package/src/services/role.js +289 -0
- package/src/services/role.js.map +1 -0
- package/src/services/symmetric.d.ts +60 -0
- package/src/services/symmetric.d.ts.map +1 -0
- package/src/services/symmetric.js +125 -0
- package/src/services/symmetric.js.map +1 -0
- package/src/services/system-user.d.ts +22 -0
- package/src/services/system-user.d.ts.map +1 -0
- package/src/services/system-user.js +52 -0
- package/src/services/system-user.js.map +1 -0
- package/src/services/user.d.ts +368 -0
- package/src/services/user.d.ts.map +1 -0
- package/src/services/user.js +1470 -0
- package/src/services/user.js.map +1 -0
- package/src/services/xor.d.ts +28 -0
- package/src/services/xor.d.ts.map +1 -0
- package/src/services/xor.js +45 -0
- package/src/services/xor.js.map +1 -0
- package/src/{testing.ts → testing.d.ts} +1 -2
- package/src/testing.d.ts.map +1 -0
- package/src/testing.js +12 -0
- package/src/testing.js.map +1 -0
- package/src/transactions/{index.ts → index.d.ts} +1 -0
- package/src/transactions/index.d.ts.map +1 -0
- package/src/transactions/index.js +5 -0
- package/src/transactions/index.js.map +1 -0
- package/src/transactions/transaction-manager.d.ts +37 -0
- package/src/transactions/transaction-manager.d.ts.map +1 -0
- package/src/transactions/transaction-manager.js +50 -0
- package/src/transactions/transaction-manager.js.map +1 -0
- package/src/types/{app-config.ts → app-config.d.ts} +10 -16
- package/src/types/app-config.d.ts.map +1 -0
- package/src/types/app-config.js +8 -0
- package/src/types/app-config.js.map +1 -0
- package/src/types/{controller-config.ts → controller-config.d.ts} +7 -9
- package/src/types/controller-config.d.ts.map +1 -0
- package/src/types/controller-config.js +8 -0
- package/src/types/controller-config.js.map +1 -0
- package/src/types/{environment-variables.ts → environment-variables.d.ts} +5 -27
- package/src/types/environment-variables.d.ts.map +1 -0
- package/src/types/environment-variables.js +41 -0
- package/src/types/environment-variables.js.map +1 -0
- package/src/types/{index.ts → index.d.ts} +1 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +6 -0
- package/src/types/index.js.map +1 -0
- package/src/types/{mongoose-helpers.ts → mongoose-helpers.d.ts} +2 -3
- package/src/types/mongoose-helpers.d.ts.map +1 -0
- package/src/types/mongoose-helpers.js +8 -0
- package/src/types/mongoose-helpers.js.map +1 -0
- package/src/types.d.ts +118 -0
- package/src/types.d.ts.map +1 -0
- package/src/types.js +28 -0
- package/src/types.js.map +1 -0
- package/src/utils.d.ts +240 -0
- package/src/utils.d.ts.map +1 -0
- package/src/utils.js +843 -0
- package/src/utils.js.map +1 -0
- package/src/validation/{index.ts → index.d.ts} +1 -0
- package/src/validation/index.d.ts.map +1 -0
- package/src/validation/index.js +5 -0
- package/src/validation/index.js.map +1 -0
- package/src/validation/validation-builder.d.ts +71 -0
- package/src/validation/validation-builder.d.ts.map +1 -0
- package/src/validation/validation-builder.js +120 -0
- package/src/validation/validation-builder.js.map +1 -0
- package/LICENSE +0 -21
- package/src/__tests__/fixtures/model-mocks.mock.ts +0 -164
- package/src/__tests__/helpers/application.mock.ts +0 -89
- package/src/__tests__/helpers/setup-test-env.ts +0 -202
- package/src/application-base.ts +0 -548
- package/src/application-concrete.ts +0 -62
- package/src/application.ts +0 -330
- package/src/backup-code.ts +0 -348
- package/src/builders/application-builder.ts +0 -147
- package/src/constants.ts +0 -89
- package/src/container/service-container.ts +0 -85
- package/src/controllers/base.ts +0 -512
- package/src/controllers/user.ts +0 -1734
- package/src/decorators/base-controller.ts +0 -91
- package/src/decorators/controller.ts +0 -152
- package/src/decorators/zod-validation.ts +0 -64
- package/src/defaults.ts +0 -259
- package/src/enumerations/base-model-name.ts +0 -47
- package/src/enumerations/schema-collection.ts +0 -39
- package/src/environment.ts +0 -859
- package/src/errors/express-validation.ts +0 -38
- package/src/errors/invalid-backup-code-version.ts +0 -30
- package/src/errors/invalid-jwt-token.ts +0 -24
- package/src/errors/invalid-model.ts +0 -24
- package/src/errors/invalid-new-password.ts +0 -33
- package/src/errors/invalid-password.ts +0 -28
- package/src/errors/missing-validated-data.ts +0 -55
- package/src/errors/mnemonic-or-password-required.ts +0 -26
- package/src/errors/model-not-registered.ts +0 -24
- package/src/errors/mongoose-validation.ts +0 -56
- package/src/errors/symmetric.ts +0 -53
- package/src/errors/token-expired.ts +0 -24
- package/src/get-language.ts +0 -64
- package/src/get-timezone.ts +0 -76
- package/src/interfaces/application.ts +0 -40
- package/src/interfaces/checksum-consts.ts +0 -23
- package/src/interfaces/constants.ts +0 -114
- package/src/interfaces/email-service.ts +0 -26
- package/src/interfaces/environment-mongo.ts +0 -86
- package/src/interfaces/environment.ts +0 -191
- package/src/interfaces/jwt-consts.ts +0 -33
- package/src/interfaces/request-user.ts +0 -80
- package/src/interfaces/required-string-keys.ts +0 -33
- package/src/interfaces/server-init-result.ts +0 -48
- package/src/middleware-utils.ts +0 -138
- package/src/middlewares/authenticate-crypto.ts +0 -237
- package/src/middlewares/authenticate-token.ts +0 -165
- package/src/middlewares/cleanup-crypto.ts +0 -47
- package/src/model-registry.ts +0 -142
- package/src/pipeline/pipeline-builder.ts +0 -27
- package/src/plugins/plugin-manager.ts +0 -53
- package/src/registry/email-service-registry.ts +0 -76
- package/src/responses/response-builder.ts +0 -166
- package/src/routers/api.ts +0 -233
- package/src/routers/app.ts +0 -395
- package/src/routers/router-config.ts +0 -34
- package/src/routing/index.ts +0 -1
- package/src/routing/route-builder.ts +0 -214
- package/src/schemas/email-token.ts +0 -112
- package/src/schemas/mnemonic.ts +0 -48
- package/src/schemas/role.ts +0 -153
- package/src/schemas/schema.ts +0 -185
- package/src/schemas/used-direct-login-token.ts +0 -58
- package/src/schemas/user-role.ts +0 -93
- package/src/schemas/user.ts +0 -244
- package/src/services/backup-code.ts +0 -327
- package/src/services/base.ts +0 -46
- package/src/services/checksum.ts +0 -189
- package/src/services/database-initialization.ts +0 -1653
- package/src/services/direct-login-token.ts +0 -83
- package/src/services/dummy-email-service.ts +0 -43
- package/src/services/fec-usage-example.ts +0 -123
- package/src/services/fec.ts +0 -399
- package/src/services/jwt.ts +0 -146
- package/src/services/key-wrapping.ts +0 -528
- package/src/services/mnemonic.ts +0 -174
- package/src/services/request-user.ts +0 -127
- package/src/services/role.ts +0 -417
- package/src/services/symmetric.ts +0 -164
- package/src/services/system-user.ts +0 -87
- package/src/services/user.ts +0 -2324
- package/src/services/xor.ts +0 -39
- package/src/transactions/transaction-manager.ts +0 -63
- package/src/types/mongoose-override.d.ts +0 -1
- package/src/types/mongoose.d.ts +0 -1
- package/src/types.ts +0 -189
- package/src/utils.ts +0 -1116
- package/src/validation/validation-builder.ts +0 -155
package/src/model-registry.ts
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Model registry for dynamic Mongoose model management.
|
|
3
|
-
* Singleton registry for registering and retrieving Mongoose models.
|
|
4
|
-
* @module model-registry
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
Model,
|
|
9
|
-
Document as MongooseDocument,
|
|
10
|
-
Schema,
|
|
11
|
-
} from '@digitaldefiance/mongoose-types';
|
|
12
|
-
import { IBaseDocument } from './documents/base';
|
|
13
|
-
import { InvalidModelError } from './errors';
|
|
14
|
-
import { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Model registration information.
|
|
18
|
-
* @template T - Document Data type
|
|
19
|
-
* @template U - Document type extending IBaseDocument
|
|
20
|
-
*/
|
|
21
|
-
export type ModelRegistration<
|
|
22
|
-
TID extends PlatformID,
|
|
23
|
-
T,
|
|
24
|
-
U extends IBaseDocument<T, TID>,
|
|
25
|
-
> = {
|
|
26
|
-
modelName: string;
|
|
27
|
-
schema: Schema;
|
|
28
|
-
model: Model<U>;
|
|
29
|
-
collection: string;
|
|
30
|
-
discriminators?: unknown;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Singleton registry for Mongoose models.
|
|
35
|
-
* Manages model registration and retrieval across the application.
|
|
36
|
-
*/
|
|
37
|
-
class ModelRegistry<TID extends PlatformID> {
|
|
38
|
-
protected static _instance: ModelRegistry<PlatformID>;
|
|
39
|
-
protected _models: Map<
|
|
40
|
-
string,
|
|
41
|
-
ModelRegistration<TID, any, IBaseDocument<any, TID>>
|
|
42
|
-
> = new Map();
|
|
43
|
-
|
|
44
|
-
private constructor() {}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Gets the singleton instance of ModelRegistry.
|
|
48
|
-
* @returns {ModelRegistry} The singleton instance
|
|
49
|
-
*/
|
|
50
|
-
public static get instance(): ModelRegistry<PlatformID> {
|
|
51
|
-
if (!ModelRegistry._instance) {
|
|
52
|
-
ModelRegistry._instance = new ModelRegistry();
|
|
53
|
-
}
|
|
54
|
-
return ModelRegistry._instance;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Registers a model with the registry.
|
|
59
|
-
* @template T - Document ID type
|
|
60
|
-
* @template U - Document type extending IBaseDocument
|
|
61
|
-
* @param {ModelRegistration<T, U>} registration - Model registration information
|
|
62
|
-
*/
|
|
63
|
-
public register<T, U extends IBaseDocument<T, TID>>(
|
|
64
|
-
registration: ModelRegistration<TID, T, U>,
|
|
65
|
-
): void {
|
|
66
|
-
this._models.set(
|
|
67
|
-
registration.modelName,
|
|
68
|
-
registration as ModelRegistration<TID, T, U>,
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Retrieves a model registration by name.
|
|
74
|
-
* @template T - Document ID type
|
|
75
|
-
* @template U - Document type extending IBaseDocument
|
|
76
|
-
* @param {string} modelName - Name of the model
|
|
77
|
-
* @returns {ModelRegistration<T, U>} Model registration
|
|
78
|
-
* @throws {InvalidModelError} If model is not registered
|
|
79
|
-
*/
|
|
80
|
-
public get<T, U extends IBaseDocument<T, TID>>(
|
|
81
|
-
modelName: string,
|
|
82
|
-
): ModelRegistration<TID, T, U> {
|
|
83
|
-
const result = this._models.get(modelName) as ModelRegistration<TID, T, U>;
|
|
84
|
-
if (result === undefined) {
|
|
85
|
-
throw new InvalidModelError(modelName);
|
|
86
|
-
}
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Retrieves a typed Mongoose model by name.
|
|
92
|
-
* @template TDoc - Mongoose document type
|
|
93
|
-
* @param {string} modelName - Name of the model
|
|
94
|
-
* @returns {Model<TDoc>} Mongoose model
|
|
95
|
-
* @throws {InvalidModelError} If model is not registered
|
|
96
|
-
*/
|
|
97
|
-
public getTypedModel<TDoc extends MongooseDocument>(
|
|
98
|
-
modelName: string,
|
|
99
|
-
): Model<TDoc> {
|
|
100
|
-
const result = this._models.get(modelName);
|
|
101
|
-
if (result === undefined) {
|
|
102
|
-
throw new InvalidModelError(modelName);
|
|
103
|
-
}
|
|
104
|
-
return result.model as Model<TDoc>;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Retrieves a typed Mongoose schema by name.
|
|
109
|
-
* @template TDoc - Mongoose document type
|
|
110
|
-
* @param {string} modelName - Name of the model
|
|
111
|
-
* @returns {Schema<TDoc>} Mongoose schema
|
|
112
|
-
* @throws {InvalidModelError} If model is not registered
|
|
113
|
-
*/
|
|
114
|
-
public getTypedSchema<TDoc extends MongooseDocument>(
|
|
115
|
-
modelName: string,
|
|
116
|
-
): Schema<TDoc> {
|
|
117
|
-
const result = this._models.get(modelName);
|
|
118
|
-
if (result === undefined) {
|
|
119
|
-
throw new InvalidModelError(modelName);
|
|
120
|
-
}
|
|
121
|
-
return result.schema as Schema<TDoc>;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Checks if a model is registered.
|
|
126
|
-
* @param {string} modelName - Name of the model
|
|
127
|
-
* @returns {boolean} True if model exists
|
|
128
|
-
*/
|
|
129
|
-
public has(modelName: string): boolean {
|
|
130
|
-
return this._models.has(modelName);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Lists all registered model names.
|
|
135
|
-
* @returns {string[]} Array of model names
|
|
136
|
-
*/
|
|
137
|
-
public list(): string[] {
|
|
138
|
-
return Array.from(this._models.keys());
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export { ModelRegistry };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Pipeline builder for Express middleware chains.
|
|
3
|
-
* Provides fluent API for building middleware pipelines.
|
|
4
|
-
* @module pipeline/pipeline-builder
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { RequestHandler } from 'express';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Builder for creating Express middleware pipelines.
|
|
11
|
-
*/
|
|
12
|
-
export class Pipeline {
|
|
13
|
-
private middleware: RequestHandler[] = [];
|
|
14
|
-
|
|
15
|
-
static create(): Pipeline {
|
|
16
|
-
return new Pipeline();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
use(handler: RequestHandler): this {
|
|
20
|
-
this.middleware.push(handler);
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
build(): RequestHandler[] {
|
|
25
|
-
return this.middleware;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Plugin manager for application plugins.
|
|
3
|
-
* Manages registration and lifecycle of application plugins.
|
|
4
|
-
* @module plugins/plugin-manager
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
8
|
-
import { IApplication } from '../interfaces/application';
|
|
9
|
-
import { IApplicationPlugin } from './plugin-interface';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Manager for application plugins.
|
|
13
|
-
* @template TID - Platform ID type (defaults to Buffer)
|
|
14
|
-
*/
|
|
15
|
-
export class PluginManager<TID extends PlatformID = Buffer> {
|
|
16
|
-
private plugins = new Map<string, IApplicationPlugin<TID>>();
|
|
17
|
-
private initialized = false;
|
|
18
|
-
|
|
19
|
-
register(plugin: IApplicationPlugin<TID>): void {
|
|
20
|
-
if (this.initialized) {
|
|
21
|
-
throw new Error(
|
|
22
|
-
`Cannot register plugin ${plugin.name} after initialization`,
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
if (this.plugins.has(plugin.name)) {
|
|
26
|
-
throw new Error(`Plugin ${plugin.name} already registered`);
|
|
27
|
-
}
|
|
28
|
-
this.plugins.set(plugin.name, plugin);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async initAll(app: IApplication<TID>): Promise<void> {
|
|
32
|
-
for (const plugin of this.plugins.values()) {
|
|
33
|
-
await plugin.init(app);
|
|
34
|
-
}
|
|
35
|
-
this.initialized = true;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async stopAll(): Promise<void> {
|
|
39
|
-
for (const plugin of this.plugins.values()) {
|
|
40
|
-
if (plugin.stop) {
|
|
41
|
-
await plugin.stop();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
get(name: string): IApplicationPlugin<TID> | undefined {
|
|
47
|
-
return this.plugins.get(name);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
has(name: string): boolean {
|
|
51
|
-
return this.plugins.has(name);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Email service registry singleton.
|
|
3
|
-
* Manages email service registration and retrieval.
|
|
4
|
-
* @module registry/email-service-registry
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
SuiteCoreStringKey,
|
|
9
|
-
TranslatableSuiteError,
|
|
10
|
-
} from '@digitaldefiance/suite-core-lib';
|
|
11
|
-
import { IEmailService } from '../interfaces/email-service';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Singleton registry for email service.
|
|
15
|
-
*/
|
|
16
|
-
class EmailServiceRegistry {
|
|
17
|
-
private service?: IEmailService;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Registers an email service.
|
|
21
|
-
* @param {IEmailService} service - Email service implementation
|
|
22
|
-
*/
|
|
23
|
-
setService(service: IEmailService): void {
|
|
24
|
-
this.service = service;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Retrieves the registered email service.
|
|
29
|
-
* @returns {IEmailService} Email service instance
|
|
30
|
-
* @throws {TranslatableSuiteError} If no service is registered
|
|
31
|
-
*/
|
|
32
|
-
getService(): IEmailService {
|
|
33
|
-
if (!this.service) {
|
|
34
|
-
throw new TranslatableSuiteError(
|
|
35
|
-
SuiteCoreStringKey.Error_EmailService_NotConfigured,
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
return this.service;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Check if any email service is registered.
|
|
43
|
-
* @returns {boolean} True if service is registered
|
|
44
|
-
*/
|
|
45
|
-
hasService(): boolean {
|
|
46
|
-
return this.service !== undefined;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Check if the registered service is an instance of a specific class.
|
|
51
|
-
* @template T - Email service type
|
|
52
|
-
* @param {Function} serviceClass - The class/constructor to check against
|
|
53
|
-
* @returns {boolean} True if the registered service is an instance of the given class
|
|
54
|
-
* @example
|
|
55
|
-
* emailServiceRegistry.isServiceType(EmailService) // true if EmailService is registered
|
|
56
|
-
* emailServiceRegistry.isServiceType(DummyEmailService) // true if DummyEmailService is registered
|
|
57
|
-
*/
|
|
58
|
-
isServiceType<T extends IEmailService>(
|
|
59
|
-
serviceClass: new (...args: any[]) => T,
|
|
60
|
-
): boolean {
|
|
61
|
-
return this.service !== undefined && this.service instanceof serviceClass;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Get the constructor name of the registered service.
|
|
66
|
-
* @returns {string | undefined} The name of the service class, or undefined if no service is registered
|
|
67
|
-
*/
|
|
68
|
-
getServiceTypeName(): string | undefined {
|
|
69
|
-
return this.service?.constructor.name;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Singleton instance of EmailServiceRegistry.
|
|
75
|
-
*/
|
|
76
|
-
export const emailServiceRegistry = new EmailServiceRegistry();
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Response builder for API responses.
|
|
3
|
-
* Provides fluent API for building HTTP responses with status codes.
|
|
4
|
-
* @module responses/response-builder
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
|
|
8
|
-
import {
|
|
9
|
-
getSuiteCoreTranslation,
|
|
10
|
-
SuiteCoreStringKey,
|
|
11
|
-
} from '@digitaldefiance/suite-core-lib';
|
|
12
|
-
import { IStatusCodeResponse } from '../interfaces';
|
|
13
|
-
import { ApiResponse } from '../types';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Builder for constructing API responses with fluent interface.
|
|
17
|
-
* @template T - Response type extending ApiResponse
|
|
18
|
-
*/
|
|
19
|
-
export class ResponseBuilder<T extends ApiResponse = ApiResponse> {
|
|
20
|
-
private statusCode: number = 200;
|
|
21
|
-
private responseData: Partial<T> = {};
|
|
22
|
-
private responseHeaders?: Record<string, string>;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Creates a 200 OK response builder.
|
|
26
|
-
* @template T - Response type
|
|
27
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
28
|
-
*/
|
|
29
|
-
static ok<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
30
|
-
return new ResponseBuilder<T>().status(200);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Creates a 201 Created response builder.
|
|
35
|
-
* @template T - Response type
|
|
36
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
37
|
-
*/
|
|
38
|
-
static created<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
39
|
-
return new ResponseBuilder<T>().status(201);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Creates a 202 Accepted response builder.
|
|
44
|
-
* @template T - Response type
|
|
45
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
46
|
-
*/
|
|
47
|
-
static accepted<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
48
|
-
return new ResponseBuilder<T>().status(202);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Creates a 204 No Content response builder.
|
|
53
|
-
* @returns {ResponseBuilder<ApiResponse>} Response builder instance
|
|
54
|
-
*/
|
|
55
|
-
static noContent(): ResponseBuilder<ApiResponse> {
|
|
56
|
-
return new ResponseBuilder<ApiResponse>().status(204);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Creates a 400 Bad Request response builder.
|
|
61
|
-
* @template T - Response type
|
|
62
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
63
|
-
*/
|
|
64
|
-
static badRequest<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
65
|
-
return new ResponseBuilder<T>().status(400);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Creates a 401 Unauthorized response builder.
|
|
70
|
-
* @template T - Response type
|
|
71
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
72
|
-
*/
|
|
73
|
-
static unauthorized<
|
|
74
|
-
T extends ApiResponse = ApiResponse,
|
|
75
|
-
>(): ResponseBuilder<T> {
|
|
76
|
-
return new ResponseBuilder<T>().status(401);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Creates a 403 Forbidden response builder.
|
|
81
|
-
* @template T - Response type
|
|
82
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
83
|
-
*/
|
|
84
|
-
static forbidden<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
85
|
-
return new ResponseBuilder<T>().status(403);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Creates a 404 Not Found response builder.
|
|
90
|
-
* @template T - Response type
|
|
91
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
92
|
-
*/
|
|
93
|
-
static notFound<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
94
|
-
return new ResponseBuilder<T>().status(404);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Creates a 500 Internal Server Error response builder.
|
|
99
|
-
* @template T - Response type
|
|
100
|
-
* @returns {ResponseBuilder<T>} Response builder instance
|
|
101
|
-
*/
|
|
102
|
-
static error<T extends ApiResponse = ApiResponse>(): ResponseBuilder<T> {
|
|
103
|
-
return new ResponseBuilder<T>().status(500);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Sets the HTTP status code.
|
|
108
|
-
* @param {number} code - HTTP status code
|
|
109
|
-
* @returns {this} This builder instance for chaining
|
|
110
|
-
*/
|
|
111
|
-
status(code: number): this {
|
|
112
|
-
this.statusCode = code;
|
|
113
|
-
return this;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Sets a translatable message on the response.
|
|
118
|
-
* @param {SuiteCoreStringKey} key - Translation key
|
|
119
|
-
* @param {Record<string, string>} [params] - Translation parameters
|
|
120
|
-
* @param {string} [language] - Target language
|
|
121
|
-
* @returns {this} This builder instance for chaining
|
|
122
|
-
*/
|
|
123
|
-
message(
|
|
124
|
-
key: SuiteCoreStringKey,
|
|
125
|
-
params?: Record<string, string>,
|
|
126
|
-
language?: string,
|
|
127
|
-
): this {
|
|
128
|
-
(this.responseData as T & { message?: string }).message =
|
|
129
|
-
getSuiteCoreTranslation(key, params, language as CoreLanguageCode);
|
|
130
|
-
return this;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Sets response data.
|
|
135
|
-
* @param {Partial<T>} data - Response data to merge
|
|
136
|
-
* @returns {this} This builder instance for chaining
|
|
137
|
-
*/
|
|
138
|
-
data(data: Partial<T>): this {
|
|
139
|
-
this.responseData = { ...this.responseData, ...data };
|
|
140
|
-
return this;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Sets response headers.
|
|
145
|
-
* @param {Record<string, string>} headers - HTTP headers
|
|
146
|
-
* @returns {this} This builder instance for chaining
|
|
147
|
-
*/
|
|
148
|
-
headers(headers: Record<string, string>): this {
|
|
149
|
-
this.responseHeaders = headers;
|
|
150
|
-
return this;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Builds the final response object.
|
|
155
|
-
* @returns {IStatusCodeResponse<T>} Complete response with status code and headers
|
|
156
|
-
*/
|
|
157
|
-
build(): IStatusCodeResponse<T> {
|
|
158
|
-
return {
|
|
159
|
-
statusCode: this.statusCode,
|
|
160
|
-
response: this.responseData as T,
|
|
161
|
-
...(this.responseHeaders ? { headers: this.responseHeaders } : {}),
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export const Response = ResponseBuilder;
|
package/src/routers/api.ts
DELETED
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview API router configuration with dependency injection and service registration.
|
|
3
|
-
* Manages user controller and all required services for API endpoints.
|
|
4
|
-
* @module routers/api
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { IECIESConfig } from '@digitaldefiance/ecies-lib';
|
|
8
|
-
import { ECIESService, PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
9
|
-
import {
|
|
10
|
-
ITokenRole,
|
|
11
|
-
ITokenUser,
|
|
12
|
-
IUserBase,
|
|
13
|
-
} from '@digitaldefiance/suite-core-lib';
|
|
14
|
-
import { ServiceKeys } from '../container';
|
|
15
|
-
import { UserController } from '../controllers/user';
|
|
16
|
-
import { IBaseDocument } from '../documents';
|
|
17
|
-
import { Environment } from '../environment';
|
|
18
|
-
import { IConstants } from '../interfaces';
|
|
19
|
-
import { IApplication } from '../interfaces/application';
|
|
20
|
-
import { IEmailService } from '../interfaces/email-service';
|
|
21
|
-
import { emailServiceRegistry } from '../registry';
|
|
22
|
-
import { BackupCodeService } from '../services/backup-code';
|
|
23
|
-
import { JwtService } from '../services/jwt';
|
|
24
|
-
import { KeyWrappingService } from '../services/key-wrapping';
|
|
25
|
-
import { RoleService } from '../services/role';
|
|
26
|
-
import { UserService } from '../services/user';
|
|
27
|
-
import { BaseRouter } from './base';
|
|
28
|
-
import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Router for the API endpoints.
|
|
32
|
-
* Manages user controller and registers all required services via dependency injection.
|
|
33
|
-
* @template TID Platform-specific ID type
|
|
34
|
-
* @template TDate Date type
|
|
35
|
-
* @template TLanguage Site language string literal type
|
|
36
|
-
* @template TAccountStatus Account status string literal type
|
|
37
|
-
* @template TUser User base type
|
|
38
|
-
* @template TTokenRole Token role type
|
|
39
|
-
* @template TBaseDocument Base document type
|
|
40
|
-
* @template TTokenUser Token user type
|
|
41
|
-
* @template TConstants Constants type
|
|
42
|
-
* @template TEnvironment Environment type
|
|
43
|
-
* @template TApplication Application type
|
|
44
|
-
*/
|
|
45
|
-
export class ApiRouter<
|
|
46
|
-
TID extends PlatformID,
|
|
47
|
-
TDate extends Date,
|
|
48
|
-
TLanguage extends CoreLanguageCode,
|
|
49
|
-
TAccountStatus extends string,
|
|
50
|
-
TUser extends IUserBase<TID, TDate, TLanguage, TAccountStatus> = IUserBase<
|
|
51
|
-
TID,
|
|
52
|
-
TDate,
|
|
53
|
-
TLanguage,
|
|
54
|
-
TAccountStatus
|
|
55
|
-
>,
|
|
56
|
-
TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>,
|
|
57
|
-
TBaseDocument extends IBaseDocument<any, TID> = IBaseDocument<any, TID>,
|
|
58
|
-
TTokenUser extends ITokenUser = ITokenUser,
|
|
59
|
-
TConstants extends IConstants = IConstants,
|
|
60
|
-
TEnvironment extends Environment<TID> = Environment<TID>,
|
|
61
|
-
TApplication extends IApplication<TID> = IApplication<TID>,
|
|
62
|
-
> extends BaseRouter<TID, TApplication> {
|
|
63
|
-
/** User controller for handling user-related API endpoints */
|
|
64
|
-
private readonly userController: UserController<
|
|
65
|
-
TID,
|
|
66
|
-
TDate,
|
|
67
|
-
TLanguage,
|
|
68
|
-
TAccountStatus,
|
|
69
|
-
TUser,
|
|
70
|
-
TTokenRole,
|
|
71
|
-
TTokenUser,
|
|
72
|
-
TApplication
|
|
73
|
-
>;
|
|
74
|
-
/** JWT service for token generation and validation */
|
|
75
|
-
private readonly jwtService: JwtService<
|
|
76
|
-
TID,
|
|
77
|
-
TDate,
|
|
78
|
-
TTokenRole,
|
|
79
|
-
TTokenUser,
|
|
80
|
-
TApplication
|
|
81
|
-
>;
|
|
82
|
-
/** Email service for sending emails */
|
|
83
|
-
private readonly emailService: IEmailService;
|
|
84
|
-
/** User service for user management operations */
|
|
85
|
-
private readonly userService: UserService<
|
|
86
|
-
any,
|
|
87
|
-
TID,
|
|
88
|
-
TDate,
|
|
89
|
-
TLanguage,
|
|
90
|
-
TAccountStatus,
|
|
91
|
-
TEnvironment,
|
|
92
|
-
TConstants,
|
|
93
|
-
TBaseDocument,
|
|
94
|
-
TUser,
|
|
95
|
-
TTokenRole,
|
|
96
|
-
TApplication
|
|
97
|
-
>;
|
|
98
|
-
/** Role service for role management operations */
|
|
99
|
-
private readonly roleService: RoleService<TID, TDate, TTokenRole>;
|
|
100
|
-
/** Key wrapping service for password-based encryption */
|
|
101
|
-
private readonly keyWrappingService: KeyWrappingService;
|
|
102
|
-
/** ECIES service for elliptic curve encryption */
|
|
103
|
-
private readonly eciesService: ECIESService<TID>;
|
|
104
|
-
/** Backup code service for generating and validating backup codes */
|
|
105
|
-
private readonly backupCodeService: BackupCodeService<
|
|
106
|
-
TID,
|
|
107
|
-
TDate,
|
|
108
|
-
TTokenRole,
|
|
109
|
-
TApplication
|
|
110
|
-
>;
|
|
111
|
-
/**
|
|
112
|
-
* Creates a new API router instance.
|
|
113
|
-
* Registers all required services and initializes the user controller.
|
|
114
|
-
* @param application Application instance with database connection and configuration
|
|
115
|
-
*/
|
|
116
|
-
constructor(application: TApplication) {
|
|
117
|
-
super(application);
|
|
118
|
-
this.registerServices();
|
|
119
|
-
this.jwtService = application.services.get(ServiceKeys.JWT);
|
|
120
|
-
this.roleService = application.services.get(ServiceKeys.ROLE);
|
|
121
|
-
this.emailService = application.services.get(ServiceKeys.EMAIL);
|
|
122
|
-
this.keyWrappingService = application.services.get(
|
|
123
|
-
ServiceKeys.KEY_WRAPPING,
|
|
124
|
-
);
|
|
125
|
-
this.eciesService = application.services.get(ServiceKeys.ECIES);
|
|
126
|
-
this.backupCodeService = application.services.get(ServiceKeys.BACKUP_CODE);
|
|
127
|
-
this.userService = application.services.get(ServiceKeys.USER);
|
|
128
|
-
this.userController = new UserController<
|
|
129
|
-
TID,
|
|
130
|
-
TDate,
|
|
131
|
-
TLanguage,
|
|
132
|
-
TAccountStatus,
|
|
133
|
-
TUser,
|
|
134
|
-
TTokenRole,
|
|
135
|
-
TTokenUser,
|
|
136
|
-
TApplication
|
|
137
|
-
>(
|
|
138
|
-
application,
|
|
139
|
-
this.jwtService,
|
|
140
|
-
this.userService,
|
|
141
|
-
this.backupCodeService,
|
|
142
|
-
this.roleService,
|
|
143
|
-
this.eciesService,
|
|
144
|
-
);
|
|
145
|
-
this.router.use('/user', this.userController.router);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Registers all required services in the application service container.
|
|
150
|
-
* Services are registered as singletons and lazily instantiated.
|
|
151
|
-
* @private
|
|
152
|
-
*/
|
|
153
|
-
private registerServices(): void {
|
|
154
|
-
const app = this.application;
|
|
155
|
-
|
|
156
|
-
if (!app.services.has(ServiceKeys.JWT)) {
|
|
157
|
-
app.services.register(
|
|
158
|
-
ServiceKeys.JWT,
|
|
159
|
-
() =>
|
|
160
|
-
new JwtService<TID, TDate, TTokenRole, TTokenUser, TApplication>(app),
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
if (!app.services.has(ServiceKeys.ROLE)) {
|
|
164
|
-
app.services.register(
|
|
165
|
-
ServiceKeys.ROLE,
|
|
166
|
-
() => new RoleService<TID, TDate, TTokenRole>(app),
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
if (!app.services.has(ServiceKeys.EMAIL)) {
|
|
170
|
-
app.services.register(ServiceKeys.EMAIL, () =>
|
|
171
|
-
emailServiceRegistry.getService(),
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
if (!app.services.has(ServiceKeys.KEY_WRAPPING)) {
|
|
175
|
-
app.services.register(
|
|
176
|
-
ServiceKeys.KEY_WRAPPING,
|
|
177
|
-
() => new KeyWrappingService(),
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
if (!app.services.has(ServiceKeys.ECIES)) {
|
|
181
|
-
app.services.register(ServiceKeys.ECIES, () => {
|
|
182
|
-
const config: IECIESConfig = {
|
|
183
|
-
curveName: app.constants.ECIES.CURVE_NAME,
|
|
184
|
-
primaryKeyDerivationPath:
|
|
185
|
-
app.constants.ECIES.PRIMARY_KEY_DERIVATION_PATH,
|
|
186
|
-
mnemonicStrength: app.constants.ECIES.MNEMONIC_STRENGTH,
|
|
187
|
-
symmetricAlgorithm:
|
|
188
|
-
app.constants.ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
|
|
189
|
-
symmetricKeyBits: app.constants.ECIES.SYMMETRIC.KEY_BITS,
|
|
190
|
-
symmetricKeyMode: app.constants.ECIES.SYMMETRIC.MODE,
|
|
191
|
-
};
|
|
192
|
-
return new ECIESService(config);
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
if (!app.services.has(ServiceKeys.BACKUP_CODE)) {
|
|
196
|
-
app.services.register(
|
|
197
|
-
ServiceKeys.BACKUP_CODE,
|
|
198
|
-
() =>
|
|
199
|
-
new BackupCodeService<TID, TDate, TTokenRole, TApplication>(
|
|
200
|
-
app,
|
|
201
|
-
app.services.get(ServiceKeys.ECIES),
|
|
202
|
-
app.services.get(ServiceKeys.KEY_WRAPPING),
|
|
203
|
-
app.services.get(ServiceKeys.ROLE),
|
|
204
|
-
),
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
if (!app.services.has(ServiceKeys.USER)) {
|
|
208
|
-
app.services.register(
|
|
209
|
-
ServiceKeys.USER,
|
|
210
|
-
() =>
|
|
211
|
-
new UserService<
|
|
212
|
-
any,
|
|
213
|
-
TID,
|
|
214
|
-
TDate,
|
|
215
|
-
TLanguage,
|
|
216
|
-
TAccountStatus,
|
|
217
|
-
TEnvironment,
|
|
218
|
-
TConstants,
|
|
219
|
-
TBaseDocument,
|
|
220
|
-
TUser,
|
|
221
|
-
TTokenRole,
|
|
222
|
-
TApplication
|
|
223
|
-
>(
|
|
224
|
-
app,
|
|
225
|
-
app.services.get(ServiceKeys.ROLE),
|
|
226
|
-
app.services.get(ServiceKeys.EMAIL),
|
|
227
|
-
app.services.get(ServiceKeys.KEY_WRAPPING),
|
|
228
|
-
app.services.get(ServiceKeys.BACKUP_CODE),
|
|
229
|
-
),
|
|
230
|
-
);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|