@digitaldefiance/node-express-suite 1.0.23 → 1.0.24
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 +4 -0
- package/package.json +8 -7
- package/src/application-base.d.ts +112 -0
- package/src/application-base.d.ts.map +1 -0
- package/src/application-base.js +335 -0
- package/src/application-base.js.map +1 -0
- package/src/application.d.ts +20 -0
- package/src/application.d.ts.map +1 -0
- package/src/application.js +124 -0
- package/src/application.js.map +1 -0
- package/src/backup-code.d.ts +67 -0
- package/src/backup-code.d.ts.map +1 -0
- package/src/backup-code.js +238 -0
- package/src/backup-code.js.map +1 -0
- package/src/constants.d.ts +16 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +54 -0
- package/src/constants.js.map +1 -0
- package/src/controllers/base.d.ts +63 -0
- package/src/controllers/base.d.ts.map +1 -0
- package/src/controllers/base.js +272 -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 +45 -0
- package/src/controllers/user.d.ts.map +1 -0
- package/src/controllers/user.js +748 -0
- package/src/controllers/user.js.map +1 -0
- package/src/decorators/base-controller.d.ts +14 -0
- package/src/decorators/base-controller.d.ts.map +1 -0
- package/src/decorators/base-controller.js +49 -0
- package/src/decorators/base-controller.js.map +1 -0
- package/src/decorators/controller.d.ts +32 -0
- package/src/decorators/controller.d.ts.map +1 -0
- package/src/decorators/controller.js +67 -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 +5 -0
- package/src/decorators/zod-validation.d.ts.map +1 -0
- package/src/decorators/zod-validation.js +47 -0
- package/src/decorators/zod-validation.js.map +1 -0
- package/src/defaults.d.ts +7 -0
- package/src/defaults.d.ts.map +1 -0
- package/src/defaults.js +83 -0
- package/src/defaults.js.map +1 -0
- package/src/documents/base.d.ts +3 -0
- package/src/documents/base.d.ts.map +1 -0
- package/src/documents/base.js +3 -0
- package/src/documents/base.js.map +1 -0
- package/src/documents/email-token.d.ts +8 -0
- package/src/documents/email-token.d.ts.map +1 -0
- package/src/documents/email-token.js +3 -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 -5
- package/src/documents/mnemonic.d.ts.map +1 -0
- package/src/documents/mnemonic.js +3 -0
- package/src/documents/mnemonic.js.map +1 -0
- package/src/documents/{role.ts → role.d.ts} +2 -5
- package/src/documents/role.d.ts.map +1 -0
- package/src/documents/role.js +3 -0
- package/src/documents/role.js.map +1 -0
- package/src/documents/used-direct-login-token.d.ts +5 -0
- package/src/documents/used-direct-login-token.d.ts.map +1 -0
- package/src/documents/used-direct-login-token.js +3 -0
- package/src/documents/used-direct-login-token.js.map +1 -0
- package/src/documents/{user-role.ts → user-role.d.ts} +2 -5
- package/src/documents/user-role.d.ts.map +1 -0
- package/src/documents/user-role.js +3 -0
- package/src/documents/user-role.js.map +1 -0
- package/src/documents/{user.ts → user.d.ts} +2 -4
- package/src/documents/user.d.ts.map +1 -0
- package/src/documents/user.js +3 -0
- package/src/documents/user.js.map +1 -0
- package/src/enumerations/base-model-name.d.ts +38 -0
- package/src/enumerations/base-model-name.d.ts.map +1 -0
- package/src/enumerations/base-model-name.js +34 -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.d.ts +7 -0
- package/src/enumerations/length-encoding-type.d.ts.map +1 -0
- package/src/enumerations/length-encoding-type.js +11 -0
- package/src/enumerations/length-encoding-type.js.map +1 -0
- package/src/enumerations/schema-collection.d.ts +34 -0
- package/src/enumerations/schema-collection.d.ts.map +1 -0
- package/src/enumerations/schema-collection.js +38 -0
- package/src/enumerations/schema-collection.js.map +1 -0
- package/src/enumerations/symmetric-error-type.d.ts +5 -0
- package/src/enumerations/symmetric-error-type.d.ts.map +1 -0
- package/src/enumerations/symmetric-error-type.js +9 -0
- package/src/enumerations/symmetric-error-type.js.map +1 -0
- package/src/environment.d.ts +189 -0
- package/src/environment.d.ts.map +1 -0
- package/src/environment.js +620 -0
- package/src/environment.js.map +1 -0
- package/src/errors/express-validation.d.ts +9 -0
- package/src/errors/express-validation.d.ts.map +1 -0
- package/src/errors/express-validation.js +18 -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 +6 -0
- package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
- package/src/errors/invalid-backup-code-version.js +15 -0
- package/src/errors/invalid-backup-code-version.js.map +1 -0
- package/src/errors/invalid-jwt-token.d.ts +5 -0
- package/src/errors/invalid-jwt-token.d.ts.map +1 -0
- package/src/errors/invalid-jwt-token.js +11 -0
- package/src/errors/invalid-jwt-token.js.map +1 -0
- package/src/errors/invalid-model.d.ts +6 -0
- package/src/errors/invalid-model.d.ts.map +1 -0
- package/src/errors/invalid-model.js +14 -0
- package/src/errors/invalid-model.js.map +1 -0
- package/src/errors/invalid-new-password.d.ts +5 -0
- package/src/errors/invalid-new-password.d.ts.map +1 -0
- package/src/errors/invalid-new-password.js +14 -0
- package/src/errors/invalid-new-password.js.map +1 -0
- package/src/errors/invalid-password.d.ts +5 -0
- package/src/errors/invalid-password.d.ts.map +1 -0
- package/src/errors/invalid-password.js +14 -0
- package/src/errors/invalid-password.js.map +1 -0
- package/src/errors/missing-validated-data.d.ts +7 -0
- package/src/errors/missing-validated-data.d.ts.map +1 -0
- package/src/errors/missing-validated-data.js +36 -0
- package/src/errors/missing-validated-data.js.map +1 -0
- package/src/errors/mnemonic-or-password-required.d.ts +5 -0
- package/src/errors/mnemonic-or-password-required.d.ts.map +1 -0
- package/src/errors/mnemonic-or-password-required.js +13 -0
- package/src/errors/mnemonic-or-password-required.js.map +1 -0
- package/src/errors/model-not-registered.d.ts +5 -0
- package/src/errors/model-not-registered.d.ts.map +1 -0
- package/src/errors/model-not-registered.js +12 -0
- package/src/errors/model-not-registered.js.map +1 -0
- package/src/errors/mongoose-validation.d.ts +11 -0
- package/src/errors/mongoose-validation.d.ts.map +1 -0
- package/src/errors/mongoose-validation.js +17 -0
- package/src/errors/mongoose-validation.js.map +1 -0
- package/src/errors/symmetric.d.ts +8 -0
- package/src/errors/symmetric.d.ts.map +1 -0
- package/src/errors/symmetric.js +23 -0
- package/src/errors/symmetric.js.map +1 -0
- package/src/errors/token-expired.d.ts +5 -0
- package/src/errors/token-expired.d.ts.map +1 -0
- package/src/errors/token-expired.js +11 -0
- package/src/errors/token-expired.js.map +1 -0
- package/src/get-language.d.ts +2 -0
- package/src/get-language.d.ts.map +1 -0
- package/src/get-language.js +30 -0
- package/src/get-language.js.map +1 -0
- package/src/get-timezone.d.ts +3 -0
- package/src/get-timezone.d.ts.map +1 -0
- package/src/get-timezone.js +31 -0
- package/src/get-timezone.js.map +1 -0
- package/src/{index.ts → index.d.ts} +1 -1
- package/src/index.d.ts.map +1 -0
- package/src/index.js +28 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/{api-error-response.ts → api-error-response.d.ts} +2 -2
- package/src/interfaces/api-error-response.d.ts.map +1 -0
- package/src/interfaces/api-error-response.js +3 -0
- package/src/interfaces/api-error-response.js.map +1 -0
- package/src/interfaces/api-express-validation-error-response.d.ts +7 -0
- package/src/interfaces/api-express-validation-error-response.d.ts.map +1 -0
- package/src/interfaces/api-express-validation-error-response.js +3 -0
- package/src/interfaces/api-express-validation-error-response.js.map +1 -0
- package/src/interfaces/api-message-response.d.ts +4 -0
- package/src/interfaces/api-message-response.d.ts.map +1 -0
- package/src/interfaces/api-message-response.js +3 -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 -2
- package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
- package/src/interfaces/api-mongo-validation-error-response.js +3 -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 -2
- package/src/interfaces/api-responses/backup-codes-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/backup-codes-response.js +3 -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} +3 -3
- package/src/interfaces/api-responses/challenge-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/challenge-response.js +3 -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 -2
- package/src/interfaces/api-responses/code-count-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/code-count-response.js +3 -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 +11 -0
- package/src/interfaces/api-responses/index.js.map +1 -0
- package/src/interfaces/api-responses/{login-response.ts → login-response.d.ts} +4 -4
- package/src/interfaces/api-responses/login-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/login-response.js +3 -0
- package/src/interfaces/api-responses/login-response.js.map +1 -0
- package/src/interfaces/api-responses/{mnemonic-response.ts → mnemonic-response.d.ts} +2 -2
- package/src/interfaces/api-responses/mnemonic-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/mnemonic-response.js +3 -0
- package/src/interfaces/api-responses/mnemonic-response.js.map +1 -0
- package/src/interfaces/api-responses/{registration-response.ts → registration-response.d.ts} +3 -3
- package/src/interfaces/api-responses/registration-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/registration-response.js +3 -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 -2
- package/src/interfaces/api-responses/request-user-response.d.ts.map +1 -0
- package/src/interfaces/api-responses/request-user-response.js +3 -0
- package/src/interfaces/api-responses/request-user-response.js.map +1 -0
- package/src/interfaces/{application.ts → application.d.ts} +7 -7
- package/src/interfaces/application.d.ts.map +1 -0
- package/src/interfaces/application.js +3 -0
- package/src/interfaces/application.js.map +1 -0
- package/src/interfaces/backend-objects/email-token.d.ts +4 -0
- package/src/interfaces/backend-objects/email-token.d.ts.map +1 -0
- package/src/interfaces/backend-objects/email-token.js +3 -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 -7
- package/src/interfaces/backend-objects/request-user.d.ts.map +1 -0
- package/src/interfaces/backend-objects/request-user.js +3 -0
- package/src/interfaces/backend-objects/request-user.js.map +1 -0
- package/src/interfaces/backend-objects/{role.ts → role.d.ts} +1 -1
- package/src/interfaces/backend-objects/role.d.ts.map +1 -0
- package/src/interfaces/backend-objects/role.js +3 -0
- package/src/interfaces/backend-objects/role.js.map +1 -0
- package/src/interfaces/backend-objects/user.d.ts +4 -0
- package/src/interfaces/backend-objects/user.d.ts.map +1 -0
- package/src/interfaces/backend-objects/user.js +3 -0
- package/src/interfaces/backend-objects/user.js.map +1 -0
- package/src/interfaces/checksum-config.d.ts +5 -0
- package/src/interfaces/checksum-config.d.ts.map +1 -0
- package/src/interfaces/checksum-config.js +3 -0
- package/src/interfaces/checksum-config.js.map +1 -0
- package/src/interfaces/checksum-consts.d.ts +11 -0
- package/src/interfaces/checksum-consts.d.ts.map +1 -0
- package/src/interfaces/checksum-consts.js +3 -0
- package/src/interfaces/checksum-consts.js.map +1 -0
- package/src/interfaces/{constants.ts → constants.d.ts} +5 -5
- package/src/interfaces/constants.d.ts.map +1 -0
- package/src/interfaces/constants.js +3 -0
- package/src/interfaces/constants.js.map +1 -0
- package/src/interfaces/create-user-basics.d.ts +18 -0
- package/src/interfaces/create-user-basics.d.ts.map +1 -0
- package/src/interfaces/create-user-basics.js +3 -0
- package/src/interfaces/create-user-basics.js.map +1 -0
- package/src/interfaces/csp-config.d.ts +14 -0
- package/src/interfaces/csp-config.d.ts.map +1 -0
- package/src/interfaces/csp-config.js +3 -0
- package/src/interfaces/csp-config.js.map +1 -0
- package/src/interfaces/deep-partial.d.ts +4 -0
- package/src/interfaces/deep-partial.d.ts.map +1 -0
- package/src/interfaces/deep-partial.js +3 -0
- package/src/interfaces/deep-partial.js.map +1 -0
- package/src/interfaces/{discriminator-collections.ts → discriminator-collections.d.ts} +3 -3
- package/src/interfaces/discriminator-collections.d.ts.map +1 -0
- package/src/interfaces/discriminator-collections.js +3 -0
- package/src/interfaces/discriminator-collections.js.map +1 -0
- package/src/interfaces/email-service.d.ts +4 -0
- package/src/interfaces/email-service.d.ts.map +1 -0
- package/src/interfaces/email-service.js +3 -0
- package/src/interfaces/email-service.js.map +1 -0
- package/src/interfaces/environment-mongo.d.ts +76 -0
- package/src/interfaces/environment-mongo.d.ts.map +1 -0
- package/src/interfaces/environment-mongo.js +3 -0
- package/src/interfaces/environment-mongo.js.map +1 -0
- package/src/interfaces/environment.d.ts +181 -0
- package/src/interfaces/environment.d.ts.map +1 -0
- package/src/interfaces/environment.js +3 -0
- package/src/interfaces/environment.js.map +1 -0
- package/src/interfaces/failable-result.d.ts +7 -0
- package/src/interfaces/failable-result.d.ts.map +1 -0
- package/src/interfaces/failable-result.js +3 -0
- package/src/interfaces/failable-result.js.map +1 -0
- package/src/interfaces/fec-consts.d.ts +5 -0
- package/src/interfaces/fec-consts.d.ts.map +1 -0
- package/src/interfaces/fec-consts.js +3 -0
- package/src/interfaces/fec-consts.js.map +1 -0
- package/src/interfaces/handleable-error-options.d.ts +7 -0
- package/src/interfaces/handleable-error-options.d.ts.map +1 -0
- package/src/interfaces/handleable-error-options.js +3 -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 +33 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/jwt-consts.d.ts +11 -0
- package/src/interfaces/jwt-consts.d.ts.map +1 -0
- package/src/interfaces/jwt-consts.js +3 -0
- package/src/interfaces/jwt-consts.js.map +1 -0
- package/src/interfaces/jwt-sign-response.d.ts +11 -0
- package/src/interfaces/jwt-sign-response.d.ts.map +1 -0
- package/src/interfaces/jwt-sign-response.js +3 -0
- package/src/interfaces/jwt-sign-response.js.map +1 -0
- package/src/interfaces/mongo-errors.d.ts +5 -0
- package/src/interfaces/mongo-errors.d.ts.map +1 -0
- package/src/interfaces/mongo-errors.js +3 -0
- package/src/interfaces/mongo-errors.js.map +1 -0
- package/src/interfaces/request-user.d.ts +42 -0
- package/src/interfaces/request-user.d.ts.map +1 -0
- package/src/interfaces/request-user.js +3 -0
- package/src/interfaces/request-user.js.map +1 -0
- package/src/interfaces/required-string-keys.d.ts +22 -0
- package/src/interfaces/required-string-keys.d.ts.map +1 -0
- package/src/interfaces/required-string-keys.js +3 -0
- package/src/interfaces/required-string-keys.js.map +1 -0
- package/src/interfaces/schema.d.ts +29 -0
- package/src/interfaces/schema.d.ts.map +1 -0
- package/src/interfaces/schema.js +3 -0
- package/src/interfaces/schema.js.map +1 -0
- package/src/interfaces/server-init-result.d.ts +35 -0
- package/src/interfaces/server-init-result.d.ts.map +1 -0
- package/src/interfaces/server-init-result.js +3 -0
- package/src/interfaces/server-init-result.js.map +1 -0
- package/src/interfaces/status-code-response.d.ts +7 -0
- package/src/interfaces/status-code-response.d.ts.map +1 -0
- package/src/interfaces/status-code-response.js +3 -0
- package/src/interfaces/status-code-response.js.map +1 -0
- package/src/interfaces/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.map +1 -1
- package/src/interfaces/{token-response.ts → token-response.d.ts} +2 -2
- package/src/interfaces/token-response.d.ts.map +1 -0
- package/src/interfaces/token-response.js +3 -0
- package/src/interfaces/token-response.js.map +1 -0
- package/src/middlewares/authenticate-crypto.d.ts +13 -0
- package/src/middlewares/authenticate-crypto.d.ts.map +1 -0
- package/src/middlewares/authenticate-crypto.js +146 -0
- package/src/middlewares/authenticate-crypto.js.map +1 -0
- package/src/middlewares/authenticate-token.d.ts +24 -0
- package/src/middlewares/authenticate-token.d.ts.map +1 -0
- package/src/middlewares/authenticate-token.js +102 -0
- package/src/middlewares/authenticate-token.js.map +1 -0
- package/src/middlewares/cleanup-crypto.d.ts +7 -0
- package/src/middlewares/cleanup-crypto.d.ts.map +1 -0
- package/src/middlewares/cleanup-crypto.js +32 -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.d.ts +3 -0
- package/src/middlewares/set-global-context-language.d.ts.map +1 -0
- package/src/middlewares/set-global-context-language.js +14 -0
- package/src/middlewares/set-global-context-language.js.map +1 -0
- package/src/middlewares.d.ts +18 -0
- package/src/middlewares.d.ts.map +1 -0
- package/src/middlewares.js +74 -0
- package/src/middlewares.js.map +1 -0
- package/src/model-registry.d.ts +23 -0
- package/src/model-registry.d.ts.map +1 -0
- package/src/model-registry.js +47 -0
- package/src/model-registry.js.map +1 -0
- package/src/models/email-token.d.ts +11 -0
- package/src/models/email-token.d.ts.map +1 -0
- package/src/models/email-token.js +11 -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.d.ts +11 -0
- package/src/models/mnemonic.d.ts.map +1 -0
- package/src/models/mnemonic.js +11 -0
- package/src/models/mnemonic.js.map +1 -0
- package/src/models/role.d.ts +11 -0
- package/src/models/role.d.ts.map +1 -0
- package/src/models/role.js +11 -0
- package/src/models/role.js.map +1 -0
- package/src/models/used-direct-login-token.d.ts +11 -0
- package/src/models/used-direct-login-token.d.ts.map +1 -0
- package/src/models/used-direct-login-token.js +11 -0
- package/src/models/used-direct-login-token.js.map +1 -0
- package/src/models/user-role.d.ts +6 -0
- package/src/models/user-role.d.ts.map +1 -0
- package/src/models/user-role.js +10 -0
- package/src/models/user-role.js.map +1 -0
- package/src/models/user.d.ts +7 -0
- package/src/models/user.d.ts.map +1 -0
- package/src/models/user.js +11 -0
- package/src/models/user.js.map +1 -0
- package/src/registry/email-service-registry.d.ts +9 -0
- package/src/registry/email-service-registry.d.ts.map +1 -0
- package/src/registry/email-service-registry.js +18 -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/routers/api.d.ts +27 -0
- package/src/routers/api.d.ts.map +1 -0
- package/src/routers/api.js +52 -0
- package/src/routers/api.js.map +1 -0
- package/src/routers/app.d.ts +28 -0
- package/src/routers/app.d.ts.map +1 -0
- package/src/routers/app.js +186 -0
- package/src/routers/app.js.map +1 -0
- package/src/routers/base.d.ts +12 -0
- package/src/routers/base.d.ts.map +1 -0
- package/src/routers/base.js +14 -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/schemas/email-token.d.ts +38 -0
- package/src/schemas/email-token.d.ts.map +1 -0
- package/src/schemas/email-token.js +54 -0
- package/src/schemas/email-token.js.map +1 -0
- package/src/schemas/{index.ts → index.d.ts} +2 -1
- 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 +20 -0
- package/src/schemas/mnemonic.d.ts.map +1 -0
- package/src/schemas/mnemonic.js +30 -0
- package/src/schemas/mnemonic.js.map +1 -0
- package/src/schemas/role.d.ts +32 -0
- package/src/schemas/role.d.ts.map +1 -0
- package/src/schemas/role.js +86 -0
- package/src/schemas/role.js.map +1 -0
- package/src/schemas/schema.d.ts +40 -0
- package/src/schemas/schema.d.ts.map +1 -0
- package/src/schemas/schema.js +62 -0
- package/src/schemas/schema.js.map +1 -0
- package/src/schemas/used-direct-login-token.d.ts +27 -0
- package/src/schemas/used-direct-login-token.d.ts.map +1 -0
- package/src/schemas/used-direct-login-token.js +23 -0
- package/src/schemas/used-direct-login-token.js.map +1 -0
- package/src/schemas/user-role.d.ts +29 -0
- package/src/schemas/user-role.d.ts.map +1 -0
- package/src/schemas/user-role.js +54 -0
- package/src/schemas/user-role.js.map +1 -0
- package/src/schemas/user.d.ts +21 -0
- package/src/schemas/user.d.ts.map +1 -0
- package/src/schemas/user.js +176 -0
- package/src/schemas/user.js.map +1 -0
- package/src/services/backup-code.d.ts +78 -0
- package/src/services/backup-code.d.ts.map +1 -0
- package/src/services/backup-code.js +184 -0
- package/src/services/backup-code.js.map +1 -0
- package/src/services/base.d.ts +13 -0
- package/src/services/base.d.ts.map +1 -0
- package/src/services/base.js +15 -0
- package/src/services/base.js.map +1 -0
- package/src/services/checksum.d.ts +67 -0
- package/src/services/checksum.d.ts.map +1 -0
- package/src/services/checksum.js +143 -0
- package/src/services/checksum.js.map +1 -0
- package/src/services/crc.d.ts +87 -0
- package/src/services/crc.d.ts.map +1 -0
- package/src/services/crc.js +198 -0
- package/src/services/crc.js.map +1 -0
- package/src/services/database-initialization.d.ts +105 -0
- package/src/services/database-initialization.d.ts.map +1 -0
- package/src/services/database-initialization.js +782 -0
- package/src/services/database-initialization.js.map +1 -0
- package/src/services/direct-login-token.d.ts +9 -0
- package/src/services/direct-login-token.d.ts.map +1 -0
- package/src/services/direct-login-token.js +41 -0
- package/src/services/direct-login-token.js.map +1 -0
- package/src/services/fec-usage-example.d.ts +38 -0
- package/src/services/fec-usage-example.d.ts.map +1 -0
- package/src/services/fec-usage-example.js +75 -0
- package/src/services/fec-usage-example.js.map +1 -0
- package/src/services/fec.d.ts +46 -0
- package/src/services/fec.d.ts.map +1 -0
- package/src/services/fec.js +192 -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 +33 -0
- package/src/services/jwt.d.ts.map +1 -0
- package/src/services/jwt.js +91 -0
- package/src/services/jwt.js.map +1 -0
- package/src/services/key-wrapping.d.ts +60 -0
- package/src/services/key-wrapping.d.ts.map +1 -0
- package/src/services/key-wrapping.js +311 -0
- package/src/services/key-wrapping.js.map +1 -0
- package/src/services/mnemonic.d.ts +61 -0
- package/src/services/mnemonic.d.ts.map +1 -0
- package/src/services/mnemonic.js +115 -0
- package/src/services/mnemonic.js.map +1 -0
- package/src/services/request-user.d.ts +20 -0
- package/src/services/request-user.d.ts.map +1 -0
- package/src/services/request-user.js +50 -0
- package/src/services/request-user.js.map +1 -0
- package/src/services/role.d.ts +88 -0
- package/src/services/role.d.ts.map +1 -0
- package/src/services/role.js +263 -0
- package/src/services/role.js.map +1 -0
- package/src/services/symmetric.d.ts +42 -0
- package/src/services/symmetric.d.ts.map +1 -0
- package/src/services/symmetric.js +101 -0
- package/src/services/symmetric.js.map +1 -0
- package/src/services/system-user.d.ts +17 -0
- package/src/services/system-user.d.ts.map +1 -0
- package/src/services/system-user.js +46 -0
- package/src/services/system-user.js.map +1 -0
- package/src/services/user.d.ts +320 -0
- package/src/services/user.d.ts.map +1 -0
- package/src/services/user.js +1378 -0
- package/src/services/user.js.map +1 -0
- package/src/services/xor.d.ts +24 -0
- package/src/services/xor.d.ts.map +1 -0
- package/src/services/xor.js +37 -0
- package/src/services/xor.js.map +1 -0
- package/src/types.d.ts +66 -40
- package/src/types.d.ts.map +1 -0
- package/src/types.js +14 -0
- package/src/types.js.map +1 -0
- package/src/utils.d.ts +202 -0
- package/src/utils.d.ts.map +1 -0
- package/src/utils.js +784 -0
- package/src/utils.js.map +1 -0
- package/LICENSE +0 -21
- package/src/application-base.ts +0 -492
- package/src/application.ts +0 -254
- package/src/backup-code.ts +0 -336
- package/src/constants.ts +0 -69
- package/src/controllers/base.ts +0 -440
- package/src/controllers/user.ts +0 -1451
- package/src/decorators/base-controller.ts +0 -61
- package/src/decorators/controller.ts +0 -109
- package/src/decorators/zod-validation.ts +0 -57
- package/src/defaults.ts +0 -94
- package/src/documents/base.ts +0 -7
- package/src/documents/email-token.ts +0 -14
- package/src/documents/used-direct-login-token.ts +0 -7
- package/src/enumerations/base-model-name.ts +0 -41
- package/src/enumerations/length-encoding-type.ts +0 -6
- package/src/enumerations/schema-collection.ts +0 -33
- package/src/enumerations/symmetric-error-type.ts +0 -4
- package/src/environment.ts +0 -770
- package/src/errors/express-validation.ts +0 -21
- package/src/errors/invalid-backup-code-version.ts +0 -14
- package/src/errors/invalid-jwt-token.ts +0 -10
- package/src/errors/invalid-model.ts +0 -11
- package/src/errors/invalid-new-password.ts +0 -18
- package/src/errors/invalid-password.ts +0 -13
- package/src/errors/missing-validated-data.ts +0 -36
- package/src/errors/mnemonic-or-password-required.ts +0 -12
- package/src/errors/model-not-registered.ts +0 -11
- package/src/errors/mongoose-validation.ts +0 -34
- package/src/errors/symmetric.ts +0 -41
- package/src/errors/token-expired.ts +0 -10
- package/src/get-language.ts +0 -53
- package/src/get-timezone.ts +0 -45
- package/src/interfaces/api-express-validation-error-response.ts +0 -8
- package/src/interfaces/api-message-response.ts +0 -3
- package/src/interfaces/backend-objects/email-token.ts +0 -11
- package/src/interfaces/backend-objects/user.ts +0 -9
- package/src/interfaces/checksum-config.ts +0 -4
- package/src/interfaces/checksum-consts.ts +0 -13
- package/src/interfaces/create-user-basics.ts +0 -17
- package/src/interfaces/csp-config.ts +0 -35
- package/src/interfaces/deep-partial.ts +0 -3
- package/src/interfaces/email-service.ts +0 -8
- package/src/interfaces/environment-mongo.ts +0 -76
- package/src/interfaces/environment.ts +0 -181
- package/src/interfaces/failable-result.ts +0 -6
- package/src/interfaces/fec-consts.ts +0 -4
- package/src/interfaces/handleable-error-options.ts +0 -6
- package/src/interfaces/jwt-consts.ts +0 -23
- package/src/interfaces/jwt-sign-response.ts +0 -19
- package/src/interfaces/mongo-errors.ts +0 -5
- package/src/interfaces/request-user.ts +0 -50
- package/src/interfaces/required-string-keys.ts +0 -26
- package/src/interfaces/schema.ts +0 -31
- package/src/interfaces/server-init-result.ts +0 -37
- package/src/interfaces/status-code-response.ts +0 -7
- package/src/interfaces/symmetric-encryption-results.ts +0 -4
- package/src/middlewares/authenticate-crypto.ts +0 -243
- package/src/middlewares/authenticate-token.ts +0 -152
- package/src/middlewares/cleanup-crypto.ts +0 -40
- package/src/middlewares/set-global-context-language.ts +0 -24
- package/src/middlewares.ts +0 -120
- package/src/model-registry.ts +0 -75
- package/src/models/email-token.ts +0 -19
- package/src/models/mnemonic.ts +0 -19
- package/src/models/role.ts +0 -19
- package/src/models/used-direct-login-token.ts +0 -23
- package/src/models/user-role.ts +0 -17
- package/src/models/user.ts +0 -19
- package/src/registry/email-service-registry.ts +0 -24
- package/src/routers/api.ts +0 -151
- package/src/routers/app.ts +0 -258
- package/src/routers/base.ts +0 -17
- package/src/schemas/email-token.ts +0 -91
- package/src/schemas/mnemonic.ts +0 -37
- package/src/schemas/role.ts +0 -127
- package/src/schemas/schema.ts +0 -140
- package/src/schemas/used-direct-login-token.ts +0 -38
- package/src/schemas/user-role.ts +0 -75
- package/src/schemas/user.ts +0 -202
- package/src/services/backup-code.ts +0 -316
- package/src/services/base.ts +0 -33
- package/src/services/checksum.ts +0 -161
- package/src/services/crc.ts +0 -213
- package/src/services/database-initialization.ts +0 -1479
- package/src/services/db-init-cache.d.ts +0 -16
- package/src/services/direct-login-token.ts +0 -62
- package/src/services/fec-usage-example.ts +0 -102
- package/src/services/fec.ts +0 -296
- package/src/services/jwt.ts +0 -134
- package/src/services/key-wrapping.ts +0 -434
- package/src/services/mnemonic.ts +0 -167
- package/src/services/request-user.ts +0 -62
- package/src/services/role.ts +0 -396
- package/src/services/symmetric.ts +0 -139
- package/src/services/system-user.ts +0 -82
- package/src/services/user.ts +0 -2137
- package/src/services/xor.ts +0 -34
- package/src/types.ts +0 -128
- package/src/utils.ts +0 -1022
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BackupCodeService = void 0;
|
|
4
|
+
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
5
|
+
const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
|
|
6
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
const backup_code_1 = require("../backup-code");
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
const invalid_backup_code_version_1 = require("../errors/invalid-backup-code-version");
|
|
11
|
+
const base_1 = require("./base");
|
|
12
|
+
const symmetric_1 = require("./symmetric");
|
|
13
|
+
const system_user_1 = require("./system-user");
|
|
14
|
+
/**
|
|
15
|
+
* Service handling generation, storage, validation, consumption, and recovery using backup codes.
|
|
16
|
+
*
|
|
17
|
+
* v1 scheme:
|
|
18
|
+
* - Code: 32 lowercase alphanumerics (a–z0–9), displayed as 8 groups of 4: xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
|
|
19
|
+
* - Checksum/tag: HKDF-SHA256(codeUtf8, salt, "backup-checksum") → 32 bytes (stored as hex)
|
|
20
|
+
* - KDF for encryption key: Argon2id(codeUtf8, salt) → 32 bytes
|
|
21
|
+
* - Encryption: SymmetricService AEAD (encryptedData must embed IV + authTag + ciphertext)
|
|
22
|
+
* - Wrapping: AEAD blob wrapped with system user's asymmetric key (ECIES)
|
|
23
|
+
*/
|
|
24
|
+
class BackupCodeService extends base_1.BaseService {
|
|
25
|
+
eciesService;
|
|
26
|
+
systemUser;
|
|
27
|
+
keyWrappingService;
|
|
28
|
+
roleService;
|
|
29
|
+
/**
|
|
30
|
+
* Construct a BackupCodeService.
|
|
31
|
+
*/
|
|
32
|
+
constructor(application, eciesService, keyWrappingService, roleService) {
|
|
33
|
+
super(application);
|
|
34
|
+
this.eciesService = eciesService;
|
|
35
|
+
this.keyWrappingService = keyWrappingService;
|
|
36
|
+
this.roleService = roleService;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the lazily-initialized system user for key wrapping/unwrapping.
|
|
40
|
+
*/
|
|
41
|
+
getSystemUser() {
|
|
42
|
+
if (!this.systemUser) {
|
|
43
|
+
this.systemUser = system_user_1.SystemUserService.getSystemUser(this.application.environment);
|
|
44
|
+
}
|
|
45
|
+
return this.systemUser;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Forcibly set the system user (for database initialization)
|
|
49
|
+
* @param user
|
|
50
|
+
*/
|
|
51
|
+
setSystemUser(user) {
|
|
52
|
+
this.systemUser = user;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* v1: Consume (validate and remove) a backup code via constant-time checksum match.
|
|
56
|
+
*/
|
|
57
|
+
useBackupCodeV1(encryptedBackupCodes, backupCode) {
|
|
58
|
+
const normalizedCode = backup_code_1.BackupCode.normalizeCode(backupCode);
|
|
59
|
+
if (!constants_1.Constants.BACKUP_CODES.NormalizedHexRegex.test(normalizedCode)) {
|
|
60
|
+
throw new suite_core_lib_1.InvalidBackupCodeError();
|
|
61
|
+
}
|
|
62
|
+
const codeBytes = Buffer.from(normalizedCode, 'utf8');
|
|
63
|
+
try {
|
|
64
|
+
for (const code of encryptedBackupCodes) {
|
|
65
|
+
if (code.version !== backup_code_1.BackupCode.BackupCodeVersion)
|
|
66
|
+
continue;
|
|
67
|
+
const checksumSalt = Buffer.from(code.checksumSalt, 'hex');
|
|
68
|
+
const expected = backup_code_1.BackupCode.hkdfSha256(codeBytes, checksumSalt, Buffer.from('backup-checksum'), 32);
|
|
69
|
+
if (code.checksum.length === expected.length * 2 &&
|
|
70
|
+
(0, crypto_1.timingSafeEqual)(Buffer.from(code.checksum, 'hex'), expected)) {
|
|
71
|
+
const checksumHex = expected.toString('hex');
|
|
72
|
+
return {
|
|
73
|
+
newCodesArray: encryptedBackupCodes.filter((c) => c.checksum !== checksumHex),
|
|
74
|
+
code,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw new suite_core_lib_1.InvalidBackupCodeError();
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
codeBytes.fill(0);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Consume a backup code by first detecting the version and then dispatching to the appropriate handler.
|
|
86
|
+
*/
|
|
87
|
+
useBackupCode(encryptedBackupCodes, backupCode) {
|
|
88
|
+
const version = backup_code_1.BackupCode.detectBackupCodeVersion(encryptedBackupCodes, backupCode);
|
|
89
|
+
switch (version) {
|
|
90
|
+
case backup_code_1.BackupCode.BackupCodeVersion:
|
|
91
|
+
return this.useBackupCodeV1(encryptedBackupCodes.filter((c) => c.version === backup_code_1.BackupCode.BackupCodeVersion), backupCode);
|
|
92
|
+
default:
|
|
93
|
+
throw new invalid_backup_code_version_1.InvalidBackupCodeVersionError(version);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* v1: Recover a user's private key using a backup code.
|
|
98
|
+
*/
|
|
99
|
+
async recoverKeyWithBackupCodeV1(userDoc, backupCode, newPassword, session) {
|
|
100
|
+
const normalizedCode = backup_code_1.BackupCode.normalizeCode(backupCode);
|
|
101
|
+
return await this.withTransaction(async (sess) => {
|
|
102
|
+
const { code, newCodesArray } = this.useBackupCodeV1(userDoc.backupCodes, normalizedCode);
|
|
103
|
+
userDoc.backupCodes = newCodesArray;
|
|
104
|
+
let decryptionKey;
|
|
105
|
+
try {
|
|
106
|
+
const adminMember = this.getSystemUser();
|
|
107
|
+
decryptionKey = await backup_code_1.BackupCode.getBackupKeyV1(code.checksumSalt, normalizedCode);
|
|
108
|
+
const privateKeyUnwrapped = adminMember.decryptData(Buffer.from(code.encrypted, 'hex'));
|
|
109
|
+
const decryptedPrivateKey = new ecies_lib_1.SecureBuffer(symmetric_1.SymmetricService.decryptBuffer(privateKeyUnwrapped, decryptionKey));
|
|
110
|
+
const memberType = await this.roleService.getMemberType(userDoc, session);
|
|
111
|
+
const user = new node_ecies_lib_1.Member(this.eciesService, memberType, userDoc.username, new ecies_lib_1.EmailString(userDoc.email), Buffer.from(userDoc.publicKey, 'hex'), decryptedPrivateKey, undefined, userDoc._id, new Date(userDoc.createdAt), new Date(userDoc.updatedAt));
|
|
112
|
+
if (!newPassword) {
|
|
113
|
+
await userDoc.save({ session: sess });
|
|
114
|
+
return {
|
|
115
|
+
userDoc,
|
|
116
|
+
user,
|
|
117
|
+
codeCount: newCodesArray.length,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const wrapped = this.keyWrappingService.wrapSecret(decryptedPrivateKey, newPassword);
|
|
121
|
+
userDoc.passwordWrappedPrivateKey = wrapped;
|
|
122
|
+
await userDoc.save({ session: sess });
|
|
123
|
+
return { userDoc, user, codeCount: newCodesArray.length };
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
if (decryptionKey)
|
|
127
|
+
decryptionKey.fill(0);
|
|
128
|
+
}
|
|
129
|
+
}, session, {
|
|
130
|
+
timeoutMs: this.application.environment.mongo.transactionTimeout * 5,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Recover a user's private key using a backup code (version-dispatched).
|
|
135
|
+
*/
|
|
136
|
+
async recoverKeyWithBackupCode(userDoc, backupCode, newPassword, session) {
|
|
137
|
+
const version = backup_code_1.BackupCode.detectBackupCodeVersion(userDoc.backupCodes, backupCode);
|
|
138
|
+
switch (version) {
|
|
139
|
+
case backup_code_1.BackupCode.BackupCodeVersion:
|
|
140
|
+
return this.recoverKeyWithBackupCodeV1(userDoc, backupCode, newPassword, session);
|
|
141
|
+
default:
|
|
142
|
+
throw new invalid_backup_code_version_1.InvalidBackupCodeVersionError(version);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Rewrap system-wrapped AEAD blobs from old system key to new one without touching inner AEAD.
|
|
147
|
+
*/
|
|
148
|
+
async rewrapAllUsersBackupCodes(fetchBatch, saveUser, oldSystem, newSystem, options) {
|
|
149
|
+
const batchSize = options?.batchSize ?? 500;
|
|
150
|
+
let processed = 0;
|
|
151
|
+
let afterId;
|
|
152
|
+
for (;;) {
|
|
153
|
+
const users = await fetchBatch(afterId, batchSize);
|
|
154
|
+
if (!users.length)
|
|
155
|
+
break;
|
|
156
|
+
for (const user of users) {
|
|
157
|
+
let modified = false;
|
|
158
|
+
for (const bc of user.backupCodes ?? []) {
|
|
159
|
+
try {
|
|
160
|
+
const sealed = oldSystem.decryptData(Buffer.from(bc.encrypted, 'hex'));
|
|
161
|
+
const rewrapped = newSystem.encryptData(sealed).toString('hex');
|
|
162
|
+
if (rewrapped !== bc.encrypted) {
|
|
163
|
+
bc.encrypted = rewrapped;
|
|
164
|
+
modified = true;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
throw new Error(`Failed to rewrap backup code for user ${user._id}: ${e.message}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (modified) {
|
|
172
|
+
await saveUser(user);
|
|
173
|
+
processed++;
|
|
174
|
+
options?.onProgress?.(processed);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
afterId =
|
|
178
|
+
users[users.length - 1]?._id ?? undefined;
|
|
179
|
+
}
|
|
180
|
+
return processed;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.BackupCodeService = BackupCodeService;
|
|
184
|
+
//# sourceMappingURL=backup-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-code.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/backup-code.ts"],"names":[],"mappings":";;;AAAA,0DAKoC;AACpC,oEAGyC;AACzC,oEAIyC;AACzC,mCAAyC;AAEzC,gDAA4C;AAC5C,4CAAyD;AAEzD,uFAAsF;AAEtF,iCAAqC;AAGrC,2CAA+C;AAC/C,+CAAkD;AAIlD;;;;;;;;;GASG;AACH,MAAa,iBAKX,SAAQ,kBAAW;IACF,YAAY,CAAe;IACpC,UAAU,CAAiB;IAClB,kBAAkB,CAAqB;IACvC,WAAW,CAAgC;IAE5D;;OAEG;IACH,YACE,WAAyB,EACzB,YAA0B,EAC1B,kBAAsC,EACtC,WAA0C;QAE1C,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,+BAAiB,CAAC,aAAa,CAC/C,IAAI,CAAC,WAAW,CAAC,WAAW,CAC7B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,IAAmB;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,eAAe,CACpB,oBAAwC,EACxC,UAAkB;QAElB,MAAM,cAAc,GAAG,wBAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,qBAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,uCAAsB,EAAE,CAAC;QACrC,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,OAAO,KAAK,wBAAU,CAAC,iBAAiB;oBAAE,SAAS;gBAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC3D,MAAM,QAAQ,GAAG,wBAAU,CAAC,UAAU,CACpC,SAAS,EACT,YAAY,EACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAC9B,EAAE,CACH,CAAC;gBACF,IACE,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC5C,IAAA,wBAAe,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,EAC5D,CAAC;oBACD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC7C,OAAO;wBACL,aAAa,EAAE,oBAAoB,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAClC;wBACD,IAAI;qBACL,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,IAAI,uCAAsB,EAAE,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACI,aAAa,CAClB,oBAAwC,EACxC,UAAkB;QAElB,MAAM,OAAO,GAAG,wBAAU,CAAC,uBAAuB,CAChD,oBAAoB,EACpB,UAAU,CACX,CAAC;QACF,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,wBAAU,CAAC,iBAAiB;gBAC/B,OAAO,IAAI,CAAC,eAAe,CACzB,oBAAoB,CAAC,MAAM,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,wBAAU,CAAC,iBAAiB,CAClD,EACD,UAAU,CACX,CAAC;YACJ;gBACE,MAAM,IAAI,2DAA6B,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,0BAA0B,CACrC,OAAsB,EACtB,UAAkB,EAClB,WAA0B,EAC1B,OAAuB;QAMvB,MAAM,cAAc,GAAG,wBAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,MAAM,IAAI,CAAC,eAAe,CAK/B,KAAK,EAAE,IAA+B,EAAE,EAAE;YACxC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,CAClD,OAAO,CAAC,WAAW,EACnB,cAAc,CACf,CAAC;YACF,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC;YAEpC,IAAI,aAAiC,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzC,aAAa,GAAG,MAAM,wBAAU,CAAC,cAAc,CAC7C,IAAI,CAAC,YAAY,EACjB,cAAc,CACf,CAAC;gBACF,MAAM,mBAAmB,GAAG,WAAW,CAAC,WAAW,CACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CACnC,CAAC;gBACF,MAAM,mBAAmB,GAAG,IAAI,wBAAY,CAC1C,4BAAgB,CAAC,aAAa,CAAC,mBAAmB,EAAE,aAAa,CAAC,CACnE,CAAC;gBAEF,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CACjE,OAAO,EACP,OAAO,CACR,CAAC;gBACF,MAAM,IAAI,GAAG,IAAI,uBAAa,CAC5B,IAAI,CAAC,YAAY,EACjB,UAAU,EACV,OAAO,CAAC,QAAQ,EAChB,IAAI,uBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EACrC,mBAAmB,EACnB,SAAS,EACT,OAAO,CAAC,GAAG,EACX,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAC5B,CAAC;gBAEF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtC,OAAO;wBACL,OAAO;wBACP,IAAI;wBACJ,SAAS,EAAE,aAAa,CAAC,MAAM;qBAChC,CAAC;gBACJ,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAChD,mBAAmB,EACnB,WAAW,CACZ,CAAC;gBACF,OAAO,CAAC,yBAAyB,GAAG,OAAO,CAAC;gBAC5C,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5D,CAAC;oBAAS,CAAC;gBACT,IAAI,aAAa;oBAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,EACD,OAAO,EACP;YACE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC;SACrE,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,wBAAwB,CACnC,OAAsB,EACtB,UAAkB,EAClB,WAA0B,EAC1B,OAAuB;QAMvB,MAAM,OAAO,GAAG,wBAAU,CAAC,uBAAuB,CAChD,OAAO,CAAC,WAAW,EACnB,UAAU,CACX,CAAC;QACF,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,wBAAU,CAAC,iBAAiB;gBAC/B,OAAO,IAAI,CAAC,0BAA0B,CACpC,OAAO,EACP,UAAU,EACV,WAAW,EACX,OAAO,CACR,CAAC;YACJ;gBACE,MAAM,IAAI,2DAA6B,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,yBAAyB,CACpC,UAA0E,EAC1E,QAAgD,EAChD,SAAwB,EACxB,SAAwB,EACxB,OAAsE;QAEtE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC;QAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,OAA2B,CAAC;QAEhC,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM;YAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;oBACxC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CACjC,CAAC;wBACF,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAChE,IAAI,SAAS,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;4BAC/B,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;4BACzB,QAAQ,GAAG,IAAI,CAAC;wBAClB,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,GAAG,KAC9C,CAAW,CAAC,OACf,EAAE,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACrB,SAAS,EAAE,CAAC;oBACZ,OAAO,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,OAAO;gBACJ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAyB,IAAI,SAAS,CAAC;QACrE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAnRD,8CAmRC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ClientSession, Types } from 'mongoose';
|
|
2
|
+
import { IApplication } from '../interfaces/application';
|
|
3
|
+
import { TransactionCallback } from '../types';
|
|
4
|
+
import { TransactionOptions } from '../utils';
|
|
5
|
+
import { IBaseDocument } from '../documents';
|
|
6
|
+
import { Environment } from '../environment';
|
|
7
|
+
import { IConstants } from '../interfaces';
|
|
8
|
+
export declare class BaseService<TApplication extends IApplication<any, Types.ObjectId, IBaseDocument<any, Types.ObjectId>, Environment, IConstants> = IApplication<any, Types.ObjectId, IBaseDocument<any, Types.ObjectId>, Environment, IConstants>> {
|
|
9
|
+
protected readonly application: TApplication;
|
|
10
|
+
constructor(application: TApplication);
|
|
11
|
+
withTransaction<T>(callback: TransactionCallback<T>, session?: ClientSession, options?: TransactionOptions, ...args: any): Promise<T>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,WAAW,CAAC,YAAY,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC;IAC3O,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;gBAEjC,WAAW,EAAE,YAAY;IAGxB,eAAe,CAAC,CAAC,EAC5B,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAChC,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,kBAAkB,EAC5B,GAAG,IAAI,EAAE,GAAG;CAWf"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseService = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
class BaseService {
|
|
6
|
+
application;
|
|
7
|
+
constructor(application) {
|
|
8
|
+
this.application = application;
|
|
9
|
+
}
|
|
10
|
+
async withTransaction(callback, session, options, ...args) {
|
|
11
|
+
return await (0, utils_1.withTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, session, callback, options ?? {}, ...args);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.BaseService = BaseService;
|
|
15
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/base.ts"],"names":[],"mappings":";;;AAGA,oCAGkB;AAKlB,MAAa,WAAW;IACH,WAAW,CAAe;IAE7C,YAAY,WAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IACM,KAAK,CAAC,eAAe,CAC1B,QAAgC,EAChC,OAAuB,EACvB,OAA4B,EAC5B,GAAG,IAAS;QAEZ,OAAO,MAAM,IAAA,uBAAoB,EAC/B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAC9B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,EAClD,OAAO,EACP,QAAQ,EACR,OAAO,IAAI,EAAE,EACb,GAAG,IAAI,CACR,CAAC;IACJ,CAAC;CACF;AArBD,kCAqBC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ChecksumBuffer, ChecksumString } from '@digitaldefiance/node-ecies-lib';
|
|
2
|
+
import { IChecksumConfig } from '../interfaces/checksum-config';
|
|
3
|
+
export declare class ChecksumService {
|
|
4
|
+
private readonly config;
|
|
5
|
+
constructor(config?: Partial<IChecksumConfig>);
|
|
6
|
+
/**
|
|
7
|
+
* Calculate a checksum for a buffer
|
|
8
|
+
* @param data - The data to calculate the checksum for
|
|
9
|
+
* @returns The checksum as a Buffer
|
|
10
|
+
*/
|
|
11
|
+
calculateChecksum(data: Buffer): ChecksumBuffer;
|
|
12
|
+
/**
|
|
13
|
+
* Calculate a checksum for multiple buffers
|
|
14
|
+
* @param buffers - The buffers to calculate the checksum for
|
|
15
|
+
* @returns The checksum as a Buffer
|
|
16
|
+
*/
|
|
17
|
+
calculateChecksumForBuffers(buffers: Buffer[]): ChecksumBuffer;
|
|
18
|
+
/**
|
|
19
|
+
* Calculate a checksum for a string
|
|
20
|
+
* @param str - The string to calculate the checksum for
|
|
21
|
+
* @returns The checksum as a Buffer
|
|
22
|
+
*/
|
|
23
|
+
calculateChecksumForString(str: string): ChecksumBuffer;
|
|
24
|
+
/**
|
|
25
|
+
* Compare two checksums for equality
|
|
26
|
+
* @param checksum1 - The first checksum
|
|
27
|
+
* @param checksum2 - The second checksum
|
|
28
|
+
* @returns True if the checksums are equal, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
compareChecksums(checksum1: ChecksumBuffer, checksum2: ChecksumBuffer): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Convert a checksum to a hex string
|
|
33
|
+
* @param checksum - The checksum to convert
|
|
34
|
+
* @returns The checksum as a hex string
|
|
35
|
+
*/
|
|
36
|
+
checksumToHexString(checksum: ChecksumBuffer): ChecksumString;
|
|
37
|
+
/**
|
|
38
|
+
* Convert a hex string to a checksum
|
|
39
|
+
* @param hexString - The hex string to convert
|
|
40
|
+
* @returns The checksum as a Buffer
|
|
41
|
+
*/
|
|
42
|
+
hexStringToChecksum(hexString: string): ChecksumBuffer;
|
|
43
|
+
/**
|
|
44
|
+
* Validate a checksum buffer
|
|
45
|
+
* @param checksum - The checksum to validate
|
|
46
|
+
* @returns True if the checksum is valid, false otherwise
|
|
47
|
+
*/
|
|
48
|
+
validateChecksum(checksum: ChecksumBuffer): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Calculate a checksum for a file
|
|
51
|
+
* @param filePath - The path to the file
|
|
52
|
+
* @returns The checksum as a Buffer
|
|
53
|
+
*/
|
|
54
|
+
calculateChecksumForFile(filePath: string): Promise<ChecksumBuffer>;
|
|
55
|
+
/**
|
|
56
|
+
* Internal file reading method
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private readFile;
|
|
60
|
+
/**
|
|
61
|
+
* Calculate a checksum for a stream
|
|
62
|
+
* @param stream - The readable stream
|
|
63
|
+
* @returns The checksum as a Buffer
|
|
64
|
+
*/
|
|
65
|
+
calculateChecksumForStream(stream: NodeJS.ReadableStream): Promise<ChecksumBuffer>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=checksum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/checksum.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAQ7C;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAOtD;;;;OAIG;IACI,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc;IASrE;;;;OAIG;IACI,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;IAI9D;;;;;OAKG;IACI,gBAAgB,CACrB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,cAAc,GACxB,OAAO;IAUV;;;;OAIG;IACI,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAIpE;;;;OAIG;IACI,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAO7D;;;;OAIG;IACI,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAI1D;;;;OAIG;IACU,wBAAwB,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC;IAQ1B;;;OAGG;YACW,QAAQ;IAUtB;;;;OAIG;IACI,0BAA0B,CAC/B,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,OAAO,CAAC,cAAc,CAAC;CAoB3B"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChecksumService = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
class ChecksumService {
|
|
8
|
+
config;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = {
|
|
11
|
+
algorithm: constants_1.CHECKSUM.ALGORITHM,
|
|
12
|
+
encoding: constants_1.CHECKSUM.ENCODING,
|
|
13
|
+
...config,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Calculate a checksum for a buffer
|
|
18
|
+
* @param data - The data to calculate the checksum for
|
|
19
|
+
* @returns The checksum as a Buffer
|
|
20
|
+
*/
|
|
21
|
+
calculateChecksum(data) {
|
|
22
|
+
const hash = (0, crypto_1.createHash)(this.config.algorithm);
|
|
23
|
+
hash.update(data);
|
|
24
|
+
const digest = hash.digest();
|
|
25
|
+
return Buffer.from(digest);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calculate a checksum for multiple buffers
|
|
29
|
+
* @param buffers - The buffers to calculate the checksum for
|
|
30
|
+
* @returns The checksum as a Buffer
|
|
31
|
+
*/
|
|
32
|
+
calculateChecksumForBuffers(buffers) {
|
|
33
|
+
const hash = (0, crypto_1.createHash)(this.config.algorithm);
|
|
34
|
+
for (const buffer of buffers) {
|
|
35
|
+
hash.update(buffer);
|
|
36
|
+
}
|
|
37
|
+
const digest = hash.digest();
|
|
38
|
+
return Buffer.from(digest);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Calculate a checksum for a string
|
|
42
|
+
* @param str - The string to calculate the checksum for
|
|
43
|
+
* @returns The checksum as a Buffer
|
|
44
|
+
*/
|
|
45
|
+
calculateChecksumForString(str) {
|
|
46
|
+
return this.calculateChecksum(Buffer.from(str, 'utf8'));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Compare two checksums for equality
|
|
50
|
+
* @param checksum1 - The first checksum
|
|
51
|
+
* @param checksum2 - The second checksum
|
|
52
|
+
* @returns True if the checksums are equal, false otherwise
|
|
53
|
+
*/
|
|
54
|
+
compareChecksums(checksum1, checksum2) {
|
|
55
|
+
if (checksum1.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH ||
|
|
56
|
+
checksum2.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return checksum1.equals(checksum2);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Convert a checksum to a hex string
|
|
63
|
+
* @param checksum - The checksum to convert
|
|
64
|
+
* @returns The checksum as a hex string
|
|
65
|
+
*/
|
|
66
|
+
checksumToHexString(checksum) {
|
|
67
|
+
return checksum.toString(constants_1.CHECKSUM.ENCODING);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Convert a hex string to a checksum
|
|
71
|
+
* @param hexString - The hex string to convert
|
|
72
|
+
* @returns The checksum as a Buffer
|
|
73
|
+
*/
|
|
74
|
+
hexStringToChecksum(hexString) {
|
|
75
|
+
if (hexString.length !== constants_1.CHECKSUM.SHA3_BUFFER_LENGTH * 2) {
|
|
76
|
+
throw new Error('Invalid checksum hex string length');
|
|
77
|
+
}
|
|
78
|
+
return Buffer.from(hexString, constants_1.CHECKSUM.ENCODING);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validate a checksum buffer
|
|
82
|
+
* @param checksum - The checksum to validate
|
|
83
|
+
* @returns True if the checksum is valid, false otherwise
|
|
84
|
+
*/
|
|
85
|
+
validateChecksum(checksum) {
|
|
86
|
+
return checksum.length === constants_1.CHECKSUM.SHA3_BUFFER_LENGTH;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Calculate a checksum for a file
|
|
90
|
+
* @param filePath - The path to the file
|
|
91
|
+
* @returns The checksum as a Buffer
|
|
92
|
+
*/
|
|
93
|
+
async calculateChecksumForFile(filePath) {
|
|
94
|
+
// Removed dynamic import by using the data service to read file data
|
|
95
|
+
// This is a temporary solution that can be replaced with a proper file service
|
|
96
|
+
// The implementation now delegates file reading to the caller
|
|
97
|
+
const buffer = Buffer.from(await this.readFile(filePath));
|
|
98
|
+
return this.calculateChecksum(buffer);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Internal file reading method
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
async readFile(filePath) {
|
|
105
|
+
// Import fs using a static import that's available at module load time
|
|
106
|
+
// This solves the dynamic import/require issues
|
|
107
|
+
try {
|
|
108
|
+
return await fs_1.promises.readFile(filePath);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
throw new Error(`Failed to read file at path: ${filePath}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Calculate a checksum for a stream
|
|
116
|
+
* @param stream - The readable stream
|
|
117
|
+
* @returns The checksum as a Buffer
|
|
118
|
+
*/
|
|
119
|
+
calculateChecksumForStream(stream) {
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
const hash = (0, crypto_1.createHash)(this.config.algorithm);
|
|
122
|
+
stream.on('data', (chunk) => {
|
|
123
|
+
// Ensure chunk is a Buffer before updating hash
|
|
124
|
+
if (Buffer.isBuffer(chunk)) {
|
|
125
|
+
hash.update(chunk);
|
|
126
|
+
}
|
|
127
|
+
else if (typeof chunk === 'number') {
|
|
128
|
+
hash.update(Buffer.from([chunk]));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
hash.update(Buffer.from(chunk));
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
stream.on('end', () => {
|
|
135
|
+
const digest = hash.digest();
|
|
136
|
+
resolve(Buffer.from(digest));
|
|
137
|
+
});
|
|
138
|
+
stream.on('error', reject);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.ChecksumService = ChecksumService;
|
|
143
|
+
//# sourceMappingURL=checksum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/checksum.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Readable } from 'stream';
|
|
2
|
+
export declare class CrcService {
|
|
3
|
+
/**
|
|
4
|
+
* Perform a CRC8 checksum on the data
|
|
5
|
+
* @param data - The data to checksum
|
|
6
|
+
* @returns The CRC8 checksum as a Buffer
|
|
7
|
+
*/
|
|
8
|
+
crc8(data: Buffer): Buffer;
|
|
9
|
+
/**
|
|
10
|
+
* Calculates the CRC8 of a buffer or readable stream
|
|
11
|
+
* @param input - The buffer or readable stream to calculate the CRC8 of
|
|
12
|
+
* @returns The CRC8 as a Buffer
|
|
13
|
+
*/
|
|
14
|
+
crc8Async(input: Buffer | Readable): Promise<Buffer>;
|
|
15
|
+
/**
|
|
16
|
+
* Verify a CRC8 checksum on the data
|
|
17
|
+
* @param data - The data to verify
|
|
18
|
+
* @param expectedCrc - The expected CRC8 checksum
|
|
19
|
+
* @returns True if the checksum matches, false otherwise
|
|
20
|
+
*/
|
|
21
|
+
verifyCrc8(data: Buffer, expectedCrc: Buffer | number): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Validates a CRC8 against a buffer or readable stream
|
|
24
|
+
* @param data The data to validate
|
|
25
|
+
* @param expectedCrc8 The CRC8 to validate against
|
|
26
|
+
* @returns True if the CRC8 is valid, false otherwise
|
|
27
|
+
*/
|
|
28
|
+
verifyCrc8Async(data: Buffer | Readable, expectedCrc8: Buffer): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Perform a CRC16 checksum on the data
|
|
31
|
+
* @param data - The data to checksum
|
|
32
|
+
* @returns The CRC16 checksum as a Buffer
|
|
33
|
+
*/
|
|
34
|
+
crc16(data: Buffer): Buffer;
|
|
35
|
+
/**
|
|
36
|
+
* Calculates the CRC16 of a buffer or readable stream
|
|
37
|
+
* @param input - The buffer or readable stream to calculate the CRC16 of
|
|
38
|
+
* @returns The CRC16 as a Buffer
|
|
39
|
+
*/
|
|
40
|
+
crc16Async(input: Buffer | Readable): Promise<Buffer>;
|
|
41
|
+
/**
|
|
42
|
+
* Verify a CRC16 checksum on the data
|
|
43
|
+
* @param data - The data to verify
|
|
44
|
+
* @param expectedCrc - The expected CRC16 checksum
|
|
45
|
+
* @returns True if the checksum matches, false otherwise
|
|
46
|
+
*/
|
|
47
|
+
verifyCrc16(data: Buffer, expectedCrc: Buffer | number): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Validates a CRC16 against a buffer or readable stream
|
|
50
|
+
* @param data The data to validate
|
|
51
|
+
* @param expectedCrc16 The CRC16 to validate against
|
|
52
|
+
* @returns True if the CRC16 is valid, false otherwise
|
|
53
|
+
*/
|
|
54
|
+
verifyCrc16Async(data: Buffer | Readable, expectedCrc16: Buffer): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Perform a CRC32 checksum on the data
|
|
57
|
+
* @param data - The data to checksum
|
|
58
|
+
* @returns The CRC32 checksum as a Buffer
|
|
59
|
+
*/
|
|
60
|
+
crc32(data: Buffer): Buffer;
|
|
61
|
+
/**
|
|
62
|
+
* Calculates the CRC32 of a buffer or readable stream
|
|
63
|
+
* @param input - The buffer or readable stream to calculate the CRC32 of
|
|
64
|
+
* @returns The CRC32 as a number
|
|
65
|
+
*/
|
|
66
|
+
/**
|
|
67
|
+
* Calculates the CRC32 of a buffer or readable stream
|
|
68
|
+
* @param input - The buffer or readable stream to calculate the CRC32 of
|
|
69
|
+
* @returns The CRC32 as a Buffer
|
|
70
|
+
*/
|
|
71
|
+
crc32Async(input: Buffer | Readable): Promise<Buffer>;
|
|
72
|
+
/**
|
|
73
|
+
* Verify a CRC32 checksum on the data
|
|
74
|
+
* @param data - The data to verify
|
|
75
|
+
* @param expectedCrc - The expected CRC32 checksum
|
|
76
|
+
* @returns True if the checksum matches, false otherwise
|
|
77
|
+
*/
|
|
78
|
+
verifyCrc32(data: Buffer, expectedCrc: Buffer | number): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Validates a CRC32 against a buffer or readable stream
|
|
81
|
+
* @param data The data to validate
|
|
82
|
+
* @param expectedCrc32 The CRC32 to validate against
|
|
83
|
+
* @returns True if the CRC32 is valid, false otherwise
|
|
84
|
+
*/
|
|
85
|
+
verifyCrc32Async(data: Buffer | Readable, expectedCrc32: Buffer): Promise<boolean>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=crc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crc.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/crc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,qBAAa,UAAU;IACrB;;;;OAIG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMjC;;;;OAIG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBjE;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAStE;;;;;OAKG;IACU,eAAe,CAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMlC;;;;OAIG;IACU,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBlE;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IASvE;;;;;OAKG;IACU,gBAAgB,CAC3B,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMlC;;;;OAIG;IACH;;;;OAIG;IACU,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBlE;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IASvE;;;;;OAKG;IACU,gBAAgB,CAC3B,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;CAIpB"}
|