@brightchain/brightchain-api-lib 0.0.1
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/brightchain-api-lib/README.md +101 -0
- package/package.json +53 -0
- package/src/index.d.ts +88 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +101 -0
- package/src/index.js.map +1 -0
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts +71 -0
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts.map +1 -0
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js +119 -0
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js.map +1 -0
- package/src/lib/__tests__/fixtures/mocked-model.d.ts +90 -0
- package/src/lib/__tests__/fixtures/mocked-model.d.ts.map +1 -0
- package/src/lib/__tests__/fixtures/mocked-model.js +101 -0
- package/src/lib/__tests__/fixtures/mocked-model.js.map +1 -0
- package/src/lib/__tests__/helpers/application.mock.d.ts +5 -0
- package/src/lib/__tests__/helpers/application.mock.d.ts.map +1 -0
- package/src/lib/__tests__/helpers/application.mock.js +52 -0
- package/src/lib/__tests__/helpers/application.mock.js.map +1 -0
- package/src/lib/__tests__/helpers/model-mocks.mock.d.ts +43 -0
- package/src/lib/__tests__/helpers/model-mocks.mock.d.ts.map +1 -0
- package/src/lib/__tests__/helpers/model-mocks.mock.js +67 -0
- package/src/lib/__tests__/helpers/model-mocks.mock.js.map +1 -0
- package/src/lib/appConstants.d.ts +87 -0
- package/src/lib/appConstants.d.ts.map +1 -0
- package/src/lib/appConstants.js +25 -0
- package/src/lib/appConstants.js.map +1 -0
- package/src/lib/application-base.d.ts +39 -0
- package/src/lib/application-base.d.ts.map +1 -0
- package/src/lib/application-base.js +84 -0
- package/src/lib/application-base.js.map +1 -0
- package/src/lib/application.d.ts +14 -0
- package/src/lib/application.d.ts.map +1 -0
- package/src/lib/application.js +105 -0
- package/src/lib/application.js.map +1 -0
- package/src/lib/availability/availabilityMetrics.d.ts +241 -0
- package/src/lib/availability/availabilityMetrics.d.ts.map +1 -0
- package/src/lib/availability/availabilityMetrics.js +425 -0
- package/src/lib/availability/availabilityMetrics.js.map +1 -0
- package/src/lib/availability/availabilityService.d.ts +250 -0
- package/src/lib/availability/availabilityService.d.ts.map +1 -0
- package/src/lib/availability/availabilityService.js +593 -0
- package/src/lib/availability/availabilityService.js.map +1 -0
- package/src/lib/availability/blockRegistry.d.ts +141 -0
- package/src/lib/availability/blockRegistry.d.ts.map +1 -0
- package/src/lib/availability/blockRegistry.js +257 -0
- package/src/lib/availability/blockRegistry.js.map +1 -0
- package/src/lib/availability/configValidation.d.ts +72 -0
- package/src/lib/availability/configValidation.d.ts.map +1 -0
- package/src/lib/availability/configValidation.js +261 -0
- package/src/lib/availability/configValidation.js.map +1 -0
- package/src/lib/availability/discoveryProtocol.d.ts +160 -0
- package/src/lib/availability/discoveryProtocol.d.ts.map +1 -0
- package/src/lib/availability/discoveryProtocol.js +304 -0
- package/src/lib/availability/discoveryProtocol.js.map +1 -0
- package/src/lib/availability/gossipService.d.ts +158 -0
- package/src/lib/availability/gossipService.d.ts.map +1 -0
- package/src/lib/availability/gossipService.js +271 -0
- package/src/lib/availability/gossipService.js.map +1 -0
- package/src/lib/availability/heartbeatMonitor.d.ts +204 -0
- package/src/lib/availability/heartbeatMonitor.d.ts.map +1 -0
- package/src/lib/availability/heartbeatMonitor.js +375 -0
- package/src/lib/availability/heartbeatMonitor.js.map +1 -0
- package/src/lib/availability/index.d.ts +15 -0
- package/src/lib/availability/index.d.ts.map +1 -0
- package/src/lib/availability/index.js +18 -0
- package/src/lib/availability/index.js.map +1 -0
- package/src/lib/availability/reconciliationService.d.ts +237 -0
- package/src/lib/availability/reconciliationService.d.ts.map +1 -0
- package/src/lib/availability/reconciliationService.js +513 -0
- package/src/lib/availability/reconciliationService.js.map +1 -0
- package/src/lib/blocks/handle.d.ts +45 -0
- package/src/lib/blocks/handle.d.ts.map +1 -0
- package/src/lib/blocks/handle.js +221 -0
- package/src/lib/blocks/handle.js.map +1 -0
- package/src/lib/constants.d.ts +50 -0
- package/src/lib/constants.d.ts.map +1 -0
- package/src/lib/constants.js +58 -0
- package/src/lib/constants.js.map +1 -0
- package/src/lib/controllers/base.d.ts +50 -0
- package/src/lib/controllers/base.d.ts.map +1 -0
- package/src/lib/controllers/base.js +235 -0
- package/src/lib/controllers/base.js.map +1 -0
- package/src/lib/controllers/user.d.ts +9 -0
- package/src/lib/controllers/user.d.ts.map +1 -0
- package/src/lib/controllers/user.js +21 -0
- package/src/lib/controllers/user.js.map +1 -0
- package/src/lib/datastore/block-document-store-factory.d.ts +19 -0
- package/src/lib/datastore/block-document-store-factory.d.ts.map +1 -0
- package/src/lib/datastore/block-document-store-factory.js +29 -0
- package/src/lib/datastore/block-document-store-factory.js.map +1 -0
- package/src/lib/datastore/block-document-store.d.ts +185 -0
- package/src/lib/datastore/block-document-store.d.ts.map +1 -0
- package/src/lib/datastore/block-document-store.js +590 -0
- package/src/lib/datastore/block-document-store.js.map +1 -0
- package/src/lib/datastore/document-model-adapter.d.ts +48 -0
- package/src/lib/datastore/document-model-adapter.d.ts.map +1 -0
- package/src/lib/datastore/document-model-adapter.js +178 -0
- package/src/lib/datastore/document-model-adapter.js.map +1 -0
- package/src/lib/datastore/document-store.d.ts +64 -0
- package/src/lib/datastore/document-store.d.ts.map +1 -0
- package/src/lib/datastore/document-store.js +3 -0
- package/src/lib/datastore/document-store.js.map +1 -0
- package/src/lib/datastore/memory-document-store.d.ts +6 -0
- package/src/lib/datastore/memory-document-store.d.ts.map +1 -0
- package/src/lib/datastore/memory-document-store.js +196 -0
- package/src/lib/datastore/memory-document-store.js.map +1 -0
- package/src/lib/documents/base.d.ts +5 -0
- package/src/lib/documents/base.d.ts.map +1 -0
- package/src/lib/documents/base.js +3 -0
- package/src/lib/documents/base.js.map +1 -0
- package/src/lib/documents/email-token.d.ts +8 -0
- package/src/lib/documents/email-token.d.ts.map +1 -0
- package/src/lib/documents/email-token.js +3 -0
- package/src/lib/documents/email-token.js.map +1 -0
- package/src/lib/documents/index.d.ts +7 -0
- package/src/lib/documents/index.d.ts.map +1 -0
- package/src/lib/documents/index.js +3 -0
- package/src/lib/documents/index.js.map +1 -0
- package/src/lib/documents/mnemonic.d.ts +8 -0
- package/src/lib/documents/mnemonic.d.ts.map +1 -0
- package/src/lib/documents/mnemonic.js +3 -0
- package/src/lib/documents/mnemonic.js.map +1 -0
- package/src/lib/documents/role.d.ts +8 -0
- package/src/lib/documents/role.d.ts.map +1 -0
- package/src/lib/documents/role.js +3 -0
- package/src/lib/documents/role.js.map +1 -0
- package/src/lib/documents/used-direct-login-token.d.ts +5 -0
- package/src/lib/documents/used-direct-login-token.d.ts.map +1 -0
- package/src/lib/documents/used-direct-login-token.js +3 -0
- package/src/lib/documents/used-direct-login-token.js.map +1 -0
- package/src/lib/documents/user-role.d.ts +8 -0
- package/src/lib/documents/user-role.d.ts.map +1 -0
- package/src/lib/documents/user-role.js +3 -0
- package/src/lib/documents/user-role.js.map +1 -0
- package/src/lib/documents/user.d.ts +13 -0
- package/src/lib/documents/user.d.ts.map +1 -0
- package/src/lib/documents/user.js +3 -0
- package/src/lib/documents/user.js.map +1 -0
- package/src/lib/enumerations/model-name.d.ts +30 -0
- package/src/lib/enumerations/model-name.d.ts.map +1 -0
- package/src/lib/enumerations/model-name.js +34 -0
- package/src/lib/enumerations/model-name.js.map +1 -0
- package/src/lib/enumerations/schema-collection.d.ts +30 -0
- package/src/lib/enumerations/schema-collection.d.ts.map +1 -0
- package/src/lib/enumerations/schema-collection.js +34 -0
- package/src/lib/enumerations/schema-collection.js.map +1 -0
- package/src/lib/enumerations/symmetric-error-type.d.ts +5 -0
- package/src/lib/enumerations/symmetric-error-type.d.ts.map +1 -0
- package/src/lib/enumerations/symmetric-error-type.js +9 -0
- package/src/lib/enumerations/symmetric-error-type.js.map +1 -0
- package/src/lib/environment.d.ts +23 -0
- package/src/lib/environment.d.ts.map +1 -0
- package/src/lib/environment.js +75 -0
- package/src/lib/environment.js.map +1 -0
- package/src/lib/errors/admin-role-not-found.d.ts +6 -0
- package/src/lib/errors/admin-role-not-found.d.ts.map +1 -0
- package/src/lib/errors/admin-role-not-found.js +14 -0
- package/src/lib/errors/admin-role-not-found.js.map +1 -0
- package/src/lib/errors/email-already-verified.d.ts +5 -0
- package/src/lib/errors/email-already-verified.d.ts.map +1 -0
- package/src/lib/errors/email-already-verified.js +11 -0
- package/src/lib/errors/email-already-verified.js.map +1 -0
- package/src/lib/errors/email-token-failed-to-send.d.ts +7 -0
- package/src/lib/errors/email-token-failed-to-send.d.ts.map +1 -0
- package/src/lib/errors/email-token-failed-to-send.js +14 -0
- package/src/lib/errors/email-token-failed-to-send.js.map +1 -0
- package/src/lib/errors/express-validation.d.ts +7 -0
- package/src/lib/errors/express-validation.d.ts.map +1 -0
- package/src/lib/errors/express-validation.js +14 -0
- package/src/lib/errors/express-validation.js.map +1 -0
- package/src/lib/errors/invalid-backup-code-version.d.ts +5 -0
- package/src/lib/errors/invalid-backup-code-version.d.ts.map +1 -0
- package/src/lib/errors/invalid-backup-code-version.js +12 -0
- package/src/lib/errors/invalid-backup-code-version.js.map +1 -0
- package/src/lib/errors/invalid-challenge-response.d.ts +5 -0
- package/src/lib/errors/invalid-challenge-response.d.ts.map +1 -0
- package/src/lib/errors/invalid-challenge-response.js +14 -0
- package/src/lib/errors/invalid-challenge-response.js.map +1 -0
- package/src/lib/errors/invalid-expired-token.d.ts +5 -0
- package/src/lib/errors/invalid-expired-token.d.ts.map +1 -0
- package/src/lib/errors/invalid-expired-token.js +13 -0
- package/src/lib/errors/invalid-expired-token.js.map +1 -0
- package/src/lib/errors/invalid-jwt-token.d.ts +5 -0
- package/src/lib/errors/invalid-jwt-token.d.ts.map +1 -0
- package/src/lib/errors/invalid-jwt-token.js +12 -0
- package/src/lib/errors/invalid-jwt-token.js.map +1 -0
- package/src/lib/errors/last-admin-error.d.ts +7 -0
- package/src/lib/errors/last-admin-error.d.ts.map +1 -0
- package/src/lib/errors/last-admin-error.js +16 -0
- package/src/lib/errors/last-admin-error.js.map +1 -0
- package/src/lib/errors/login-challenge-expired.d.ts +5 -0
- package/src/lib/errors/login-challenge-expired.d.ts.map +1 -0
- package/src/lib/errors/login-challenge-expired.js +14 -0
- package/src/lib/errors/login-challenge-expired.js.map +1 -0
- package/src/lib/errors/member-role-not-found.d.ts +7 -0
- package/src/lib/errors/member-role-not-found.d.ts.map +1 -0
- package/src/lib/errors/member-role-not-found.js +14 -0
- package/src/lib/errors/member-role-not-found.js.map +1 -0
- package/src/lib/errors/missing-validated-data.d.ts +8 -0
- package/src/lib/errors/missing-validated-data.d.ts.map +1 -0
- package/src/lib/errors/missing-validated-data.js +32 -0
- package/src/lib/errors/missing-validated-data.js.map +1 -0
- package/src/lib/errors/mnemonic-or-password-required.d.ts +5 -0
- package/src/lib/errors/mnemonic-or-password-required.d.ts.map +1 -0
- package/src/lib/errors/mnemonic-or-password-required.js +14 -0
- package/src/lib/errors/mnemonic-or-password-required.js.map +1 -0
- package/src/lib/errors/restricted.d.ts +5 -0
- package/src/lib/errors/restricted.d.ts.map +1 -0
- package/src/lib/errors/restricted.js +15 -0
- package/src/lib/errors/restricted.js.map +1 -0
- package/src/lib/errors/symmetric.d.ts +9 -0
- package/src/lib/errors/symmetric.d.ts.map +1 -0
- package/src/lib/errors/symmetric.js +24 -0
- package/src/lib/errors/symmetric.js.map +1 -0
- package/src/lib/errors/token-expired.d.ts +5 -0
- package/src/lib/errors/token-expired.d.ts.map +1 -0
- package/src/lib/errors/token-expired.js +12 -0
- package/src/lib/errors/token-expired.js.map +1 -0
- package/src/lib/errors/token-not-found.d.ts +8 -0
- package/src/lib/errors/token-not-found.d.ts.map +1 -0
- package/src/lib/errors/token-not-found.js +19 -0
- package/src/lib/errors/token-not-found.js.map +1 -0
- package/src/lib/errors/translatable-error-local.d.ts +7 -0
- package/src/lib/errors/translatable-error-local.d.ts.map +1 -0
- package/src/lib/errors/translatable-error-local.js +17 -0
- package/src/lib/errors/translatable-error-local.js.map +1 -0
- package/src/lib/errors/typed-error-local.d.ts +10 -0
- package/src/lib/errors/typed-error-local.d.ts.map +1 -0
- package/src/lib/errors/typed-error-local.js +24 -0
- package/src/lib/errors/typed-error-local.js.map +1 -0
- package/src/lib/factories/blockStoreFactory.d.ts +14 -0
- package/src/lib/factories/blockStoreFactory.d.ts.map +1 -0
- package/src/lib/factories/blockStoreFactory.js +18 -0
- package/src/lib/factories/blockStoreFactory.js.map +1 -0
- package/src/lib/interfaces/api-constants.d.ts +51 -0
- package/src/lib/interfaces/api-constants.d.ts.map +1 -0
- package/src/lib/interfaces/api-constants.js +13 -0
- package/src/lib/interfaces/api-constants.js.map +1 -0
- package/src/lib/interfaces/api-express-validation-error-response.d.ts +7 -0
- package/src/lib/interfaces/api-express-validation-error-response.d.ts.map +1 -0
- package/src/lib/interfaces/api-express-validation-error-response.js +3 -0
- package/src/lib/interfaces/api-express-validation-error-response.js.map +1 -0
- package/src/lib/interfaces/api-mongo-validation-error-response.d.ts +6 -0
- package/src/lib/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
- package/src/lib/interfaces/api-mongo-validation-error-response.js +3 -0
- package/src/lib/interfaces/api-mongo-validation-error-response.js.map +1 -0
- package/src/lib/interfaces/application.d.ts +10 -0
- package/src/lib/interfaces/application.d.ts.map +1 -0
- package/src/lib/interfaces/application.js +3 -0
- package/src/lib/interfaces/application.js.map +1 -0
- package/src/lib/interfaces/authenticated-cipher.d.ts +10 -0
- package/src/lib/interfaces/authenticated-cipher.d.ts.map +1 -0
- package/src/lib/interfaces/authenticated-cipher.js +3 -0
- package/src/lib/interfaces/authenticated-cipher.js.map +1 -0
- package/src/lib/interfaces/authenticated-decipher.d.ts +9 -0
- package/src/lib/interfaces/authenticated-decipher.d.ts.map +1 -0
- package/src/lib/interfaces/authenticated-decipher.js +3 -0
- package/src/lib/interfaces/authenticated-decipher.js.map +1 -0
- package/src/lib/interfaces/backend-objects/email-token.d.ts +4 -0
- package/src/lib/interfaces/backend-objects/email-token.d.ts.map +1 -0
- package/src/lib/interfaces/backend-objects/email-token.js +3 -0
- package/src/lib/interfaces/backend-objects/email-token.js.map +1 -0
- package/src/lib/interfaces/backend-objects/request-user.d.ts +5 -0
- package/src/lib/interfaces/backend-objects/request-user.d.ts.map +1 -0
- package/src/lib/interfaces/backend-objects/request-user.js +3 -0
- package/src/lib/interfaces/backend-objects/request-user.js.map +1 -0
- package/src/lib/interfaces/backend-objects/role.d.ts +4 -0
- package/src/lib/interfaces/backend-objects/role.d.ts.map +1 -0
- package/src/lib/interfaces/backend-objects/role.js +3 -0
- package/src/lib/interfaces/backend-objects/role.js.map +1 -0
- package/src/lib/interfaces/backend-objects/user.d.ts +5 -0
- package/src/lib/interfaces/backend-objects/user.d.ts.map +1 -0
- package/src/lib/interfaces/backend-objects/user.js +3 -0
- package/src/lib/interfaces/backend-objects/user.js.map +1 -0
- package/src/lib/interfaces/bases/mnemonic.d.ts +4 -0
- package/src/lib/interfaces/bases/mnemonic.d.ts.map +1 -0
- package/src/lib/interfaces/bases/mnemonic.js +3 -0
- package/src/lib/interfaces/bases/mnemonic.js.map +1 -0
- package/src/lib/interfaces/bases/role.d.ts +4 -0
- package/src/lib/interfaces/bases/role.d.ts.map +1 -0
- package/src/lib/interfaces/bases/role.js +3 -0
- package/src/lib/interfaces/bases/role.js.map +1 -0
- package/src/lib/interfaces/bases/user-role.d.ts +4 -0
- package/src/lib/interfaces/bases/user-role.d.ts.map +1 -0
- package/src/lib/interfaces/bases/user-role.js +3 -0
- package/src/lib/interfaces/bases/user-role.js.map +1 -0
- package/src/lib/interfaces/bases/user.d.ts +5 -0
- package/src/lib/interfaces/bases/user.d.ts.map +1 -0
- package/src/lib/interfaces/bases/user.js +3 -0
- package/src/lib/interfaces/bases/user.js.map +1 -0
- package/src/lib/interfaces/checksum-config.d.ts +5 -0
- package/src/lib/interfaces/checksum-config.d.ts.map +1 -0
- package/src/lib/interfaces/checksum-config.js +3 -0
- package/src/lib/interfaces/checksum-config.js.map +1 -0
- package/src/lib/interfaces/discriminator-collections.d.ts +5 -0
- package/src/lib/interfaces/discriminator-collections.d.ts.map +1 -0
- package/src/lib/interfaces/discriminator-collections.js +3 -0
- package/src/lib/interfaces/discriminator-collections.js.map +1 -0
- package/src/lib/interfaces/ecies-consts.d.ts +88 -0
- package/src/lib/interfaces/ecies-consts.d.ts.map +1 -0
- package/src/lib/interfaces/ecies-consts.js +3 -0
- package/src/lib/interfaces/ecies-consts.js.map +1 -0
- package/src/lib/interfaces/environment-aws.d.ts +7 -0
- package/src/lib/interfaces/environment-aws.d.ts.map +1 -0
- package/src/lib/interfaces/environment-aws.js +3 -0
- package/src/lib/interfaces/environment-aws.js.map +1 -0
- package/src/lib/interfaces/environment-mongo.d.ts +76 -0
- package/src/lib/interfaces/environment-mongo.d.ts.map +1 -0
- package/src/lib/interfaces/environment-mongo.js +3 -0
- package/src/lib/interfaces/environment-mongo.js.map +1 -0
- package/src/lib/interfaces/environment.d.ts +28 -0
- package/src/lib/interfaces/environment.d.ts.map +1 -0
- package/src/lib/interfaces/environment.js +3 -0
- package/src/lib/interfaces/environment.js.map +1 -0
- package/src/lib/interfaces/jwt-sign-response.d.ts +12 -0
- package/src/lib/interfaces/jwt-sign-response.d.ts.map +1 -0
- package/src/lib/interfaces/jwt-sign-response.js +3 -0
- package/src/lib/interfaces/jwt-sign-response.js.map +1 -0
- package/src/lib/interfaces/member/member-with-mnemonic.d.ts +6 -0
- package/src/lib/interfaces/member/member-with-mnemonic.d.ts.map +1 -0
- package/src/lib/interfaces/member/member-with-mnemonic.js +3 -0
- package/src/lib/interfaces/member/member-with-mnemonic.js.map +1 -0
- package/src/lib/interfaces/member/operational.d.ts +36 -0
- package/src/lib/interfaces/member/operational.d.ts.map +1 -0
- package/src/lib/interfaces/member/operational.js +3 -0
- package/src/lib/interfaces/member/operational.js.map +1 -0
- package/src/lib/interfaces/mongo-errors.d.ts +9 -0
- package/src/lib/interfaces/mongo-errors.d.ts.map +1 -0
- package/src/lib/interfaces/mongo-errors.js +3 -0
- package/src/lib/interfaces/mongo-errors.js.map +1 -0
- package/src/lib/interfaces/multi-encrypted-message.d.ts +8 -0
- package/src/lib/interfaces/multi-encrypted-message.d.ts.map +1 -0
- package/src/lib/interfaces/multi-encrypted-message.js +3 -0
- package/src/lib/interfaces/multi-encrypted-message.js.map +1 -0
- package/src/lib/interfaces/multi-encrypted-parsed-header.d.ts +24 -0
- package/src/lib/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
- package/src/lib/interfaces/multi-encrypted-parsed-header.js +3 -0
- package/src/lib/interfaces/multi-encrypted-parsed-header.js.map +1 -0
- package/src/lib/interfaces/pbkdf2-result.d.ts +6 -0
- package/src/lib/interfaces/pbkdf2-result.d.ts.map +1 -0
- package/src/lib/interfaces/pbkdf2-result.js +3 -0
- package/src/lib/interfaces/pbkdf2-result.js.map +1 -0
- package/src/lib/interfaces/request-user.d.ts +51 -0
- package/src/lib/interfaces/request-user.d.ts.map +1 -0
- package/src/lib/interfaces/request-user.js +3 -0
- package/src/lib/interfaces/request-user.js.map +1 -0
- package/src/lib/interfaces/responses/api-backup-codes-response.d.ts +11 -0
- package/src/lib/interfaces/responses/api-backup-codes-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-backup-codes-response.js +3 -0
- package/src/lib/interfaces/responses/api-backup-codes-response.js.map +1 -0
- package/src/lib/interfaces/responses/api-challenge-response.d.ts +11 -0
- package/src/lib/interfaces/responses/api-challenge-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-challenge-response.js +3 -0
- package/src/lib/interfaces/responses/api-challenge-response.js.map +1 -0
- package/src/lib/interfaces/responses/api-code-count-response.d.ts +11 -0
- package/src/lib/interfaces/responses/api-code-count-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-code-count-response.js +3 -0
- package/src/lib/interfaces/responses/api-code-count-response.js.map +1 -0
- package/src/lib/interfaces/responses/api-login-response.d.ts +20 -0
- package/src/lib/interfaces/responses/api-login-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-login-response.js +3 -0
- package/src/lib/interfaces/responses/api-login-response.js.map +1 -0
- package/src/lib/interfaces/responses/api-mnemonic-response.d.ts +11 -0
- package/src/lib/interfaces/responses/api-mnemonic-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-mnemonic-response.js +3 -0
- package/src/lib/interfaces/responses/api-mnemonic-response.js.map +1 -0
- package/src/lib/interfaces/responses/api-registration-response.d.ts +16 -0
- package/src/lib/interfaces/responses/api-registration-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-registration-response.js +3 -0
- package/src/lib/interfaces/responses/api-registration-response.js.map +1 -0
- package/src/lib/interfaces/responses/api-request-user-response.d.ts +12 -0
- package/src/lib/interfaces/responses/api-request-user-response.d.ts.map +1 -0
- package/src/lib/interfaces/responses/api-request-user-response.js +3 -0
- package/src/lib/interfaces/responses/api-request-user-response.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +9 -0
- package/src/lib/interfaces/responses/index.d.ts.map +1 -0
- package/src/lib/interfaces/responses/index.js +11 -0
- package/src/lib/interfaces/responses/index.js.map +1 -0
- package/src/lib/interfaces/schema.d.ts +28 -0
- package/src/lib/interfaces/schema.d.ts.map +1 -0
- package/src/lib/interfaces/schema.js +3 -0
- package/src/lib/interfaces/schema.js.map +1 -0
- package/src/lib/interfaces/server-init-result.d.ts +34 -0
- package/src/lib/interfaces/server-init-result.d.ts.map +1 -0
- package/src/lib/interfaces/server-init-result.js +3 -0
- package/src/lib/interfaces/server-init-result.js.map +1 -0
- package/src/lib/interfaces/single-encrypted-parsed-header.d.ts +35 -0
- package/src/lib/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
- package/src/lib/interfaces/single-encrypted-parsed-header.js +3 -0
- package/src/lib/interfaces/single-encrypted-parsed-header.js.map +1 -0
- package/src/lib/interfaces/status-code-response.d.ts +7 -0
- package/src/lib/interfaces/status-code-response.d.ts.map +1 -0
- package/src/lib/interfaces/status-code-response.js +3 -0
- package/src/lib/interfaces/status-code-response.js.map +1 -0
- package/src/lib/interfaces/symmetric-encryption-results.d.ts +5 -0
- package/src/lib/interfaces/symmetric-encryption-results.d.ts.map +1 -0
- package/src/lib/interfaces/symmetric-encryption-results.js +3 -0
- package/src/lib/interfaces/symmetric-encryption-results.js.map +1 -0
- package/src/lib/interfaces/token-user.d.ts +9 -0
- package/src/lib/interfaces/token-user.d.ts.map +1 -0
- package/src/lib/interfaces/token-user.js +3 -0
- package/src/lib/interfaces/token-user.js.map +1 -0
- package/src/lib/interfaces/wallet-seed.d.ts +7 -0
- package/src/lib/interfaces/wallet-seed.d.ts.map +1 -0
- package/src/lib/interfaces/wallet-seed.js +3 -0
- package/src/lib/interfaces/wallet-seed.js.map +1 -0
- package/src/lib/middlewares/cleanup-crypto.d.ts +7 -0
- package/src/lib/middlewares/cleanup-crypto.d.ts.map +1 -0
- package/src/lib/middlewares/cleanup-crypto.js +32 -0
- package/src/lib/middlewares/cleanup-crypto.js.map +1 -0
- package/src/lib/middlewares/index.d.ts +3 -0
- package/src/lib/middlewares/index.d.ts.map +1 -0
- package/src/lib/middlewares/index.js +10 -0
- package/src/lib/middlewares/index.js.map +1 -0
- package/src/lib/middlewares.d.ts +19 -0
- package/src/lib/middlewares.d.ts.map +1 -0
- package/src/lib/middlewares.js +95 -0
- package/src/lib/middlewares.js.map +1 -0
- package/src/lib/models/email-token.d.ts +47 -0
- package/src/lib/models/email-token.d.ts.map +1 -0
- package/src/lib/models/email-token.js +11 -0
- package/src/lib/models/email-token.js.map +1 -0
- package/src/lib/models/mnemonic.d.ts +26 -0
- package/src/lib/models/mnemonic.d.ts.map +1 -0
- package/src/lib/models/mnemonic.js +11 -0
- package/src/lib/models/mnemonic.js.map +1 -0
- package/src/lib/models/role.d.ts +23 -0
- package/src/lib/models/role.d.ts.map +1 -0
- package/src/lib/models/role.js +8 -0
- package/src/lib/models/role.js.map +1 -0
- package/src/lib/models/used-direct-login-token.d.ts +29 -0
- package/src/lib/models/used-direct-login-token.d.ts.map +1 -0
- package/src/lib/models/used-direct-login-token.js +11 -0
- package/src/lib/models/used-direct-login-token.js.map +1 -0
- package/src/lib/models/user-role.d.ts +59 -0
- package/src/lib/models/user-role.d.ts.map +1 -0
- package/src/lib/models/user-role.js +11 -0
- package/src/lib/models/user-role.js.map +1 -0
- package/src/lib/models/user.d.ts +132 -0
- package/src/lib/models/user.d.ts.map +1 -0
- package/src/lib/models/user.js +8 -0
- package/src/lib/models/user.js.map +1 -0
- package/src/lib/routers/api.d.ts +21 -0
- package/src/lib/routers/api.d.ts.map +1 -0
- package/src/lib/routers/api.js +41 -0
- package/src/lib/routers/api.js.map +1 -0
- package/src/lib/routers/app.d.ts +22 -0
- package/src/lib/routers/app.d.ts.map +1 -0
- package/src/lib/routers/app.js +131 -0
- package/src/lib/routers/app.js.map +1 -0
- package/src/lib/routers/base.d.ts +8 -0
- package/src/lib/routers/base.d.ts.map +1 -0
- package/src/lib/routers/base.js +12 -0
- package/src/lib/routers/base.js.map +1 -0
- package/src/lib/routers/messageRouter.d.ts +4 -0
- package/src/lib/routers/messageRouter.d.ts.map +1 -0
- package/src/lib/routers/messageRouter.js +81 -0
- package/src/lib/routers/messageRouter.js.map +1 -0
- package/src/lib/schemas/email-token.d.ts +44 -0
- package/src/lib/schemas/email-token.d.ts.map +1 -0
- package/src/lib/schemas/email-token.js +29 -0
- package/src/lib/schemas/email-token.js.map +1 -0
- package/src/lib/schemas/mnemonic.d.ts +22 -0
- package/src/lib/schemas/mnemonic.d.ts.map +1 -0
- package/src/lib/schemas/mnemonic.js +21 -0
- package/src/lib/schemas/mnemonic.js.map +1 -0
- package/src/lib/schemas/role.d.ts +21 -0
- package/src/lib/schemas/role.d.ts.map +1 -0
- package/src/lib/schemas/role.js +36 -0
- package/src/lib/schemas/role.js.map +1 -0
- package/src/lib/schemas/schema.d.ts +3 -0
- package/src/lib/schemas/schema.d.ts.map +1 -0
- package/src/lib/schemas/schema.js +74 -0
- package/src/lib/schemas/schema.js.map +1 -0
- package/src/lib/schemas/used-direct-login-token.d.ts +25 -0
- package/src/lib/schemas/used-direct-login-token.d.ts.map +1 -0
- package/src/lib/schemas/used-direct-login-token.js +14 -0
- package/src/lib/schemas/used-direct-login-token.js.map +1 -0
- package/src/lib/schemas/user-role.d.ts +55 -0
- package/src/lib/schemas/user-role.d.ts.map +1 -0
- package/src/lib/schemas/user-role.js +22 -0
- package/src/lib/schemas/user-role.js.map +1 -0
- package/src/lib/schemas/user.d.ts +129 -0
- package/src/lib/schemas/user.d.ts.map +1 -0
- package/src/lib/schemas/user.js +84 -0
- package/src/lib/schemas/user.js.map +1 -0
- package/src/lib/services/diskQuorumService.d.ts +55 -0
- package/src/lib/services/diskQuorumService.d.ts.map +1 -0
- package/src/lib/services/diskQuorumService.js +247 -0
- package/src/lib/services/diskQuorumService.js.map +1 -0
- package/src/lib/services/email.d.ts +27 -0
- package/src/lib/services/email.d.ts.map +1 -0
- package/src/lib/services/email.js +81 -0
- package/src/lib/services/email.js.map +1 -0
- package/src/lib/services/eventNotificationSystem.d.ts +46 -0
- package/src/lib/services/eventNotificationSystem.d.ts.map +1 -0
- package/src/lib/services/eventNotificationSystem.js +83 -0
- package/src/lib/services/eventNotificationSystem.js.map +1 -0
- package/src/lib/services/fec.d.ts +87 -0
- package/src/lib/services/fec.d.ts.map +1 -0
- package/src/lib/services/fec.js +256 -0
- package/src/lib/services/fec.js.map +1 -0
- package/src/lib/services/fecServiceFactory.d.ts +89 -0
- package/src/lib/services/fecServiceFactory.d.ts.map +1 -0
- package/src/lib/services/fecServiceFactory.js +154 -0
- package/src/lib/services/fecServiceFactory.js.map +1 -0
- package/src/lib/services/fecUsageExample.d.ts +33 -0
- package/src/lib/services/fecUsageExample.d.ts.map +1 -0
- package/src/lib/services/fecUsageExample.js +79 -0
- package/src/lib/services/fecUsageExample.js.map +1 -0
- package/src/lib/services/keyWrapping.d.ts +61 -0
- package/src/lib/services/keyWrapping.d.ts.map +1 -0
- package/src/lib/services/keyWrapping.js +297 -0
- package/src/lib/services/keyWrapping.js.map +1 -0
- package/src/lib/services/messageEventsWebSocketHandler.d.ts +15 -0
- package/src/lib/services/messageEventsWebSocketHandler.d.ts.map +1 -0
- package/src/lib/services/messageEventsWebSocketHandler.js +59 -0
- package/src/lib/services/messageEventsWebSocketHandler.js.map +1 -0
- package/src/lib/services/messagePassingService.d.ts +31 -0
- package/src/lib/services/messagePassingService.d.ts.map +1 -0
- package/src/lib/services/messagePassingService.js +88 -0
- package/src/lib/services/messagePassingService.js.map +1 -0
- package/src/lib/services/nativeRsFecService.d.ts +79 -0
- package/src/lib/services/nativeRsFecService.d.ts.map +1 -0
- package/src/lib/services/nativeRsFecService.js +295 -0
- package/src/lib/services/nativeRsFecService.js.map +1 -0
- package/src/lib/services/pbkdf2.d.ts +6 -0
- package/src/lib/services/pbkdf2.d.ts.map +1 -0
- package/src/lib/services/pbkdf2.js +31 -0
- package/src/lib/services/pbkdf2.js.map +1 -0
- package/src/lib/services/user.d.ts +10 -0
- package/src/lib/services/user.d.ts.map +1 -0
- package/src/lib/services/user.js +11 -0
- package/src/lib/services/user.js.map +1 -0
- package/src/lib/services/webSocketMessageServer.d.ts +53 -0
- package/src/lib/services/webSocketMessageServer.d.ts.map +1 -0
- package/src/lib/services/webSocketMessageServer.js +159 -0
- package/src/lib/services/webSocketMessageServer.js.map +1 -0
- package/src/lib/shared-types.d.ts +82 -0
- package/src/lib/shared-types.d.ts.map +1 -0
- package/src/lib/shared-types.js +6 -0
- package/src/lib/shared-types.js.map +1 -0
- package/src/lib/stores/availabilityAwareBlockStore.d.ts +287 -0
- package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -0
- package/src/lib/stores/availabilityAwareBlockStore.js +458 -0
- package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -0
- package/src/lib/stores/diskBlockAsyncStore.d.ts +212 -0
- package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -0
- package/src/lib/stores/diskBlockAsyncStore.js +803 -0
- package/src/lib/stores/diskBlockAsyncStore.js.map +1 -0
- package/src/lib/stores/diskBlockMetadataStore.d.ts +125 -0
- package/src/lib/stores/diskBlockMetadataStore.d.ts.map +1 -0
- package/src/lib/stores/diskBlockMetadataStore.js +347 -0
- package/src/lib/stores/diskBlockMetadataStore.js.map +1 -0
- package/src/lib/stores/diskBlockStore.d.ts +41 -0
- package/src/lib/stores/diskBlockStore.d.ts.map +1 -0
- package/src/lib/stores/diskBlockStore.js +87 -0
- package/src/lib/stores/diskBlockStore.js.map +1 -0
- package/src/lib/stores/diskBlockSyncStore.d.ts +12 -0
- package/src/lib/stores/diskBlockSyncStore.d.ts.map +1 -0
- package/src/lib/stores/diskBlockSyncStore.js +55 -0
- package/src/lib/stores/diskBlockSyncStore.js.map +1 -0
- package/src/lib/stores/diskCblStore.d.ts +30 -0
- package/src/lib/stores/diskCblStore.d.ts.map +1 -0
- package/src/lib/stores/diskCblStore.js +139 -0
- package/src/lib/stores/diskCblStore.js.map +1 -0
- package/src/lib/stores/diskMessageMetadataStore.d.ts +17 -0
- package/src/lib/stores/diskMessageMetadataStore.d.ts.map +1 -0
- package/src/lib/stores/diskMessageMetadataStore.js +214 -0
- package/src/lib/stores/diskMessageMetadataStore.js.map +1 -0
- package/src/lib/transforms/checksumTransform.d.ts +8 -0
- package/src/lib/transforms/checksumTransform.d.ts.map +1 -0
- package/src/lib/transforms/checksumTransform.js +22 -0
- package/src/lib/transforms/checksumTransform.js.map +1 -0
- package/src/lib/transforms/memoryWritableStream.d.ts +8 -0
- package/src/lib/transforms/memoryWritableStream.d.ts.map +1 -0
- package/src/lib/transforms/memoryWritableStream.js +20 -0
- package/src/lib/transforms/memoryWritableStream.js.map +1 -0
- package/src/lib/transforms/xorMultipleTransform.d.ts +12 -0
- package/src/lib/transforms/xorMultipleTransform.d.ts.map +1 -0
- package/src/lib/transforms/xorMultipleTransform.js +52 -0
- package/src/lib/transforms/xorMultipleTransform.js.map +1 -0
- package/src/lib/utils/type-converters.d.ts +10 -0
- package/src/lib/utils/type-converters.d.ts.map +1 -0
- package/src/lib/utils/type-converters.js +42 -0
- package/src/lib/utils/type-converters.js.map +1 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBlockHandle = createBlockHandle;
|
|
4
|
+
exports.createBlockHandleFromPath = createBlockHandleFromPath;
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
7
|
+
const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const stream_1 = require("stream");
|
|
10
|
+
/**
|
|
11
|
+
* This function creates a "block handle" for a block of type T which extends BaseBlock.
|
|
12
|
+
* It makes the returned object equivalent to the underlying block type T but replacing
|
|
13
|
+
* the get data() method with an on-demand load of the block data from the block store
|
|
14
|
+
* and adding other functions for block handle operations.
|
|
15
|
+
*
|
|
16
|
+
* So for createBlockHandle<EphemeralBlock>(...) this function shall return an EphemeralBlock
|
|
17
|
+
* but with the overriden get data() method to load the block data from the file system
|
|
18
|
+
* on demand along with other added functions.
|
|
19
|
+
*
|
|
20
|
+
* @param blockConstructor - The constructor for the block type T
|
|
21
|
+
* @param path - The path to the block file
|
|
22
|
+
* @param blockSize - The block size
|
|
23
|
+
* @param checksum - The checksum of the block
|
|
24
|
+
* @param canRead - Whether the block can be read
|
|
25
|
+
* @param canPersist - Whether the block can be persisted
|
|
26
|
+
* @param constructorArgs - Additional arguments to pass to the block constructor
|
|
27
|
+
* @returns A block handle for the specified block type
|
|
28
|
+
*/
|
|
29
|
+
function createBlockHandle(blockConstructor, path, blockSize, checksum, canRead = true, canPersist = true, ...constructorArgs) {
|
|
30
|
+
if (!(0, fs_1.existsSync)(path)) {
|
|
31
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, path);
|
|
32
|
+
}
|
|
33
|
+
// Create the file stats once to avoid repeated file system calls
|
|
34
|
+
const stats = (0, fs_1.statSync)(path);
|
|
35
|
+
// Create a basic instance of T
|
|
36
|
+
// This uses a temporary empty buffer since we'll load data on demand
|
|
37
|
+
// Use a date slightly in the past to avoid timing issues with validation
|
|
38
|
+
const creationDate = new Date(Math.min(stats.birthtime.getTime(), Date.now() - 1000));
|
|
39
|
+
const instance = new blockConstructor(blockSize, Buffer.alloc(0), creationDate, checksum, brightchain_lib_1.BlockType.Handle, // Override blockType to indicate it's a handle
|
|
40
|
+
brightchain_lib_1.BlockDataType.RawData, canRead, canPersist, ...constructorArgs);
|
|
41
|
+
// Add handle-specific properties
|
|
42
|
+
instance._path = path;
|
|
43
|
+
instance._cachedData = null;
|
|
44
|
+
// Override and add methods
|
|
45
|
+
// Override get data()
|
|
46
|
+
Object.defineProperty(instance, 'data', {
|
|
47
|
+
get: function () {
|
|
48
|
+
if (!this.canRead) {
|
|
49
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockIsNotReadable);
|
|
50
|
+
}
|
|
51
|
+
if (!this._cachedData) {
|
|
52
|
+
if (!(0, fs_1.existsSync)(this._path)) {
|
|
53
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
|
|
54
|
+
}
|
|
55
|
+
this._cachedData = (0, fs_1.readFileSync)(this._path);
|
|
56
|
+
}
|
|
57
|
+
return this._cachedData;
|
|
58
|
+
},
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
});
|
|
62
|
+
// Add path getter
|
|
63
|
+
Object.defineProperty(instance, 'path', {
|
|
64
|
+
get: function () {
|
|
65
|
+
return this._path;
|
|
66
|
+
},
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
});
|
|
70
|
+
// Add setPath method
|
|
71
|
+
instance.setPath = function (path) {
|
|
72
|
+
this._path = path;
|
|
73
|
+
};
|
|
74
|
+
// Add fullData getter
|
|
75
|
+
Object.defineProperty(instance, 'fullData', {
|
|
76
|
+
get: function () {
|
|
77
|
+
return this.data;
|
|
78
|
+
},
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true,
|
|
81
|
+
});
|
|
82
|
+
// Override get layerPayload()
|
|
83
|
+
Object.defineProperty(instance, 'layerPayload', {
|
|
84
|
+
get: function () {
|
|
85
|
+
return this.fullData;
|
|
86
|
+
},
|
|
87
|
+
enumerable: true,
|
|
88
|
+
configurable: true,
|
|
89
|
+
});
|
|
90
|
+
// Add layerData getter
|
|
91
|
+
Object.defineProperty(instance, 'layerData', {
|
|
92
|
+
get: function () {
|
|
93
|
+
return this.fullData;
|
|
94
|
+
},
|
|
95
|
+
enumerable: true,
|
|
96
|
+
configurable: true,
|
|
97
|
+
});
|
|
98
|
+
// Add layerPayloadSize getter
|
|
99
|
+
Object.defineProperty(instance, 'layerPayloadSize', {
|
|
100
|
+
get: function () {
|
|
101
|
+
return this.fullData.length;
|
|
102
|
+
},
|
|
103
|
+
enumerable: true,
|
|
104
|
+
configurable: true,
|
|
105
|
+
});
|
|
106
|
+
// Override metadata getter
|
|
107
|
+
Object.defineProperty(instance, 'metadata', {
|
|
108
|
+
get: function () {
|
|
109
|
+
if (!(0, fs_1.existsSync)(this._path)) {
|
|
110
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
|
|
111
|
+
}
|
|
112
|
+
const stats = (0, fs_1.statSync)(this._path);
|
|
113
|
+
return new brightchain_lib_1.BlockMetadata(this.blockSize, brightchain_lib_1.BlockType.Handle, brightchain_lib_1.BlockDataType.RawData, stats.size, new Date(stats.birthtime));
|
|
114
|
+
},
|
|
115
|
+
enumerable: true,
|
|
116
|
+
configurable: true,
|
|
117
|
+
});
|
|
118
|
+
// Add getReadStream method
|
|
119
|
+
instance.getReadStream = function () {
|
|
120
|
+
if (!this.canRead) {
|
|
121
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockIsNotReadable);
|
|
122
|
+
}
|
|
123
|
+
if (!(0, fs_1.existsSync)(this._path)) {
|
|
124
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
|
|
125
|
+
}
|
|
126
|
+
return (0, fs_1.createReadStream)(this._path);
|
|
127
|
+
};
|
|
128
|
+
// Add getWriteStream method
|
|
129
|
+
instance.getWriteStream = function (overwrite = false) {
|
|
130
|
+
if (!this.canPersist) {
|
|
131
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockIsNotPersistable);
|
|
132
|
+
}
|
|
133
|
+
if ((0, fs_1.existsSync)(this._path) && !overwrite) {
|
|
134
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockAlreadyExists);
|
|
135
|
+
}
|
|
136
|
+
return (0, fs_1.createWriteStream)(this._path);
|
|
137
|
+
};
|
|
138
|
+
// Add calculateChecksum method
|
|
139
|
+
instance.calculateChecksum = async function () {
|
|
140
|
+
return new Promise((resolve, reject) => {
|
|
141
|
+
const readStream = this.getReadStream();
|
|
142
|
+
const checksumTransform = new node_ecies_lib_1.ChecksumTransform();
|
|
143
|
+
readStream.pipe(checksumTransform);
|
|
144
|
+
checksumTransform.on('checksum', (checksum) => {
|
|
145
|
+
readStream.destroy();
|
|
146
|
+
resolve(brightchain_lib_1.Checksum.fromUint8Array(checksum));
|
|
147
|
+
});
|
|
148
|
+
readStream.on('error', (error) => {
|
|
149
|
+
checksumTransform.destroy();
|
|
150
|
+
reject(error);
|
|
151
|
+
});
|
|
152
|
+
checksumTransform.on('error', (error) => {
|
|
153
|
+
readStream.destroy();
|
|
154
|
+
reject(error);
|
|
155
|
+
});
|
|
156
|
+
// Ensure cleanup on completion
|
|
157
|
+
checksumTransform.on('end', () => {
|
|
158
|
+
readStream.destroy();
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
// Add calculateChecksumSync method
|
|
163
|
+
instance.calculateChecksumSync = function () {
|
|
164
|
+
if (!(0, fs_1.existsSync)(this._path)) {
|
|
165
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
|
|
166
|
+
}
|
|
167
|
+
const data = (0, fs_1.readFileSync)(this._path);
|
|
168
|
+
return brightchain_lib_1.ServiceProvider.getInstance().checksumService.calculateChecksum(data);
|
|
169
|
+
};
|
|
170
|
+
// Override validateAsync method
|
|
171
|
+
instance.validateAsync = async function () {
|
|
172
|
+
const checksum = await this.calculateChecksum();
|
|
173
|
+
if (!checksum.equals(this.idChecksum)) {
|
|
174
|
+
throw new brightchain_lib_1.ChecksumMismatchError(this.idChecksum, checksum);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
// Override validateSync method
|
|
178
|
+
instance.validateSync = function () {
|
|
179
|
+
const checksum = this.calculateChecksumSync();
|
|
180
|
+
if (!checksum.equals(this.idChecksum)) {
|
|
181
|
+
throw new brightchain_lib_1.ChecksumMismatchError(this.idChecksum, checksum);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
// Override validate method
|
|
185
|
+
instance.validate = function () {
|
|
186
|
+
this.validateSync();
|
|
187
|
+
};
|
|
188
|
+
// Add clearCache method
|
|
189
|
+
instance.clearCache = function () {
|
|
190
|
+
this._cachedData = null;
|
|
191
|
+
};
|
|
192
|
+
// Add block getter
|
|
193
|
+
Object.defineProperty(instance, 'block', {
|
|
194
|
+
get: function () {
|
|
195
|
+
const newBlock = new brightchain_lib_1.RawDataBlock(this.blockSize, this.fullData, this.dateCreated, this.idChecksum, this.blockType, this.blockDataType, this.canRead, this.canPersist);
|
|
196
|
+
newBlock.validateSync();
|
|
197
|
+
return newBlock;
|
|
198
|
+
},
|
|
199
|
+
enumerable: true,
|
|
200
|
+
configurable: true,
|
|
201
|
+
});
|
|
202
|
+
// Return the augmented instance
|
|
203
|
+
return instance;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Create a new block handle from a file path
|
|
207
|
+
*/
|
|
208
|
+
async function createBlockHandleFromPath(blockConstructor, path, blockSize, checksum, canRead = true, canPersist = true, ...constructorArgs) {
|
|
209
|
+
if (!(0, fs_1.existsSync)(path)) {
|
|
210
|
+
throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, path);
|
|
211
|
+
}
|
|
212
|
+
// If no checksum provided, calculate it
|
|
213
|
+
if (!checksum) {
|
|
214
|
+
const nodeStream = (0, fs_1.createReadStream)(path);
|
|
215
|
+
const webStream = stream_1.Readable.toWeb(nodeStream);
|
|
216
|
+
checksum =
|
|
217
|
+
await brightchain_lib_1.ServiceProvider.getInstance().checksumService.calculateChecksumForStream(webStream);
|
|
218
|
+
}
|
|
219
|
+
return createBlockHandle(blockConstructor, path, blockSize, checksum, canRead, canPersist, ...constructorArgs);
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=handle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/blocks/handle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrightChain API Constants Module
|
|
3
|
+
*
|
|
4
|
+
* This module extends base constants from @digitaldefiance/node-express-suite
|
|
5
|
+
* using createExpressConstants() and adds API-specific constants.
|
|
6
|
+
*
|
|
7
|
+
* Base constants (from @digitaldefiance/node-express-suite):
|
|
8
|
+
* - PBKDF2: Password-based key derivation configuration
|
|
9
|
+
* - CHECKSUM: SHA3 checksum configuration
|
|
10
|
+
* - FEC: Forward error correction settings
|
|
11
|
+
* - KEYRING: Keyring algorithm configuration
|
|
12
|
+
* - ENCRYPTION: Encryption settings
|
|
13
|
+
* - Express Configuration: Express app settings, CORS, CSP, etc.
|
|
14
|
+
* - JWT: Base JWT configuration
|
|
15
|
+
* - Session: Session management settings
|
|
16
|
+
*
|
|
17
|
+
* API-specific constants:
|
|
18
|
+
* - WRAPPED_KEY: Wrapped key operations
|
|
19
|
+
*
|
|
20
|
+
* @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
|
|
21
|
+
* @module constants
|
|
22
|
+
*/
|
|
23
|
+
import { IApiConstants } from './interfaces/api-constants';
|
|
24
|
+
/**
|
|
25
|
+
* API-specific constants for wrapped key operations
|
|
26
|
+
* These constants define the cryptographic parameters for wrapping and unwrapping keys
|
|
27
|
+
*/
|
|
28
|
+
export declare const WRAPPED_KEY: {
|
|
29
|
+
readonly SALT_SIZE: 32;
|
|
30
|
+
readonly IV_SIZE: 16;
|
|
31
|
+
readonly MASTER_KEY_SIZE: 32;
|
|
32
|
+
readonly MIN_ITERATIONS: 100000;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* API Constants extending from @digitaldefiance/node-express-suite
|
|
36
|
+
*
|
|
37
|
+
* Uses createExpressConstants() to generate base constants for Express applications,
|
|
38
|
+
* then adds API-specific constants (WRAPPED_KEY).
|
|
39
|
+
*
|
|
40
|
+
* Includes all base constants:
|
|
41
|
+
* - PBKDF2, CHECKSUM, FEC, KEYRING, ENCRYPTION (cryptographic)
|
|
42
|
+
* - CORS, CSP, JWT, Session (Express/API)
|
|
43
|
+
*
|
|
44
|
+
* Plus API-specific constants:
|
|
45
|
+
* - WRAPPED_KEY (key wrapping operations)
|
|
46
|
+
*
|
|
47
|
+
* @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
|
|
48
|
+
*/
|
|
49
|
+
export declare const Constants: IApiConstants;
|
|
50
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,aAKvB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BrightChain API Constants Module
|
|
4
|
+
*
|
|
5
|
+
* This module extends base constants from @digitaldefiance/node-express-suite
|
|
6
|
+
* using createExpressConstants() and adds API-specific constants.
|
|
7
|
+
*
|
|
8
|
+
* Base constants (from @digitaldefiance/node-express-suite):
|
|
9
|
+
* - PBKDF2: Password-based key derivation configuration
|
|
10
|
+
* - CHECKSUM: SHA3 checksum configuration
|
|
11
|
+
* - FEC: Forward error correction settings
|
|
12
|
+
* - KEYRING: Keyring algorithm configuration
|
|
13
|
+
* - ENCRYPTION: Encryption settings
|
|
14
|
+
* - Express Configuration: Express app settings, CORS, CSP, etc.
|
|
15
|
+
* - JWT: Base JWT configuration
|
|
16
|
+
* - Session: Session management settings
|
|
17
|
+
*
|
|
18
|
+
* API-specific constants:
|
|
19
|
+
* - WRAPPED_KEY: Wrapped key operations
|
|
20
|
+
*
|
|
21
|
+
* @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
|
|
22
|
+
* @module constants
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.Constants = exports.WRAPPED_KEY = void 0;
|
|
26
|
+
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
27
|
+
/**
|
|
28
|
+
* API-specific constants for wrapped key operations
|
|
29
|
+
* These constants define the cryptographic parameters for wrapping and unwrapping keys
|
|
30
|
+
*/
|
|
31
|
+
exports.WRAPPED_KEY = {
|
|
32
|
+
SALT_SIZE: 32,
|
|
33
|
+
IV_SIZE: 16,
|
|
34
|
+
MASTER_KEY_SIZE: 32,
|
|
35
|
+
MIN_ITERATIONS: 100000,
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* API Constants extending from @digitaldefiance/node-express-suite
|
|
39
|
+
*
|
|
40
|
+
* Uses createExpressConstants() to generate base constants for Express applications,
|
|
41
|
+
* then adds API-specific constants (WRAPPED_KEY).
|
|
42
|
+
*
|
|
43
|
+
* Includes all base constants:
|
|
44
|
+
* - PBKDF2, CHECKSUM, FEC, KEYRING, ENCRYPTION (cryptographic)
|
|
45
|
+
* - CORS, CSP, JWT, Session (Express/API)
|
|
46
|
+
*
|
|
47
|
+
* Plus API-specific constants:
|
|
48
|
+
* - WRAPPED_KEY (key wrapping operations)
|
|
49
|
+
*
|
|
50
|
+
* @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
|
|
51
|
+
*/
|
|
52
|
+
exports.Constants = {
|
|
53
|
+
...(0, node_express_suite_1.createExpressConstants)('brightchain.io', 'brightchain.io', {
|
|
54
|
+
Site: 'BrightChain',
|
|
55
|
+
}),
|
|
56
|
+
WRAPPED_KEY: exports.WRAPPED_KEY,
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,4EAA6E;AAG7E;;;GAGG;AACU,QAAA,WAAW,GAAG;IACzB,SAAS,EAAE,EAAW;IACtB,OAAO,EAAE,EAAW;IACpB,eAAe,EAAE,EAAW;IAC5B,cAAc,EAAE,MAAe;CACvB,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACU,QAAA,SAAS,GAAkB;IACtC,GAAG,IAAA,2CAAsB,EAAC,gBAAgB,EAAE,gBAAgB,EAAE;QAC5D,IAAI,EAAE,aAAa;KACpB,CAAC;IACF,WAAW,EAAX,mBAAW;CACZ,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ApiResponse, FlexibleValidationChain, RouteConfig } from '@digitaldefiance/node-express-suite';
|
|
2
|
+
import { IRequestUserDTO } from '@digitaldefiance/suite-core-lib';
|
|
3
|
+
import { NextFunction, Request, Response, Router } from 'express';
|
|
4
|
+
import { IUserDocument } from '../documents/user';
|
|
5
|
+
import { IApplication } from '../interfaces/application';
|
|
6
|
+
import { StringLanguage } from '../interfaces/request-user';
|
|
7
|
+
export declare abstract class BaseController<T extends ApiResponse, H extends object> {
|
|
8
|
+
readonly router: Router;
|
|
9
|
+
private activeRequest;
|
|
10
|
+
private activeResponse;
|
|
11
|
+
readonly application: IApplication;
|
|
12
|
+
protected routeDefinitions: RouteConfig<H, StringLanguage>[];
|
|
13
|
+
protected handlers: H;
|
|
14
|
+
constructor(application: IApplication);
|
|
15
|
+
protected abstract initRouteDefinitions(): void;
|
|
16
|
+
private getAuthenticationMiddleware;
|
|
17
|
+
private getCryptoAuthenticationMiddleware;
|
|
18
|
+
private getValidationMiddleware;
|
|
19
|
+
private createValidationHandler;
|
|
20
|
+
private createDynamicValidationHandler;
|
|
21
|
+
private createRequestHandler;
|
|
22
|
+
/**
|
|
23
|
+
* Initializes the routes for the controller.
|
|
24
|
+
*/
|
|
25
|
+
private initializeRoutes;
|
|
26
|
+
/**
|
|
27
|
+
* Authenticates the request by checking the token. Also populates the request with the user object.
|
|
28
|
+
* @param route The route config
|
|
29
|
+
* @param req The request object
|
|
30
|
+
* @param res The response object
|
|
31
|
+
* @param next The next function
|
|
32
|
+
*/
|
|
33
|
+
protected authenticateRequest(route: RouteConfig<H, StringLanguage>, req: Request, res: Response<T>, next: NextFunction): Promise<void>;
|
|
34
|
+
private handleBooleanFields;
|
|
35
|
+
/**
|
|
36
|
+
* If express-validator flagged any errors, throw an error.
|
|
37
|
+
* @param req The request object
|
|
38
|
+
* @param res The response object
|
|
39
|
+
* @param next The next function
|
|
40
|
+
* @param validationArray An array of express validation chains that were applied to the request.
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
protected checkRequestValidationAndThrow(req: Request, res: Response, next: NextFunction, validationArray?: FlexibleValidationChain<StringLanguage>): void;
|
|
44
|
+
get user(): IRequestUserDTO;
|
|
45
|
+
get validatedBody(): Record<string, any>;
|
|
46
|
+
get req(): Request;
|
|
47
|
+
get res(): Response;
|
|
48
|
+
protected validateAndFetchRequestUser(req: Request): Promise<IUserDocument>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/controllers/base.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,WAAW,EAGX,uBAAuB,EAEvB,WAAW,EAKZ,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EAGhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,OAAO,EAEP,QAAQ,EACR,MAAM,EACP,MAAM,SAAS,CAAC;AAMjB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,8BAAsB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,MAAM;IAC1E,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,cAAc,CAAyB;IAC/C,SAAgB,WAAW,EAAE,YAAY,CAAC;IAC1C,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,CAAM;IAClE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEH,WAAW,EAAE,YAAY;IAQ5C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAE/C,OAAO,CAAC,2BAA2B;IAkBnC,OAAO,CAAC,iCAAiC;IAuBzC,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,oBAAoB;IA2C5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;;;;OAMG;cACa,mBAAmB,CACjC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAChB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,mBAAmB;IA6B3B;;;;;;;OAOG;IACH,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,EAClB,eAAe,GAAE,uBAAuB,CAAC,cAAc,CAAM,GAC5D,IAAI;IA2BP,IAAW,IAAI,IAAI,eAAe,CAQjC;IAED,IAAW,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQ9C;IAED,IAAW,GAAG,IAAI,OAAO,CAKxB;IAED,IAAW,GAAG,IAAI,QAAQ,CAKzB;cAEe,2BAA2B,CACzC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,aAAa,CAAC;CAW1B"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseController = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
6
|
+
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
7
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
8
|
+
const express_1 = require("express");
|
|
9
|
+
const express_validator_1 = require("express-validator");
|
|
10
|
+
const express_validation_1 = require("../errors/express-validation");
|
|
11
|
+
const missing_validated_data_1 = require("../errors/missing-validated-data");
|
|
12
|
+
class BaseController {
|
|
13
|
+
constructor(application) {
|
|
14
|
+
this.activeRequest = null;
|
|
15
|
+
this.activeResponse = null;
|
|
16
|
+
this.routeDefinitions = [];
|
|
17
|
+
this.application = application;
|
|
18
|
+
this.router = (0, express_1.Router)();
|
|
19
|
+
this.handlers = {};
|
|
20
|
+
this.initRouteDefinitions();
|
|
21
|
+
this.initializeRoutes();
|
|
22
|
+
}
|
|
23
|
+
getAuthenticationMiddleware(route) {
|
|
24
|
+
if (route.useAuthentication) {
|
|
25
|
+
return [
|
|
26
|
+
async (req, res, next) => {
|
|
27
|
+
try {
|
|
28
|
+
await this.authenticateRequest(route, req, res, next);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
next(err);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
getCryptoAuthenticationMiddleware(route) {
|
|
41
|
+
if (route.useCryptoAuthentication) {
|
|
42
|
+
return [
|
|
43
|
+
async (req, res, next) => {
|
|
44
|
+
try {
|
|
45
|
+
await (0, node_express_suite_1.authenticateCrypto)(this.application, req, res, next);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
next(err);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
getValidationMiddleware(route) {
|
|
58
|
+
if (Array.isArray(route.validation) && route.validation.length > 0) {
|
|
59
|
+
return [
|
|
60
|
+
...route.validation,
|
|
61
|
+
this.createValidationHandler(route.validation),
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
else if (typeof route.validation === 'function') {
|
|
65
|
+
return [this.createDynamicValidationHandler(route.validation)];
|
|
66
|
+
}
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
createValidationHandler(validation) {
|
|
70
|
+
return (req, res, next) => {
|
|
71
|
+
try {
|
|
72
|
+
this.checkRequestValidationAndThrow(req, res, next, validation);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
next(error);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
createDynamicValidationHandler(validationFn) {
|
|
80
|
+
return async (req, res, next) => {
|
|
81
|
+
try {
|
|
82
|
+
const validationArray = validationFn(i18n_lib_1.GlobalActiveContext.instance.userLanguage);
|
|
83
|
+
await Promise.all(validationArray.map((v) => v.run(req)));
|
|
84
|
+
await this.checkRequestValidationAndThrow(req, res, next, validationArray);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
next(error);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
createRequestHandler(config) {
|
|
92
|
+
return async (req, res, next) => {
|
|
93
|
+
this.activeRequest = req;
|
|
94
|
+
this.activeResponse = res;
|
|
95
|
+
if (config.useAuthentication && !this.activeRequest?.user) {
|
|
96
|
+
(0, node_express_suite_1.handleError)(new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_Unauthorized)), {
|
|
97
|
+
statusCode: 401,
|
|
98
|
+
}), res, node_express_suite_1.sendApiMessageResponse, next);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const handler = this.handlers[config.handlerKey];
|
|
103
|
+
const sendFunc = config.rawJsonHandler
|
|
104
|
+
? node_express_suite_1.sendRawJsonResponse.bind(this)
|
|
105
|
+
: node_express_suite_1.sendApiMessageResponse.bind(this);
|
|
106
|
+
const handlerArgs = config.handlerArgs ?? [];
|
|
107
|
+
const { statusCode, response, headers } = await handler(req, ...handlerArgs);
|
|
108
|
+
if (headers) {
|
|
109
|
+
res.set(headers);
|
|
110
|
+
}
|
|
111
|
+
sendFunc(statusCode, response, res);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
(0, node_express_suite_1.handleError)(error, res, node_express_suite_1.sendApiMessageResponse, next);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Initializes the routes for the controller.
|
|
120
|
+
*/
|
|
121
|
+
initializeRoutes() {
|
|
122
|
+
Object.values(this.routeDefinitions).forEach((config) => {
|
|
123
|
+
this.router[config.method](config.path, ...[
|
|
124
|
+
...this.getAuthenticationMiddleware(config),
|
|
125
|
+
node_express_suite_1.setGlobalContextLanguageFromRequest,
|
|
126
|
+
...this.getValidationMiddleware(config),
|
|
127
|
+
...this.getCryptoAuthenticationMiddleware(config),
|
|
128
|
+
...(config.middleware ?? []),
|
|
129
|
+
this.createRequestHandler(config),
|
|
130
|
+
]);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Authenticates the request by checking the token. Also populates the request with the user object.
|
|
135
|
+
* @param route The route config
|
|
136
|
+
* @param req The request object
|
|
137
|
+
* @param res The response object
|
|
138
|
+
* @param next The next function
|
|
139
|
+
*/
|
|
140
|
+
async authenticateRequest(route, req, res, next) {
|
|
141
|
+
// Pass the real `next` function directly to the middleware.
|
|
142
|
+
// It will now correctly control the request lifecycle.
|
|
143
|
+
await (0, node_express_suite_1.authenticateToken)(this.application, req, res, next);
|
|
144
|
+
}
|
|
145
|
+
handleBooleanFields(validationArray, validatedBody) {
|
|
146
|
+
// false booleans will be missing from validatedBody, so we need to add them
|
|
147
|
+
validationArray.forEach((validation) => {
|
|
148
|
+
const fieldChains = validation.builder.build().fields;
|
|
149
|
+
fieldChains.forEach((field) => {
|
|
150
|
+
const hasBooleanValidator = validation.builder
|
|
151
|
+
.build()
|
|
152
|
+
.stack.some((item) => {
|
|
153
|
+
return (item.validator &&
|
|
154
|
+
typeof item.validator === 'function' &&
|
|
155
|
+
item.validator.name === 'isBoolean' &&
|
|
156
|
+
!item.negated);
|
|
157
|
+
});
|
|
158
|
+
// If the field has a boolean validator and it's not in the validated body, add it
|
|
159
|
+
if (hasBooleanValidator && !(field in validatedBody)) {
|
|
160
|
+
validatedBody[field] = false;
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
return validatedBody;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* If express-validator flagged any errors, throw an error.
|
|
168
|
+
* @param req The request object
|
|
169
|
+
* @param res The response object
|
|
170
|
+
* @param next The next function
|
|
171
|
+
* @param validationArray An array of express validation chains that were applied to the request.
|
|
172
|
+
* @returns
|
|
173
|
+
*/
|
|
174
|
+
checkRequestValidationAndThrow(req, res, next, validationArray = []) {
|
|
175
|
+
const errors = (0, express_validator_1.validationResult)(req);
|
|
176
|
+
if (!errors.isEmpty()) {
|
|
177
|
+
throw new express_validation_1.ExpressValidationError(errors);
|
|
178
|
+
}
|
|
179
|
+
// Create an object with only the validated fields
|
|
180
|
+
const validatedBody = (0, express_validator_1.matchedData)(req, {
|
|
181
|
+
locations: ['body'], // Only match data from request body
|
|
182
|
+
includeOptionals: false, // Exclude fields that weren't validated
|
|
183
|
+
});
|
|
184
|
+
const language = (i18n_lib_1.GlobalActiveContext.instance.userLanguage ??
|
|
185
|
+
i18n_lib_1.LanguageCodes.EN_US);
|
|
186
|
+
// If validationArray is a function, call it with the language
|
|
187
|
+
const valArray = typeof validationArray === 'function'
|
|
188
|
+
? validationArray(language)
|
|
189
|
+
: validationArray;
|
|
190
|
+
// false booleans will be missing from validatedBody, so we need to add them
|
|
191
|
+
// Attach the validated fields to the request object
|
|
192
|
+
req.validatedBody = this.handleBooleanFields(valArray, validatedBody);
|
|
193
|
+
next();
|
|
194
|
+
}
|
|
195
|
+
get user() {
|
|
196
|
+
if (!this.activeRequest) {
|
|
197
|
+
throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveRequest));
|
|
198
|
+
}
|
|
199
|
+
if (!this.activeRequest.user) {
|
|
200
|
+
throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest));
|
|
201
|
+
}
|
|
202
|
+
return this.activeRequest.user;
|
|
203
|
+
}
|
|
204
|
+
get validatedBody() {
|
|
205
|
+
if (!this.activeRequest) {
|
|
206
|
+
throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveRequest));
|
|
207
|
+
}
|
|
208
|
+
if (!this.activeRequest.validatedBody) {
|
|
209
|
+
throw new missing_validated_data_1.MissingValidatedDataError();
|
|
210
|
+
}
|
|
211
|
+
return this.activeRequest.validatedBody;
|
|
212
|
+
}
|
|
213
|
+
get req() {
|
|
214
|
+
if (!this.activeRequest) {
|
|
215
|
+
throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveRequest));
|
|
216
|
+
}
|
|
217
|
+
return this.activeRequest;
|
|
218
|
+
}
|
|
219
|
+
get res() {
|
|
220
|
+
if (!this.activeResponse) {
|
|
221
|
+
throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveResponse));
|
|
222
|
+
}
|
|
223
|
+
return this.activeResponse;
|
|
224
|
+
}
|
|
225
|
+
async validateAndFetchRequestUser(req) {
|
|
226
|
+
if (!req.user) {
|
|
227
|
+
throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_Unauthorized)), {
|
|
228
|
+
statusCode: 401,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
throw new Error('Not implemented');
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.BaseController = BaseController;
|
|
235
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/controllers/base.ts"],"names":[],"mappings":"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"}
|