@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
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Date Utilities Module
|
|
4
|
+
*
|
|
5
|
+
* Provides robust date handling utilities with timezone support for BrightChain.
|
|
6
|
+
* All dates are stored internally in UTC to ensure consistency across timezones.
|
|
7
|
+
*
|
|
8
|
+
* @module dateUtils
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.parseDate = parseDate;
|
|
12
|
+
exports.serializeDate = serializeDate;
|
|
13
|
+
exports.isValidDate = isValidDate;
|
|
14
|
+
/**
|
|
15
|
+
* Parse a date from various formats (ISO 8601, Unix timestamp).
|
|
16
|
+
*
|
|
17
|
+
* Supports:
|
|
18
|
+
* - ISO 8601 strings (e.g., "2024-01-23T10:30:00Z", "2024-01-23T10:30:00.000Z")
|
|
19
|
+
* - Unix timestamps in milliseconds (number)
|
|
20
|
+
* - Unix timestamps in seconds (number < 10000000000)
|
|
21
|
+
*
|
|
22
|
+
* @param value - Date string or Unix timestamp
|
|
23
|
+
* @returns Date object in UTC
|
|
24
|
+
* @throws Error if date is invalid or malformed
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Parse ISO 8601 string
|
|
29
|
+
* const date1 = parseDate("2024-01-23T10:30:00Z");
|
|
30
|
+
*
|
|
31
|
+
* // Parse Unix timestamp (milliseconds)
|
|
32
|
+
* const date2 = parseDate(1706008200000);
|
|
33
|
+
*
|
|
34
|
+
* // Parse Unix timestamp (seconds)
|
|
35
|
+
* const date3 = parseDate(1706008200);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function parseDate(value) {
|
|
39
|
+
if (typeof value === 'number') {
|
|
40
|
+
// Handle Unix timestamps
|
|
41
|
+
// Strategy: Use the value as-is first, then check if it produces a reasonable date
|
|
42
|
+
// If the date is before 1980 or after 2200 when interpreted as milliseconds,
|
|
43
|
+
// and the value is small enough to be seconds, try interpreting as seconds
|
|
44
|
+
let timestamp = value;
|
|
45
|
+
let date = new Date(timestamp);
|
|
46
|
+
// Check if we should try interpreting as seconds instead
|
|
47
|
+
// This handles the case where small numbers (< 10 billion) might be seconds
|
|
48
|
+
if (!isNaN(date.getTime())) {
|
|
49
|
+
const year = date.getFullYear();
|
|
50
|
+
// If the date is unreasonably early (before 1980) when interpreted as ms,
|
|
51
|
+
// and the value could be seconds (< 10 billion), try seconds
|
|
52
|
+
if (year < 1980 && value < 10000000000 && value > 0) {
|
|
53
|
+
timestamp = value * 1000;
|
|
54
|
+
date = new Date(timestamp);
|
|
55
|
+
}
|
|
56
|
+
// Also handle negative timestamps (before 1970)
|
|
57
|
+
else if (value < 0 && value > -10000000000) {
|
|
58
|
+
// Small negative numbers are likely seconds
|
|
59
|
+
timestamp = value * 1000;
|
|
60
|
+
date = new Date(timestamp);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (isNaN(date.getTime())) {
|
|
64
|
+
throw new Error(`Invalid Unix timestamp: ${value}`);
|
|
65
|
+
}
|
|
66
|
+
return date;
|
|
67
|
+
}
|
|
68
|
+
if (typeof value === 'string') {
|
|
69
|
+
// Try parsing as ISO 8601 string
|
|
70
|
+
const date = new Date(value);
|
|
71
|
+
if (isNaN(date.getTime())) {
|
|
72
|
+
throw new Error(`Invalid date string: "${value}". Expected ISO 8601 format (e.g., "2024-01-23T10:30:00Z") or Unix timestamp.`);
|
|
73
|
+
}
|
|
74
|
+
return date;
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Invalid date value type: ${typeof value}. Expected string or number.`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Serialize a date to ISO 8601 format with UTC timezone.
|
|
80
|
+
*
|
|
81
|
+
* Always returns dates in UTC timezone with 'Z' suffix.
|
|
82
|
+
* Format: "YYYY-MM-DDTHH:mm:ss.sssZ"
|
|
83
|
+
*
|
|
84
|
+
* @param date - Date to serialize
|
|
85
|
+
* @returns ISO 8601 string in UTC
|
|
86
|
+
* @throws Error if date is invalid
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const date = new Date("2024-01-23T10:30:00Z");
|
|
91
|
+
* const serialized = serializeDate(date);
|
|
92
|
+
* // Returns: "2024-01-23T10:30:00.000Z"
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
function serializeDate(date) {
|
|
96
|
+
if (!(date instanceof Date)) {
|
|
97
|
+
throw new Error(`Invalid date object: expected Date instance, got ${typeof date}`);
|
|
98
|
+
}
|
|
99
|
+
if (isNaN(date.getTime())) {
|
|
100
|
+
throw new Error('Invalid date: date object contains NaN timestamp');
|
|
101
|
+
}
|
|
102
|
+
return date.toISOString();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Validate that a date is valid and optionally check if it's not in the future.
|
|
106
|
+
*
|
|
107
|
+
* @param date - Date to validate
|
|
108
|
+
* @param allowFuture - Whether to allow future dates (default: false)
|
|
109
|
+
* @returns true if valid, false otherwise
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const date = new Date("2024-01-23T10:30:00Z");
|
|
114
|
+
* const isValid = isValidDate(date); // true if date is in the past
|
|
115
|
+
* const isValidFuture = isValidDate(date, true); // true regardless of future/past
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
function isValidDate(date, allowFuture = false) {
|
|
119
|
+
// Check if it's a Date instance
|
|
120
|
+
if (!(date instanceof Date)) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
// Check if the date is valid (not NaN)
|
|
124
|
+
if (isNaN(date.getTime())) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
// Check if date is in the future (if not allowed)
|
|
128
|
+
if (!allowFuture) {
|
|
129
|
+
const now = new Date();
|
|
130
|
+
if (date.getTime() > now.getTime()) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=dateUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtils.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/dateUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AA0BH,8BAmDC;AAmBD,sCAYC;AAgBD,kCAoBC;AA9ID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,SAAS,CAAC,KAAsB;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,yBAAyB;QACzB,mFAAmF;QACnF,6EAA6E;QAC7E,2EAA2E;QAE3E,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/B,yDAAyD;QACzD,4EAA4E;QAC5E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,0EAA0E;YAC1E,6DAA6D;YAC7D,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACpD,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;gBACzB,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;YACD,gDAAgD;iBAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC3C,4CAA4C;gBAC5C,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;gBACzB,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,iCAAiC;QACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,+EAA+E,CAC9G,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,KAAK,8BAA8B,CACvE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,aAAa,CAAC,IAAU;IACtC,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,IAAI,EAAE,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,WAAW,CAAC,IAAU,EAAE,WAAW,GAAG,KAAK;IACzD,gCAAgC;IAChC,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uCAAuC;IACvC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/src/lib/utils/index.d.ts
CHANGED
|
@@ -55,4 +55,61 @@ export * from './checksumUtils';
|
|
|
55
55
|
* @see {@link xorUtils}
|
|
56
56
|
*/
|
|
57
57
|
export * from './xorUtils';
|
|
58
|
+
/**
|
|
59
|
+
* Constant-time comparison utilities for security-sensitive operations.
|
|
60
|
+
*
|
|
61
|
+
* Provides functions for:
|
|
62
|
+
* - Constant-time equality comparison (Uint8Array, hex strings, numbers)
|
|
63
|
+
* - Constant-time conditional selection
|
|
64
|
+
* - Constant-time zero checking
|
|
65
|
+
*
|
|
66
|
+
* These utilities prevent timing-based side-channel attacks by ensuring
|
|
67
|
+
* operations take the same amount of time regardless of input values.
|
|
68
|
+
*
|
|
69
|
+
* @see {@link constantTime}
|
|
70
|
+
*/
|
|
71
|
+
export * from './constantTime';
|
|
72
|
+
/**
|
|
73
|
+
* Constant-time XOR operations for security-sensitive operations.
|
|
74
|
+
*
|
|
75
|
+
* Provides functions for:
|
|
76
|
+
* - Constant-time XOR of two arrays
|
|
77
|
+
* - Constant-time XOR of multiple arrays
|
|
78
|
+
*
|
|
79
|
+
* These utilities prevent timing-based side-channel attacks by ensuring
|
|
80
|
+
* XOR operations take the same amount of time regardless of input byte values.
|
|
81
|
+
* Critical for whitening/brightening operations in the Owner-Free Filesystem.
|
|
82
|
+
*
|
|
83
|
+
* @see {@link constantTimeXor}
|
|
84
|
+
*/
|
|
85
|
+
export * from './constantTimeXor';
|
|
86
|
+
/**
|
|
87
|
+
* Type guard utilities for JSON deserialization.
|
|
88
|
+
*
|
|
89
|
+
* Provides functions for:
|
|
90
|
+
* - Runtime type checking of JSON data
|
|
91
|
+
* - Validating BlockMetadataJson structure
|
|
92
|
+
* - Validating EphemeralBlockMetadataJson structure
|
|
93
|
+
* - Parsing JSON with type safety
|
|
94
|
+
*
|
|
95
|
+
* These utilities ensure that JSON data conforms to expected TypeScript
|
|
96
|
+
* interfaces before constructing objects, maintaining type safety at runtime.
|
|
97
|
+
*
|
|
98
|
+
* @see {@link typeGuards}
|
|
99
|
+
*/
|
|
100
|
+
export * from './typeGuards';
|
|
101
|
+
/**
|
|
102
|
+
* Date handling utilities with timezone support.
|
|
103
|
+
*
|
|
104
|
+
* Provides functions for:
|
|
105
|
+
* - Parsing dates from ISO 8601 strings and Unix timestamps
|
|
106
|
+
* - Serializing dates to ISO 8601 format in UTC
|
|
107
|
+
* - Validating dates (including future date checks)
|
|
108
|
+
*
|
|
109
|
+
* All dates are stored internally in UTC to ensure consistency across timezones.
|
|
110
|
+
* These utilities provide robust date handling for block metadata timestamps.
|
|
111
|
+
*
|
|
112
|
+
* @see {@link dateUtils}
|
|
113
|
+
*/
|
|
114
|
+
export * from './dateUtils';
|
|
58
115
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC;AAK5B;;;;;;;;;GASG;AACH,cAAc,iBAAiB,CAAC;AAKhC;;;;;;;;;GASG;AACH,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC;AAK5B;;;;;;;;;GASG;AACH,cAAc,iBAAiB,CAAC;AAKhC;;;;;;;;;GASG;AACH,cAAc,YAAY,CAAC;AAK3B;;;;;;;;;;;;GAYG;AACH,cAAc,gBAAgB,CAAC;AAK/B;;;;;;;;;;;;GAYG;AACH,cAAc,mBAAmB,CAAC;AAKlC;;;;;;;;;;;;;GAaG;AACH,cAAc,cAAc,CAAC;AAK7B;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC"}
|
package/src/lib/utils/index.js
CHANGED
|
@@ -67,4 +67,73 @@ tslib_1.__exportStar(require("./checksumUtils"), exports);
|
|
|
67
67
|
* @see {@link xorUtils}
|
|
68
68
|
*/
|
|
69
69
|
tslib_1.__exportStar(require("./xorUtils"), exports);
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Constant-Time Utilities
|
|
72
|
+
// ============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Constant-time comparison utilities for security-sensitive operations.
|
|
75
|
+
*
|
|
76
|
+
* Provides functions for:
|
|
77
|
+
* - Constant-time equality comparison (Uint8Array, hex strings, numbers)
|
|
78
|
+
* - Constant-time conditional selection
|
|
79
|
+
* - Constant-time zero checking
|
|
80
|
+
*
|
|
81
|
+
* These utilities prevent timing-based side-channel attacks by ensuring
|
|
82
|
+
* operations take the same amount of time regardless of input values.
|
|
83
|
+
*
|
|
84
|
+
* @see {@link constantTime}
|
|
85
|
+
*/
|
|
86
|
+
tslib_1.__exportStar(require("./constantTime"), exports);
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// Constant-Time XOR Utilities
|
|
89
|
+
// ============================================================================
|
|
90
|
+
/**
|
|
91
|
+
* Constant-time XOR operations for security-sensitive operations.
|
|
92
|
+
*
|
|
93
|
+
* Provides functions for:
|
|
94
|
+
* - Constant-time XOR of two arrays
|
|
95
|
+
* - Constant-time XOR of multiple arrays
|
|
96
|
+
*
|
|
97
|
+
* These utilities prevent timing-based side-channel attacks by ensuring
|
|
98
|
+
* XOR operations take the same amount of time regardless of input byte values.
|
|
99
|
+
* Critical for whitening/brightening operations in the Owner-Free Filesystem.
|
|
100
|
+
*
|
|
101
|
+
* @see {@link constantTimeXor}
|
|
102
|
+
*/
|
|
103
|
+
tslib_1.__exportStar(require("./constantTimeXor"), exports);
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// Type Guard Utilities
|
|
106
|
+
// ============================================================================
|
|
107
|
+
/**
|
|
108
|
+
* Type guard utilities for JSON deserialization.
|
|
109
|
+
*
|
|
110
|
+
* Provides functions for:
|
|
111
|
+
* - Runtime type checking of JSON data
|
|
112
|
+
* - Validating BlockMetadataJson structure
|
|
113
|
+
* - Validating EphemeralBlockMetadataJson structure
|
|
114
|
+
* - Parsing JSON with type safety
|
|
115
|
+
*
|
|
116
|
+
* These utilities ensure that JSON data conforms to expected TypeScript
|
|
117
|
+
* interfaces before constructing objects, maintaining type safety at runtime.
|
|
118
|
+
*
|
|
119
|
+
* @see {@link typeGuards}
|
|
120
|
+
*/
|
|
121
|
+
tslib_1.__exportStar(require("./typeGuards"), exports);
|
|
122
|
+
// ============================================================================
|
|
123
|
+
// Date Utilities
|
|
124
|
+
// ============================================================================
|
|
125
|
+
/**
|
|
126
|
+
* Date handling utilities with timezone support.
|
|
127
|
+
*
|
|
128
|
+
* Provides functions for:
|
|
129
|
+
* - Parsing dates from ISO 8601 strings and Unix timestamps
|
|
130
|
+
* - Serializing dates to ISO 8601 format in UTC
|
|
131
|
+
* - Validating dates (including future date checks)
|
|
132
|
+
*
|
|
133
|
+
* All dates are stored internally in UTC to ensure consistency across timezones.
|
|
134
|
+
* These utilities provide robust date handling for block metadata timestamps.
|
|
135
|
+
*
|
|
136
|
+
* @see {@link dateUtils}
|
|
137
|
+
*/
|
|
138
|
+
tslib_1.__exportStar(require("./dateUtils"), exports);
|
|
70
139
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B;AAE5B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,0DAAgC;AAEhC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,qDAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B;AAE5B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,0DAAgC;AAEhC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,qDAA2B;AAE3B,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,yDAA+B;AAE/B,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,4DAAkC;AAElC,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;;GAaG;AACH,uDAA6B;AAE7B,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type Guards for JSON Deserialization
|
|
3
|
+
*
|
|
4
|
+
* This module provides runtime type checking for JSON deserialization of block metadata.
|
|
5
|
+
* Type guards ensure that JSON data conforms to expected TypeScript interfaces before
|
|
6
|
+
* constructing objects, maintaining type safety at runtime.
|
|
7
|
+
*
|
|
8
|
+
* @module typeGuards
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { isBlockMetadataJson, parseBlockMetadataJson } from 'brightchain-lib';
|
|
13
|
+
*
|
|
14
|
+
* // Validate JSON data structure
|
|
15
|
+
* if (isBlockMetadataJson(data)) {
|
|
16
|
+
* // TypeScript knows data is BlockMetadataJson
|
|
17
|
+
* const metadata = new BlockMetadata(data.size, data.type, ...);
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* // Parse and validate JSON string
|
|
21
|
+
* try {
|
|
22
|
+
* const data = parseBlockMetadataJson(jsonString);
|
|
23
|
+
* // data is guaranteed to be BlockMetadataJson
|
|
24
|
+
* } catch (error) {
|
|
25
|
+
* // Handle validation error with descriptive message
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* JSON representation of BlockMetadata.
|
|
31
|
+
* This interface defines the expected structure of JSON data
|
|
32
|
+
* when deserializing BlockMetadata objects.
|
|
33
|
+
*/
|
|
34
|
+
export interface BlockMetadataJson {
|
|
35
|
+
/** Block size in bytes (must be a valid BlockSize enum value) */
|
|
36
|
+
size: number;
|
|
37
|
+
/** Block type (must be a valid BlockType enum value) */
|
|
38
|
+
type: number;
|
|
39
|
+
/** Data type (must be a valid BlockDataType enum value) */
|
|
40
|
+
dataType: number;
|
|
41
|
+
/** Length of data without padding (must be non-negative) */
|
|
42
|
+
lengthWithoutPadding: number;
|
|
43
|
+
/** Date created (ISO 8601 string or Unix timestamp) */
|
|
44
|
+
dateCreated: string | number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* JSON representation of EphemeralBlockMetadata.
|
|
48
|
+
* Extends BlockMetadataJson with creator information.
|
|
49
|
+
*/
|
|
50
|
+
export interface EphemeralBlockMetadataJson extends BlockMetadataJson {
|
|
51
|
+
/** Creator ID (serialized as string) */
|
|
52
|
+
creator: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Error thrown when JSON validation fails.
|
|
56
|
+
* Provides descriptive information about which field failed validation.
|
|
57
|
+
*/
|
|
58
|
+
export declare class JsonValidationError extends Error {
|
|
59
|
+
readonly field: string;
|
|
60
|
+
readonly reason: string;
|
|
61
|
+
readonly value?: unknown | undefined;
|
|
62
|
+
constructor(field: string, reason: string, value?: unknown | undefined);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Type guard for BlockMetadataJson.
|
|
66
|
+
* Validates that an unknown value conforms to the BlockMetadataJson interface.
|
|
67
|
+
*
|
|
68
|
+
* @param data - Data to validate
|
|
69
|
+
* @returns True if data is BlockMetadataJson
|
|
70
|
+
* @throws JsonValidationError if validation fails with descriptive error
|
|
71
|
+
*/
|
|
72
|
+
export declare function isBlockMetadataJson(data: unknown): data is BlockMetadataJson;
|
|
73
|
+
/**
|
|
74
|
+
* Type guard for EphemeralBlockMetadataJson.
|
|
75
|
+
* Validates that an unknown value conforms to the EphemeralBlockMetadataJson interface.
|
|
76
|
+
*
|
|
77
|
+
* @param data - Data to validate
|
|
78
|
+
* @returns True if data is EphemeralBlockMetadataJson
|
|
79
|
+
* @throws JsonValidationError if validation fails with descriptive error
|
|
80
|
+
*/
|
|
81
|
+
export declare function isEphemeralBlockMetadataJson(data: unknown): data is EphemeralBlockMetadataJson;
|
|
82
|
+
/**
|
|
83
|
+
* Parse and validate a JSON string as BlockMetadataJson.
|
|
84
|
+
* Combines JSON parsing with type guard validation.
|
|
85
|
+
*
|
|
86
|
+
* @param json - JSON string to parse
|
|
87
|
+
* @returns Validated BlockMetadataJson object
|
|
88
|
+
* @throws JsonValidationError if validation fails
|
|
89
|
+
* @throws SyntaxError if JSON parsing fails
|
|
90
|
+
*/
|
|
91
|
+
export declare function parseBlockMetadataJson(json: string): BlockMetadataJson;
|
|
92
|
+
/**
|
|
93
|
+
* Parse and validate a JSON string as EphemeralBlockMetadataJson.
|
|
94
|
+
* Combines JSON parsing with type guard validation.
|
|
95
|
+
*
|
|
96
|
+
* @param json - JSON string to parse
|
|
97
|
+
* @returns Validated EphemeralBlockMetadataJson object
|
|
98
|
+
* @throws JsonValidationError if validation fails
|
|
99
|
+
* @throws SyntaxError if JSON parsing fails
|
|
100
|
+
*/
|
|
101
|
+
export declare function parseEphemeralBlockMetadataJson(json: string): EphemeralBlockMetadataJson;
|
|
102
|
+
//# sourceMappingURL=typeGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/typeGuards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,KAAK,EAAE,MAAM;aACb,MAAM,EAAE,MAAM;aACd,KAAK,CAAC,EAAE,OAAO;gBAFf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAkED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAmF5E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,0BAA0B,CA4BpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAmBtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GACX,0BAA0B,CAmB5B"}
|
|
@@ -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 blockDataType_1 = require("../enumerations/blockDataType");
|
|
37
|
+
const blockSize_1 = require("../enumerations/blockSize");
|
|
38
|
+
const blockType_1 = require("../enumerations/blockType");
|
|
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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"}
|