@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,458 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Availability-Aware Block Store Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Wraps an existing IBlockStore implementation to add availability tracking.
|
|
6
|
+
* Provides hooks for registry updates, gossip announcements, access metadata
|
|
7
|
+
* updates, and partition mode operation restrictions.
|
|
8
|
+
*
|
|
9
|
+
* @see Requirements 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AvailabilityAwareBlockStore = exports.DEFAULT_AVAILABILITY_AWARE_BLOCK_STORE_CONFIG = exports.PartitionModeError = void 0;
|
|
13
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
14
|
+
/**
|
|
15
|
+
* Error thrown when an operation is attempted during partition mode
|
|
16
|
+
* that requires network access.
|
|
17
|
+
*/
|
|
18
|
+
class PartitionModeError extends Error {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = 'PartitionModeError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.PartitionModeError = PartitionModeError;
|
|
25
|
+
/**
|
|
26
|
+
* Default configuration values.
|
|
27
|
+
*/
|
|
28
|
+
exports.DEFAULT_AVAILABILITY_AWARE_BLOCK_STORE_CONFIG = {
|
|
29
|
+
localNodeId: '',
|
|
30
|
+
autoAnnounce: true,
|
|
31
|
+
trackAccess: true,
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* AvailabilityAwareBlockStore
|
|
35
|
+
*
|
|
36
|
+
* Wraps an existing IBlockStore to add availability tracking.
|
|
37
|
+
* Implements the same IBlockStore interface for transparent usage.
|
|
38
|
+
*
|
|
39
|
+
* Features:
|
|
40
|
+
* - Automatic registry updates on store/delete operations
|
|
41
|
+
* - Gossip announcements for new blocks and removals
|
|
42
|
+
* - Access metadata tracking on reads
|
|
43
|
+
* - Partition mode operation restrictions
|
|
44
|
+
* - Pending sync queue for operations during partition mode
|
|
45
|
+
*
|
|
46
|
+
* @see Requirements 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6
|
|
47
|
+
*/
|
|
48
|
+
class AvailabilityAwareBlockStore {
|
|
49
|
+
/**
|
|
50
|
+
* Create a new AvailabilityAwareBlockStore.
|
|
51
|
+
*
|
|
52
|
+
* @param innerStore - The underlying block store to wrap
|
|
53
|
+
* @param registry - Block registry for local block tracking
|
|
54
|
+
* @param availabilityService - Service for availability state management
|
|
55
|
+
* @param gossipService - Service for block announcements
|
|
56
|
+
* @param reconciliationService - Service for pending sync queue
|
|
57
|
+
* @param config - Configuration options
|
|
58
|
+
*/
|
|
59
|
+
constructor(innerStore, registry, availabilityService, gossipService, reconciliationService, config) {
|
|
60
|
+
this.innerStore = innerStore;
|
|
61
|
+
this.registry = registry;
|
|
62
|
+
this.availabilityService = availabilityService;
|
|
63
|
+
this.gossipService = gossipService;
|
|
64
|
+
this.reconciliationService = reconciliationService;
|
|
65
|
+
this.config = {
|
|
66
|
+
...exports.DEFAULT_AVAILABILITY_AWARE_BLOCK_STORE_CONFIG,
|
|
67
|
+
...config,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the block size for this store.
|
|
72
|
+
*/
|
|
73
|
+
get blockSize() {
|
|
74
|
+
return this.innerStore.blockSize;
|
|
75
|
+
}
|
|
76
|
+
// === Core Block Operations ===
|
|
77
|
+
/**
|
|
78
|
+
* Check if a block exists.
|
|
79
|
+
*
|
|
80
|
+
* @param key - The block's checksum or ID
|
|
81
|
+
* @returns Promise resolving to true if the block exists
|
|
82
|
+
*/
|
|
83
|
+
async has(key) {
|
|
84
|
+
return this.innerStore.has(key);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get a block's data.
|
|
88
|
+
* Updates access metadata if tracking is enabled.
|
|
89
|
+
*
|
|
90
|
+
* @param key - The block's checksum
|
|
91
|
+
* @returns Promise resolving to the block data
|
|
92
|
+
* @throws StoreError if block not found
|
|
93
|
+
* @see Requirements 12.4
|
|
94
|
+
*/
|
|
95
|
+
async getData(key) {
|
|
96
|
+
const blockId = this.keyToHex(key);
|
|
97
|
+
// Check availability state for remote blocks during partition mode
|
|
98
|
+
if (this.availabilityService.isInPartitionMode()) {
|
|
99
|
+
const state = await this.availabilityService.getAvailabilityState(blockId);
|
|
100
|
+
if (state === brightchain_lib_1.AvailabilityState.Remote) {
|
|
101
|
+
throw new PartitionModeError(`Cannot access remote block ${blockId} during partition mode`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Delegate to inner store
|
|
105
|
+
const block = await this.innerStore.getData(key);
|
|
106
|
+
// Update access metadata if tracking is enabled
|
|
107
|
+
if (this.config.trackAccess) {
|
|
108
|
+
await this.updateAccessMetadata(blockId);
|
|
109
|
+
}
|
|
110
|
+
return block;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Store a block's data with optional durability settings.
|
|
114
|
+
* Updates registry, availability state, and announces via gossip.
|
|
115
|
+
*
|
|
116
|
+
* @param block - The block to store
|
|
117
|
+
* @param options - Optional storage options
|
|
118
|
+
* @see Requirements 12.2, 8.1, 8.3, 8.5
|
|
119
|
+
*/
|
|
120
|
+
async setData(block, options) {
|
|
121
|
+
const blockId = this.keyToHex(block.idChecksum);
|
|
122
|
+
// Store in inner store first
|
|
123
|
+
await this.innerStore.setData(block, options);
|
|
124
|
+
// Update registry
|
|
125
|
+
this.registry.addLocal(blockId);
|
|
126
|
+
// Update availability state to Local
|
|
127
|
+
await this.availabilityService.setAvailabilityState(blockId, brightchain_lib_1.AvailabilityState.Local);
|
|
128
|
+
// Update location metadata
|
|
129
|
+
const locationRecord = {
|
|
130
|
+
nodeId: this.config.localNodeId,
|
|
131
|
+
lastSeen: new Date(),
|
|
132
|
+
isAuthoritative: true,
|
|
133
|
+
};
|
|
134
|
+
await this.availabilityService.updateLocation(blockId, locationRecord);
|
|
135
|
+
// Handle partition mode - add to pending sync queue
|
|
136
|
+
if (this.availabilityService.isInPartitionMode()) {
|
|
137
|
+
const syncItem = {
|
|
138
|
+
type: 'store',
|
|
139
|
+
blockId,
|
|
140
|
+
timestamp: new Date(),
|
|
141
|
+
data: block.data,
|
|
142
|
+
};
|
|
143
|
+
this.reconciliationService.addToPendingSyncQueue(syncItem);
|
|
144
|
+
}
|
|
145
|
+
else if (this.config.autoAnnounce) {
|
|
146
|
+
// Announce to network via gossip
|
|
147
|
+
await this.gossipService.announceBlock(blockId);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Delete a block's data.
|
|
152
|
+
* Updates registry, availability state, and announces removal via gossip.
|
|
153
|
+
*
|
|
154
|
+
* @param key - The block's checksum
|
|
155
|
+
* @see Requirements 12.3, 8.3, 8.5
|
|
156
|
+
*/
|
|
157
|
+
async deleteData(key) {
|
|
158
|
+
const blockId = this.keyToHex(key);
|
|
159
|
+
// Delete from inner store first
|
|
160
|
+
await this.innerStore.deleteData(key);
|
|
161
|
+
// Update registry
|
|
162
|
+
this.registry.removeLocal(blockId);
|
|
163
|
+
// Remove local location
|
|
164
|
+
await this.availabilityService.removeLocation(blockId, this.config.localNodeId);
|
|
165
|
+
// Handle partition mode - add to pending sync queue
|
|
166
|
+
if (this.availabilityService.isInPartitionMode()) {
|
|
167
|
+
const syncItem = {
|
|
168
|
+
type: 'delete',
|
|
169
|
+
blockId,
|
|
170
|
+
timestamp: new Date(),
|
|
171
|
+
};
|
|
172
|
+
this.reconciliationService.addToPendingSyncQueue(syncItem);
|
|
173
|
+
}
|
|
174
|
+
else if (this.config.autoAnnounce) {
|
|
175
|
+
// Announce removal to network via gossip
|
|
176
|
+
await this.gossipService.announceRemoval(blockId);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get random block checksums from the store.
|
|
181
|
+
*
|
|
182
|
+
* @param count - Maximum number of blocks to return
|
|
183
|
+
* @returns Array of random block checksums
|
|
184
|
+
*/
|
|
185
|
+
async getRandomBlocks(count) {
|
|
186
|
+
return this.innerStore.getRandomBlocks(count);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get a handle to a block.
|
|
190
|
+
*
|
|
191
|
+
* @param checksum - The block's checksum or ID
|
|
192
|
+
* @returns Block handle
|
|
193
|
+
*/
|
|
194
|
+
get(checksum) {
|
|
195
|
+
return this.innerStore.get(checksum);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Store raw data with a key.
|
|
199
|
+
*
|
|
200
|
+
* @param key - The key to store the data under
|
|
201
|
+
* @param data - The raw data to store
|
|
202
|
+
* @param options - Optional storage options
|
|
203
|
+
*/
|
|
204
|
+
async put(key, data, options) {
|
|
205
|
+
const keyChecksum = typeof key === 'string' ? brightchain_lib_1.Checksum.fromHex(key) : key;
|
|
206
|
+
const blockId = this.keyToHex(keyChecksum);
|
|
207
|
+
// Delegate to inner store
|
|
208
|
+
await this.innerStore.put(key, data, options);
|
|
209
|
+
// Update registry
|
|
210
|
+
this.registry.addLocal(blockId);
|
|
211
|
+
// Update availability state to Local
|
|
212
|
+
await this.availabilityService.setAvailabilityState(blockId, brightchain_lib_1.AvailabilityState.Local);
|
|
213
|
+
// Update location metadata
|
|
214
|
+
const locationRecord = {
|
|
215
|
+
nodeId: this.config.localNodeId,
|
|
216
|
+
lastSeen: new Date(),
|
|
217
|
+
isAuthoritative: true,
|
|
218
|
+
};
|
|
219
|
+
await this.availabilityService.updateLocation(blockId, locationRecord);
|
|
220
|
+
// Handle partition mode
|
|
221
|
+
if (this.availabilityService.isInPartitionMode()) {
|
|
222
|
+
const syncItem = {
|
|
223
|
+
type: 'store',
|
|
224
|
+
blockId,
|
|
225
|
+
timestamp: new Date(),
|
|
226
|
+
data: new Uint8Array(data),
|
|
227
|
+
};
|
|
228
|
+
this.reconciliationService.addToPendingSyncQueue(syncItem);
|
|
229
|
+
}
|
|
230
|
+
else if (this.config.autoAnnounce) {
|
|
231
|
+
await this.gossipService.announceBlock(blockId);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Delete a block.
|
|
236
|
+
*
|
|
237
|
+
* @param key - The block's checksum or ID
|
|
238
|
+
*/
|
|
239
|
+
async delete(key) {
|
|
240
|
+
const keyChecksum = typeof key === 'string' ? brightchain_lib_1.Checksum.fromHex(key) : key;
|
|
241
|
+
await this.deleteData(keyChecksum);
|
|
242
|
+
}
|
|
243
|
+
// === Metadata Operations ===
|
|
244
|
+
/**
|
|
245
|
+
* Get metadata for a block.
|
|
246
|
+
*
|
|
247
|
+
* @param key - The block's checksum or ID
|
|
248
|
+
* @returns The block's metadata, or null if not found
|
|
249
|
+
*/
|
|
250
|
+
async getMetadata(key) {
|
|
251
|
+
return this.innerStore.getMetadata(key);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Update metadata for a block.
|
|
255
|
+
*
|
|
256
|
+
* @param key - The block's checksum or ID
|
|
257
|
+
* @param updates - Partial metadata updates to apply
|
|
258
|
+
*/
|
|
259
|
+
async updateMetadata(key, updates) {
|
|
260
|
+
return this.innerStore.updateMetadata(key, updates);
|
|
261
|
+
}
|
|
262
|
+
// === FEC/Durability Operations ===
|
|
263
|
+
/**
|
|
264
|
+
* Generate parity blocks for a data block.
|
|
265
|
+
*
|
|
266
|
+
* @param key - The data block's checksum
|
|
267
|
+
* @param parityCount - Number of parity blocks to generate
|
|
268
|
+
* @returns Array of parity block checksums
|
|
269
|
+
*/
|
|
270
|
+
async generateParityBlocks(key, parityCount) {
|
|
271
|
+
return this.innerStore.generateParityBlocks(key, parityCount);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Get parity block checksums for a data block.
|
|
275
|
+
*
|
|
276
|
+
* @param key - The data block's checksum or ID
|
|
277
|
+
* @returns Array of parity block checksums
|
|
278
|
+
*/
|
|
279
|
+
async getParityBlocks(key) {
|
|
280
|
+
return this.innerStore.getParityBlocks(key);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Attempt to recover a corrupted or missing block.
|
|
284
|
+
*
|
|
285
|
+
* @param key - The block's checksum or ID
|
|
286
|
+
* @returns Recovery result
|
|
287
|
+
*/
|
|
288
|
+
async recoverBlock(key) {
|
|
289
|
+
return this.innerStore.recoverBlock(key);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Verify block integrity against its parity data.
|
|
293
|
+
*
|
|
294
|
+
* @param key - The block's checksum or ID
|
|
295
|
+
* @returns True if the block data matches its parity data
|
|
296
|
+
*/
|
|
297
|
+
async verifyBlockIntegrity(key) {
|
|
298
|
+
return this.innerStore.verifyBlockIntegrity(key);
|
|
299
|
+
}
|
|
300
|
+
// === Replication Operations ===
|
|
301
|
+
/**
|
|
302
|
+
* Get blocks that are pending replication.
|
|
303
|
+
*
|
|
304
|
+
* @returns Array of block checksums pending replication
|
|
305
|
+
*/
|
|
306
|
+
async getBlocksPendingReplication() {
|
|
307
|
+
return this.innerStore.getBlocksPendingReplication();
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get blocks that are under-replicated.
|
|
311
|
+
*
|
|
312
|
+
* @returns Array of block checksums that need additional replicas
|
|
313
|
+
*/
|
|
314
|
+
async getUnderReplicatedBlocks() {
|
|
315
|
+
return this.innerStore.getUnderReplicatedBlocks();
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Record that a block has been replicated to a node.
|
|
319
|
+
*
|
|
320
|
+
* @param key - The block's checksum or ID
|
|
321
|
+
* @param nodeId - The ID of the node that now holds a replica
|
|
322
|
+
*/
|
|
323
|
+
async recordReplication(key, nodeId) {
|
|
324
|
+
const blockId = this.keyToHex(key);
|
|
325
|
+
// Record in inner store
|
|
326
|
+
await this.innerStore.recordReplication(key, nodeId);
|
|
327
|
+
// Update location metadata
|
|
328
|
+
const locationRecord = {
|
|
329
|
+
nodeId,
|
|
330
|
+
lastSeen: new Date(),
|
|
331
|
+
isAuthoritative: false,
|
|
332
|
+
};
|
|
333
|
+
await this.availabilityService.updateLocation(blockId, locationRecord);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Record that a replica node is no longer available.
|
|
337
|
+
*
|
|
338
|
+
* @param key - The block's checksum or ID
|
|
339
|
+
* @param nodeId - The ID of the node that lost the replica
|
|
340
|
+
*/
|
|
341
|
+
async recordReplicaLoss(key, nodeId) {
|
|
342
|
+
const blockId = this.keyToHex(key);
|
|
343
|
+
// Record in inner store
|
|
344
|
+
await this.innerStore.recordReplicaLoss(key, nodeId);
|
|
345
|
+
// Remove location
|
|
346
|
+
await this.availabilityService.removeLocation(blockId, nodeId);
|
|
347
|
+
}
|
|
348
|
+
// === XOR Brightening Operations ===
|
|
349
|
+
/**
|
|
350
|
+
* Brighten a block by XORing it with random blocks.
|
|
351
|
+
*
|
|
352
|
+
* @param key - The source block's checksum or ID
|
|
353
|
+
* @param randomBlockCount - Number of random blocks to XOR with
|
|
354
|
+
* @returns Result containing the brightened block ID and random block IDs
|
|
355
|
+
*/
|
|
356
|
+
async brightenBlock(key, randomBlockCount) {
|
|
357
|
+
const result = await this.innerStore.brightenBlock(key, randomBlockCount);
|
|
358
|
+
// Update registry and availability for the brightened block
|
|
359
|
+
this.registry.addLocal(result.brightenedBlockId);
|
|
360
|
+
await this.availabilityService.setAvailabilityState(result.brightenedBlockId, brightchain_lib_1.AvailabilityState.Local);
|
|
361
|
+
const locationRecord = {
|
|
362
|
+
nodeId: this.config.localNodeId,
|
|
363
|
+
lastSeen: new Date(),
|
|
364
|
+
isAuthoritative: true,
|
|
365
|
+
};
|
|
366
|
+
await this.availabilityService.updateLocation(result.brightenedBlockId, locationRecord);
|
|
367
|
+
// Announce if not in partition mode
|
|
368
|
+
if (!this.availabilityService.isInPartitionMode() &&
|
|
369
|
+
this.config.autoAnnounce) {
|
|
370
|
+
await this.gossipService.announceBlock(result.brightenedBlockId);
|
|
371
|
+
}
|
|
372
|
+
return result;
|
|
373
|
+
}
|
|
374
|
+
// === Helper Methods ===
|
|
375
|
+
/**
|
|
376
|
+
* Convert a key to hex string format.
|
|
377
|
+
*/
|
|
378
|
+
keyToHex(key) {
|
|
379
|
+
return typeof key === 'string' ? key : key.toHex();
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Update access metadata for a block.
|
|
383
|
+
*/
|
|
384
|
+
async updateAccessMetadata(blockId) {
|
|
385
|
+
try {
|
|
386
|
+
// Update location record with new lastSeen timestamp
|
|
387
|
+
const locationRecord = {
|
|
388
|
+
nodeId: this.config.localNodeId,
|
|
389
|
+
lastSeen: new Date(),
|
|
390
|
+
isAuthoritative: true,
|
|
391
|
+
};
|
|
392
|
+
await this.availabilityService.updateLocation(blockId, locationRecord);
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
// Ignore errors updating access metadata
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// === Partition Mode Helpers ===
|
|
399
|
+
/**
|
|
400
|
+
* Check if the store is in partition mode.
|
|
401
|
+
*
|
|
402
|
+
* @returns True if in partition mode
|
|
403
|
+
*/
|
|
404
|
+
isInPartitionMode() {
|
|
405
|
+
return this.availabilityService.isInPartitionMode();
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Get the underlying block store.
|
|
409
|
+
* Use with caution - bypasses availability tracking.
|
|
410
|
+
*
|
|
411
|
+
* @returns The inner block store
|
|
412
|
+
*/
|
|
413
|
+
getInnerStore() {
|
|
414
|
+
return this.innerStore;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Get the block registry.
|
|
418
|
+
*
|
|
419
|
+
* @returns The block registry
|
|
420
|
+
*/
|
|
421
|
+
getRegistry() {
|
|
422
|
+
return this.registry;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Get the availability service.
|
|
426
|
+
*
|
|
427
|
+
* @returns The availability service
|
|
428
|
+
*/
|
|
429
|
+
getAvailabilityService() {
|
|
430
|
+
return this.availabilityService;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Get the gossip service.
|
|
434
|
+
*
|
|
435
|
+
* @returns The gossip service
|
|
436
|
+
*/
|
|
437
|
+
getGossipService() {
|
|
438
|
+
return this.gossipService;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Get the reconciliation service.
|
|
442
|
+
*
|
|
443
|
+
* @returns The reconciliation service
|
|
444
|
+
*/
|
|
445
|
+
getReconciliationService() {
|
|
446
|
+
return this.reconciliationService;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Get the configuration.
|
|
450
|
+
*
|
|
451
|
+
* @returns The configuration
|
|
452
|
+
*/
|
|
453
|
+
getConfig() {
|
|
454
|
+
return { ...this.config };
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
exports.AvailabilityAwareBlockStore = AvailabilityAwareBlockStore;
|
|
458
|
+
//# sourceMappingURL=availabilityAwareBlockStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"availabilityAwareBlockStore.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/availabilityAwareBlockStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { BaseBlock, BlockHandle, BlockSize, BlockStoreOptions, BrightenResult, Checksum, IBaseBlockMetadata, IBlockMetadata, IBlockStore, IFecService, RawDataBlock, RecoveryResult } from '@brightchain/brightchain-lib';
|
|
2
|
+
import { DiskBlockMetadataStore } from './diskBlockMetadataStore';
|
|
3
|
+
import { DiskBlockStore } from './diskBlockStore';
|
|
4
|
+
/**
|
|
5
|
+
* DiskBlockAsyncStore provides asynchronous operations for storing and retrieving blocks from disk.
|
|
6
|
+
* It supports raw block storage and XOR operations with stream-based data handling.
|
|
7
|
+
* Blocks are stored as raw data without metadata - their meaning is derived from CBLs.
|
|
8
|
+
*
|
|
9
|
+
* This implementation supports:
|
|
10
|
+
* - Core block operations (store, retrieve, delete)
|
|
11
|
+
* - Metadata management for tracking block lifecycle and access patterns
|
|
12
|
+
* - FEC (Forward Error Correction) operations using Reed-Solomon encoding
|
|
13
|
+
* - Replication tracking for distributed storage
|
|
14
|
+
*/
|
|
15
|
+
export declare class DiskBlockAsyncStore extends DiskBlockStore implements IBlockStore {
|
|
16
|
+
/**
|
|
17
|
+
* Metadata store for tracking block lifecycle and access patterns.
|
|
18
|
+
*/
|
|
19
|
+
private readonly metadataStore;
|
|
20
|
+
/**
|
|
21
|
+
* Optional FEC service for parity generation and recovery.
|
|
22
|
+
* If not provided, FEC operations will return errors or no-ops.
|
|
23
|
+
*/
|
|
24
|
+
private fecService;
|
|
25
|
+
constructor(config: {
|
|
26
|
+
storePath: string;
|
|
27
|
+
blockSize: BlockSize;
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Set the FEC service for parity generation and recovery.
|
|
31
|
+
* @param fecService - The FEC service to use
|
|
32
|
+
*/
|
|
33
|
+
setFecService(fecService: IFecService | null): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get the FEC service if available.
|
|
36
|
+
* @returns The FEC service or null if not available
|
|
37
|
+
*/
|
|
38
|
+
getFecService(): IFecService | null;
|
|
39
|
+
/**
|
|
40
|
+
* Get the metadata store.
|
|
41
|
+
* @returns The metadata store
|
|
42
|
+
*/
|
|
43
|
+
getMetadataStore(): DiskBlockMetadataStore;
|
|
44
|
+
/**
|
|
45
|
+
* Convert a key to hex string format.
|
|
46
|
+
* @param key - The key as Checksum or string
|
|
47
|
+
* @returns The key as hex string
|
|
48
|
+
*/
|
|
49
|
+
private keyToHex;
|
|
50
|
+
/**
|
|
51
|
+
* Convert a hex string to Checksum.
|
|
52
|
+
* @param hex - The hex string
|
|
53
|
+
* @returns The Checksum
|
|
54
|
+
*/
|
|
55
|
+
private hexToChecksum;
|
|
56
|
+
/**
|
|
57
|
+
* Get the file path for a parity block.
|
|
58
|
+
* Parity files are stored alongside block files with .p{index} extension.
|
|
59
|
+
* @param blockId - The data block's checksum
|
|
60
|
+
* @param parityIndex - The parity block index (0-based)
|
|
61
|
+
* @returns The parity file path
|
|
62
|
+
*/
|
|
63
|
+
private parityPath;
|
|
64
|
+
/**
|
|
65
|
+
* Check if a block exists
|
|
66
|
+
*/
|
|
67
|
+
has(key: Checksum | string): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Get a handle to a block
|
|
70
|
+
*/
|
|
71
|
+
get<T extends BaseBlock>(key: Checksum | string): BlockHandle<T>;
|
|
72
|
+
/**
|
|
73
|
+
* Get a block's data
|
|
74
|
+
*/
|
|
75
|
+
getData(key: Checksum): Promise<RawDataBlock>;
|
|
76
|
+
/**
|
|
77
|
+
* Delete a block's data (and associated parity blocks and metadata)
|
|
78
|
+
* @param key - The block's checksum
|
|
79
|
+
*/
|
|
80
|
+
deleteData(key: Checksum): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Store a block's data with optional durability settings
|
|
83
|
+
*/
|
|
84
|
+
setData(block: RawDataBlock, options?: BlockStoreOptions): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* XOR multiple blocks together
|
|
87
|
+
*/
|
|
88
|
+
xor<T extends BaseBlock>(blocks: BlockHandle<T>[], destBlockMetadata: IBaseBlockMetadata): Promise<RawDataBlock>;
|
|
89
|
+
/**
|
|
90
|
+
* Handle read stream ends
|
|
91
|
+
*/
|
|
92
|
+
private handleReadStreamEnds;
|
|
93
|
+
/**
|
|
94
|
+
* Clean up streams
|
|
95
|
+
*/
|
|
96
|
+
private cleanupStreams;
|
|
97
|
+
/**
|
|
98
|
+
* Get random block checksums from the store
|
|
99
|
+
* @param count - Maximum number of blocks to return
|
|
100
|
+
* @returns Array of random block checksums
|
|
101
|
+
*/
|
|
102
|
+
getRandomBlocks(count: number): Promise<Checksum[]>;
|
|
103
|
+
/**
|
|
104
|
+
* Store raw data with a key (convenience method)
|
|
105
|
+
* Creates a RawDataBlock and stores it
|
|
106
|
+
*/
|
|
107
|
+
put(key: Checksum | string, data: Uint8Array, options?: BlockStoreOptions): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Delete a block (convenience method, alias for deleteData)
|
|
110
|
+
*/
|
|
111
|
+
delete(key: Checksum | string): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Get metadata for a block
|
|
114
|
+
* @param key - The block's checksum or ID
|
|
115
|
+
* @returns The block's metadata, or null if not found
|
|
116
|
+
*/
|
|
117
|
+
getMetadata(key: Checksum | string): Promise<IBlockMetadata | null>;
|
|
118
|
+
/**
|
|
119
|
+
* Update metadata for a block
|
|
120
|
+
* @param key - The block's checksum or ID
|
|
121
|
+
* @param updates - Partial metadata updates to apply
|
|
122
|
+
*/
|
|
123
|
+
updateMetadata(key: Checksum | string, updates: Partial<IBlockMetadata>): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Generate parity blocks for a data block using Reed-Solomon encoding.
|
|
126
|
+
* Parity blocks are stored as separate files: {blockId}.p0, {blockId}.p1, etc.
|
|
127
|
+
* @param key - The data block's checksum
|
|
128
|
+
* @param parityCount - Number of parity blocks to generate
|
|
129
|
+
* @returns Array of parity block checksums (as synthetic IDs)
|
|
130
|
+
* @throws FecError if FEC service is not available or encoding fails
|
|
131
|
+
*/
|
|
132
|
+
generateParityBlocks(key: Checksum | string, parityCount: number): Promise<Checksum[]>;
|
|
133
|
+
/**
|
|
134
|
+
* Get parity block checksums for a data block.
|
|
135
|
+
* @param key - The data block's checksum or ID
|
|
136
|
+
* @returns Array of parity block checksums
|
|
137
|
+
*/
|
|
138
|
+
getParityBlocks(key: Checksum | string): Promise<Checksum[]>;
|
|
139
|
+
/**
|
|
140
|
+
* Load parity data from disk for a block.
|
|
141
|
+
* @param key - The data block's checksum
|
|
142
|
+
* @returns Array of parity data objects
|
|
143
|
+
*/
|
|
144
|
+
private loadParityData;
|
|
145
|
+
/**
|
|
146
|
+
* Attempt to recover a corrupted or missing block using parity data.
|
|
147
|
+
* @param key - The block's checksum or ID
|
|
148
|
+
* @returns Recovery result with the recovered block or error
|
|
149
|
+
*/
|
|
150
|
+
recoverBlock(key: Checksum | string): Promise<RecoveryResult>;
|
|
151
|
+
/**
|
|
152
|
+
* Verify block integrity against its parity data.
|
|
153
|
+
* @param key - The block's checksum or ID
|
|
154
|
+
* @returns True if the block data matches its parity data
|
|
155
|
+
*/
|
|
156
|
+
verifyBlockIntegrity(key: Checksum | string): Promise<boolean>;
|
|
157
|
+
/**
|
|
158
|
+
* Get blocks that are pending replication (status = Pending).
|
|
159
|
+
* @returns Array of block checksums pending replication
|
|
160
|
+
*/
|
|
161
|
+
getBlocksPendingReplication(): Promise<Checksum[]>;
|
|
162
|
+
/**
|
|
163
|
+
* Get blocks that are under-replicated (status = UnderReplicated).
|
|
164
|
+
* @returns Array of block checksums that need additional replicas
|
|
165
|
+
*/
|
|
166
|
+
getUnderReplicatedBlocks(): Promise<Checksum[]>;
|
|
167
|
+
/**
|
|
168
|
+
* Record that a block has been replicated to a node.
|
|
169
|
+
* @param key - The block's checksum or ID
|
|
170
|
+
* @param nodeId - The ID of the node that now holds a replica
|
|
171
|
+
*/
|
|
172
|
+
recordReplication(key: Checksum | string, nodeId: string): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* Record that a replica node is no longer available.
|
|
175
|
+
* @param key - The block's checksum or ID
|
|
176
|
+
* @param nodeId - The ID of the node that lost the replica
|
|
177
|
+
*/
|
|
178
|
+
recordReplicaLoss(key: Checksum | string, nodeId: string): Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* Find all blocks that have expired (expiresAt is in the past).
|
|
181
|
+
* @returns Array of metadata for expired blocks
|
|
182
|
+
*/
|
|
183
|
+
findExpired(): Promise<IBlockMetadata[]>;
|
|
184
|
+
/**
|
|
185
|
+
* Clean up expired blocks.
|
|
186
|
+
* This method identifies expired blocks and deletes them along with their
|
|
187
|
+
* parity blocks and metadata.
|
|
188
|
+
*
|
|
189
|
+
* @param cblChecker - Optional function to check if a block is referenced by a CBL.
|
|
190
|
+
* If provided, blocks referenced by active CBLs will not be deleted.
|
|
191
|
+
* @returns Object containing deleted block IDs and any errors encountered
|
|
192
|
+
*/
|
|
193
|
+
cleanupExpiredBlocks(cblChecker?: (blockId: string) => Promise<boolean>): Promise<{
|
|
194
|
+
deletedBlockIds: string[];
|
|
195
|
+
errors: Array<{
|
|
196
|
+
blockId: string;
|
|
197
|
+
error: string;
|
|
198
|
+
}>;
|
|
199
|
+
}>;
|
|
200
|
+
/**
|
|
201
|
+
* Brighten a block by XORing it with random blocks from the store.
|
|
202
|
+
* This is used to implement Owner-Free storage patterns where the
|
|
203
|
+
* original data cannot be reconstructed without all the random blocks.
|
|
204
|
+
*
|
|
205
|
+
* @param key - The source block's checksum or ID
|
|
206
|
+
* @param randomBlockCount - Number of random blocks to XOR with
|
|
207
|
+
* @returns Result containing the brightened block ID and the random block IDs used
|
|
208
|
+
* @throws StoreError if the source block is not found or insufficient random blocks are available
|
|
209
|
+
*/
|
|
210
|
+
brightenBlock(key: Checksum | string, randomBlockCount: number): Promise<BrightenResult>;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=diskBlockAsyncStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diskBlockAsyncStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskBlockAsyncStore.ts"],"names":[],"mappings":"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"}
|