@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,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmailService = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
const client_ses_1 = require("@aws-sdk/client-ses");
|
|
6
|
+
// import { debugLog } from '../utils';
|
|
7
|
+
const debugLog = (debug, type, message, ...args) => {
|
|
8
|
+
if (debug) {
|
|
9
|
+
console.log(`[${type}] ${message}`, ...args);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A generic service for sending emails using Amazon SES.
|
|
14
|
+
*/
|
|
15
|
+
class EmailService {
|
|
16
|
+
/**
|
|
17
|
+
* Constructs an instance of EmailService.
|
|
18
|
+
* @param config Configuration object containing AWS credentials, region, sender email, and debug/disable flags.
|
|
19
|
+
*/
|
|
20
|
+
constructor(application) {
|
|
21
|
+
this.application = application;
|
|
22
|
+
this.emailSender = application.environment.emailSender;
|
|
23
|
+
this.disableEmailSend = application.environment.disableEmailSend;
|
|
24
|
+
this.debug = application.environment.debug;
|
|
25
|
+
// Initialize the SES client with provided AWS credentials and region.
|
|
26
|
+
this.sesClient = new client_ses_1.SESClient({
|
|
27
|
+
region: application.environment.aws.region,
|
|
28
|
+
credentials: {
|
|
29
|
+
accessKeyId: application.environment.aws.accessKeyId.value ?? '',
|
|
30
|
+
secretAccessKey: application.environment.aws.secretAccessKey.value ?? '',
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sends an email using Amazon SES.
|
|
36
|
+
* @param to The recipient's email address.
|
|
37
|
+
* @param subject The subject line of the email.
|
|
38
|
+
* @param text The plain text body of the email.
|
|
39
|
+
* @param html The HTML body of the email.
|
|
40
|
+
* @returns A Promise that resolves when the email is sent successfully, or rejects on failure.
|
|
41
|
+
* @throws Error if email sending is disabled or if SES encounters an error.
|
|
42
|
+
*/
|
|
43
|
+
async sendEmail(to, subject, text, html) {
|
|
44
|
+
if (this.disableEmailSend) {
|
|
45
|
+
debugLog(this.debug, 'log', `Email sending disabled for: ${to} - Subject: ${subject}`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const sendCommand = new client_ses_1.SendEmailCommand({
|
|
49
|
+
Destination: {
|
|
50
|
+
ToAddresses: [to], // Recipient email address
|
|
51
|
+
},
|
|
52
|
+
Message: {
|
|
53
|
+
Body: {
|
|
54
|
+
Html: {
|
|
55
|
+
Charset: 'UTF-8',
|
|
56
|
+
Data: html, // HTML content of the email
|
|
57
|
+
},
|
|
58
|
+
Text: {
|
|
59
|
+
Charset: 'UTF-8',
|
|
60
|
+
Data: text, // Plain text content of the email
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
Subject: {
|
|
64
|
+
Charset: 'UTF-8',
|
|
65
|
+
Data: subject, // Subject of the email
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
Source: this.emailSender, // Sender email address (must be verified in SES)
|
|
69
|
+
});
|
|
70
|
+
try {
|
|
71
|
+
await this.sesClient.send(sendCommand);
|
|
72
|
+
debugLog(this.debug, 'log', `Email sent successfully to ${to} with subject: ${subject}`);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error(`Failed to send email to ${to}:`, error);
|
|
76
|
+
throw new Error(`Failed to send email: ${error instanceof Error ? error.message : String(error)}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.EmailService = EmailService;
|
|
81
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/email.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,oDAAkE;AAElE,uCAAuC;AACvC,MAAM,QAAQ,GAAG,CACf,KAAc,EACd,IAAY,EACZ,OAAe,EACf,GAAG,IAAW,EACd,EAAE;IACF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAa,YAAY;IAOvB;;;OAGG;IACH,YAAY,WAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;QACvD,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC;QACjE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;QAE3C,sEAAsE;QACtE,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM;YAC1C,WAAW,EAAE;gBACX,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBAChE,eAAe,EACb,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;aAC1D;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,SAAS,CACpB,EAAU,EACV,OAAe,EACf,IAAY,EACZ,IAAY;QAEZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,QAAQ,CACN,IAAI,CAAC,KAAK,EACV,KAAK,EACL,+BAA+B,EAAE,eAAe,OAAO,EAAE,CAC1D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,6BAAgB,CAAC;YACvC,WAAW,EAAE;gBACX,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,0BAA0B;aAC9C;YACD,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,IAAI,EAAE;wBACJ,OAAO,EAAE,OAAO;wBAChB,IAAI,EAAE,IAAI,EAAE,4BAA4B;qBACzC;oBACD,IAAI,EAAE;wBACJ,OAAO,EAAE,OAAO;wBAChB,IAAI,EAAE,IAAI,EAAE,kCAAkC;qBAC/C;iBACF;gBACD,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,OAAO,EAAE,uBAAuB;iBACvC;aACF;YACD,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,iDAAiD;SAC5E,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,QAAQ,CACN,IAAI,CAAC,KAAK,EACV,KAAK,EACL,8BAA8B,EAAE,kBAAkB,OAAO,EAAE,CAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,yBACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA3FD,oCA2FC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
import { IMessageMetadata } from '@brightchain/brightchain-lib';
|
|
3
|
+
export declare enum MessageEventType {
|
|
4
|
+
MESSAGE_STORED = "message:stored",
|
|
5
|
+
MESSAGE_RECEIVED = "message:received",
|
|
6
|
+
MESSAGE_DELIVERED = "message:delivered",
|
|
7
|
+
MESSAGE_FAILED = "message:failed"
|
|
8
|
+
}
|
|
9
|
+
export interface IMessageEvent {
|
|
10
|
+
type: MessageEventType;
|
|
11
|
+
timestamp: Date;
|
|
12
|
+
metadata: IMessageMetadata;
|
|
13
|
+
}
|
|
14
|
+
export interface IEventFilter {
|
|
15
|
+
types?: MessageEventType[];
|
|
16
|
+
senderId?: string;
|
|
17
|
+
recipientId?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Event Notification System for real-time message updates
|
|
21
|
+
*/
|
|
22
|
+
export declare class EventNotificationSystem {
|
|
23
|
+
private subscriptions;
|
|
24
|
+
private eventHistory;
|
|
25
|
+
private readonly maxHistorySize;
|
|
26
|
+
private readonly retentionMs;
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to message events
|
|
29
|
+
*/
|
|
30
|
+
subscribe(ws: WebSocket, filter?: IEventFilter): void;
|
|
31
|
+
/**
|
|
32
|
+
* Unsubscribe from events
|
|
33
|
+
*/
|
|
34
|
+
unsubscribe(ws: WebSocket): void;
|
|
35
|
+
/**
|
|
36
|
+
* Emit event to subscribers
|
|
37
|
+
*/
|
|
38
|
+
emit(type: MessageEventType, metadata: IMessageMetadata): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get event history
|
|
41
|
+
*/
|
|
42
|
+
getEventHistory(filter?: IEventFilter, limit?: number): IMessageEvent[];
|
|
43
|
+
private addToHistory;
|
|
44
|
+
private matchesFilter;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=eventNotificationSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventNotificationSystem.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/eventNotificationSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,oBAAY,gBAAgB;IAC1B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IAEnD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI;IAQrD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIhC;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAgB9D;;OAEG;IACH,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,SAAM,GAAG,aAAa,EAAE;IAQpE,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;CAYtB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventNotificationSystem = exports.MessageEventType = void 0;
|
|
4
|
+
const ws_1 = require("ws");
|
|
5
|
+
var MessageEventType;
|
|
6
|
+
(function (MessageEventType) {
|
|
7
|
+
MessageEventType["MESSAGE_STORED"] = "message:stored";
|
|
8
|
+
MessageEventType["MESSAGE_RECEIVED"] = "message:received";
|
|
9
|
+
MessageEventType["MESSAGE_DELIVERED"] = "message:delivered";
|
|
10
|
+
MessageEventType["MESSAGE_FAILED"] = "message:failed";
|
|
11
|
+
})(MessageEventType || (exports.MessageEventType = MessageEventType = {}));
|
|
12
|
+
/**
|
|
13
|
+
* Event Notification System for real-time message updates
|
|
14
|
+
*/
|
|
15
|
+
class EventNotificationSystem {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.subscriptions = new Map();
|
|
18
|
+
this.eventHistory = [];
|
|
19
|
+
this.maxHistorySize = 1000;
|
|
20
|
+
this.retentionMs = 24 * 60 * 60 * 1000; // 24 hours
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Subscribe to message events
|
|
24
|
+
*/
|
|
25
|
+
subscribe(ws, filter) {
|
|
26
|
+
this.subscriptions.set(ws, filter || {});
|
|
27
|
+
ws.on('close', () => {
|
|
28
|
+
this.subscriptions.delete(ws);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Unsubscribe from events
|
|
33
|
+
*/
|
|
34
|
+
unsubscribe(ws) {
|
|
35
|
+
this.subscriptions.delete(ws);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Emit event to subscribers
|
|
39
|
+
*/
|
|
40
|
+
emit(type, metadata) {
|
|
41
|
+
const event = {
|
|
42
|
+
type,
|
|
43
|
+
timestamp: new Date(),
|
|
44
|
+
metadata,
|
|
45
|
+
};
|
|
46
|
+
this.addToHistory(event);
|
|
47
|
+
for (const [ws, filter] of this.subscriptions.entries()) {
|
|
48
|
+
if (this.matchesFilter(event, filter) && ws.readyState === ws_1.WebSocket.OPEN) {
|
|
49
|
+
ws.send(JSON.stringify(event));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get event history
|
|
55
|
+
*/
|
|
56
|
+
getEventHistory(filter, limit = 100) {
|
|
57
|
+
const cutoff = Date.now() - this.retentionMs;
|
|
58
|
+
return this.eventHistory
|
|
59
|
+
.filter(e => e.timestamp.getTime() > cutoff)
|
|
60
|
+
.filter(e => !filter || this.matchesFilter(e, filter))
|
|
61
|
+
.slice(-limit);
|
|
62
|
+
}
|
|
63
|
+
addToHistory(event) {
|
|
64
|
+
this.eventHistory.push(event);
|
|
65
|
+
if (this.eventHistory.length > this.maxHistorySize) {
|
|
66
|
+
this.eventHistory.shift();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
matchesFilter(event, filter) {
|
|
70
|
+
if (filter.types && !filter.types.includes(event.type)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (filter.senderId && event.metadata.senderId !== filter.senderId) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
if (filter.recipientId && !event.metadata.recipients?.includes(filter.recipientId)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.EventNotificationSystem = EventNotificationSystem;
|
|
83
|
+
//# sourceMappingURL=eventNotificationSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventNotificationSystem.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/eventNotificationSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { FecRecoveryResult, IFecService, ParityData as IParityData } from '@brightchain/brightchain-lib';
|
|
2
|
+
/**
|
|
3
|
+
* WasmFecService provides Forward Error Correction (FEC) functionality using WASM.
|
|
4
|
+
* This service is used to:
|
|
5
|
+
* 1. Create parity data for file recovery
|
|
6
|
+
* 2. Recover corrupted files using parity data
|
|
7
|
+
* 3. Ensure data integrity across distributed storage
|
|
8
|
+
*
|
|
9
|
+
* This implementation uses Reed-Solomon erasure coding via @subspace/reed-solomon-erasure.wasm to:
|
|
10
|
+
* 1. Split file data into shards
|
|
11
|
+
* 2. Create parity shards
|
|
12
|
+
* 3. Recover lost shards using parity
|
|
13
|
+
*
|
|
14
|
+
* @requirements 1.8, 4.5, 4.6
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use ParityData from @brightchain/brightchain-lib instead
|
|
18
|
+
*/
|
|
19
|
+
export interface ParityData {
|
|
20
|
+
data: Buffer;
|
|
21
|
+
index: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated Use FecRecoveryResult from @brightchain/brightchain-lib instead
|
|
25
|
+
*/
|
|
26
|
+
export interface RecoveryResult {
|
|
27
|
+
data: Buffer;
|
|
28
|
+
recovered: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* WASM-based FEC Service implementing IFecService.
|
|
32
|
+
*
|
|
33
|
+
* This service provides cross-platform FEC operations using WebAssembly.
|
|
34
|
+
* It is the default fallback when native implementations are not available.
|
|
35
|
+
*/
|
|
36
|
+
export declare class WasmFecService implements IFecService {
|
|
37
|
+
private wasmAvailable;
|
|
38
|
+
/**
|
|
39
|
+
* Check if the WASM FEC service is available.
|
|
40
|
+
*
|
|
41
|
+
* This checks if the @subspace/reed-solomon-erasure.wasm module can be loaded.
|
|
42
|
+
*
|
|
43
|
+
* @returns Promise resolving to true if WASM FEC is available
|
|
44
|
+
*/
|
|
45
|
+
isAvailable(): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Given a data buffer, encode it using Reed-Solomon erasure coding.
|
|
48
|
+
* This will produce a buffer of size (shardSize * (dataShards + parityShards))
|
|
49
|
+
* or (shardSize * parityShards) if fecOnly is true.
|
|
50
|
+
*/
|
|
51
|
+
encode(data: Buffer, shardSize: number, dataShards: number, parityShards: number, fecOnly: boolean): Promise<Buffer>;
|
|
52
|
+
/**
|
|
53
|
+
* Given a data buffer, reconstruct/repair it using Reed-Solomon erasure coding.
|
|
54
|
+
* This will produce a buffer of size (shardSize * dataShards).
|
|
55
|
+
*/
|
|
56
|
+
decode(data: Buffer, shardSize: number, dataShards: number, parityShards: number, shardsAvailable: boolean[]): Promise<Buffer>;
|
|
57
|
+
/**
|
|
58
|
+
* Create parity data for a block using Reed-Solomon encoding.
|
|
59
|
+
*
|
|
60
|
+
* @param blockData - The original block data to create parity for
|
|
61
|
+
* @param parityCount - Number of parity shards to generate
|
|
62
|
+
* @returns Promise resolving to array of parity data objects
|
|
63
|
+
*/
|
|
64
|
+
createParityData(blockData: Buffer | Uint8Array, parityCount: number): Promise<IParityData[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Recover block data using parity data.
|
|
67
|
+
*
|
|
68
|
+
* @param corruptedData - The corrupted block data, or null if completely missing
|
|
69
|
+
* @param parityData - Array of available parity data objects
|
|
70
|
+
* @param originalSize - The original size of the block data in bytes
|
|
71
|
+
* @returns Promise resolving to recovery result with recovered data
|
|
72
|
+
*/
|
|
73
|
+
recoverFileData(_corruptedData: Buffer | Uint8Array | null, parityData: IParityData[], originalSize: number): Promise<FecRecoveryResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Verify block integrity against its parity data.
|
|
76
|
+
*
|
|
77
|
+
* @param blockData - The block data to verify
|
|
78
|
+
* @param parityData - The stored parity data to verify against
|
|
79
|
+
* @returns Promise resolving to true if the block is intact
|
|
80
|
+
*/
|
|
81
|
+
verifyFileIntegrity(blockData: Buffer | Uint8Array, parityData: IParityData[]): Promise<boolean>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @deprecated Use WasmFecService instead. FecService is kept for backward compatibility.
|
|
85
|
+
*/
|
|
86
|
+
export declare const FecService: typeof WasmFecService;
|
|
87
|
+
//# sourceMappingURL=fec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fec.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/fec.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EACjB,WAAW,EACX,UAAU,IAAI,WAAW,EAC1B,MAAM,8BAA8B,CAAC;AAItC;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,aAAa,CAAwB;IAE7C;;;;;;OAMG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBrC;;;;OAIG;IACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC;IA2ClB;;;OAGG;IACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,OAAO,EAAE,GACzB,OAAO,CAAC,MAAM,CAAC;IA6ClB;;;;;;OAMG;IACU,gBAAgB,CAC3B,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,EAAE,CAAC;IAoEzB;;;;;;;OAOG;IACU,eAAe,CAC1B,cAAc,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,EAC1C,UAAU,EAAE,WAAW,EAAE,EACzB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAqE7B;;;;;;OAMG;IACU,mBAAmB,CAC9B,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,UAAU,EAAE,WAAW,EAAE,GACxB,OAAO,CAAC,OAAO,CAAC;CAoBpB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,uBAAiB,CAAC"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FecService = exports.WasmFecService = void 0;
|
|
4
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
5
|
+
const reed_solomon_erasure_wasm_1 = require("@subspace/reed-solomon-erasure.wasm");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
/**
|
|
8
|
+
* WASM-based FEC Service implementing IFecService.
|
|
9
|
+
*
|
|
10
|
+
* This service provides cross-platform FEC operations using WebAssembly.
|
|
11
|
+
* It is the default fallback when native implementations are not available.
|
|
12
|
+
*/
|
|
13
|
+
class WasmFecService {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.wasmAvailable = null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if the WASM FEC service is available.
|
|
19
|
+
*
|
|
20
|
+
* This checks if the @subspace/reed-solomon-erasure.wasm module can be loaded.
|
|
21
|
+
*
|
|
22
|
+
* @returns Promise resolving to true if WASM FEC is available
|
|
23
|
+
*/
|
|
24
|
+
async isAvailable() {
|
|
25
|
+
if (this.wasmAvailable !== null) {
|
|
26
|
+
return this.wasmAvailable;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
// Try to load the WASM module
|
|
30
|
+
await reed_solomon_erasure_wasm_1.ReedSolomonErasure.fromCurrentDirectory();
|
|
31
|
+
this.wasmAvailable = true;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
this.wasmAvailable = false;
|
|
35
|
+
}
|
|
36
|
+
return this.wasmAvailable;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Given a data buffer, encode it using Reed-Solomon erasure coding.
|
|
40
|
+
* This will produce a buffer of size (shardSize * (dataShards + parityShards))
|
|
41
|
+
* or (shardSize * parityShards) if fecOnly is true.
|
|
42
|
+
*/
|
|
43
|
+
async encode(data, shardSize, dataShards, parityShards, fecOnly) {
|
|
44
|
+
// Validate parameters
|
|
45
|
+
if (!data || data.length === 0) {
|
|
46
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.DataRequired);
|
|
47
|
+
}
|
|
48
|
+
if (data.length !== shardSize * dataShards) {
|
|
49
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.InvalidDataLength, undefined, {
|
|
50
|
+
LENGTH: data.length.toString(),
|
|
51
|
+
EXPECTED: (shardSize * dataShards).toString(),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (shardSize > constants_1.Constants.FEC.MAX_SHARD_SIZE) {
|
|
55
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.ShardSizeExceedsMaximum, undefined, {
|
|
56
|
+
SIZE: shardSize.toString(),
|
|
57
|
+
MAXIMUM: constants_1.Constants.FEC.MAX_SHARD_SIZE.toString(),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (dataShards <= 0 || parityShards <= 0) {
|
|
61
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.InvalidShardCounts);
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const shards = new Uint8Array(shardSize * (dataShards + parityShards));
|
|
65
|
+
shards.set(data);
|
|
66
|
+
// Encoding
|
|
67
|
+
const reedSolomonErasure = await reed_solomon_erasure_wasm_1.ReedSolomonErasure.fromCurrentDirectory();
|
|
68
|
+
reedSolomonErasure.encode(shards, dataShards, parityShards);
|
|
69
|
+
return fecOnly
|
|
70
|
+
? Buffer.from(shards.subarray(shardSize * dataShards))
|
|
71
|
+
: Buffer.from(shards);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.FecEncodingFailed, undefined, {
|
|
75
|
+
ERROR: error instanceof Error ? error.message : 'Unknown error',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Given a data buffer, reconstruct/repair it using Reed-Solomon erasure coding.
|
|
81
|
+
* This will produce a buffer of size (shardSize * dataShards).
|
|
82
|
+
*/
|
|
83
|
+
async decode(data, shardSize, dataShards, parityShards, shardsAvailable) {
|
|
84
|
+
// Validate parameters
|
|
85
|
+
if (!data || data.length === 0) {
|
|
86
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.DataRequired);
|
|
87
|
+
}
|
|
88
|
+
if (data.length !== shardSize * (dataShards + parityShards)) {
|
|
89
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.InvalidDataLength, undefined, {
|
|
90
|
+
LENGTH: data.length.toString(),
|
|
91
|
+
EXPECTED: (shardSize * (dataShards + parityShards)).toString(),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (!shardsAvailable ||
|
|
95
|
+
shardsAvailable.length !== dataShards + parityShards) {
|
|
96
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.InvalidShardsAvailableArray);
|
|
97
|
+
}
|
|
98
|
+
const availableCount = shardsAvailable.filter((x) => x).length;
|
|
99
|
+
if (availableCount < dataShards) {
|
|
100
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.NotEnoughShardsAvailable, undefined, {
|
|
101
|
+
AVAILABLE: availableCount.toString(),
|
|
102
|
+
REQUIRED: dataShards.toString(),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const reedSolomonErasure = await reed_solomon_erasure_wasm_1.ReedSolomonErasure.fromCurrentDirectory();
|
|
107
|
+
reedSolomonErasure.reconstruct(data, dataShards, parityShards, shardsAvailable);
|
|
108
|
+
return data.subarray(0, shardSize * dataShards);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.FecDecodingFailed, undefined, {
|
|
112
|
+
ERROR: error instanceof Error ? error.message : 'Unknown error',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create parity data for a block using Reed-Solomon encoding.
|
|
118
|
+
*
|
|
119
|
+
* @param blockData - The original block data to create parity for
|
|
120
|
+
* @param parityCount - Number of parity shards to generate
|
|
121
|
+
* @returns Promise resolving to array of parity data objects
|
|
122
|
+
*/
|
|
123
|
+
async createParityData(blockData, parityCount) {
|
|
124
|
+
const fileData = Buffer.isBuffer(blockData)
|
|
125
|
+
? blockData
|
|
126
|
+
: Buffer.from(blockData);
|
|
127
|
+
if (!fileData || fileData.length === 0) {
|
|
128
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.DataRequired);
|
|
129
|
+
}
|
|
130
|
+
if (parityCount <= 0) {
|
|
131
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.ParityBlockCountMustBePositive);
|
|
132
|
+
}
|
|
133
|
+
const shardSize = Math.min(fileData.length, constants_1.Constants.FEC.MAX_SHARD_SIZE);
|
|
134
|
+
const requiredShards = Math.ceil(fileData.length / shardSize);
|
|
135
|
+
try {
|
|
136
|
+
const resultParityData = Array(parityCount)
|
|
137
|
+
.fill(null)
|
|
138
|
+
.map(() => Buffer.alloc(0));
|
|
139
|
+
// Process each chunk
|
|
140
|
+
for (let i = 0; i < requiredShards; i++) {
|
|
141
|
+
const start = i * shardSize;
|
|
142
|
+
const end = Math.min(start + shardSize, fileData.length);
|
|
143
|
+
const chunk = fileData.subarray(start, end);
|
|
144
|
+
// Pad chunk if necessary
|
|
145
|
+
const paddedChunk = chunk.length < shardSize
|
|
146
|
+
? Buffer.concat([chunk, Buffer.alloc(shardSize - chunk.length)])
|
|
147
|
+
: chunk;
|
|
148
|
+
const chunkParity = await this.encode(paddedChunk, shardSize, 1, parityCount, true);
|
|
149
|
+
// Distribute parity data
|
|
150
|
+
for (let j = 0; j < parityCount; j++) {
|
|
151
|
+
const parityChunk = chunkParity.subarray(j * shardSize, (j + 1) * shardSize);
|
|
152
|
+
resultParityData[j] = Buffer.concat([
|
|
153
|
+
resultParityData[j],
|
|
154
|
+
parityChunk,
|
|
155
|
+
]);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return resultParityData.map((data, index) => ({
|
|
159
|
+
data,
|
|
160
|
+
index,
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
if (error instanceof brightchain_lib_1.FecError) {
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.FecEncodingFailed, undefined, {
|
|
168
|
+
ERROR: error instanceof Error ? error.message : 'Unknown error',
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Recover block data using parity data.
|
|
174
|
+
*
|
|
175
|
+
* @param corruptedData - The corrupted block data, or null if completely missing
|
|
176
|
+
* @param parityData - Array of available parity data objects
|
|
177
|
+
* @param originalSize - The original size of the block data in bytes
|
|
178
|
+
* @returns Promise resolving to recovery result with recovered data
|
|
179
|
+
*/
|
|
180
|
+
async recoverFileData(_corruptedData, parityData, originalSize) {
|
|
181
|
+
if (!parityData || parityData.length === 0) {
|
|
182
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.DataRequired);
|
|
183
|
+
}
|
|
184
|
+
if (originalSize <= 0) {
|
|
185
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.InvalidDataLength);
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
const shardSize = Math.min(originalSize, constants_1.Constants.FEC.MAX_SHARD_SIZE);
|
|
189
|
+
const requiredShards = Math.ceil(originalSize / shardSize);
|
|
190
|
+
// Set up shard availability array (data shard unavailable, parity shards available)
|
|
191
|
+
const availableShards = [false, ...Array(parityData.length).fill(true)];
|
|
192
|
+
let recoveredData = Buffer.alloc(0);
|
|
193
|
+
// Recover each shard
|
|
194
|
+
for (let i = 0; i < requiredShards; i++) {
|
|
195
|
+
const start = i * shardSize;
|
|
196
|
+
const end = Math.min(start + shardSize, originalSize);
|
|
197
|
+
const chunkSize = end - start;
|
|
198
|
+
// Create placeholder for corrupted data shard
|
|
199
|
+
const corruptedShard = Buffer.alloc(shardSize);
|
|
200
|
+
// Combine corrupted and parity data for this shard
|
|
201
|
+
const shardData = Buffer.concat([
|
|
202
|
+
corruptedShard,
|
|
203
|
+
...parityData.map((parity) => Buffer.from(parity.data.subarray(i * shardSize, (i + 1) * shardSize))),
|
|
204
|
+
]);
|
|
205
|
+
// Recover this shard
|
|
206
|
+
const recoveredShard = await this.decode(shardData, shardSize, 1, parityData.length, availableShards);
|
|
207
|
+
// Only take the actual data length for the last shard
|
|
208
|
+
const actualShard = i === requiredShards - 1
|
|
209
|
+
? recoveredShard.subarray(0, chunkSize)
|
|
210
|
+
: recoveredShard;
|
|
211
|
+
recoveredData = Buffer.concat([recoveredData, actualShard]);
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
data: recoveredData,
|
|
215
|
+
recovered: true,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
if (error instanceof brightchain_lib_1.FecError) {
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
222
|
+
throw new brightchain_lib_1.FecError(brightchain_lib_1.FecErrorType.FecDecodingFailed, undefined, {
|
|
223
|
+
ERROR: error instanceof Error ? error.message : 'Unknown error',
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Verify block integrity against its parity data.
|
|
229
|
+
*
|
|
230
|
+
* @param blockData - The block data to verify
|
|
231
|
+
* @param parityData - The stored parity data to verify against
|
|
232
|
+
* @returns Promise resolving to true if the block is intact
|
|
233
|
+
*/
|
|
234
|
+
async verifyFileIntegrity(blockData, parityData) {
|
|
235
|
+
try {
|
|
236
|
+
const fileData = Buffer.isBuffer(blockData)
|
|
237
|
+
? blockData
|
|
238
|
+
: Buffer.from(blockData);
|
|
239
|
+
const regeneratedParity = await this.createParityData(fileData, parityData.length);
|
|
240
|
+
return parityData.every((original, index) => {
|
|
241
|
+
const originalBuf = Buffer.from(original.data);
|
|
242
|
+
const regeneratedBuf = Buffer.from(regeneratedParity[index].data);
|
|
243
|
+
return originalBuf.equals(regeneratedBuf);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.WasmFecService = WasmFecService;
|
|
252
|
+
/**
|
|
253
|
+
* @deprecated Use WasmFecService instead. FecService is kept for backward compatibility.
|
|
254
|
+
*/
|
|
255
|
+
exports.FecService = WasmFecService;
|
|
256
|
+
//# sourceMappingURL=fec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fec.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/fec.ts"],"names":[],"mappings":"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"}
|