@brightchain/brightchain-lib 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/brightchain-lib/BLOCK_COVERAGE_AUDIT.md +169 -0
- package/package.json +2 -2
- package/src/browser.d.ts +1 -4
- package/src/browser.d.ts.map +1 -1
- package/src/browser.js +6 -9
- package/src/browser.js.map +1 -1
- package/src/lib/blockMetadata.d.ts +10 -9
- package/src/lib/blockMetadata.d.ts.map +1 -1
- package/src/lib/blockMetadata.js +20 -36
- package/src/lib/blockMetadata.js.map +1 -1
- package/src/lib/blocks/base.d.ts +23 -0
- package/src/lib/blocks/base.d.ts.map +1 -1
- package/src/lib/blocks/base.js +33 -15
- package/src/lib/blocks/base.js.map +1 -1
- package/src/lib/blocks/cbl.d.ts +34 -1
- package/src/lib/blocks/cbl.d.ts.map +1 -1
- package/src/lib/blocks/cbl.js +36 -3
- package/src/lib/blocks/cbl.js.map +1 -1
- package/src/lib/blocks/cblBase.d.ts +45 -1
- package/src/lib/blocks/cblBase.d.ts.map +1 -1
- package/src/lib/blocks/cblBase.js +106 -52
- package/src/lib/blocks/cblBase.js.map +1 -1
- package/src/lib/blocks/encrypted.d.ts +34 -5
- package/src/lib/blocks/encrypted.d.ts.map +1 -1
- package/src/lib/blocks/encrypted.js +129 -24
- package/src/lib/blocks/encrypted.js.map +1 -1
- package/src/lib/blocks/encryptedBlockFactory.js +2 -2
- package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
- package/src/lib/blocks/ephemeral.d.ts +35 -9
- package/src/lib/blocks/ephemeral.d.ts.map +1 -1
- package/src/lib/blocks/ephemeral.js +71 -42
- package/src/lib/blocks/ephemeral.js.map +1 -1
- package/src/lib/blocks/extendedCbl.d.ts +1 -1
- package/src/lib/blocks/extendedCbl.d.ts.map +1 -1
- package/src/lib/blocks/extendedCbl.js +7 -7
- package/src/lib/blocks/extendedCbl.js.map +1 -1
- package/src/lib/blocks/handle.js +2 -2
- package/src/lib/blocks/handle.js.map +1 -1
- package/src/lib/blocks/handleTuple.js +2 -2
- package/src/lib/blocks/handleTuple.js.map +1 -1
- package/src/lib/blocks/random.d.ts +2 -1
- package/src/lib/blocks/random.d.ts.map +1 -1
- package/src/lib/blocks/random.js +7 -4
- package/src/lib/blocks/random.js.map +1 -1
- package/src/lib/blocks/rawData.d.ts +3 -1
- package/src/lib/blocks/rawData.d.ts.map +1 -1
- package/src/lib/blocks/rawData.js +31 -6
- package/src/lib/blocks/rawData.js.map +1 -1
- package/src/lib/blocks/whitened.d.ts +2 -1
- package/src/lib/blocks/whitened.d.ts.map +1 -1
- package/src/lib/blocks/whitened.js +7 -5
- package/src/lib/blocks/whitened.js.map +1 -1
- package/src/lib/config/constants.d.ts +2 -0
- package/src/lib/config/constants.d.ts.map +1 -0
- package/src/lib/config/constants.js +5 -0
- package/src/lib/config/constants.js.map +1 -0
- package/src/lib/constants.d.ts +37 -0
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +40 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/cpus/index.d.ts +2 -3
- package/src/lib/cpus/index.d.ts.map +1 -1
- package/src/lib/cpus/index.js +5 -0
- package/src/lib/cpus/index.js.map +1 -1
- package/src/lib/cpus/instructionFactory.d.ts +56 -0
- package/src/lib/cpus/instructionFactory.d.ts.map +1 -0
- package/src/lib/cpus/instructionFactory.js +190 -0
- package/src/lib/cpus/instructionFactory.js.map +1 -0
- package/src/lib/cpus/instructionTables.d.ts +14 -12
- package/src/lib/cpus/instructionTables.d.ts.map +1 -1
- package/src/lib/cpus/instructionTables.js +17 -147
- package/src/lib/cpus/instructionTables.js.map +1 -1
- package/src/lib/cpus/riscvCpu.d.ts +51 -0
- package/src/lib/cpus/riscvCpu.d.ts.map +1 -0
- package/src/lib/cpus/riscvCpu.js +131 -0
- package/src/lib/cpus/riscvCpu.js.map +1 -0
- package/src/lib/documents/base/document.d.ts +1 -1
- package/src/lib/documents/base/document.d.ts.map +1 -1
- package/src/lib/documents/member/index.d.ts +2 -0
- package/src/lib/documents/member/index.d.ts.map +1 -1
- package/src/lib/documents/member/index.js +2 -0
- package/src/lib/documents/member/index.js.map +1 -1
- package/src/lib/documents/member/memberDocument.d.ts +4 -3
- package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
- package/src/lib/documents/member/memberDocument.js +11 -8
- package/src/lib/documents/member/memberDocument.js.map +1 -1
- package/src/lib/documents/member/memberHydration.d.ts.map +1 -1
- package/src/lib/documents/member/memberHydration.js +7 -21
- package/src/lib/documents/member/memberHydration.js.map +1 -1
- package/src/lib/documents/member/memberOperational.d.ts.map +1 -1
- package/src/lib/documents/member/memberOperational.js +2 -2
- package/src/lib/documents/member/memberOperational.js.map +1 -1
- package/src/lib/documents/member/memberProfileDocument.d.ts +138 -0
- package/src/lib/documents/member/memberProfileDocument.d.ts.map +1 -0
- package/src/lib/documents/member/memberProfileDocument.js +326 -0
- package/src/lib/documents/member/memberProfileDocument.js.map +1 -0
- package/src/lib/documents/member/memberProfileHydration.d.ts +12 -0
- package/src/lib/documents/member/memberProfileHydration.d.ts.map +1 -0
- package/src/lib/documents/member/memberProfileHydration.js +143 -0
- package/src/lib/documents/member/memberProfileHydration.js.map +1 -0
- package/src/lib/documents/network/networkDocument.d.ts.map +1 -1
- package/src/lib/documents/network/networkDocument.js +4 -3
- package/src/lib/documents/network/networkDocument.js.map +1 -1
- package/src/lib/documents/quorumDocument.d.ts +3 -14
- package/src/lib/documents/quorumDocument.d.ts.map +1 -1
- package/src/lib/documents/quorumDocument.js +4 -2
- package/src/lib/documents/quorumDocument.js.map +1 -1
- package/src/lib/encryptedBlockMetadata.d.ts +13 -5
- package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
- package/src/lib/encryptedBlockMetadata.js +31 -23
- package/src/lib/encryptedBlockMetadata.js.map +1 -1
- package/src/lib/enumerations/blockSize.d.ts +2 -2
- package/src/lib/enumerations/blockSize.d.ts.map +1 -1
- package/src/lib/enumerations/blockSize.js +15 -15
- package/src/lib/enumerations/blockSize.js.map +1 -1
- package/src/lib/enumerations/{stringNames.d.ts → brightChainStrings.d.ts} +4 -3
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -0
- package/src/lib/enumerations/brightChainStrings.js +437 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -0
- package/src/lib/enumerations/cblErrorType.d.ts +1 -0
- package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/cblErrorType.js +1 -0
- package/src/lib/enumerations/cblErrorType.js.map +1 -1
- package/src/lib/enumerations/index.d.ts +1 -1
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +1 -1
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/enumerations/votingDerivationErrorType.d.ts +2 -2
- package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/votingDerivationErrorType.js +11 -11
- package/src/lib/enumerations/votingDerivationErrorType.js.map +1 -1
- package/src/lib/ephemeralBlockMetadata.d.ts +13 -8
- package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
- package/src/lib/ephemeralBlockMetadata.js +27 -19
- package/src/lib/ephemeralBlockMetadata.js.map +1 -1
- package/src/lib/errors/block/blockAccess.d.ts +2 -2
- package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
- package/src/lib/errors/block/blockAccess.js +8 -8
- package/src/lib/errors/block/blockAccess.js.map +1 -1
- package/src/lib/errors/block/blockCapacity.d.ts +2 -2
- package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
- package/src/lib/errors/block/blockCapacity.js +8 -8
- package/src/lib/errors/block/blockCapacity.js.map +1 -1
- package/src/lib/errors/block/blockError.d.ts +2 -2
- package/src/lib/errors/block/blockError.d.ts.map +1 -1
- package/src/lib/errors/block/blockError.js +16 -16
- package/src/lib/errors/block/blockError.js.map +1 -1
- package/src/lib/errors/block/blockMetadata.d.ts +2 -2
- package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
- package/src/lib/errors/block/blockMetadata.js +8 -8
- package/src/lib/errors/block/blockMetadata.js.map +1 -1
- package/src/lib/errors/block/blockValidation.d.ts +2 -2
- package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
- package/src/lib/errors/block/blockValidation.js +36 -36
- package/src/lib/errors/block/blockValidation.js.map +1 -1
- package/src/lib/errors/block/cannotDecrypt.d.ts.map +1 -1
- package/src/lib/errors/block/cannotDecrypt.js +2 -2
- package/src/lib/errors/block/cannotDecrypt.js.map +1 -1
- package/src/lib/errors/block/cannotEncrypt.d.ts.map +1 -1
- package/src/lib/errors/block/cannotEncrypt.js +2 -2
- package/src/lib/errors/block/cannotEncrypt.js.map +1 -1
- package/src/lib/errors/blockServiceError.d.ts +2 -2
- package/src/lib/errors/blockServiceError.d.ts.map +1 -1
- package/src/lib/errors/blockServiceError.js +15 -15
- package/src/lib/errors/blockServiceError.js.map +1 -1
- package/src/lib/errors/bufferError.d.ts.map +1 -1
- package/src/lib/errors/bufferError.js +2 -2
- package/src/lib/errors/bufferError.js.map +1 -1
- package/src/lib/errors/cblError.d.ts +2 -2
- package/src/lib/errors/cblError.d.ts.map +1 -1
- package/src/lib/errors/cblError.js +37 -36
- package/src/lib/errors/cblError.js.map +1 -1
- package/src/lib/errors/checksumMismatch.js +2 -2
- package/src/lib/errors/checksumMismatch.js.map +1 -1
- package/src/lib/errors/disposed.js +2 -2
- package/src/lib/errors/disposed.js.map +1 -1
- package/src/lib/errors/document.d.ts +2 -2
- package/src/lib/errors/document.d.ts.map +1 -1
- package/src/lib/errors/document.js +5 -5
- package/src/lib/errors/document.js.map +1 -1
- package/src/lib/errors/eciesError.d.ts +2 -2
- package/src/lib/errors/eciesError.d.ts.map +1 -1
- package/src/lib/errors/eciesError.js +20 -20
- package/src/lib/errors/eciesError.js.map +1 -1
- package/src/lib/errors/extendedCblError.d.ts +2 -2
- package/src/lib/errors/extendedCblError.d.ts.map +1 -1
- package/src/lib/errors/extendedCblError.js +25 -25
- package/src/lib/errors/extendedCblError.js.map +1 -1
- package/src/lib/errors/failedToHydrate.js +2 -2
- package/src/lib/errors/failedToHydrate.js.map +1 -1
- package/src/lib/errors/failedToSerialize.js +2 -2
- package/src/lib/errors/failedToSerialize.js.map +1 -1
- package/src/lib/errors/fecError.d.ts +2 -2
- package/src/lib/errors/fecError.d.ts.map +1 -1
- package/src/lib/errors/fecError.js +19 -19
- package/src/lib/errors/fecError.js.map +1 -1
- package/src/lib/errors/handleTupleError.d.ts +2 -2
- package/src/lib/errors/handleTupleError.d.ts.map +1 -1
- package/src/lib/errors/handleTupleError.js +5 -5
- package/src/lib/errors/handleTupleError.js.map +1 -1
- package/src/lib/errors/index.d.ts +0 -6
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +0 -9
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/errors/invalidBlockSize.js +2 -2
- package/src/lib/errors/invalidBlockSize.js.map +1 -1
- package/src/lib/errors/invalidBlockSizeLength.js +2 -2
- package/src/lib/errors/invalidBlockSizeLength.js.map +1 -1
- package/src/lib/errors/invalidCredentials.js +2 -2
- package/src/lib/errors/invalidCredentials.js.map +1 -1
- package/src/lib/errors/invalidIDFormat.js +2 -2
- package/src/lib/errors/invalidIDFormat.js.map +1 -1
- package/src/lib/errors/invalidSessionID.js +2 -2
- package/src/lib/errors/invalidSessionID.js.map +1 -1
- package/src/lib/errors/invalidTupleCount.js +2 -2
- package/src/lib/errors/invalidTupleCount.js.map +1 -1
- package/src/lib/errors/isolatedKeyError.d.ts +2 -2
- package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
- package/src/lib/errors/isolatedKeyError.js +7 -7
- package/src/lib/errors/isolatedKeyError.js.map +1 -1
- package/src/lib/errors/memberError.d.ts +2 -2
- package/src/lib/errors/memberError.d.ts.map +1 -1
- package/src/lib/errors/memberError.js +27 -27
- package/src/lib/errors/memberError.js.map +1 -1
- package/src/lib/errors/memoryTupleError.d.ts +2 -2
- package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
- package/src/lib/errors/memoryTupleError.js +7 -7
- package/src/lib/errors/memoryTupleError.js.map +1 -1
- package/src/lib/errors/metadataMismatch.js +2 -2
- package/src/lib/errors/metadataMismatch.js.map +1 -1
- package/src/lib/errors/multiEncryptedError.d.ts +2 -2
- package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
- package/src/lib/errors/multiEncryptedError.js +11 -11
- package/src/lib/errors/multiEncryptedError.js.map +1 -1
- package/src/lib/errors/notImplemented.js +2 -2
- package/src/lib/errors/notImplemented.js.map +1 -1
- package/src/lib/errors/quorumError.d.ts +2 -2
- package/src/lib/errors/quorumError.d.ts.map +1 -1
- package/src/lib/errors/quorumError.js +8 -8
- package/src/lib/errors/quorumError.js.map +1 -1
- package/src/lib/errors/sealingError.d.ts +2 -2
- package/src/lib/errors/sealingError.d.ts.map +1 -1
- package/src/lib/errors/sealingError.js +9 -9
- package/src/lib/errors/sealingError.js.map +1 -1
- package/src/lib/errors/secureStorage.d.ts +2 -2
- package/src/lib/errors/secureStorage.d.ts.map +1 -1
- package/src/lib/errors/secureStorage.js +4 -4
- package/src/lib/errors/secureStorage.js.map +1 -1
- package/src/lib/errors/storeError.d.ts +2 -2
- package/src/lib/errors/storeError.d.ts.map +1 -1
- package/src/lib/errors/storeError.js +20 -20
- package/src/lib/errors/storeError.js.map +1 -1
- package/src/lib/errors/streamError.d.ts +2 -2
- package/src/lib/errors/streamError.d.ts.map +1 -1
- package/src/lib/errors/streamError.js +8 -8
- package/src/lib/errors/streamError.js.map +1 -1
- package/src/lib/errors/symmetricError.d.ts +2 -2
- package/src/lib/errors/symmetricError.d.ts.map +1 -1
- package/src/lib/errors/symmetricError.js +3 -3
- package/src/lib/errors/symmetricError.js.map +1 -1
- package/src/lib/errors/systemKeyringError.d.ts +2 -2
- package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
- package/src/lib/errors/systemKeyringError.js +4 -4
- package/src/lib/errors/systemKeyringError.js.map +1 -1
- package/src/lib/errors/tupleError.d.ts +2 -2
- package/src/lib/errors/tupleError.d.ts.map +1 -1
- package/src/lib/errors/tupleError.js +13 -13
- package/src/lib/errors/tupleError.js.map +1 -1
- package/src/lib/errors/typedError.d.ts +2 -2
- package/src/lib/errors/typedError.d.ts.map +1 -1
- package/src/lib/errors/typedWithReasonError.d.ts +3 -3
- package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
- package/src/lib/errors/typedWithReasonError.js.map +1 -1
- package/src/lib/errors/userNotFound.js +2 -2
- package/src/lib/errors/userNotFound.js.map +1 -1
- package/src/lib/errors/whitenedError.d.ts +2 -2
- package/src/lib/errors/whitenedError.d.ts.map +1 -1
- package/src/lib/errors/whitenedError.js +5 -5
- package/src/lib/errors/whitenedError.js.map +1 -1
- package/src/lib/factories/blockFactory.d.ts +23 -0
- package/src/lib/factories/blockFactory.d.ts.map +1 -0
- package/src/lib/factories/blockFactory.js +43 -0
- package/src/lib/factories/blockFactory.js.map +1 -0
- package/src/lib/i18n/index.d.ts +2 -2
- package/src/lib/i18n/index.d.ts.map +1 -1
- package/src/lib/i18n/index.js +2 -2
- package/src/lib/i18n/index.js.map +1 -1
- package/src/lib/index.d.ts +9 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +12 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/init.d.ts +10 -0
- package/src/lib/init.d.ts.map +1 -1
- package/src/lib/init.js +24 -4
- package/src/lib/init.js.map +1 -1
- package/src/lib/interfaces/blockCapacity.d.ts +8 -0
- package/src/lib/interfaces/blockCapacity.d.ts.map +1 -1
- package/src/lib/interfaces/blocks/encrypted.d.ts +1 -1
- package/src/lib/interfaces/blocks/encrypted.d.ts.map +1 -1
- package/src/lib/interfaces/blocks/ephemeral.d.ts +4 -7
- package/src/lib/interfaces/blocks/ephemeral.d.ts.map +1 -1
- package/src/lib/interfaces/blocks/headers/index.d.ts +1 -0
- package/src/lib/interfaces/blocks/headers/index.d.ts.map +1 -1
- package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts +63 -0
- package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts.map +1 -0
- package/src/lib/interfaces/{storage/superCbl.js → blocks/headers/superCblHeader.js} +1 -1
- package/src/lib/interfaces/blocks/headers/superCblHeader.js.map +1 -0
- package/src/lib/interfaces/blocks/metadata/index.d.ts +0 -1
- package/src/lib/interfaces/blocks/metadata/index.d.ts.map +1 -1
- package/src/lib/interfaces/constants.d.ts +29 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/document/quorumDocument.d.ts +15 -0
- package/src/lib/interfaces/document/quorumDocument.d.ts.map +1 -0
- package/src/lib/interfaces/document/quorumDocument.js +3 -0
- package/src/lib/interfaces/document/quorumDocument.js.map +1 -0
- package/src/lib/interfaces/member/memberData.d.ts +2 -0
- package/src/lib/interfaces/member/memberData.d.ts.map +1 -1
- package/src/lib/interfaces/member/profileStorage.d.ts +77 -0
- package/src/lib/interfaces/member/profileStorage.d.ts.map +1 -0
- package/src/lib/interfaces/member/profileStorage.js +3 -0
- package/src/lib/interfaces/member/profileStorage.js.map +1 -0
- package/src/lib/interfaces/serviceProvider.interface.d.ts +11 -8
- package/src/lib/interfaces/serviceProvider.interface.d.ts.map +1 -1
- package/src/lib/interfaces/services/cblServices.d.ts +148 -0
- package/src/lib/interfaces/services/cblServices.d.ts.map +1 -0
- package/src/lib/interfaces/services/cblServices.js +11 -0
- package/src/lib/interfaces/services/cblServices.js.map +1 -0
- package/src/lib/interfaces/services/ephemeralBlockServices.d.ts +15 -0
- package/src/lib/interfaces/services/ephemeralBlockServices.d.ts.map +1 -0
- package/src/lib/interfaces/services/ephemeralBlockServices.js +3 -0
- package/src/lib/interfaces/services/ephemeralBlockServices.js.map +1 -0
- package/src/lib/interfaces/services/index.d.ts +1 -0
- package/src/lib/interfaces/services/index.d.ts.map +1 -1
- package/src/lib/interfaces/storage/index.d.ts +0 -1
- package/src/lib/interfaces/storage/index.d.ts.map +1 -1
- package/src/lib/logging/blockLogger.d.ts +218 -0
- package/src/lib/logging/blockLogger.d.ts.map +1 -0
- package/src/lib/logging/blockLogger.js +341 -0
- package/src/lib/logging/blockLogger.js.map +1 -0
- package/src/lib/logging/index.d.ts +24 -0
- package/src/lib/logging/index.d.ts.map +1 -0
- package/src/lib/logging/index.js +27 -0
- package/src/lib/logging/index.js.map +1 -0
- package/src/lib/logging/structuredLogger.d.ts +42 -0
- package/src/lib/logging/structuredLogger.d.ts.map +1 -0
- package/src/lib/logging/structuredLogger.js +93 -0
- package/src/lib/logging/structuredLogger.js.map +1 -0
- package/src/lib/primeTupleGeneratorStream.d.ts.map +1 -1
- package/src/lib/primeTupleGeneratorStream.js +4 -2
- package/src/lib/primeTupleGeneratorStream.js.map +1 -1
- package/src/lib/quorum.d.ts.map +1 -1
- package/src/lib/quorum.js +7 -5
- package/src/lib/quorum.js.map +1 -1
- package/src/lib/quorumDataRecord.d.ts +1 -1
- package/src/lib/quorumDataRecord.d.ts.map +1 -1
- package/src/lib/quorumDataRecord.js +5 -4
- package/src/lib/quorumDataRecord.js.map +1 -1
- package/src/lib/schemas/network/networkDocumentSchema.d.ts.map +1 -1
- package/src/lib/schemas/network/networkDocumentSchema.js +9 -8
- package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
- package/src/lib/schemas/quorumDocument.d.ts +1 -1
- package/src/lib/schemas/quorumDocument.d.ts.map +1 -1
- package/src/lib/schemas/quorumDocument.js +6 -4
- package/src/lib/schemas/quorumDocument.js.map +1 -1
- package/src/lib/security/dosProtection.d.ts +13 -0
- package/src/lib/security/dosProtection.d.ts.map +1 -0
- package/src/lib/security/dosProtection.js +29 -0
- package/src/lib/security/dosProtection.js.map +1 -0
- package/src/lib/security/dosProtectionValidator.d.ts +27 -0
- package/src/lib/security/dosProtectionValidator.d.ts.map +1 -0
- package/src/lib/security/dosProtectionValidator.js +60 -0
- package/src/lib/security/dosProtectionValidator.js.map +1 -0
- package/src/lib/security/index.d.ts +12 -0
- package/src/lib/security/index.d.ts.map +1 -0
- package/src/lib/security/index.js +15 -0
- package/src/lib/security/index.js.map +1 -0
- package/src/lib/security/rateLimitTypes.d.ts +20 -0
- package/src/lib/security/rateLimitTypes.d.ts.map +1 -0
- package/src/lib/security/rateLimitTypes.js +15 -0
- package/src/lib/security/rateLimitTypes.js.map +1 -0
- package/src/lib/security/rateLimiter.d.ts +29 -0
- package/src/lib/security/rateLimiter.d.ts.map +1 -0
- package/src/lib/security/rateLimiter.js +107 -0
- package/src/lib/security/rateLimiter.js.map +1 -0
- package/src/lib/security/securityAuditLogger.d.ts +59 -0
- package/src/lib/security/securityAuditLogger.d.ts.map +1 -0
- package/src/lib/security/securityAuditLogger.js +120 -0
- package/src/lib/security/securityAuditLogger.js.map +1 -0
- package/src/lib/security/securityEvent.d.ts +45 -0
- package/src/lib/security/securityEvent.d.ts.map +1 -0
- package/src/lib/security/securityEvent.js +44 -0
- package/src/lib/security/securityEvent.js.map +1 -0
- package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
- package/src/lib/services/blockCapacity.service.js +14 -5
- package/src/lib/services/blockCapacity.service.js.map +1 -1
- package/src/lib/services/blockFormatService.d.ts +41 -0
- package/src/lib/services/blockFormatService.d.ts.map +1 -0
- package/src/lib/services/blockFormatService.js +252 -0
- package/src/lib/services/blockFormatService.js.map +1 -0
- package/src/lib/services/blockService.d.ts +6 -0
- package/src/lib/services/blockService.d.ts.map +1 -1
- package/src/lib/services/blockService.js +130 -28
- package/src/lib/services/blockService.js.map +1 -1
- package/src/lib/services/cblService.d.ts +162 -3
- package/src/lib/services/cblService.d.ts.map +1 -1
- package/src/lib/services/cblService.js +502 -21
- package/src/lib/services/cblService.js.map +1 -1
- package/src/lib/services/globalServiceProvider.d.ts +4 -0
- package/src/lib/services/globalServiceProvider.d.ts.map +1 -0
- package/src/lib/services/globalServiceProvider.js +26 -0
- package/src/lib/services/globalServiceProvider.js.map +1 -0
- package/src/lib/services/index.d.ts +0 -2
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +0 -2
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/member/memberCblService.d.ts.map +1 -1
- package/src/lib/services/member/memberCblService.js +11 -8
- package/src/lib/services/member/memberCblService.js.map +1 -1
- package/src/lib/services/memberStore.d.ts +8 -0
- package/src/lib/services/memberStore.d.ts.map +1 -1
- package/src/lib/services/memberStore.js +105 -76
- package/src/lib/services/memberStore.js.map +1 -1
- package/src/lib/services/sealing.service.d.ts +1 -1
- package/src/lib/services/sealing.service.d.ts.map +1 -1
- package/src/lib/services/sealing.service.js +4 -13
- package/src/lib/services/sealing.service.js.map +1 -1
- package/src/lib/services/service.provider.d.ts +2 -0
- package/src/lib/services/service.provider.d.ts.map +1 -1
- package/src/lib/services/service.provider.js +7 -12
- package/src/lib/services/service.provider.js.map +1 -1
- package/src/lib/services/serviceLocator.d.ts.map +1 -1
- package/src/lib/services/serviceLocator.js +2 -0
- package/src/lib/services/serviceLocator.js.map +1 -1
- package/src/lib/services/tuple.service.js +4 -4
- package/src/lib/services/tuple.service.js.map +1 -1
- package/src/lib/sharedTypes.d.ts +1 -22
- package/src/lib/sharedTypes.d.ts.map +1 -1
- package/src/lib/sharedTypes.js.map +1 -1
- package/src/lib/strings/englishUs.d.ts.map +1 -1
- package/src/lib/strings/englishUs.js +392 -392
- package/src/lib/strings/englishUs.js.map +1 -1
- package/src/lib/test/service.initializer.helper.d.ts +2 -1
- package/src/lib/test/service.initializer.helper.d.ts.map +1 -1
- package/src/lib/test/service.initializer.helper.js +11 -15
- package/src/lib/test/service.initializer.helper.js.map +1 -1
- package/src/lib/types/schema.d.ts +38 -0
- package/src/lib/types/schema.d.ts.map +1 -0
- package/src/lib/types/schema.js +7 -0
- package/src/lib/types/schema.js.map +1 -0
- package/src/lib/utils/constantTime.d.ts +27 -0
- package/src/lib/utils/constantTime.d.ts.map +1 -0
- package/src/lib/utils/constantTime.js +67 -0
- package/src/lib/utils/constantTime.js.map +1 -0
- package/src/lib/utils/constantTimeXor.d.ts +76 -0
- package/src/lib/utils/constantTimeXor.d.ts.map +1 -0
- package/src/lib/utils/constantTimeXor.js +122 -0
- package/src/lib/utils/constantTimeXor.js.map +1 -0
- package/src/lib/utils/dateUtils.d.ts +67 -0
- package/src/lib/utils/dateUtils.d.ts.map +1 -0
- package/src/lib/utils/dateUtils.js +136 -0
- package/src/lib/utils/dateUtils.js.map +1 -0
- package/src/lib/utils/index.d.ts +57 -0
- package/src/lib/utils/index.d.ts.map +1 -1
- package/src/lib/utils/index.js +69 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/typeGuards.d.ts +102 -0
- package/src/lib/utils/typeGuards.d.ts.map +1 -0
- package/src/lib/utils/typeGuards.js +244 -0
- package/src/lib/utils/typeGuards.js.map +1 -0
- package/src/lib/cpus/instructions.d.ts +0 -35
- package/src/lib/cpus/instructions.d.ts.map +0 -1
- package/src/lib/cpus/instructions.js +0 -285
- package/src/lib/cpus/instructions.js.map +0 -1
- package/src/lib/cpus/mach-o.d.ts +0 -7
- package/src/lib/cpus/mach-o.d.ts.map +0 -1
- package/src/lib/cpus/mach-o.js +0 -99
- package/src/lib/cpus/mach-o.js.map +0 -1
- package/src/lib/cpus/x86Cpu.d.ts +0 -21
- package/src/lib/cpus/x86Cpu.d.ts.map +0 -1
- package/src/lib/cpus/x86Cpu.js +0 -89
- package/src/lib/cpus/x86Cpu.js.map +0 -1
- package/src/lib/enumerations/stringNames.d.ts.map +0 -1
- package/src/lib/enumerations/stringNames.js +0 -436
- package/src/lib/enumerations/stringNames.js.map +0 -1
- package/src/lib/errors/superCbl.d.ts +0 -24
- package/src/lib/errors/superCbl.d.ts.map +0 -1
- package/src/lib/errors/superCbl.js +0 -43
- package/src/lib/errors/superCbl.js.map +0 -1
- package/src/lib/interfaces/storage/superCbl.d.ts +0 -102
- package/src/lib/interfaces/storage/superCbl.d.ts.map +0 -1
- package/src/lib/interfaces/storage/superCbl.js.map +0 -1
- package/src/lib/services/jsonCblCapacity.service.d.ts +0 -80
- package/src/lib/services/jsonCblCapacity.service.d.ts.map +0 -1
- package/src/lib/services/jsonCblCapacity.service.js +0 -147
- package/src/lib/services/jsonCblCapacity.service.js.map +0 -1
- package/src/lib/services/superCbl.service.d.ts +0 -68
- package/src/lib/services/superCbl.service.d.ts.map +0 -1
- package/src/lib/services/superCbl.service.js +0 -213
- package/src/lib/services/superCbl.service.js.map +0 -1
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CBL type discriminator for version 2 CBLs
|
|
3
|
-
*/
|
|
4
|
-
export type CBLType = 'regular' | 'super-cbl' | 'sub-cbl';
|
|
5
|
-
/**
|
|
6
|
-
* Legacy CBL format (version 1) for backward compatibility
|
|
7
|
-
*/
|
|
8
|
-
export interface CBLv1 {
|
|
9
|
-
version: 1;
|
|
10
|
-
fileName: string;
|
|
11
|
-
originalSize: number;
|
|
12
|
-
blockSize: number;
|
|
13
|
-
blockCount: number;
|
|
14
|
-
blocks: string[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Regular CBL format (version 2) - contains direct block references
|
|
18
|
-
*/
|
|
19
|
-
export interface RegularCBLv2 {
|
|
20
|
-
version: 2;
|
|
21
|
-
type: 'regular';
|
|
22
|
-
fileName: string;
|
|
23
|
-
originalSize: number;
|
|
24
|
-
blockSize: number;
|
|
25
|
-
blockCount: number;
|
|
26
|
-
blocks: string[];
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Sub-CBL format - child CBL referenced by a Super CBL
|
|
30
|
-
*/
|
|
31
|
-
export interface SubCBL {
|
|
32
|
-
version: 2;
|
|
33
|
-
type: 'sub-cbl';
|
|
34
|
-
fileName: string;
|
|
35
|
-
originalSize: number;
|
|
36
|
-
blockSize: number;
|
|
37
|
-
blockCount: number;
|
|
38
|
-
blocks: string[];
|
|
39
|
-
subCblIndex: number;
|
|
40
|
-
totalSubCbls: number;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Super CBL format - parent CBL that references sub-CBLs via magnet URLs
|
|
44
|
-
*/
|
|
45
|
-
export interface SuperCBL {
|
|
46
|
-
version: 2;
|
|
47
|
-
type: 'super-cbl';
|
|
48
|
-
fileName: string;
|
|
49
|
-
originalSize: number;
|
|
50
|
-
blockSize: number;
|
|
51
|
-
totalBlockCount: number;
|
|
52
|
-
depth: number;
|
|
53
|
-
subCblCount: number;
|
|
54
|
-
subCblMagnetUrls: string[];
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Union type for all CBL formats
|
|
58
|
-
*/
|
|
59
|
-
export type CBLData = CBLv1 | RegularCBLv2 | SubCBL | SuperCBL;
|
|
60
|
-
/**
|
|
61
|
-
* Result of creating a Super CBL hierarchy
|
|
62
|
-
*/
|
|
63
|
-
export interface SuperCBLCreationResult {
|
|
64
|
-
/**
|
|
65
|
-
* The root CBL (either RegularCBLv2 or SuperCBL)
|
|
66
|
-
*/
|
|
67
|
-
rootCbl: RegularCBLv2 | SuperCBL;
|
|
68
|
-
/**
|
|
69
|
-
* All sub-CBLs created (empty for regular CBLs)
|
|
70
|
-
*/
|
|
71
|
-
subCbls: SubCBL[];
|
|
72
|
-
/**
|
|
73
|
-
* Hierarchy depth (1 for regular CBL, 2+ for Super CBL)
|
|
74
|
-
*/
|
|
75
|
-
depth: number;
|
|
76
|
-
/**
|
|
77
|
-
* Whether a Super CBL was required
|
|
78
|
-
*/
|
|
79
|
-
isSuperCbl: boolean;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Configuration for Super CBL creation
|
|
83
|
-
*/
|
|
84
|
-
export interface SuperCBLConfig {
|
|
85
|
-
/**
|
|
86
|
-
* Target block size in bytes
|
|
87
|
-
*/
|
|
88
|
-
blockSize: number;
|
|
89
|
-
/**
|
|
90
|
-
* Maximum hierarchy depth (default: 10)
|
|
91
|
-
*/
|
|
92
|
-
maxDepth?: number;
|
|
93
|
-
/**
|
|
94
|
-
* File name for metadata
|
|
95
|
-
*/
|
|
96
|
-
fileName: string;
|
|
97
|
-
/**
|
|
98
|
-
* Original file size in bytes
|
|
99
|
-
*/
|
|
100
|
-
originalSize: number;
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=superCbl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"superCbl.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/superCbl.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IAEjC;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"superCbl.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/interfaces/storage/superCbl.ts"],"names":[],"mappings":""}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { CBLData, CBLType } from '../interfaces/storage/superCbl';
|
|
2
|
-
/**
|
|
3
|
-
* Service for calculating JSON CBL capacity and overhead.
|
|
4
|
-
* Used for the showcase demo which stores CBLs as JSON.
|
|
5
|
-
*
|
|
6
|
-
* @see Requirements 1.1, 1.2, 1.3, 1.4
|
|
7
|
-
*/
|
|
8
|
-
export declare class JsonCBLCapacityCalculator {
|
|
9
|
-
/**
|
|
10
|
-
* Calculate the serialized size of a CBL in bytes when stored as JSON.
|
|
11
|
-
* Accounts for JSON serialization overhead and 4-byte length prefix.
|
|
12
|
-
*
|
|
13
|
-
* @param cbl - The CBL data to calculate size for
|
|
14
|
-
* @returns The total size in bytes including length prefix
|
|
15
|
-
*
|
|
16
|
-
* @see Requirements 1.1, 1.4
|
|
17
|
-
*/
|
|
18
|
-
calculateCBLSize(cbl: CBLData): number;
|
|
19
|
-
/**
|
|
20
|
-
* Calculate the overhead for a given CBL type (metadata without block references).
|
|
21
|
-
*
|
|
22
|
-
* @param cblType - The type of CBL
|
|
23
|
-
* @param fileName - File name for metadata
|
|
24
|
-
* @param originalSize - Original file size
|
|
25
|
-
* @param blockSize - Block size
|
|
26
|
-
* @param additionalFields - Additional fields for specific CBL types
|
|
27
|
-
* @returns The overhead in bytes
|
|
28
|
-
*
|
|
29
|
-
* @see Requirements 1.1
|
|
30
|
-
*/
|
|
31
|
-
calculateCBLOverhead(cblType: CBLType | 'v1', fileName: string, originalSize: number, blockSize: number, additionalFields?: {
|
|
32
|
-
subCblIndex?: number;
|
|
33
|
-
totalSubCbls?: number;
|
|
34
|
-
totalBlockCount?: number;
|
|
35
|
-
depth?: number;
|
|
36
|
-
subCblCount?: number;
|
|
37
|
-
}): number;
|
|
38
|
-
/**
|
|
39
|
-
* Calculate the maximum number of block references that fit in a CBL.
|
|
40
|
-
*
|
|
41
|
-
* @param blockSize - Target block size in bytes
|
|
42
|
-
* @param fileName - File name for metadata
|
|
43
|
-
* @param originalSize - Original file size
|
|
44
|
-
* @param cblType - Type of CBL ('regular' or 'sub-cbl')
|
|
45
|
-
* @param additionalFields - Additional fields for sub-CBL
|
|
46
|
-
* @returns Maximum number of block references
|
|
47
|
-
*
|
|
48
|
-
* @see Requirements 1.3
|
|
49
|
-
*/
|
|
50
|
-
calculateMaxBlockReferences(blockSize: number, fileName: string, originalSize: number, cblType?: 'regular' | 'sub-cbl', additionalFields?: {
|
|
51
|
-
subCblIndex?: number;
|
|
52
|
-
totalSubCbls?: number;
|
|
53
|
-
}): number;
|
|
54
|
-
/**
|
|
55
|
-
* Calculate the maximum number of sub-CBL magnet URL references in a Super CBL.
|
|
56
|
-
*
|
|
57
|
-
* @param blockSize - Target block size in bytes
|
|
58
|
-
* @param fileName - File name for metadata
|
|
59
|
-
* @param originalSize - Original file size
|
|
60
|
-
* @param totalBlockCount - Total blocks across all sub-CBLs
|
|
61
|
-
* @param depth - Hierarchy depth
|
|
62
|
-
* @returns Maximum number of sub-CBL references
|
|
63
|
-
*
|
|
64
|
-
* @see Requirements 1.3
|
|
65
|
-
*/
|
|
66
|
-
calculateMaxSubCBLReferences(blockSize: number, fileName: string, originalSize: number, totalBlockCount: number, depth: number): number;
|
|
67
|
-
/**
|
|
68
|
-
* Determine if a Super CBL is required based on block count.
|
|
69
|
-
*
|
|
70
|
-
* @param blockCount - Number of blocks to store
|
|
71
|
-
* @param blockSize - Target block size in bytes
|
|
72
|
-
* @param fileName - File name for metadata
|
|
73
|
-
* @param originalSize - Original file size
|
|
74
|
-
* @returns True if Super CBL is required
|
|
75
|
-
*
|
|
76
|
-
* @see Requirements 1.2, 1.4
|
|
77
|
-
*/
|
|
78
|
-
requiresSuperCBL(blockCount: number, blockSize: number, fileName: string, originalSize: number): boolean;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=jsonCblCapacity.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonCblCapacity.service.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/jsonCblCapacity.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,yBAAyB;IACpC;;;;;;;;OAQG;IACI,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IAO7C;;;;;;;;;;;OAWG;IACI,oBAAoB,CACzB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,MAAM;IAmDT;;;;;;;;;;;OAWG;IACI,2BAA2B,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,SAAS,GAAG,SAAqB,EAC1C,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,MAAM;IAiBT;;;;;;;;;;;OAWG;IACI,4BAA4B,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,GACZ,MAAM;IAkBT;;;;;;;;;;OAUG;IACI,gBAAgB,CACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO;CASX"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JsonCBLCapacityCalculator = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Service for calculating JSON CBL capacity and overhead.
|
|
6
|
-
* Used for the showcase demo which stores CBLs as JSON.
|
|
7
|
-
*
|
|
8
|
-
* @see Requirements 1.1, 1.2, 1.3, 1.4
|
|
9
|
-
*/
|
|
10
|
-
class JsonCBLCapacityCalculator {
|
|
11
|
-
/**
|
|
12
|
-
* Calculate the serialized size of a CBL in bytes when stored as JSON.
|
|
13
|
-
* Accounts for JSON serialization overhead and 4-byte length prefix.
|
|
14
|
-
*
|
|
15
|
-
* @param cbl - The CBL data to calculate size for
|
|
16
|
-
* @returns The total size in bytes including length prefix
|
|
17
|
-
*
|
|
18
|
-
* @see Requirements 1.1, 1.4
|
|
19
|
-
*/
|
|
20
|
-
calculateCBLSize(cbl) {
|
|
21
|
-
const json = JSON.stringify(cbl);
|
|
22
|
-
const jsonBytes = new TextEncoder().encode(json).length;
|
|
23
|
-
// Add 4-byte length prefix
|
|
24
|
-
return 4 + jsonBytes;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Calculate the overhead for a given CBL type (metadata without block references).
|
|
28
|
-
*
|
|
29
|
-
* @param cblType - The type of CBL
|
|
30
|
-
* @param fileName - File name for metadata
|
|
31
|
-
* @param originalSize - Original file size
|
|
32
|
-
* @param blockSize - Block size
|
|
33
|
-
* @param additionalFields - Additional fields for specific CBL types
|
|
34
|
-
* @returns The overhead in bytes
|
|
35
|
-
*
|
|
36
|
-
* @see Requirements 1.1
|
|
37
|
-
*/
|
|
38
|
-
calculateCBLOverhead(cblType, fileName, originalSize, blockSize, additionalFields) {
|
|
39
|
-
let cbl;
|
|
40
|
-
if (cblType === 'v1') {
|
|
41
|
-
cbl = {
|
|
42
|
-
version: 1,
|
|
43
|
-
fileName,
|
|
44
|
-
originalSize,
|
|
45
|
-
blockSize,
|
|
46
|
-
blockCount: 0,
|
|
47
|
-
blocks: [],
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
else if (cblType === 'regular') {
|
|
51
|
-
cbl = {
|
|
52
|
-
version: 2,
|
|
53
|
-
type: 'regular',
|
|
54
|
-
fileName,
|
|
55
|
-
originalSize,
|
|
56
|
-
blockSize,
|
|
57
|
-
blockCount: 0,
|
|
58
|
-
blocks: [],
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
else if (cblType === 'sub-cbl') {
|
|
62
|
-
cbl = {
|
|
63
|
-
version: 2,
|
|
64
|
-
type: 'sub-cbl',
|
|
65
|
-
fileName,
|
|
66
|
-
originalSize,
|
|
67
|
-
blockSize,
|
|
68
|
-
blockCount: 0,
|
|
69
|
-
blocks: [],
|
|
70
|
-
subCblIndex: additionalFields?.subCblIndex ?? 0,
|
|
71
|
-
totalSubCbls: additionalFields?.totalSubCbls ?? 1,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
cbl = {
|
|
76
|
-
version: 2,
|
|
77
|
-
type: 'super-cbl',
|
|
78
|
-
fileName,
|
|
79
|
-
originalSize,
|
|
80
|
-
blockSize,
|
|
81
|
-
totalBlockCount: additionalFields?.totalBlockCount ?? 0,
|
|
82
|
-
depth: additionalFields?.depth ?? 2,
|
|
83
|
-
subCblCount: additionalFields?.subCblCount ?? 0,
|
|
84
|
-
subCblMagnetUrls: [],
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return this.calculateCBLSize(cbl);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Calculate the maximum number of block references that fit in a CBL.
|
|
91
|
-
*
|
|
92
|
-
* @param blockSize - Target block size in bytes
|
|
93
|
-
* @param fileName - File name for metadata
|
|
94
|
-
* @param originalSize - Original file size
|
|
95
|
-
* @param cblType - Type of CBL ('regular' or 'sub-cbl')
|
|
96
|
-
* @param additionalFields - Additional fields for sub-CBL
|
|
97
|
-
* @returns Maximum number of block references
|
|
98
|
-
*
|
|
99
|
-
* @see Requirements 1.3
|
|
100
|
-
*/
|
|
101
|
-
calculateMaxBlockReferences(blockSize, fileName, originalSize, cblType = 'regular', additionalFields) {
|
|
102
|
-
const overhead = this.calculateCBLOverhead(cblType, fileName, originalSize, blockSize, additionalFields);
|
|
103
|
-
// Estimate bytes per block reference (hex string in JSON array)
|
|
104
|
-
// Format: "abc123..." with quotes and comma: ~130 chars for 128-char hex + overhead
|
|
105
|
-
const bytesPerReference = 132;
|
|
106
|
-
const availableSpace = blockSize - overhead;
|
|
107
|
-
return Math.floor(availableSpace / bytesPerReference);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Calculate the maximum number of sub-CBL magnet URL references in a Super CBL.
|
|
111
|
-
*
|
|
112
|
-
* @param blockSize - Target block size in bytes
|
|
113
|
-
* @param fileName - File name for metadata
|
|
114
|
-
* @param originalSize - Original file size
|
|
115
|
-
* @param totalBlockCount - Total blocks across all sub-CBLs
|
|
116
|
-
* @param depth - Hierarchy depth
|
|
117
|
-
* @returns Maximum number of sub-CBL references
|
|
118
|
-
*
|
|
119
|
-
* @see Requirements 1.3
|
|
120
|
-
*/
|
|
121
|
-
calculateMaxSubCBLReferences(blockSize, fileName, originalSize, totalBlockCount, depth) {
|
|
122
|
-
const overhead = this.calculateCBLOverhead('super-cbl', fileName, originalSize, blockSize, { totalBlockCount, depth, subCblCount: 0 });
|
|
123
|
-
// Estimate bytes per magnet URL in JSON array
|
|
124
|
-
// Format: "magnet:?xt=urn:brightchain:cbl&bs=4096&b1=...&b2=..." with quotes and comma
|
|
125
|
-
// Typical length: ~310 chars to be safe
|
|
126
|
-
const bytesPerMagnetUrl = 310;
|
|
127
|
-
const availableSpace = blockSize - overhead;
|
|
128
|
-
return Math.floor(availableSpace / bytesPerMagnetUrl);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Determine if a Super CBL is required based on block count.
|
|
132
|
-
*
|
|
133
|
-
* @param blockCount - Number of blocks to store
|
|
134
|
-
* @param blockSize - Target block size in bytes
|
|
135
|
-
* @param fileName - File name for metadata
|
|
136
|
-
* @param originalSize - Original file size
|
|
137
|
-
* @returns True if Super CBL is required
|
|
138
|
-
*
|
|
139
|
-
* @see Requirements 1.2, 1.4
|
|
140
|
-
*/
|
|
141
|
-
requiresSuperCBL(blockCount, blockSize, fileName, originalSize) {
|
|
142
|
-
const maxReferences = this.calculateMaxBlockReferences(blockSize, fileName, originalSize, 'regular');
|
|
143
|
-
return blockCount > maxReferences;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
exports.JsonCBLCapacityCalculator = JsonCBLCapacityCalculator;
|
|
147
|
-
//# sourceMappingURL=jsonCblCapacity.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsonCblCapacity.service.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/jsonCblCapacity.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import type { CBLData, SubCBL, SuperCBL, SuperCBLConfig, SuperCBLCreationResult } from '../interfaces/storage/superCbl';
|
|
2
|
-
/**
|
|
3
|
-
* Parse CBL data from JSON and detect its type.
|
|
4
|
-
*
|
|
5
|
-
* @param json - JSON string or object containing CBL data
|
|
6
|
-
* @returns Parsed CBL data with type information
|
|
7
|
-
*
|
|
8
|
-
* @see Requirements 5.1, 6.5, 6.6
|
|
9
|
-
*/
|
|
10
|
-
export declare function parseCBLData(json: string | object): CBLData;
|
|
11
|
-
/**
|
|
12
|
-
* Service for creating and managing hierarchical Super CBL structures.
|
|
13
|
-
*
|
|
14
|
-
* @see Requirements 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 4.1, 4.2
|
|
15
|
-
*/
|
|
16
|
-
export declare class SuperCBLService {
|
|
17
|
-
private readonly capacityCalculator;
|
|
18
|
-
constructor();
|
|
19
|
-
/**
|
|
20
|
-
* Create a sub-CBL from a partition of block references.
|
|
21
|
-
*
|
|
22
|
-
* @param blocks - Block references for this sub-CBL
|
|
23
|
-
* @param config - Configuration for the CBL
|
|
24
|
-
* @param subCblIndex - Index of this sub-CBL
|
|
25
|
-
* @param totalSubCbls - Total number of sub-CBLs
|
|
26
|
-
* @returns The created sub-CBL
|
|
27
|
-
*
|
|
28
|
-
* @see Requirements 2.1, 2.2, 2.3
|
|
29
|
-
*/
|
|
30
|
-
createSubCBL(blocks: string[], config: SuperCBLConfig, subCblIndex: number, totalSubCbls: number): SubCBL;
|
|
31
|
-
/**
|
|
32
|
-
* Create a Super CBL that references sub-CBLs via magnet URLs.
|
|
33
|
-
*
|
|
34
|
-
* @param subCblMagnetUrls - Magnet URLs for all sub-CBLs
|
|
35
|
-
* @param config - Configuration for the CBL
|
|
36
|
-
* @param totalBlockCount - Total blocks across all sub-CBLs
|
|
37
|
-
* @param depth - Hierarchy depth
|
|
38
|
-
* @returns The created Super CBL
|
|
39
|
-
*
|
|
40
|
-
* @see Requirements 3.1, 3.2, 3.3
|
|
41
|
-
*/
|
|
42
|
-
createSuperCBL(subCblMagnetUrls: string[], config: SuperCBLConfig, totalBlockCount: number, depth: number): SuperCBL;
|
|
43
|
-
/**
|
|
44
|
-
* Create a hierarchical CBL structure for the given block references.
|
|
45
|
-
* Automatically determines whether to use regular CBL or Super CBL.
|
|
46
|
-
*
|
|
47
|
-
* @param blocks - All block references for the file
|
|
48
|
-
* @param config - Configuration for the CBL
|
|
49
|
-
* @param storeSubCBL - Callback to store a sub-CBL and get its magnet URL
|
|
50
|
-
* @param currentDepth - Current recursion depth (internal use)
|
|
51
|
-
* @returns Result containing the root CBL and all sub-CBLs
|
|
52
|
-
*
|
|
53
|
-
* @see Requirements 2.4, 3.4, 4.1, 4.2
|
|
54
|
-
*/
|
|
55
|
-
createHierarchicalCBL(blocks: string[], config: SuperCBLConfig, storeSubCBL: (subCbl: SubCBL | SuperCBL) => Promise<string>, currentDepth?: number): Promise<SuperCBLCreationResult>;
|
|
56
|
-
/**
|
|
57
|
-
* Reconstruct block references from a hierarchical CBL structure.
|
|
58
|
-
* Recursively retrieves sub-CBLs and reassembles block references.
|
|
59
|
-
*
|
|
60
|
-
* @param cblData - The root CBL data
|
|
61
|
-
* @param retrieveSubCBL - Callback to retrieve a sub-CBL by magnet URL
|
|
62
|
-
* @returns Array of all block references in correct order
|
|
63
|
-
*
|
|
64
|
-
* @see Requirements 5.2, 5.3, 5.4, 5.5
|
|
65
|
-
*/
|
|
66
|
-
reconstructBlockReferences(cblData: CBLData, retrieveSubCBL: (magnetUrl: string) => Promise<CBLData>): Promise<string[]>;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=superCbl.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"superCbl.service.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/superCbl.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAGP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,sBAAsB,EACvB,MAAM,gCAAgC,CAAC;AAGxC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAuB3D;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;;IAM/D;;;;;;;;;;OAUG;IACI,YAAY,CACjB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM;IAcT;;;;;;;;;;OAUG;IACI,cAAc,CACnB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,GACZ,QAAQ;IAcX;;;;;;;;;;;OAWG;IACU,qBAAqB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3D,YAAY,GAAE,MAAU,GACvB,OAAO,CAAC,sBAAsB,CAAC;IAoGlC;;;;;;;;;OASG;IACU,0BAA0B,CACrC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACtD,OAAO,CAAC,MAAM,EAAE,CAAC;CAmDrB"}
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SuperCBLService = void 0;
|
|
4
|
-
exports.parseCBLData = parseCBLData;
|
|
5
|
-
const superCbl_1 = require("../errors/superCbl");
|
|
6
|
-
const jsonCblCapacity_service_1 = require("./jsonCblCapacity.service");
|
|
7
|
-
/**
|
|
8
|
-
* Parse CBL data from JSON and detect its type.
|
|
9
|
-
*
|
|
10
|
-
* @param json - JSON string or object containing CBL data
|
|
11
|
-
* @returns Parsed CBL data with type information
|
|
12
|
-
*
|
|
13
|
-
* @see Requirements 5.1, 6.5, 6.6
|
|
14
|
-
*/
|
|
15
|
-
function parseCBLData(json) {
|
|
16
|
-
const data = typeof json === 'string' ? JSON.parse(json) : json;
|
|
17
|
-
// Check version
|
|
18
|
-
if (data.version === 1) {
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
if (data.version === 2) {
|
|
22
|
-
if (data.type === 'regular') {
|
|
23
|
-
return data;
|
|
24
|
-
}
|
|
25
|
-
else if (data.type === 'sub-cbl') {
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
28
|
-
else if (data.type === 'super-cbl') {
|
|
29
|
-
return data;
|
|
30
|
-
}
|
|
31
|
-
throw superCbl_1.SuperCBLError.invalidCBLType(data.type);
|
|
32
|
-
}
|
|
33
|
-
throw superCbl_1.SuperCBLError.invalidFormat(`Unsupported CBL version: ${data.version}`, { version: data.version });
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Service for creating and managing hierarchical Super CBL structures.
|
|
37
|
-
*
|
|
38
|
-
* @see Requirements 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 4.1, 4.2
|
|
39
|
-
*/
|
|
40
|
-
class SuperCBLService {
|
|
41
|
-
constructor() {
|
|
42
|
-
this.capacityCalculator = new jsonCblCapacity_service_1.JsonCBLCapacityCalculator();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Create a sub-CBL from a partition of block references.
|
|
46
|
-
*
|
|
47
|
-
* @param blocks - Block references for this sub-CBL
|
|
48
|
-
* @param config - Configuration for the CBL
|
|
49
|
-
* @param subCblIndex - Index of this sub-CBL
|
|
50
|
-
* @param totalSubCbls - Total number of sub-CBLs
|
|
51
|
-
* @returns The created sub-CBL
|
|
52
|
-
*
|
|
53
|
-
* @see Requirements 2.1, 2.2, 2.3
|
|
54
|
-
*/
|
|
55
|
-
createSubCBL(blocks, config, subCblIndex, totalSubCbls) {
|
|
56
|
-
return {
|
|
57
|
-
version: 2,
|
|
58
|
-
type: 'sub-cbl',
|
|
59
|
-
fileName: config.fileName,
|
|
60
|
-
originalSize: config.originalSize,
|
|
61
|
-
blockSize: config.blockSize,
|
|
62
|
-
blockCount: blocks.length,
|
|
63
|
-
blocks,
|
|
64
|
-
subCblIndex,
|
|
65
|
-
totalSubCbls,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Create a Super CBL that references sub-CBLs via magnet URLs.
|
|
70
|
-
*
|
|
71
|
-
* @param subCblMagnetUrls - Magnet URLs for all sub-CBLs
|
|
72
|
-
* @param config - Configuration for the CBL
|
|
73
|
-
* @param totalBlockCount - Total blocks across all sub-CBLs
|
|
74
|
-
* @param depth - Hierarchy depth
|
|
75
|
-
* @returns The created Super CBL
|
|
76
|
-
*
|
|
77
|
-
* @see Requirements 3.1, 3.2, 3.3
|
|
78
|
-
*/
|
|
79
|
-
createSuperCBL(subCblMagnetUrls, config, totalBlockCount, depth) {
|
|
80
|
-
return {
|
|
81
|
-
version: 2,
|
|
82
|
-
type: 'super-cbl',
|
|
83
|
-
fileName: config.fileName,
|
|
84
|
-
originalSize: config.originalSize,
|
|
85
|
-
blockSize: config.blockSize,
|
|
86
|
-
totalBlockCount,
|
|
87
|
-
depth,
|
|
88
|
-
subCblCount: subCblMagnetUrls.length,
|
|
89
|
-
subCblMagnetUrls,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Create a hierarchical CBL structure for the given block references.
|
|
94
|
-
* Automatically determines whether to use regular CBL or Super CBL.
|
|
95
|
-
*
|
|
96
|
-
* @param blocks - All block references for the file
|
|
97
|
-
* @param config - Configuration for the CBL
|
|
98
|
-
* @param storeSubCBL - Callback to store a sub-CBL and get its magnet URL
|
|
99
|
-
* @param currentDepth - Current recursion depth (internal use)
|
|
100
|
-
* @returns Result containing the root CBL and all sub-CBLs
|
|
101
|
-
*
|
|
102
|
-
* @see Requirements 2.4, 3.4, 4.1, 4.2
|
|
103
|
-
*/
|
|
104
|
-
async createHierarchicalCBL(blocks, config, storeSubCBL, currentDepth = 1) {
|
|
105
|
-
const maxDepth = config.maxDepth ?? 10;
|
|
106
|
-
// Check depth limit
|
|
107
|
-
if (currentDepth > maxDepth) {
|
|
108
|
-
throw superCbl_1.SuperCBLError.maxDepthExceeded(currentDepth, maxDepth);
|
|
109
|
-
}
|
|
110
|
-
// Check if Super CBL is needed
|
|
111
|
-
const requiresSuperCBL = this.capacityCalculator.requiresSuperCBL(blocks.length, config.blockSize, config.fileName, config.originalSize);
|
|
112
|
-
// If regular CBL fits, return it
|
|
113
|
-
if (!requiresSuperCBL) {
|
|
114
|
-
const regularCbl = {
|
|
115
|
-
version: 2,
|
|
116
|
-
type: 'regular',
|
|
117
|
-
fileName: config.fileName,
|
|
118
|
-
originalSize: config.originalSize,
|
|
119
|
-
blockSize: config.blockSize,
|
|
120
|
-
blockCount: blocks.length,
|
|
121
|
-
blocks,
|
|
122
|
-
};
|
|
123
|
-
return {
|
|
124
|
-
rootCbl: regularCbl,
|
|
125
|
-
subCbls: [],
|
|
126
|
-
depth: 1,
|
|
127
|
-
isSuperCbl: false,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
// Calculate max blocks per sub-CBL
|
|
131
|
-
const maxBlocksPerSubCbl = this.capacityCalculator.calculateMaxBlockReferences(config.blockSize, config.fileName, config.originalSize, 'sub-cbl', { subCblIndex: 0, totalSubCbls: 1 });
|
|
132
|
-
// Partition blocks into sub-CBLs
|
|
133
|
-
const subCblCount = Math.ceil(blocks.length / maxBlocksPerSubCbl);
|
|
134
|
-
const subCbls = [];
|
|
135
|
-
const subCblMagnetUrls = [];
|
|
136
|
-
for (let i = 0; i < subCblCount; i++) {
|
|
137
|
-
const start = i * maxBlocksPerSubCbl;
|
|
138
|
-
const end = Math.min(start + maxBlocksPerSubCbl, blocks.length);
|
|
139
|
-
const subCblBlocks = blocks.slice(start, end);
|
|
140
|
-
const subCbl = this.createSubCBL(subCblBlocks, config, i, subCblCount);
|
|
141
|
-
subCbls.push(subCbl);
|
|
142
|
-
const magnetUrl = await storeSubCBL(subCbl);
|
|
143
|
-
subCblMagnetUrls.push(magnetUrl);
|
|
144
|
-
}
|
|
145
|
-
// Check if Super CBL itself fits
|
|
146
|
-
const superCbl = this.createSuperCBL(subCblMagnetUrls, config, blocks.length, currentDepth + 1);
|
|
147
|
-
const superCblSize = this.capacityCalculator.calculateCBLSize(superCbl);
|
|
148
|
-
// If Super CBL fits, return it
|
|
149
|
-
if (superCblSize <= config.blockSize) {
|
|
150
|
-
return {
|
|
151
|
-
rootCbl: superCbl,
|
|
152
|
-
subCbls,
|
|
153
|
-
depth: currentDepth + 1,
|
|
154
|
-
isSuperCbl: true,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
// Super CBL doesn't fit - need recursive hierarchy
|
|
158
|
-
// Treat magnet URLs as "blocks" and create another level
|
|
159
|
-
const recursiveResult = await this.createHierarchicalCBL(subCblMagnetUrls, config, storeSubCBL, currentDepth + 1);
|
|
160
|
-
return {
|
|
161
|
-
rootCbl: recursiveResult.rootCbl,
|
|
162
|
-
subCbls: [...subCbls, ...recursiveResult.subCbls],
|
|
163
|
-
depth: recursiveResult.depth,
|
|
164
|
-
isSuperCbl: true,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Reconstruct block references from a hierarchical CBL structure.
|
|
169
|
-
* Recursively retrieves sub-CBLs and reassembles block references.
|
|
170
|
-
*
|
|
171
|
-
* @param cblData - The root CBL data
|
|
172
|
-
* @param retrieveSubCBL - Callback to retrieve a sub-CBL by magnet URL
|
|
173
|
-
* @returns Array of all block references in correct order
|
|
174
|
-
*
|
|
175
|
-
* @see Requirements 5.2, 5.3, 5.4, 5.5
|
|
176
|
-
*/
|
|
177
|
-
async reconstructBlockReferences(cblData, retrieveSubCBL) {
|
|
178
|
-
// Handle v1 CBL (backward compatibility)
|
|
179
|
-
if (cblData.version === 1) {
|
|
180
|
-
return cblData.blocks;
|
|
181
|
-
}
|
|
182
|
-
// Handle regular v2 CBL
|
|
183
|
-
if (cblData.type === 'regular') {
|
|
184
|
-
return cblData.blocks;
|
|
185
|
-
}
|
|
186
|
-
// Handle sub-CBL (shouldn't be root, but handle it)
|
|
187
|
-
if (cblData.type === 'sub-cbl') {
|
|
188
|
-
return cblData.blocks;
|
|
189
|
-
}
|
|
190
|
-
// Handle Super CBL - recursively retrieve sub-CBLs
|
|
191
|
-
if (cblData.type === 'super-cbl') {
|
|
192
|
-
const allBlocks = [];
|
|
193
|
-
for (const magnetUrl of cblData.subCblMagnetUrls) {
|
|
194
|
-
try {
|
|
195
|
-
const subCblData = await retrieveSubCBL(magnetUrl);
|
|
196
|
-
const subBlocks = await this.reconstructBlockReferences(subCblData, retrieveSubCBL);
|
|
197
|
-
allBlocks.push(...subBlocks);
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
200
|
-
throw superCbl_1.SuperCBLError.missingSubCBL(magnetUrl, error instanceof Error ? error : undefined);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
// Validate block count
|
|
204
|
-
if (allBlocks.length !== cblData.totalBlockCount) {
|
|
205
|
-
throw superCbl_1.SuperCBLError.blockCountMismatch(cblData.totalBlockCount, allBlocks.length);
|
|
206
|
-
}
|
|
207
|
-
return allBlocks;
|
|
208
|
-
}
|
|
209
|
-
throw superCbl_1.SuperCBLError.invalidCBLType(cblData.type || 'unknown');
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
exports.SuperCBLService = SuperCBLService;
|
|
213
|
-
//# sourceMappingURL=superCbl.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"superCbl.service.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/superCbl.service.ts"],"names":[],"mappings":"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"}
|