@brightchain/brightchain-lib 0.8.1 → 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/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,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type Guards for JSON Deserialization
|
|
4
|
+
*
|
|
5
|
+
* This module provides runtime type checking for JSON deserialization of block metadata.
|
|
6
|
+
* Type guards ensure that JSON data conforms to expected TypeScript interfaces before
|
|
7
|
+
* constructing objects, maintaining type safety at runtime.
|
|
8
|
+
*
|
|
9
|
+
* @module typeGuards
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { isBlockMetadataJson, parseBlockMetadataJson } from 'brightchain-lib';
|
|
14
|
+
*
|
|
15
|
+
* // Validate JSON data structure
|
|
16
|
+
* if (isBlockMetadataJson(data)) {
|
|
17
|
+
* // TypeScript knows data is BlockMetadataJson
|
|
18
|
+
* const metadata = new BlockMetadata(data.size, data.type, ...);
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* // Parse and validate JSON string
|
|
22
|
+
* try {
|
|
23
|
+
* const data = parseBlockMetadataJson(jsonString);
|
|
24
|
+
* // data is guaranteed to be BlockMetadataJson
|
|
25
|
+
* } catch (error) {
|
|
26
|
+
* // Handle validation error with descriptive message
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.JsonValidationError = void 0;
|
|
32
|
+
exports.isBlockMetadataJson = isBlockMetadataJson;
|
|
33
|
+
exports.isEphemeralBlockMetadataJson = isEphemeralBlockMetadataJson;
|
|
34
|
+
exports.parseBlockMetadataJson = parseBlockMetadataJson;
|
|
35
|
+
exports.parseEphemeralBlockMetadataJson = parseEphemeralBlockMetadataJson;
|
|
36
|
+
const blockSize_1 = require("../enumerations/blockSize");
|
|
37
|
+
const blockType_1 = require("../enumerations/blockType");
|
|
38
|
+
const blockDataType_1 = require("../enumerations/blockDataType");
|
|
39
|
+
/**
|
|
40
|
+
* Error thrown when JSON validation fails.
|
|
41
|
+
* Provides descriptive information about which field failed validation.
|
|
42
|
+
*/
|
|
43
|
+
class JsonValidationError extends Error {
|
|
44
|
+
constructor(field, reason, value) {
|
|
45
|
+
super(`JSON validation failed for field '${field}': ${reason}`);
|
|
46
|
+
this.field = field;
|
|
47
|
+
this.reason = reason;
|
|
48
|
+
this.value = value;
|
|
49
|
+
this.name = 'JsonValidationError';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.JsonValidationError = JsonValidationError;
|
|
53
|
+
/**
|
|
54
|
+
* Check if a value is a valid BlockSize enum value.
|
|
55
|
+
* @param value - Value to check
|
|
56
|
+
* @returns True if value is a valid BlockSize
|
|
57
|
+
*/
|
|
58
|
+
function isValidBlockSize(value) {
|
|
59
|
+
if (typeof value !== 'number') {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return blockSize_1.validBlockSizes.includes(value);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if a value is a valid BlockType enum value.
|
|
66
|
+
* BlockType.Unknown (-1) is explicitly rejected as it represents
|
|
67
|
+
* uninitialized or invalid blocks and should not be used in metadata.
|
|
68
|
+
*
|
|
69
|
+
* @param value - Value to check
|
|
70
|
+
* @returns True if value is a valid BlockType (excluding Unknown)
|
|
71
|
+
*/
|
|
72
|
+
function isValidBlockType(value) {
|
|
73
|
+
if (typeof value !== 'number') {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
// Explicitly reject BlockType.Unknown (-1)
|
|
77
|
+
if (value === blockType_1.default.Unknown) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
// Check if the value exists in the BlockType enum
|
|
81
|
+
return Object.values(blockType_1.default).includes(value);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if a value is a valid BlockDataType enum value.
|
|
85
|
+
* @param value - Value to check
|
|
86
|
+
* @returns True if value is a valid BlockDataType
|
|
87
|
+
*/
|
|
88
|
+
function isValidBlockDataType(value) {
|
|
89
|
+
if (typeof value !== 'number') {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
// Check if the value exists in the BlockDataType enum
|
|
93
|
+
return Object.values(blockDataType_1.default).includes(value);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if a value is a valid date representation (ISO 8601 string or Unix timestamp).
|
|
97
|
+
* @param value - Value to check
|
|
98
|
+
* @returns True if value can be parsed as a date
|
|
99
|
+
*/
|
|
100
|
+
function isValidDateValue(value) {
|
|
101
|
+
if (typeof value === 'string') {
|
|
102
|
+
// Check if it's a valid ISO 8601 string
|
|
103
|
+
const date = new Date(value);
|
|
104
|
+
return !isNaN(date.getTime());
|
|
105
|
+
}
|
|
106
|
+
if (typeof value === 'number') {
|
|
107
|
+
// Check if it's a valid Unix timestamp
|
|
108
|
+
const date = new Date(value);
|
|
109
|
+
return !isNaN(date.getTime());
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Type guard for BlockMetadataJson.
|
|
115
|
+
* Validates that an unknown value conforms to the BlockMetadataJson interface.
|
|
116
|
+
*
|
|
117
|
+
* @param data - Data to validate
|
|
118
|
+
* @returns True if data is BlockMetadataJson
|
|
119
|
+
* @throws JsonValidationError if validation fails with descriptive error
|
|
120
|
+
*/
|
|
121
|
+
function isBlockMetadataJson(data) {
|
|
122
|
+
// Check if data is an object
|
|
123
|
+
if (typeof data !== 'object' || data === null) {
|
|
124
|
+
throw new JsonValidationError('data', 'must be a non-null object', data);
|
|
125
|
+
}
|
|
126
|
+
const obj = data;
|
|
127
|
+
// Validate size field
|
|
128
|
+
if (!('size' in obj)) {
|
|
129
|
+
throw new JsonValidationError('size', 'field is required');
|
|
130
|
+
}
|
|
131
|
+
if (!isValidBlockSize(obj['size'])) {
|
|
132
|
+
throw new JsonValidationError('size', 'must be a valid BlockSize enum value', obj['size']);
|
|
133
|
+
}
|
|
134
|
+
// Validate type field
|
|
135
|
+
if (!('type' in obj)) {
|
|
136
|
+
throw new JsonValidationError('type', 'field is required');
|
|
137
|
+
}
|
|
138
|
+
if (!isValidBlockType(obj['type'])) {
|
|
139
|
+
throw new JsonValidationError('type', 'must be a valid BlockType enum value', obj['type']);
|
|
140
|
+
}
|
|
141
|
+
// Validate dataType field
|
|
142
|
+
if (!('dataType' in obj)) {
|
|
143
|
+
throw new JsonValidationError('dataType', 'field is required');
|
|
144
|
+
}
|
|
145
|
+
if (!isValidBlockDataType(obj['dataType'])) {
|
|
146
|
+
throw new JsonValidationError('dataType', 'must be a valid BlockDataType enum value', obj['dataType']);
|
|
147
|
+
}
|
|
148
|
+
// Validate lengthWithoutPadding field
|
|
149
|
+
if (!('lengthWithoutPadding' in obj)) {
|
|
150
|
+
throw new JsonValidationError('lengthWithoutPadding', 'field is required');
|
|
151
|
+
}
|
|
152
|
+
if (typeof obj['lengthWithoutPadding'] !== 'number') {
|
|
153
|
+
throw new JsonValidationError('lengthWithoutPadding', 'must be a number', obj['lengthWithoutPadding']);
|
|
154
|
+
}
|
|
155
|
+
if (obj['lengthWithoutPadding'] < 0) {
|
|
156
|
+
throw new JsonValidationError('lengthWithoutPadding', 'must be non-negative', obj['lengthWithoutPadding']);
|
|
157
|
+
}
|
|
158
|
+
if (!Number.isInteger(obj['lengthWithoutPadding'])) {
|
|
159
|
+
throw new JsonValidationError('lengthWithoutPadding', 'must be an integer', obj['lengthWithoutPadding']);
|
|
160
|
+
}
|
|
161
|
+
// Validate dateCreated field
|
|
162
|
+
if (!('dateCreated' in obj)) {
|
|
163
|
+
throw new JsonValidationError('dateCreated', 'field is required');
|
|
164
|
+
}
|
|
165
|
+
if (!isValidDateValue(obj['dateCreated'])) {
|
|
166
|
+
throw new JsonValidationError('dateCreated', 'must be a valid ISO 8601 string or Unix timestamp', obj['dateCreated']);
|
|
167
|
+
}
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Type guard for EphemeralBlockMetadataJson.
|
|
172
|
+
* Validates that an unknown value conforms to the EphemeralBlockMetadataJson interface.
|
|
173
|
+
*
|
|
174
|
+
* @param data - Data to validate
|
|
175
|
+
* @returns True if data is EphemeralBlockMetadataJson
|
|
176
|
+
* @throws JsonValidationError if validation fails with descriptive error
|
|
177
|
+
*/
|
|
178
|
+
function isEphemeralBlockMetadataJson(data) {
|
|
179
|
+
// First validate as BlockMetadataJson
|
|
180
|
+
if (!isBlockMetadataJson(data)) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
const obj = data;
|
|
184
|
+
// Validate creator field
|
|
185
|
+
if (!('creator' in obj)) {
|
|
186
|
+
throw new JsonValidationError('creator', 'field is required');
|
|
187
|
+
}
|
|
188
|
+
if (typeof obj['creator'] !== 'string') {
|
|
189
|
+
throw new JsonValidationError('creator', 'must be a string', obj['creator']);
|
|
190
|
+
}
|
|
191
|
+
if (obj['creator'].length === 0) {
|
|
192
|
+
throw new JsonValidationError('creator', 'must not be empty', obj['creator']);
|
|
193
|
+
}
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Parse and validate a JSON string as BlockMetadataJson.
|
|
198
|
+
* Combines JSON parsing with type guard validation.
|
|
199
|
+
*
|
|
200
|
+
* @param json - JSON string to parse
|
|
201
|
+
* @returns Validated BlockMetadataJson object
|
|
202
|
+
* @throws JsonValidationError if validation fails
|
|
203
|
+
* @throws SyntaxError if JSON parsing fails
|
|
204
|
+
*/
|
|
205
|
+
function parseBlockMetadataJson(json) {
|
|
206
|
+
let data;
|
|
207
|
+
try {
|
|
208
|
+
data = JSON.parse(json);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
throw new JsonValidationError('json', `JSON parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
212
|
+
}
|
|
213
|
+
// Validate using type guard
|
|
214
|
+
if (isBlockMetadataJson(data)) {
|
|
215
|
+
return data;
|
|
216
|
+
}
|
|
217
|
+
// This should never be reached since isBlockMetadataJson throws on failure
|
|
218
|
+
throw new JsonValidationError('json', 'validation failed');
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Parse and validate a JSON string as EphemeralBlockMetadataJson.
|
|
222
|
+
* Combines JSON parsing with type guard validation.
|
|
223
|
+
*
|
|
224
|
+
* @param json - JSON string to parse
|
|
225
|
+
* @returns Validated EphemeralBlockMetadataJson object
|
|
226
|
+
* @throws JsonValidationError if validation fails
|
|
227
|
+
* @throws SyntaxError if JSON parsing fails
|
|
228
|
+
*/
|
|
229
|
+
function parseEphemeralBlockMetadataJson(json) {
|
|
230
|
+
let data;
|
|
231
|
+
try {
|
|
232
|
+
data = JSON.parse(json);
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
throw new JsonValidationError('json', `JSON parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
236
|
+
}
|
|
237
|
+
// Validate using type guard
|
|
238
|
+
if (isEphemeralBlockMetadataJson(data)) {
|
|
239
|
+
return data;
|
|
240
|
+
}
|
|
241
|
+
// This should never be reached since isEphemeralBlockMetadataJson throws on failure
|
|
242
|
+
throw new JsonValidationError('json', 'validation failed');
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=typeGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/typeGuards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stringNames.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/enumerations/stringNames.ts"],"names":[],"mappings":"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"}
|