@brightchain/brightchain-lib 0.8.0 → 0.9.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 +33 -0
- 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 +89 -44
- package/src/lib/blocks/cblBase.js.map +1 -1
- package/src/lib/blocks/encrypted.d.ts.map +1 -1
- package/src/lib/blocks/encrypted.js +68 -21
- package/src/lib/blocks/encrypted.js.map +1 -1
- package/src/lib/blocks/encryptedBlockFactory.d.ts.map +1 -1
- package/src/lib/blocks/encryptedBlockFactory.js +29 -16
- package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
- package/src/lib/blocks/ephemeral.d.ts.map +1 -1
- package/src/lib/blocks/ephemeral.js +17 -10
- package/src/lib/blocks/ephemeral.js.map +1 -1
- package/src/lib/blocks/rawData.d.ts.map +1 -1
- package/src/lib/blocks/rawData.js +5 -1
- package/src/lib/blocks/rawData.js.map +1 -1
- 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/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 +9 -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 +11 -13
- 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/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/encryptedBlockMetadata.d.ts +11 -4
- package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
- package/src/lib/encryptedBlockMetadata.js +29 -22
- 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 +10 -7
- package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
- package/src/lib/ephemeralBlockMetadata.js +24 -17
- 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.js +2 -2
- package/src/lib/errors/block/cannotDecrypt.js.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.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/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 +4 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +4 -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 +20 -0
- package/src/lib/init.js.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/constants.d.ts +29 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/serviceProvider.interface.d.ts +2 -1
- 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/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 +212 -0
- package/src/lib/logging/blockLogger.d.ts.map +1 -0
- package/src/lib/logging/blockLogger.js +327 -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/quorum.d.ts.map +1 -1
- package/src/lib/quorum.js +5 -4
- package/src/lib/quorum.js.map +1 -1
- package/src/lib/quorumDataRecord.d.ts.map +1 -1
- package/src/lib/quorumDataRecord.js +3 -2
- 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.map +1 -1
- package/src/lib/schemas/quorumDocument.js +6 -4
- package/src/lib/schemas/quorumDocument.js.map +1 -1
- 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 +56 -0
- package/src/lib/services/blockFormatService.d.ts.map +1 -0
- package/src/lib/services/blockFormatService.js +282 -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 +120 -18
- package/src/lib/services/blockService.js.map +1 -1
- package/src/lib/services/cblService.d.ts +159 -1
- package/src/lib/services/cblService.d.ts.map +1 -1
- package/src/lib/services/cblService.js +498 -17
- package/src/lib/services/cblService.js.map +1 -1
- 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.map +1 -1
- package/src/lib/services/memberStore.js +20 -28
- package/src/lib/services/memberStore.js.map +1 -1
- package/src/lib/services/sealing.service.d.ts.map +1 -1
- package/src/lib/services/sealing.service.js +2 -1
- package/src/lib/services/sealing.service.js.map +1 -1
- package/src/lib/services/service.provider.d.ts.map +1 -1
- package/src/lib/services/service.provider.js +3 -11
- package/src/lib/services/service.provider.js.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/utils/constantTime.d.ts +112 -0
- package/src/lib/utils/constantTime.d.ts.map +1 -0
- package/src/lib/utils/constantTime.js +180 -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/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
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Block Test Coverage Audit
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-01-24
|
|
4
|
+
**Overall Coverage**: 61.6% statements, 46.76% branches, 51.8% functions, 62.04% lines
|
|
5
|
+
|
|
6
|
+
## Block Files Below 90% Coverage
|
|
7
|
+
|
|
8
|
+
### Critical Block Files (Core Block Types)
|
|
9
|
+
|
|
10
|
+
| File | Statements | Branches | Functions | Lines | Priority |
|
|
11
|
+
|------|-----------|----------|-----------|-------|----------|
|
|
12
|
+
| `lib/blocks/encrypted.ts` | 25.66% | 22% | 30.43% | 25.66% | **HIGH** |
|
|
13
|
+
| `lib/blocks/extendedCbl.ts` | 6.06% | 0% | 0% | 6.06% | **HIGH** |
|
|
14
|
+
| `lib/blocks/cblBase.ts` | 50.96% | 49.09% | 47.61% | 51.45% | **HIGH** |
|
|
15
|
+
| `lib/blocks/ephemeral.ts` | 66.36% | 60.46% | 93.75% | 66.36% | **MEDIUM** |
|
|
16
|
+
| `lib/blocks/handleTuple.ts` | 60.34% | 26.31% | 58.33% | 59.61% | **MEDIUM** |
|
|
17
|
+
| `lib/blocks/memoryTuple.ts` | 21.21% | 12.5% | 20% | 21.31% | **MEDIUM** |
|
|
18
|
+
| `lib/blocks/parity.ts` | 85.71% | 75% | 100% | 85.71% | **LOW** |
|
|
19
|
+
| `lib/blocks/base.ts` | 81.25% | 58.33% | 73.68% | 80.43% | **LOW** |
|
|
20
|
+
| `lib/blocks/cbl.ts` | 71.42% | 100% | 33.33% | 71.42% | **LOW** |
|
|
21
|
+
| `lib/blocks/whitened.ts` | 70.76% | 90.9% | 78.57% | 70.96% | **LOW** |
|
|
22
|
+
| `lib/blocks/random.ts` | 70.73% | 90% | 83.33% | 71.79% | **LOW** |
|
|
23
|
+
|
|
24
|
+
### Block Metadata Files
|
|
25
|
+
|
|
26
|
+
| File | Statements | Branches | Functions | Lines | Priority |
|
|
27
|
+
|------|-----------|----------|-----------|-------|----------|
|
|
28
|
+
| `lib/encryptedBlockMetadata.ts` | 61.53% | 53.84% | 50% | 61.53% | **MEDIUM** |
|
|
29
|
+
| `lib/cblBlockMetadata.ts` | 0% | 100% | 0% | 0% | **HIGH** |
|
|
30
|
+
| `lib/extendedCblBlockMetadata.ts` | 0% | 100% | 0% | 0% | **HIGH** |
|
|
31
|
+
|
|
32
|
+
### Block-Related Services
|
|
33
|
+
|
|
34
|
+
| File | Statements | Branches | Functions | Lines | Priority |
|
|
35
|
+
|------|-----------|----------|-----------|-------|----------|
|
|
36
|
+
| `lib/services/blockService.ts` | 26.95% | 10% | 25% | 26.69% | **HIGH** |
|
|
37
|
+
| `lib/services/tuple.service.ts` | 32.54% | 18.36% | 42.1% | 33.33% | **HIGH** |
|
|
38
|
+
|
|
39
|
+
## Coverage Gaps by Category
|
|
40
|
+
|
|
41
|
+
### 1. Edge Cases Not Tested
|
|
42
|
+
|
|
43
|
+
#### Empty Data Blocks
|
|
44
|
+
- **Missing**: Tests for blocks with zero-length data
|
|
45
|
+
- **Files affected**: `base.ts`, `rawData.ts`, `ephemeral.ts`
|
|
46
|
+
- **Lines uncovered**: Base block constructor edge cases
|
|
47
|
+
|
|
48
|
+
#### Maximum Size Blocks
|
|
49
|
+
- **Missing**: Tests for blocks at BlockSize limits (Small=1024, Medium=4096, Large=32768, Huge=262144)
|
|
50
|
+
- **Files affected**: All block types
|
|
51
|
+
- **Lines uncovered**: Size validation paths
|
|
52
|
+
|
|
53
|
+
#### Invalid Checksum Handling
|
|
54
|
+
- **Missing**: Comprehensive tests for checksum mismatch scenarios
|
|
55
|
+
- **Files affected**: `base.ts` (lines 248-261), `rawData.ts` (lines 86-97)
|
|
56
|
+
- **Lines uncovered**: Checksum validation error paths
|
|
57
|
+
|
|
58
|
+
#### Boundary Conditions
|
|
59
|
+
- **Missing**: Tests for:
|
|
60
|
+
- Blocks exactly at size boundaries
|
|
61
|
+
- Blocks with padding edge cases
|
|
62
|
+
- Blocks with maximum tuple counts
|
|
63
|
+
- **Files affected**: `cblBase.ts`, `handleTuple.ts`, `memoryTuple.ts`
|
|
64
|
+
|
|
65
|
+
### 2. Error Conditions Not Tested
|
|
66
|
+
|
|
67
|
+
#### EncryptedBlock Errors (25.66% coverage)
|
|
68
|
+
- **Uncovered lines**: 53, 267-271, 300-314, 317, 325-354, 382, 399, 410-777
|
|
69
|
+
- **Missing error tests**:
|
|
70
|
+
- Decryption failures with invalid keys
|
|
71
|
+
- Encryption with missing recipients
|
|
72
|
+
- Malformed encrypted data parsing
|
|
73
|
+
- ECIES encryption/decryption errors
|
|
74
|
+
- Multi-recipient encryption edge cases
|
|
75
|
+
|
|
76
|
+
#### ExtendedCBL Errors (6.06% coverage)
|
|
77
|
+
- **Uncovered lines**: 32-269 (almost entire file)
|
|
78
|
+
- **Missing error tests**:
|
|
79
|
+
- Invalid file name encoding
|
|
80
|
+
- Invalid MIME type
|
|
81
|
+
- Extended header parsing failures
|
|
82
|
+
- File name length validation
|
|
83
|
+
|
|
84
|
+
#### CBLBase Errors (50.96% coverage)
|
|
85
|
+
- **Uncovered lines**: 108, 221-225, 248-249, 272-273, 288-330, 340, 356-390
|
|
86
|
+
- **Missing error tests**:
|
|
87
|
+
- Invalid address count
|
|
88
|
+
- Tuple size validation failures
|
|
89
|
+
- Circular dependency scenarios
|
|
90
|
+
- Cache invalidation edge cases
|
|
91
|
+
|
|
92
|
+
#### BlockService Errors (26.95% coverage)
|
|
93
|
+
- **Uncovered lines**: 46-120, 154, 156, 158, 172, 230-699, 764-833
|
|
94
|
+
- **Missing error tests**:
|
|
95
|
+
- Service initialization failures
|
|
96
|
+
- Block creation with invalid parameters
|
|
97
|
+
- Encryption service unavailable
|
|
98
|
+
- Validation service failures
|
|
99
|
+
|
|
100
|
+
### 3. Constructor Invariants Not Property-Tested
|
|
101
|
+
|
|
102
|
+
#### Missing Property Tests for:
|
|
103
|
+
1. **BaseBlock**: Constructor should maintain data integrity
|
|
104
|
+
2. **EphemeralBlock**: Creator ID should be preserved
|
|
105
|
+
3. **EncryptedBlock**: Encryption details should be cached correctly
|
|
106
|
+
4. **CBLBase**: Address count should match parsed addresses
|
|
107
|
+
5. **ExtendedCBL**: File metadata should round-trip correctly
|
|
108
|
+
6. **WhitenedBlock**: Whitening should be reversible
|
|
109
|
+
7. **RandomBlock**: Random data should have correct entropy
|
|
110
|
+
8. **HandleTuple**: Tuple handles should be valid
|
|
111
|
+
9. **MemoryTuple**: Memory tuples should maintain consistency
|
|
112
|
+
|
|
113
|
+
## Recommended Test Additions
|
|
114
|
+
|
|
115
|
+
### High Priority (Task 12.2 - Edge Cases)
|
|
116
|
+
1. **Empty data block tests** - All block types with zero-length data
|
|
117
|
+
2. **Maximum size block tests** - All block types at size limits
|
|
118
|
+
3. **Invalid checksum tests** - Comprehensive checksum mismatch scenarios
|
|
119
|
+
4. **Boundary condition tests** - Size boundaries, padding edge cases
|
|
120
|
+
|
|
121
|
+
### High Priority (Task 12.3 - Error Conditions)
|
|
122
|
+
1. **EncryptedBlock error tests** - All encryption/decryption failure paths
|
|
123
|
+
2. **ExtendedCBL error tests** - File metadata validation failures
|
|
124
|
+
3. **CBLBase error tests** - Address validation and cache errors
|
|
125
|
+
4. **BlockService error tests** - Service initialization and operation failures
|
|
126
|
+
|
|
127
|
+
### High Priority (Task 12.4 - Property Tests)
|
|
128
|
+
1. **Block constructor property tests** - Invariants for all block types
|
|
129
|
+
2. **Serialization round-trip property tests** - All block types
|
|
130
|
+
3. **Immutability property tests** - Already implemented (passing)
|
|
131
|
+
4. **Cache consistency property tests** - CBL and EncryptedBlock caches
|
|
132
|
+
|
|
133
|
+
## Files Requiring Immediate Attention
|
|
134
|
+
|
|
135
|
+
### Critical (< 30% coverage)
|
|
136
|
+
1. `lib/blocks/encrypted.ts` (25.66%) - Core encryption functionality
|
|
137
|
+
2. `lib/services/blockService.ts` (26.95%) - Core block operations
|
|
138
|
+
3. `lib/blocks/memoryTuple.ts` (21.21%) - Tuple storage
|
|
139
|
+
4. `lib/blocks/extendedCbl.ts` (6.06%) - Extended CBL functionality
|
|
140
|
+
5. `lib/cblBlockMetadata.ts` (0%) - CBL metadata
|
|
141
|
+
6. `lib/extendedCblBlockMetadata.ts` (0%) - Extended CBL metadata
|
|
142
|
+
|
|
143
|
+
### Important (30-70% coverage)
|
|
144
|
+
1. `lib/blocks/cblBase.ts` (50.96%) - CBL base functionality
|
|
145
|
+
2. `lib/blocks/ephemeral.ts` (66.36%) - Ephemeral blocks
|
|
146
|
+
3. `lib/blocks/handleTuple.ts` (60.34%) - Handle tuples
|
|
147
|
+
4. `lib/encryptedBlockMetadata.ts` (61.53%) - Encrypted metadata
|
|
148
|
+
5. `lib/services/tuple.service.ts` (32.54%) - Tuple service
|
|
149
|
+
|
|
150
|
+
## Coverage Goal
|
|
151
|
+
|
|
152
|
+
**Target**: 90% coverage for all block-related files
|
|
153
|
+
**Current**: 61.6% overall, with critical block files at 25-50%
|
|
154
|
+
**Gap**: Need to add approximately 200-300 test cases to reach target
|
|
155
|
+
|
|
156
|
+
## Notes
|
|
157
|
+
|
|
158
|
+
- Existing property tests are passing and provide good coverage for:
|
|
159
|
+
- XOR operations (constantTimeXor)
|
|
160
|
+
- Type guards (typeGuards)
|
|
161
|
+
- Date utilities (dateUtils)
|
|
162
|
+
- Block immutability (immutability.property.spec.ts)
|
|
163
|
+
- CBL consistency (cbl.consistency.property.spec.ts)
|
|
164
|
+
|
|
165
|
+
- Need to focus on:
|
|
166
|
+
- EncryptedBlock encryption/decryption paths
|
|
167
|
+
- ExtendedCBL file metadata handling
|
|
168
|
+
- BlockService initialization and operations
|
|
169
|
+
- Error condition coverage across all block types
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightchain/brightchain-lib",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "BrightChain core library - browser-compatible blockchain storage",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "src/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"author": "Digital Defiance",
|
|
38
38
|
"license": "MIT",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@digitaldefiance/ecies-lib": "^4.13.
|
|
40
|
+
"@digitaldefiance/ecies-lib": "^4.13.8",
|
|
41
41
|
"@digitaldefiance/i18n-lib": "^3.8.16",
|
|
42
42
|
"tslib": "^2.3.0"
|
|
43
43
|
},
|
package/src/browser.d.ts
CHANGED
|
@@ -6,21 +6,18 @@ export * from './lib/stores/memoryBlockStore';
|
|
|
6
6
|
export { BaseBlock } from './lib/blocks/base';
|
|
7
7
|
export { createBlockHandle, isBlockHandle, type BlockHandle, } from './lib/blocks/handle';
|
|
8
8
|
export { RawDataBlock } from './lib/blocks/rawData';
|
|
9
|
+
export { constantTimeXor, constantTimeXorMultiple, XorLengthMismatchError, } from './lib/utils/constantTimeXor';
|
|
9
10
|
export { ServiceProvider } from './lib/services/service.provider';
|
|
10
11
|
export { initializeBrightChain } from './lib/init';
|
|
11
12
|
export { Checksum } from './lib/types/checksum';
|
|
12
13
|
export { CBLService } from './lib/services/cblService';
|
|
13
14
|
export { ChecksumService } from './lib/services/checksum.service';
|
|
14
|
-
export { JsonCBLCapacityCalculator } from './lib/services/jsonCblCapacity.service';
|
|
15
15
|
export { MessageCBLService } from './lib/services/messaging/messageCBLService';
|
|
16
|
-
export { SuperCBLService, parseCBLData } from './lib/services/superCbl.service';
|
|
17
16
|
export { MessageDeliveryStatus } from './lib/enumerations/messaging/messageDeliveryStatus';
|
|
18
17
|
export { MessageEncryptionScheme } from './lib/enumerations/messaging/messageEncryptionScheme';
|
|
19
18
|
export { MessagePriority } from './lib/enumerations/messaging/messagePriority';
|
|
20
19
|
export type { IMessageMetadata } from './lib/interfaces/messaging/messageMetadata';
|
|
21
20
|
export type { IMessageCBLOptions } from './lib/services/messaging/messageCBLService';
|
|
22
21
|
export type { BlockInfo, FileReceipt } from './lib/brightChain';
|
|
23
|
-
export { SuperCBLError, SuperCBLErrorType } from './lib/errors/superCbl';
|
|
24
22
|
export type { CBLMagnetComponents, CBLStorageResult, CBLWhiteningOptions, } from './lib/interfaces/storage/cblWhitening';
|
|
25
|
-
export type { CBLData, CBLType, CBLv1, RegularCBLv2, SubCBL, SuperCBL, SuperCBLConfig, SuperCBLCreationResult, } from './lib/interfaces/storage/superCbl';
|
|
26
23
|
//# sourceMappingURL=browser.d.ts.map
|
package/src/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC"}
|
package/src/browser.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Minimal browser-compatible exports
|
|
3
3
|
// Only exports core functionality that works without Node.js modules
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.
|
|
5
|
+
exports.MessagePriority = exports.MessageEncryptionScheme = exports.MessageDeliveryStatus = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.XorLengthMismatchError = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
7
|
tslib_1.__exportStar(require("./lib/brightChain"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./lib/enumerations/blockSize"), exports);
|
|
@@ -17,6 +17,11 @@ Object.defineProperty(exports, "createBlockHandle", { enumerable: true, get: fun
|
|
|
17
17
|
Object.defineProperty(exports, "isBlockHandle", { enumerable: true, get: function () { return handle_1.isBlockHandle; } });
|
|
18
18
|
var rawData_1 = require("./lib/blocks/rawData");
|
|
19
19
|
Object.defineProperty(exports, "RawDataBlock", { enumerable: true, get: function () { return rawData_1.RawDataBlock; } });
|
|
20
|
+
// Export constant-time XOR utilities (browser-compatible)
|
|
21
|
+
var constantTimeXor_1 = require("./lib/utils/constantTimeXor");
|
|
22
|
+
Object.defineProperty(exports, "constantTimeXor", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXor; } });
|
|
23
|
+
Object.defineProperty(exports, "constantTimeXorMultiple", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXorMultiple; } });
|
|
24
|
+
Object.defineProperty(exports, "XorLengthMismatchError", { enumerable: true, get: function () { return constantTimeXor_1.XorLengthMismatchError; } });
|
|
20
25
|
// Export ServiceProvider for advanced usage
|
|
21
26
|
var service_provider_1 = require("./lib/services/service.provider");
|
|
22
27
|
Object.defineProperty(exports, "ServiceProvider", { enumerable: true, get: function () { return service_provider_1.ServiceProvider; } });
|
|
@@ -31,13 +36,8 @@ var cblService_1 = require("./lib/services/cblService");
|
|
|
31
36
|
Object.defineProperty(exports, "CBLService", { enumerable: true, get: function () { return cblService_1.CBLService; } });
|
|
32
37
|
var checksum_service_1 = require("./lib/services/checksum.service");
|
|
33
38
|
Object.defineProperty(exports, "ChecksumService", { enumerable: true, get: function () { return checksum_service_1.ChecksumService; } });
|
|
34
|
-
var jsonCblCapacity_service_1 = require("./lib/services/jsonCblCapacity.service");
|
|
35
|
-
Object.defineProperty(exports, "JsonCBLCapacityCalculator", { enumerable: true, get: function () { return jsonCblCapacity_service_1.JsonCBLCapacityCalculator; } });
|
|
36
39
|
var messageCBLService_1 = require("./lib/services/messaging/messageCBLService");
|
|
37
40
|
Object.defineProperty(exports, "MessageCBLService", { enumerable: true, get: function () { return messageCBLService_1.MessageCBLService; } });
|
|
38
|
-
var superCbl_service_1 = require("./lib/services/superCbl.service");
|
|
39
|
-
Object.defineProperty(exports, "SuperCBLService", { enumerable: true, get: function () { return superCbl_service_1.SuperCBLService; } });
|
|
40
|
-
Object.defineProperty(exports, "parseCBLData", { enumerable: true, get: function () { return superCbl_service_1.parseCBLData; } });
|
|
41
41
|
// Export messaging enums and interfaces
|
|
42
42
|
var messageDeliveryStatus_1 = require("./lib/enumerations/messaging/messageDeliveryStatus");
|
|
43
43
|
Object.defineProperty(exports, "MessageDeliveryStatus", { enumerable: true, get: function () { return messageDeliveryStatus_1.MessageDeliveryStatus; } });
|
|
@@ -45,7 +45,4 @@ var messageEncryptionScheme_1 = require("./lib/enumerations/messaging/messageEnc
|
|
|
45
45
|
Object.defineProperty(exports, "MessageEncryptionScheme", { enumerable: true, get: function () { return messageEncryptionScheme_1.MessageEncryptionScheme; } });
|
|
46
46
|
var messagePriority_1 = require("./lib/enumerations/messaging/messagePriority");
|
|
47
47
|
Object.defineProperty(exports, "MessagePriority", { enumerable: true, get: function () { return messagePriority_1.MessagePriority; } });
|
|
48
|
-
var superCbl_1 = require("./lib/errors/superCbl");
|
|
49
|
-
Object.defineProperty(exports, "SuperCBLError", { enumerable: true, get: function () { return superCbl_1.SuperCBLError; } });
|
|
50
|
-
Object.defineProperty(exports, "SuperCBLErrorType", { enumerable: true, get: function () { return superCbl_1.SuperCBLErrorType; } });
|
|
51
48
|
//# sourceMappingURL=browser.js.map
|
package/src/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,0DAA0D;AAC1D,+DAIqC;AAHnC,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AACvB,yHAAA,sBAAsB,OAAA;AAGxB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,4FAA2F;AAAlF,8HAAA,qBAAqB,OAAA;AAC9B,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA"}
|
|
@@ -18,20 +18,21 @@ export declare class BlockMetadata implements IBaseBlockMetadata {
|
|
|
18
18
|
* @returns JSON representation of metadata
|
|
19
19
|
*/
|
|
20
20
|
toJson(): string;
|
|
21
|
-
static fromJsonValidator(data: any): void;
|
|
22
|
-
static fromJsonAdditionalData<T extends Record<string, any>>(data: any): T;
|
|
23
21
|
/**
|
|
24
|
-
* Parse metadata from JSON representation.
|
|
22
|
+
* Parse metadata from JSON representation using type guards.
|
|
25
23
|
* Handles:
|
|
26
|
-
* 1. Type
|
|
27
|
-
* 2.
|
|
28
|
-
* 3.
|
|
24
|
+
* 1. Type validation with descriptive errors
|
|
25
|
+
* 2. Type conversion
|
|
26
|
+
* 3. Optional fields
|
|
27
|
+
* 4. Custom attributes
|
|
28
|
+
* 5. Robust date parsing with timezone support
|
|
29
29
|
*
|
|
30
30
|
* @param json - JSON string containing metadata
|
|
31
|
-
* @returns Parsed
|
|
32
|
-
* @throws
|
|
31
|
+
* @returns Parsed BlockMetadata instance
|
|
32
|
+
* @throws JsonValidationError if JSON is invalid or required fields are missing/invalid
|
|
33
33
|
*/
|
|
34
|
-
static fromJson
|
|
34
|
+
static fromJson(json: string): BlockMetadata;
|
|
35
|
+
static fromJsonAdditionalData<T extends Record<string, any>>(data: any): T;
|
|
35
36
|
get size(): BlockSize;
|
|
36
37
|
get type(): BlockType;
|
|
37
38
|
get dataType(): BlockDataType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockMetadata.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"blockMetadata.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAIhF;;;GAGG;AACH,qBAAa,aAAc,YAAW,kBAAkB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAO;gBAGlC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,OAAa;IAS1B;;;OAGG;IACI,MAAM,IAAI,MAAM;IAUvB;;;;;;;;;;;;OAYG;WACW,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;WAiBrC,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,IAAI,EAAE,GAAG,GACR,CAAC;IAIJ,IAAW,IAAI,IAAI,SAAS,CAE3B;IACD,IAAW,IAAI,IAAI,SAAS,CAE3B;IACD,IAAW,QAAQ,IAAI,aAAa,CAEnC;IACD,IAAW,oBAAoB,IAAI,MAAM,CAExC;IACD,IAAW,WAAW,IAAI,IAAI,CAE7B;CACF"}
|
package/src/lib/blockMetadata.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BlockMetadata = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const typeGuards_1 = require("./utils/typeGuards");
|
|
5
|
+
const dateUtils_1 = require("./utils/dateUtils");
|
|
6
6
|
/**
|
|
7
7
|
* BlockMetadata provides utility functions for working with block metadata.
|
|
8
8
|
* These functions ensure consistent metadata handling across the system.
|
|
@@ -25,48 +25,32 @@ class BlockMetadata {
|
|
|
25
25
|
type: this.type,
|
|
26
26
|
dataType: this.dataType,
|
|
27
27
|
lengthWithoutPadding: this.lengthWithoutPadding,
|
|
28
|
-
dateCreated: this.dateCreated,
|
|
28
|
+
dateCreated: this.dateCreated.toISOString(),
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
static fromJsonValidator(data) {
|
|
32
|
-
// Validate required fields
|
|
33
|
-
if (!data.size || !data.type || !data.dataType || !data.dateCreated) {
|
|
34
|
-
throw new block_1.BlockMetadataError(blockMetadataErrorType_1.BlockMetadataErrorType.MissingRequiredMetadata);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
static fromJsonAdditionalData(data) {
|
|
38
|
-
return {};
|
|
39
|
-
}
|
|
40
31
|
/**
|
|
41
|
-
* Parse metadata from JSON representation.
|
|
32
|
+
* Parse metadata from JSON representation using type guards.
|
|
42
33
|
* Handles:
|
|
43
|
-
* 1. Type
|
|
44
|
-
* 2.
|
|
45
|
-
* 3.
|
|
34
|
+
* 1. Type validation with descriptive errors
|
|
35
|
+
* 2. Type conversion
|
|
36
|
+
* 3. Optional fields
|
|
37
|
+
* 4. Custom attributes
|
|
38
|
+
* 5. Robust date parsing with timezone support
|
|
46
39
|
*
|
|
47
40
|
* @param json - JSON string containing metadata
|
|
48
|
-
* @returns Parsed
|
|
49
|
-
* @throws
|
|
41
|
+
* @returns Parsed BlockMetadata instance
|
|
42
|
+
* @throws JsonValidationError if JSON is invalid or required fields are missing/invalid
|
|
50
43
|
*/
|
|
51
44
|
static fromJson(json) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
size: data.size,
|
|
62
|
-
type: data.type,
|
|
63
|
-
dataType: data.dataType,
|
|
64
|
-
lengthWithoutPadding: data.lengthWithoutPadding,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
throw new Error(`Failed to parse metadata: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
69
|
-
}
|
|
45
|
+
// Use type guard to validate and parse
|
|
46
|
+
const data = (0, typeGuards_1.parseBlockMetadataJson)(json);
|
|
47
|
+
// Parse date using robust date utilities
|
|
48
|
+
const dateCreated = (0, dateUtils_1.parseDate)(data.dateCreated);
|
|
49
|
+
// Create a proper BlockMetadata instance
|
|
50
|
+
return new BlockMetadata(data.size, data.type, data.dataType, data.lengthWithoutPadding, dateCreated);
|
|
51
|
+
}
|
|
52
|
+
static fromJsonAdditionalData(data) {
|
|
53
|
+
return {};
|
|
70
54
|
}
|
|
71
55
|
get size() {
|
|
72
56
|
return this._size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockMetadata.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"blockMetadata.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":";;;AAOA,mDAA4D;AAC5D,iDAA8C;AAE9C;;;GAGG;AACH,MAAa,aAAa;IAOxB,YACE,IAAe,EACf,IAAe,EACf,QAAuB,EACvB,oBAA4B,EAC5B,WAAW,GAAG,IAAI,IAAI,EAAE;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,QAAQ,CAAC,IAAY;QACjC,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;QAE1C,yCAAyC;QACzC,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhD,yCAAyC;QACzC,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,IAAiB,EACtB,IAAI,CAAC,IAAiB,EACtB,IAAI,CAAC,QAAyB,EAC9B,IAAI,CAAC,oBAAoB,EACzB,WAAW,CACZ,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAClC,IAAS;QAET,OAAO,EAAO,CAAC;IACjB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AAtFD,sCAsFC"}
|
package/src/lib/blocks/base.d.ts
CHANGED
|
@@ -19,6 +19,26 @@ import { Checksum } from '../types/checksum';
|
|
|
19
19
|
* - Data Type
|
|
20
20
|
* - Checksum
|
|
21
21
|
* - Date Created
|
|
22
|
+
*
|
|
23
|
+
* **Immutability Contract:**
|
|
24
|
+
* All blocks are immutable after construction. The underlying data buffer
|
|
25
|
+
* should not be modified after the block is created. This ensures:
|
|
26
|
+
* - Cache consistency: Cached values remain valid throughout the block's lifetime
|
|
27
|
+
* - Thread safety: Blocks can be safely shared across contexts
|
|
28
|
+
* - Data integrity: Block checksums remain valid
|
|
29
|
+
*
|
|
30
|
+
* While TypeScript/JavaScript cannot enforce true immutability on Uint8Array,
|
|
31
|
+
* the block system is designed with the expectation that:
|
|
32
|
+
* 1. Block data is never modified after construction
|
|
33
|
+
* 2. Cached values (encryption details, address counts) are computed once
|
|
34
|
+
* 3. All getters return consistent values across multiple calls
|
|
35
|
+
*
|
|
36
|
+
* Modifying block data after construction will result in:
|
|
37
|
+
* - Invalid checksums
|
|
38
|
+
* - Stale cached values
|
|
39
|
+
* - Undefined behavior in validation and encryption operations
|
|
40
|
+
*
|
|
41
|
+
* @see Requirements 6.3, 6.4
|
|
22
42
|
*/
|
|
23
43
|
export declare abstract class BaseBlock implements IBaseBlock {
|
|
24
44
|
protected readonly _blockSize: BlockSize;
|
|
@@ -119,6 +139,8 @@ export declare abstract class BaseBlock implements IBaseBlock {
|
|
|
119
139
|
abstract get layerPayloadSize(): number;
|
|
120
140
|
/**
|
|
121
141
|
* Get all layers in the inheritance chain
|
|
142
|
+
* This represents the class hierarchy, not instance relationships.
|
|
143
|
+
* Used for calculating total overhead from all block types in the hierarchy.
|
|
122
144
|
*/
|
|
123
145
|
get layers(): IBaseBlock[];
|
|
124
146
|
/**
|
|
@@ -127,6 +149,7 @@ export declare abstract class BaseBlock implements IBaseBlock {
|
|
|
127
149
|
get lowerLayerHeaderSize(): number;
|
|
128
150
|
/**
|
|
129
151
|
* Get the parent layer in the inheritance chain
|
|
152
|
+
* Returns null as we don't track parent instances in the current architecture.
|
|
130
153
|
*/
|
|
131
154
|
get parent(): IBaseBlock | null;
|
|
132
155
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,8BAAsB,SAAU,YAAW,UAAU;IACnD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD;;;;;;;;;;OAUG;IACH,SAAS,aACP,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,EACvB,OAAO,UAAO,EACd,UAAU,UAAO;IA+BnB;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,QAAQ,CAEhC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,cAAc,CAE1C;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,IAAI,CAE7B;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,aAAa,CAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;aACa,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;aACa,YAAY,IAAI,IAAI;IAEpC;;;OAGG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACH,aAAoB,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;IAElD;;OAEG;IACH,aAAoB,iBAAiB,IAAI,MAAM,CAAC;IAEhD;;OAEG;IACH,aAAoB,eAAe,IAAI,UAAU,CAAC;IAElD;;OAEG;IACH,aAAoB,SAAS,IAAI,UAAU,CAAC;IAE5C;;OAEG;IACH,aAAoB,YAAY,IAAI,UAAU,CAAC;IAE/C;;OAEG;IACH,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C;;;;OAIG;IACH,IAAW,MAAM,IAAI,UAAU,EAAE,CAMhC;IAED;;OAEG;IACH,IAAW,oBAAoB,IAAI,MAAM,CAGxC;IAED;;;OAGG;IACH,IAAW,MAAM,IAAI,UAAU,GAAG,IAAI,CAIrC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,CAUjC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAatC;CACF"}
|
package/src/lib/blocks/base.js
CHANGED
|
@@ -18,6 +18,26 @@ const block_1 = require("../errors/block");
|
|
|
18
18
|
* - Data Type
|
|
19
19
|
* - Checksum
|
|
20
20
|
* - Date Created
|
|
21
|
+
*
|
|
22
|
+
* **Immutability Contract:**
|
|
23
|
+
* All blocks are immutable after construction. The underlying data buffer
|
|
24
|
+
* should not be modified after the block is created. This ensures:
|
|
25
|
+
* - Cache consistency: Cached values remain valid throughout the block's lifetime
|
|
26
|
+
* - Thread safety: Blocks can be safely shared across contexts
|
|
27
|
+
* - Data integrity: Block checksums remain valid
|
|
28
|
+
*
|
|
29
|
+
* While TypeScript/JavaScript cannot enforce true immutability on Uint8Array,
|
|
30
|
+
* the block system is designed with the expectation that:
|
|
31
|
+
* 1. Block data is never modified after construction
|
|
32
|
+
* 2. Cached values (encryption details, address counts) are computed once
|
|
33
|
+
* 3. All getters return consistent values across multiple calls
|
|
34
|
+
*
|
|
35
|
+
* Modifying block data after construction will result in:
|
|
36
|
+
* - Invalid checksums
|
|
37
|
+
* - Stale cached values
|
|
38
|
+
* - Undefined behavior in validation and encryption operations
|
|
39
|
+
*
|
|
40
|
+
* @see Requirements 6.3, 6.4
|
|
21
41
|
*/
|
|
22
42
|
class BaseBlock {
|
|
23
43
|
/**
|
|
@@ -116,33 +136,31 @@ class BaseBlock {
|
|
|
116
136
|
}
|
|
117
137
|
/**
|
|
118
138
|
* Get all layers in the inheritance chain
|
|
139
|
+
* This represents the class hierarchy, not instance relationships.
|
|
140
|
+
* Used for calculating total overhead from all block types in the hierarchy.
|
|
119
141
|
*/
|
|
120
142
|
get layers() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return
|
|
143
|
+
// For a single block instance, the only "layer" is itself
|
|
144
|
+
// The concept of multiple layers would apply if we had composition
|
|
145
|
+
// (e.g., an encrypted block wrapping a data block), but in our
|
|
146
|
+
// current architecture, we use inheritance instead.
|
|
147
|
+
return [this];
|
|
126
148
|
}
|
|
127
149
|
/**
|
|
128
150
|
* Get the total header size of all layers below this one
|
|
129
151
|
*/
|
|
130
152
|
get lowerLayerHeaderSize() {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (currentLayerIndex === -1) {
|
|
134
|
-
throw new Error('Current layer not found in layers');
|
|
135
|
-
}
|
|
136
|
-
return layers.slice(0, currentLayerIndex).reduce((sum, layer) => {
|
|
137
|
-
return sum + layer.layerOverheadSize;
|
|
138
|
-
}, 0);
|
|
153
|
+
// Since we simplified layers to just return [this], there are no lower layers
|
|
154
|
+
return 0;
|
|
139
155
|
}
|
|
140
156
|
/**
|
|
141
157
|
* Get the parent layer in the inheritance chain
|
|
158
|
+
* Returns null as we don't track parent instances in the current architecture.
|
|
142
159
|
*/
|
|
143
160
|
get parent() {
|
|
144
|
-
|
|
145
|
-
|
|
161
|
+
// In the current architecture, blocks don't have parent block instances
|
|
162
|
+
// They use class inheritance, but we don't track parent instances
|
|
163
|
+
return null;
|
|
146
164
|
}
|
|
147
165
|
/**
|
|
148
166
|
* Get the total header overhead from all layers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":";;;AAGA,+EAA4E;AAE5E,yDAAyE;AAEzE,uFAAoF;AACpF,2CAAyE;AAIzE
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"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"}
|
package/src/lib/blocks/cbl.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { type PlatformID } from '@digitaldefiance/ecies-lib';
|
|
1
|
+
import { Member, type PlatformID } from '@digitaldefiance/ecies-lib';
|
|
2
|
+
import { BlockSize } from '../enumerations/blockSize';
|
|
2
3
|
import { IConstituentBlockListBlock } from '../interfaces/blocks/cbl';
|
|
4
|
+
import { ICBLServices } from '../interfaces/services/cblServices';
|
|
3
5
|
import { CBLBase } from './cblBase';
|
|
4
6
|
/**
|
|
5
7
|
* Constituent Block List
|
|
@@ -11,8 +13,39 @@ import { CBLBase } from './cblBase';
|
|
|
11
13
|
*
|
|
12
14
|
* The signature is placed at the end of the header and signs both the header fields
|
|
13
15
|
* and the address data that follows, ensuring integrity of the entire structure.
|
|
16
|
+
*
|
|
17
|
+
* This class supports dependency injection for services to break circular
|
|
18
|
+
* dependencies. When services are not provided, it falls back to using
|
|
19
|
+
* ServiceLocator for backward compatibility.
|
|
20
|
+
*
|
|
21
|
+
* @typeParam TID - The platform ID type (defaults to Uint8Array)
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Using dependency injection (recommended)
|
|
26
|
+
* const services: ICBLServices<Uint8Array> = {
|
|
27
|
+
* checksumService: checksumService,
|
|
28
|
+
* cblService: cblService,
|
|
29
|
+
* };
|
|
30
|
+
* const cbl = new ConstituentBlockListBlock(data, creator, blockSize, services);
|
|
31
|
+
*
|
|
32
|
+
* // Using ServiceLocator (backward compatible)
|
|
33
|
+
* const cbl = new ConstituentBlockListBlock(data, creator, blockSize);
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @requirements 2.1, 2.2, 2.4
|
|
14
37
|
*/
|
|
15
38
|
export declare class ConstituentBlockListBlock<TID extends PlatformID = Uint8Array> extends CBLBase<TID> implements IConstituentBlockListBlock<TID> {
|
|
39
|
+
/**
|
|
40
|
+
* Create a new CBL block
|
|
41
|
+
* @param data The CBL data (header + addresses, optionally padded)
|
|
42
|
+
* @param creator The creator of the CBL
|
|
43
|
+
* @param blockSize Optional block size for signature validation (required if data is unpadded)
|
|
44
|
+
* @param services Optional injected services for dependency injection (breaks circular dependencies)
|
|
45
|
+
*
|
|
46
|
+
* @requirements 2.1, 2.2, 2.4
|
|
47
|
+
*/
|
|
48
|
+
constructor(data: Uint8Array, creator: Member<TID>, blockSize?: BlockSize, services?: ICBLServices<TID>);
|
|
16
49
|
/**
|
|
17
50
|
* Get the maximum number of addresses that can be stored in a CBL block.
|
|
18
51
|
* Does not account for encryption overhead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cbl.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cbl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"cbl.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cbl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,yBAAyB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CACxE,SAAQ,OAAO,CAAC,GAAG,CACnB,YAAW,0BAA0B,CAAC,GAAG,CAAC;IAE1C;;;;;;;;OAQG;gBAED,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;IAK9B;;;;OAIG;IACH,IAAW,eAAe,IAAI,MAAM,CAKnC;IAED;;;;OAIG;IACH,IAAW,wBAAwB,IAAI,MAAM,CAK5C;CACF"}
|