@digitaldefiance/node-express-suite 3.7.5 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -6
- package/package.json +9 -8
- 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 +212 -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 +649 -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 +66 -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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-code-response.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/status-code-response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,WAAW;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Status code response wrapper interface.
|
|
4
|
+
* Wraps API responses with HTTP status codes and optional headers.
|
|
5
|
+
* @module interfaces/status-code-response
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=status-code-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-code-response.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/status-code-response.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
package/src/interfaces/{symmetric-encryption-results.ts → symmetric-encryption-results.d.ts}
RENAMED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Defines structure for symmetric encryption operation results.
|
|
4
4
|
* @module interfaces/symmetric-encryption-results
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
* Results of symmetric encryption operation.
|
|
9
8
|
* @property {Buffer} encryptedData - Encrypted data buffer
|
|
10
9
|
* @property {Buffer} key - Encryption key used
|
|
11
10
|
*/
|
|
12
11
|
export interface ISymmetricEncryptionResults {
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
encryptedData: Buffer;
|
|
13
|
+
key: Buffer;
|
|
15
14
|
}
|
|
15
|
+
//# sourceMappingURL=symmetric-encryption-results.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symmetric-encryption-results.d.ts","sourceRoot":"","sources":["symmetric-encryption-results.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
1
|
+
{"version":3,"file":"symmetric-encryption-results.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/symmetric-encryption-results.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Symmetric encryption results interface.
|
|
4
|
+
* Defines structure for symmetric encryption operation results.
|
|
5
|
+
* @module interfaces/symmetric-encryption-results
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
//# sourceMappingURL=symmetric-encryption-results.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symmetric-encryption-results.js","sourceRoot":"","sources":["symmetric-encryption-results.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"symmetric-encryption-results.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/symmetric-encryption-results.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -3,21 +3,20 @@
|
|
|
3
3
|
* Defines structure for test environment with in-memory MongoDB and initialized accounts.
|
|
4
4
|
* @module interfaces/test-environment
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
6
|
import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
8
7
|
import { MongoMemoryReplSet } from 'mongodb-memory-server';
|
|
9
8
|
import { IApplication } from './application';
|
|
10
9
|
import { IServerInitResult } from './server-init-result';
|
|
11
|
-
|
|
12
10
|
/**
|
|
13
11
|
* Test environment configuration.
|
|
14
12
|
* Contains application instance, in-memory MongoDB, and test account data.
|
|
15
13
|
* @template TID - Platform ID type (defaults to Buffer)
|
|
16
14
|
*/
|
|
17
15
|
export interface ITestEnvironment<TID extends PlatformID = Buffer> {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
application: IApplication<TID>;
|
|
17
|
+
mongoServer: MongoMemoryReplSet;
|
|
18
|
+
mongoUri: string;
|
|
19
|
+
accountData: IServerInitResult<TID>;
|
|
20
|
+
dbName: string;
|
|
23
21
|
}
|
|
22
|
+
//# sourceMappingURL=test-environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-environment.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/test-environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM;IAC/D,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Test environment interface.
|
|
4
|
+
* Defines structure for test environment with in-memory MongoDB and initialized accounts.
|
|
5
|
+
* @module interfaces/test-environment
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=test-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-environment.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/test-environment.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
* Extends API message response with JWT token.
|
|
4
4
|
* @module interfaces/token-response
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
6
|
import { IApiMessageResponse } from './api-message-response';
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* API response containing authentication token.
|
|
11
9
|
* @extends IApiMessageResponse
|
|
12
10
|
* @property {string} token - JWT authentication token
|
|
13
11
|
*/
|
|
14
12
|
export interface IApiTokenResponse extends IApiMessageResponse {
|
|
15
|
-
|
|
13
|
+
token: string;
|
|
16
14
|
}
|
|
15
|
+
//# sourceMappingURL=token-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-response.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/token-response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Token response interface for authentication.
|
|
4
|
+
* Extends API message response with JWT token.
|
|
5
|
+
* @module interfaces/token-response
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=token-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-response.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/interfaces/token-response.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Middleware initialization utilities.
|
|
3
|
+
* Configures Express middleware including Helmet, CORS, and body parsers.
|
|
4
|
+
* @module middleware-utils
|
|
5
|
+
*/
|
|
6
|
+
import cors from 'cors';
|
|
7
|
+
import { Application } from 'express';
|
|
8
|
+
import { HelmetOptions } from 'helmet';
|
|
9
|
+
import { ISimpleCSPDef } from './interfaces/csp-definition';
|
|
10
|
+
/**
|
|
11
|
+
* Creates a CORS options delegate function.
|
|
12
|
+
* @param {string[]} corsWhitelist - Array of allowed origins
|
|
13
|
+
* @returns {Function} CORS options delegate
|
|
14
|
+
*/
|
|
15
|
+
export declare const corsOptionsDelegate: (corsWhitelist: string[]) => (req: cors.CorsRequest, callback: (error: Error | null, options: cors.CorsOptions | undefined) => void) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Type guard to check if object is HelmetOptions.
|
|
18
|
+
* @param {unknown} obj - Object to check
|
|
19
|
+
* @returns {boolean} True if object is HelmetOptions
|
|
20
|
+
*/
|
|
21
|
+
export declare const isHelmetOptions: (obj: unknown) => obj is HelmetOptions;
|
|
22
|
+
/**
|
|
23
|
+
* Initializes Express middleware stack.
|
|
24
|
+
* Configures Helmet for security headers, CORS, and body parsers.
|
|
25
|
+
* @param {Application} app - Express application instance
|
|
26
|
+
* @param {string[]} corsWhitelist - Array of allowed CORS origins
|
|
27
|
+
* @param {ISimpleCSPDef | HelmetOptions} csp - CSP configuration or Helmet options
|
|
28
|
+
* @throws {TranslatableSuiteError} If invalid CSP configuration provided
|
|
29
|
+
*/
|
|
30
|
+
export declare const initMiddleware: (app: Application, corsWhitelist: string[], csp: ISimpleCSPDef | HelmetOptions) => void;
|
|
31
|
+
//# sourceMappingURL=middleware-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware-utils.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/middleware-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;AACjB,OAAe,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAkB,MAAM,6BAA6B,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,eAAe,MAAM,EAAE,MAEvD,KAAK,IAAI,CAAC,WAAW,EACrB,UAAU,CACR,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,OAAO,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,KAClC,IAAI,SAoBZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,aAYrD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,WAAW,EAChB,eAAe,MAAM,EAAE,EACvB,KAAK,aAAa,GAAG,aAAa,KACjC,IAiDF,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Middleware initialization utilities.
|
|
4
|
+
* Configures Express middleware including Helmet, CORS, and body parsers.
|
|
5
|
+
* @module middleware-utils
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.initMiddleware = exports.isHelmetOptions = exports.corsOptionsDelegate = void 0;
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
11
|
+
const cors_1 = tslib_1.__importDefault(require("cors"));
|
|
12
|
+
const crypto_1 = require("crypto");
|
|
13
|
+
const express_1 = require("express");
|
|
14
|
+
const helmet_1 = tslib_1.__importDefault(require("helmet"));
|
|
15
|
+
const csp_definition_1 = require("./interfaces/csp-definition");
|
|
16
|
+
/**
|
|
17
|
+
* Creates a CORS options delegate function.
|
|
18
|
+
* @param {string[]} corsWhitelist - Array of allowed origins
|
|
19
|
+
* @returns {Function} CORS options delegate
|
|
20
|
+
*/
|
|
21
|
+
const corsOptionsDelegate = (corsWhitelist) => {
|
|
22
|
+
return (req, callback) => {
|
|
23
|
+
let corsOptions;
|
|
24
|
+
const origin = req.headers.origin;
|
|
25
|
+
if (origin &&
|
|
26
|
+
corsWhitelist.find((w) => {
|
|
27
|
+
if (w instanceof RegExp) {
|
|
28
|
+
return w.test(origin);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return w === origin;
|
|
32
|
+
}
|
|
33
|
+
})) {
|
|
34
|
+
corsOptions = { origin: true };
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
corsOptions = { origin: false };
|
|
38
|
+
}
|
|
39
|
+
callback(null, corsOptions);
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
exports.corsOptionsDelegate = corsOptionsDelegate;
|
|
43
|
+
/**
|
|
44
|
+
* Type guard to check if object is HelmetOptions.
|
|
45
|
+
* @param {unknown} obj - Object to check
|
|
46
|
+
* @returns {boolean} True if object is HelmetOptions
|
|
47
|
+
*/
|
|
48
|
+
const isHelmetOptions = (obj) => {
|
|
49
|
+
// A very basic check; in real scenarios, you might want to be more thorough
|
|
50
|
+
return !!(obj &&
|
|
51
|
+
typeof obj === 'object' &&
|
|
52
|
+
('contentSecurityPolicy' in obj ||
|
|
53
|
+
'crossOriginEmbedderPolicy' in obj ||
|
|
54
|
+
'crossOriginOpenerPolicy' in obj ||
|
|
55
|
+
'crossOriginResourcePolicy' in obj ||
|
|
56
|
+
'originAgentCluster' in obj ||
|
|
57
|
+
'referrerPolicy' in obj));
|
|
58
|
+
};
|
|
59
|
+
exports.isHelmetOptions = isHelmetOptions;
|
|
60
|
+
/**
|
|
61
|
+
* Initializes Express middleware stack.
|
|
62
|
+
* Configures Helmet for security headers, CORS, and body parsers.
|
|
63
|
+
* @param {Application} app - Express application instance
|
|
64
|
+
* @param {string[]} corsWhitelist - Array of allowed CORS origins
|
|
65
|
+
* @param {ISimpleCSPDef | HelmetOptions} csp - CSP configuration or Helmet options
|
|
66
|
+
* @throws {TranslatableSuiteError} If invalid CSP configuration provided
|
|
67
|
+
*/
|
|
68
|
+
const initMiddleware = (app, corsWhitelist, csp) => {
|
|
69
|
+
// Helmet helps you secure your Express apps by setting various HTTP headers
|
|
70
|
+
// CSP nonce
|
|
71
|
+
app.use((req, res, next) => {
|
|
72
|
+
res.locals['cspNonce'] = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
73
|
+
next();
|
|
74
|
+
});
|
|
75
|
+
if ((0, csp_definition_1.isSimpleCSPDef)(csp)) {
|
|
76
|
+
app.use((0, helmet_1.default)({
|
|
77
|
+
contentSecurityPolicy: {
|
|
78
|
+
directives: {
|
|
79
|
+
defaultSrc: ["'self'", ...csp.defaultSrc],
|
|
80
|
+
imgSrc: ["'self'", 'data:', 'blob:', ...csp.imgSrc],
|
|
81
|
+
connectSrc: ["'self'", ...csp.connectSrc],
|
|
82
|
+
scriptSrc: [
|
|
83
|
+
"'self'",
|
|
84
|
+
//"'unsafe-inline'",
|
|
85
|
+
"'strict-dynamic'",
|
|
86
|
+
(req, res) => {
|
|
87
|
+
const response = res;
|
|
88
|
+
return `'nonce-${response.locals['cspNonce']}'`;
|
|
89
|
+
},
|
|
90
|
+
...csp.scriptSrc,
|
|
91
|
+
],
|
|
92
|
+
styleSrc: [
|
|
93
|
+
"'self'",
|
|
94
|
+
// "'unsafe-inline'",
|
|
95
|
+
...csp.styleSrc,
|
|
96
|
+
],
|
|
97
|
+
fontSrc: ["'self'", ...csp.fontSrc],
|
|
98
|
+
frameSrc: ["'self'", ...csp.frameSrc],
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
else if ((0, exports.isHelmetOptions)(csp)) {
|
|
104
|
+
app.use((0, helmet_1.default)(csp));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Error_InvalidCspOrHelmetOptionsProvided);
|
|
108
|
+
}
|
|
109
|
+
// Enable CORS
|
|
110
|
+
app.use((0, cors_1.default)((0, exports.corsOptionsDelegate)(corsWhitelist)));
|
|
111
|
+
// Parse incoming requests with JSON payloads
|
|
112
|
+
app.use((0, express_1.json)());
|
|
113
|
+
// Parse incoming requests with urlencoded payloads
|
|
114
|
+
app.use((0, express_1.urlencoded)({ extended: true }));
|
|
115
|
+
};
|
|
116
|
+
exports.initMiddleware = initMiddleware;
|
|
117
|
+
//# sourceMappingURL=middleware-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware-utils.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/middleware-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Cryptographic authentication middleware for operations requiring private keys.
|
|
3
|
+
* Validates mnemonic or password to unlock user's private key for sensitive operations.
|
|
4
|
+
* @module middlewares/authenticate-crypto
|
|
5
|
+
*/
|
|
6
|
+
import { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
7
|
+
import { AccountStatus } from '@digitaldefiance/suite-core-lib';
|
|
8
|
+
import { NextFunction, Request, Response } from 'express';
|
|
9
|
+
import { IApplication } from '../interfaces/application';
|
|
10
|
+
/**
|
|
11
|
+
* Express middleware for cryptographic authentication.
|
|
12
|
+
* Requires mnemonic or password in request body to unlock user's private key.
|
|
13
|
+
* Attaches authenticated BackendMember with private key to req.eciesUser.
|
|
14
|
+
* Used for operations requiring cryptographic signing or decryption.
|
|
15
|
+
* @template TID - Platform ID type (defaults to Buffer)
|
|
16
|
+
* @template TAccountStatus - Account status type (defaults to AccountStatus)
|
|
17
|
+
* @param {IApplication<TID>} application - Application instance
|
|
18
|
+
* @param {Request} req - Express request object
|
|
19
|
+
* @param {Response} res - Express response object
|
|
20
|
+
* @param {NextFunction} next - Express next function
|
|
21
|
+
* @param {TAccountStatus} [activeStatusValue] - Expected active account status
|
|
22
|
+
* @returns {Promise<Response | void>} Response or void if successful
|
|
23
|
+
* @throws {InvalidCredentialsError} When credentials are invalid
|
|
24
|
+
* @throws {InvalidPasswordError} When password is incorrect
|
|
25
|
+
*/
|
|
26
|
+
export declare function authenticateCrypto<TID extends PlatformID = Buffer, TAccountStatus extends string = AccountStatus>(application: IApplication<TID>, req: Request, res: Response, next: NextFunction, activeStatusValue?: TAccountStatus): Promise<Response | void>;
|
|
27
|
+
//# sourceMappingURL=authenticate-crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate-crypto.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAEL,UAAU,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,aAAa,EAId,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,cAAc,SAAS,MAAM,GAAG,aAAa,EAE7C,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,EAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,EAClB,iBAAiB,GAAE,cAAuD,GACzE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyL1B"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Cryptographic authentication middleware for operations requiring private keys.
|
|
4
|
+
* Validates mnemonic or password to unlock user's private key for sensitive operations.
|
|
5
|
+
* @module middlewares/authenticate-crypto
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.authenticateCrypto = authenticateCrypto;
|
|
9
|
+
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
10
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
11
|
+
const container_1 = require("../container");
|
|
12
|
+
const enumerations_1 = require("../enumerations");
|
|
13
|
+
const errors_1 = require("../errors");
|
|
14
|
+
const utils_1 = require("../utils");
|
|
15
|
+
/**
|
|
16
|
+
* Express middleware for cryptographic authentication.
|
|
17
|
+
* Requires mnemonic or password in request body to unlock user's private key.
|
|
18
|
+
* Attaches authenticated BackendMember with private key to req.eciesUser.
|
|
19
|
+
* Used for operations requiring cryptographic signing or decryption.
|
|
20
|
+
* @template TID - Platform ID type (defaults to Buffer)
|
|
21
|
+
* @template TAccountStatus - Account status type (defaults to AccountStatus)
|
|
22
|
+
* @param {IApplication<TID>} application - Application instance
|
|
23
|
+
* @param {Request} req - Express request object
|
|
24
|
+
* @param {Response} res - Express response object
|
|
25
|
+
* @param {NextFunction} next - Express next function
|
|
26
|
+
* @param {TAccountStatus} [activeStatusValue] - Expected active account status
|
|
27
|
+
* @returns {Promise<Response | void>} Response or void if successful
|
|
28
|
+
* @throws {InvalidCredentialsError} When credentials are invalid
|
|
29
|
+
* @throws {InvalidPasswordError} When password is incorrect
|
|
30
|
+
*/
|
|
31
|
+
async function authenticateCrypto(application, req, res, next, activeStatusValue = suite_core_lib_1.AccountStatus.Active) {
|
|
32
|
+
if (!req.user) {
|
|
33
|
+
return res.status(401).send(
|
|
34
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
35
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken));
|
|
36
|
+
}
|
|
37
|
+
// Try validatedBody first (if validation has run), then fall back to raw body
|
|
38
|
+
// Note: This middleware runs BEFORE validation, so validatedBody may not exist yet
|
|
39
|
+
const validatedBody = req
|
|
40
|
+
.validatedBody;
|
|
41
|
+
const rawBody = req.body;
|
|
42
|
+
const sourceBody = validatedBody ?? rawBody;
|
|
43
|
+
if (!sourceBody) {
|
|
44
|
+
return res.status(400).send({
|
|
45
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
46
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const mnemonic = typeof sourceBody['mnemonic'] === 'string'
|
|
50
|
+
? sourceBody['mnemonic']
|
|
51
|
+
: undefined;
|
|
52
|
+
const password =
|
|
53
|
+
// amazonq-ignore-next-line false positive
|
|
54
|
+
typeof sourceBody['password'] === 'string'
|
|
55
|
+
? sourceBody['password']
|
|
56
|
+
: undefined;
|
|
57
|
+
if (!mnemonic && !password) {
|
|
58
|
+
return res.status(400).send({
|
|
59
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
60
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const UserModel = application.getModel(enumerations_1.BaseModelName.User);
|
|
64
|
+
const userService = application.services.get(container_1.ServiceKeys.USER);
|
|
65
|
+
try {
|
|
66
|
+
return await (0, utils_1.withTransaction)(application.db.connection, application.environment.mongo.useTransactions, undefined, async (sess) => {
|
|
67
|
+
const userDoc = await UserModel.findById(req.user.id)
|
|
68
|
+
.session(sess ?? null)
|
|
69
|
+
.exec();
|
|
70
|
+
if (!userDoc || userDoc.accountStatus !== activeStatusValue) {
|
|
71
|
+
return res.status(403).send(
|
|
72
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
73
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
|
|
74
|
+
}
|
|
75
|
+
// Ensure we're only authenticating the currently logged-in user
|
|
76
|
+
if (userDoc._id.toString() !== req.user.id) {
|
|
77
|
+
return res.status(403).send(
|
|
78
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
79
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
|
|
80
|
+
}
|
|
81
|
+
let loginResult;
|
|
82
|
+
if (mnemonic) {
|
|
83
|
+
// Authenticate with mnemonic
|
|
84
|
+
const userMnemonic = new ecies_lib_1.SecureString(mnemonic);
|
|
85
|
+
try {
|
|
86
|
+
loginResult = await userService.loginWithMnemonic(userDoc.email, userMnemonic, sess);
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
userMnemonic.dispose();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (password) {
|
|
93
|
+
// Authenticate with password
|
|
94
|
+
loginResult = await userService.loginWithPassword(userDoc.email, password, sess);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Should not happen due to earlier guard; keeps TypeScript happy
|
|
98
|
+
return res.status(400).send({
|
|
99
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
100
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_MnemonicOrPasswordRequired),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Double-check authenticated user matches logged-in user
|
|
104
|
+
if (loginResult.userDoc._id.toString() !== req.user.id) {
|
|
105
|
+
return res.status(403).send(
|
|
106
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
107
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
|
|
108
|
+
}
|
|
109
|
+
// Attach the fully authenticated member (with private key) to the request
|
|
110
|
+
req.eciesUser = loginResult.userMember;
|
|
111
|
+
// Do not attach the admin user to the request; it's a process-wide singleton
|
|
112
|
+
// and must not be disposed as part of request cleanup.
|
|
113
|
+
next();
|
|
114
|
+
return;
|
|
115
|
+
}, {
|
|
116
|
+
timeoutMs: application.environment.mongo.transactionTimeout,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
if (err instanceof suite_core_lib_1.InvalidCredentialsError ||
|
|
121
|
+
err instanceof errors_1.InvalidPasswordError) {
|
|
122
|
+
// amazonq-ignore-next-line false positive
|
|
123
|
+
console.error('Crypto authentication failed:', `userId=${String(req.user?.id || 'unknown').replace(/[\r\n]/g, '')} hasPassword=${!!password} hasMnemonic=${!!mnemonic}`);
|
|
124
|
+
return res.status(401).send({
|
|
125
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
126
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
const sanitizedErr = err instanceof Error
|
|
130
|
+
? err.message.replace(/[\r\n]/g, ' ')
|
|
131
|
+
: String(err).replace(/[\r\n]/g, ' ');
|
|
132
|
+
console.error(`${(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_UnexpectedErrorInAuthenticateCrypto)}:`, sanitizedErr);
|
|
133
|
+
if (err instanceof Error && err.stack) {
|
|
134
|
+
console.error(`${(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_StackTrace)}:`, err.stack);
|
|
135
|
+
}
|
|
136
|
+
return res.status(500).send({
|
|
137
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
138
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
139
|
+
error: err,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=authenticate-crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate-crypto.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview JWT token authentication middleware.
|
|
3
|
+
* Validates bearer tokens, loads user data, and sets up request context.
|
|
4
|
+
* @module middlewares/authenticate-token
|
|
5
|
+
*/
|
|
6
|
+
import { ITokenRole, ITokenUser } from '@digitaldefiance/suite-core-lib';
|
|
7
|
+
import { NextFunction, Request, Response } from 'express';
|
|
8
|
+
import { IncomingHttpHeaders } from 'http';
|
|
9
|
+
import { IApplication } from '../interfaces/application';
|
|
10
|
+
import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
11
|
+
/**
|
|
12
|
+
* Extracts bearer token from HTTP request headers.
|
|
13
|
+
* @param {IncomingHttpHeaders} headers - HTTP request headers
|
|
14
|
+
* @returns {string | null} Bearer token if found, null otherwise
|
|
15
|
+
*/
|
|
16
|
+
export declare function findAuthToken(headers: IncomingHttpHeaders): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Express middleware for JWT token authentication.
|
|
19
|
+
* Validates token, loads user from database, checks account status,
|
|
20
|
+
* and populates req.user with authenticated user data.
|
|
21
|
+
* @template TID - Platform ID type (defaults to Buffer)
|
|
22
|
+
* @template D - Date type (defaults to Date)
|
|
23
|
+
* @template TTokenRole - Token role interface type
|
|
24
|
+
* @template TTokenUser - Token user interface type
|
|
25
|
+
* @template TApplication - Application interface type
|
|
26
|
+
* @param {TApplication} application - Application instance
|
|
27
|
+
* @param {Request} req - Express request object
|
|
28
|
+
* @param {Response} res - Express response object
|
|
29
|
+
* @param {NextFunction} next - Express next function
|
|
30
|
+
* @returns {Promise<Response>} Response object
|
|
31
|
+
* @throws {TokenExpiredError} When token has expired
|
|
32
|
+
*/
|
|
33
|
+
export declare function authenticateToken<TID extends PlatformID = Buffer, D extends Date = Date, TTokenRole extends ITokenRole<TID, D> = ITokenRole<TID, D>, TTokenUser extends ITokenUser = ITokenUser, TApplication extends IApplication<TID> = IApplication<TID>>(application: TApplication, req: Request, res: Response, next: NextFunction): Promise<Response>;
|
|
34
|
+
//# sourceMappingURL=authenticate-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate-token.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/middlewares/authenticate-token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGL,UAAU,EACV,UAAU,EAEX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAalE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,CAAC,SAAS,IAAI,GAAG,IAAI,EACrB,UAAU,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAC1D,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1C,YAAY,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAE1D,WAAW,EAAE,YAAY,EACzB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAkFnB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview JWT token authentication middleware.
|
|
4
|
+
* Validates bearer tokens, loads user data, and sets up request context.
|
|
5
|
+
* @module middlewares/authenticate-token
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.findAuthToken = findAuthToken;
|
|
9
|
+
exports.authenticateToken = authenticateToken;
|
|
10
|
+
const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
11
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
12
|
+
const base_model_name_1 = require("../enumerations/base-model-name");
|
|
13
|
+
const token_expired_1 = require("../errors/token-expired");
|
|
14
|
+
const jwt_1 = require("../services/jwt");
|
|
15
|
+
const request_user_1 = require("../services/request-user");
|
|
16
|
+
const role_1 = require("../services/role");
|
|
17
|
+
const utils_1 = require("../utils");
|
|
18
|
+
// Helper to create Timezone from the same module instance as GlobalActiveContext
|
|
19
|
+
function createTimezone(tz) {
|
|
20
|
+
const context = i18n_lib_1.GlobalActiveContext.getInstance();
|
|
21
|
+
const TimezoneConstructor = context.adminTimezone
|
|
22
|
+
.constructor;
|
|
23
|
+
return new TimezoneConstructor(tz);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extracts bearer token from HTTP request headers.
|
|
27
|
+
* @param {IncomingHttpHeaders} headers - HTTP request headers
|
|
28
|
+
* @returns {string | null} Bearer token if found, null otherwise
|
|
29
|
+
*/
|
|
30
|
+
function findAuthToken(headers) {
|
|
31
|
+
const authHeader = headers['Authorization'] || headers['authorization'];
|
|
32
|
+
if (authHeader && typeof authHeader === 'string') {
|
|
33
|
+
const parts = authHeader.split(' ');
|
|
34
|
+
if (parts.length === 2 && parts[0].toLowerCase() === 'bearer') {
|
|
35
|
+
return parts[1];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Express middleware for JWT token authentication.
|
|
42
|
+
* Validates token, loads user from database, checks account status,
|
|
43
|
+
* and populates req.user with authenticated user data.
|
|
44
|
+
* @template TID - Platform ID type (defaults to Buffer)
|
|
45
|
+
* @template D - Date type (defaults to Date)
|
|
46
|
+
* @template TTokenRole - Token role interface type
|
|
47
|
+
* @template TTokenUser - Token user interface type
|
|
48
|
+
* @template TApplication - Application interface type
|
|
49
|
+
* @param {TApplication} application - Application instance
|
|
50
|
+
* @param {Request} req - Express request object
|
|
51
|
+
* @param {Response} res - Express response object
|
|
52
|
+
* @param {NextFunction} next - Express next function
|
|
53
|
+
* @returns {Promise<Response>} Response object
|
|
54
|
+
* @throws {TokenExpiredError} When token has expired
|
|
55
|
+
*/
|
|
56
|
+
async function authenticateToken(application, req, res, next) {
|
|
57
|
+
const UserModel = application.getModel(base_model_name_1.BaseModelName.User);
|
|
58
|
+
const token = findAuthToken(req.headers);
|
|
59
|
+
if (token == null) {
|
|
60
|
+
return res
|
|
61
|
+
.status(401)
|
|
62
|
+
.send((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken));
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
return await (0, utils_1.withTransaction)(application.db.connection, application.environment.mongo.useTransactions, undefined, async (sess) => {
|
|
66
|
+
const jwtService = new jwt_1.JwtService(application);
|
|
67
|
+
const user = await jwtService.verifyToken(token);
|
|
68
|
+
if (user === null) {
|
|
69
|
+
return res.status(403).send(
|
|
70
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
71
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
|
|
72
|
+
}
|
|
73
|
+
const userDoc = await UserModel.findById(user.userId)
|
|
74
|
+
.select('-password')
|
|
75
|
+
.session(sess ?? null)
|
|
76
|
+
.exec();
|
|
77
|
+
if (!userDoc || userDoc.accountStatus !== suite_core_lib_1.AccountStatus.Active) {
|
|
78
|
+
return res.status(403).send(
|
|
79
|
+
// amazonq-ignore-next-line false positive, hardcoded string
|
|
80
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UserNotFound));
|
|
81
|
+
}
|
|
82
|
+
const roleService = new role_1.RoleService(application);
|
|
83
|
+
const roles = await roleService.getUserRoles(userDoc._id, sess);
|
|
84
|
+
const tokenRoles = roleService.rolesToTokenRoles(roles);
|
|
85
|
+
req.user = request_user_1.RequestUserService.makeRequestUserDTO(userDoc, tokenRoles);
|
|
86
|
+
const context = i18n_lib_1.GlobalActiveContext.getInstance();
|
|
87
|
+
context.userLanguage = userDoc.siteLanguage ?? context.userLanguage;
|
|
88
|
+
context.setLanguageContextSpace('user');
|
|
89
|
+
context.userTimezone = createTimezone(userDoc.timezone);
|
|
90
|
+
next();
|
|
91
|
+
return res;
|
|
92
|
+
}, {
|
|
93
|
+
timeoutMs: application.environment.mongo.transactionTimeout,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (err instanceof token_expired_1.TokenExpiredError) {
|
|
98
|
+
return res.status(401).send({
|
|
99
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_TokenExpired),
|
|
100
|
+
error: err,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else if (err instanceof Error && err.name === 'JsonWebTokenError') {
|
|
104
|
+
return res.status(400).send({
|
|
105
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken),
|
|
106
|
+
error: err,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return res.status(500).send({
|
|
111
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
112
|
+
error: err,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=authenticate-token.js.map
|