@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.
Files changed (342) hide show
  1. package/brightchain-lib/BLOCK_COVERAGE_AUDIT.md +169 -0
  2. package/package.json +2 -2
  3. package/src/browser.d.ts +1 -4
  4. package/src/browser.d.ts.map +1 -1
  5. package/src/browser.js +6 -9
  6. package/src/browser.js.map +1 -1
  7. package/src/lib/blockMetadata.d.ts +10 -9
  8. package/src/lib/blockMetadata.d.ts.map +1 -1
  9. package/src/lib/blockMetadata.js +20 -36
  10. package/src/lib/blockMetadata.js.map +1 -1
  11. package/src/lib/blocks/base.d.ts +23 -0
  12. package/src/lib/blocks/base.d.ts.map +1 -1
  13. package/src/lib/blocks/base.js +33 -15
  14. package/src/lib/blocks/base.js.map +1 -1
  15. package/src/lib/blocks/cbl.d.ts +34 -1
  16. package/src/lib/blocks/cbl.d.ts.map +1 -1
  17. package/src/lib/blocks/cbl.js +33 -0
  18. package/src/lib/blocks/cbl.js.map +1 -1
  19. package/src/lib/blocks/cblBase.d.ts +45 -1
  20. package/src/lib/blocks/cblBase.d.ts.map +1 -1
  21. package/src/lib/blocks/cblBase.js +89 -44
  22. package/src/lib/blocks/cblBase.js.map +1 -1
  23. package/src/lib/blocks/encrypted.d.ts.map +1 -1
  24. package/src/lib/blocks/encrypted.js +68 -21
  25. package/src/lib/blocks/encrypted.js.map +1 -1
  26. package/src/lib/blocks/ephemeral.d.ts.map +1 -1
  27. package/src/lib/blocks/ephemeral.js +17 -10
  28. package/src/lib/blocks/ephemeral.js.map +1 -1
  29. package/src/lib/blocks/rawData.d.ts.map +1 -1
  30. package/src/lib/blocks/rawData.js +5 -1
  31. package/src/lib/blocks/rawData.js.map +1 -1
  32. package/src/lib/constants.d.ts +37 -0
  33. package/src/lib/constants.d.ts.map +1 -1
  34. package/src/lib/constants.js +40 -1
  35. package/src/lib/constants.js.map +1 -1
  36. package/src/lib/documents/member/memberDocument.d.ts +4 -3
  37. package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
  38. package/src/lib/documents/member/memberDocument.js +9 -8
  39. package/src/lib/documents/member/memberDocument.js.map +1 -1
  40. package/src/lib/documents/member/memberHydration.d.ts.map +1 -1
  41. package/src/lib/documents/member/memberHydration.js +11 -13
  42. package/src/lib/documents/member/memberHydration.js.map +1 -1
  43. package/src/lib/documents/member/memberOperational.d.ts.map +1 -1
  44. package/src/lib/documents/member/memberOperational.js +2 -2
  45. package/src/lib/documents/member/memberOperational.js.map +1 -1
  46. package/src/lib/documents/network/networkDocument.d.ts.map +1 -1
  47. package/src/lib/documents/network/networkDocument.js +4 -3
  48. package/src/lib/documents/network/networkDocument.js.map +1 -1
  49. package/src/lib/encryptedBlockMetadata.d.ts +11 -4
  50. package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
  51. package/src/lib/encryptedBlockMetadata.js +29 -22
  52. package/src/lib/encryptedBlockMetadata.js.map +1 -1
  53. package/src/lib/enumerations/blockSize.d.ts +2 -2
  54. package/src/lib/enumerations/blockSize.d.ts.map +1 -1
  55. package/src/lib/enumerations/blockSize.js +15 -15
  56. package/src/lib/enumerations/blockSize.js.map +1 -1
  57. package/src/lib/enumerations/{stringNames.d.ts → brightChainStrings.d.ts} +4 -3
  58. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -0
  59. package/src/lib/enumerations/brightChainStrings.js +437 -0
  60. package/src/lib/enumerations/brightChainStrings.js.map +1 -0
  61. package/src/lib/enumerations/cblErrorType.d.ts +1 -0
  62. package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
  63. package/src/lib/enumerations/cblErrorType.js +1 -0
  64. package/src/lib/enumerations/cblErrorType.js.map +1 -1
  65. package/src/lib/enumerations/index.d.ts +1 -1
  66. package/src/lib/enumerations/index.d.ts.map +1 -1
  67. package/src/lib/enumerations/index.js +1 -1
  68. package/src/lib/enumerations/index.js.map +1 -1
  69. package/src/lib/enumerations/votingDerivationErrorType.d.ts +2 -2
  70. package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
  71. package/src/lib/enumerations/votingDerivationErrorType.js +11 -11
  72. package/src/lib/enumerations/votingDerivationErrorType.js.map +1 -1
  73. package/src/lib/ephemeralBlockMetadata.d.ts +10 -7
  74. package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
  75. package/src/lib/ephemeralBlockMetadata.js +24 -17
  76. package/src/lib/ephemeralBlockMetadata.js.map +1 -1
  77. package/src/lib/errors/block/blockAccess.d.ts +2 -2
  78. package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
  79. package/src/lib/errors/block/blockAccess.js +8 -8
  80. package/src/lib/errors/block/blockAccess.js.map +1 -1
  81. package/src/lib/errors/block/blockCapacity.d.ts +2 -2
  82. package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
  83. package/src/lib/errors/block/blockCapacity.js +8 -8
  84. package/src/lib/errors/block/blockCapacity.js.map +1 -1
  85. package/src/lib/errors/block/blockError.d.ts +2 -2
  86. package/src/lib/errors/block/blockError.d.ts.map +1 -1
  87. package/src/lib/errors/block/blockError.js +16 -16
  88. package/src/lib/errors/block/blockError.js.map +1 -1
  89. package/src/lib/errors/block/blockMetadata.d.ts +2 -2
  90. package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
  91. package/src/lib/errors/block/blockMetadata.js +8 -8
  92. package/src/lib/errors/block/blockMetadata.js.map +1 -1
  93. package/src/lib/errors/block/blockValidation.d.ts +2 -2
  94. package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
  95. package/src/lib/errors/block/blockValidation.js +36 -36
  96. package/src/lib/errors/block/blockValidation.js.map +1 -1
  97. package/src/lib/errors/block/cannotDecrypt.js +2 -2
  98. package/src/lib/errors/block/cannotDecrypt.js.map +1 -1
  99. package/src/lib/errors/block/cannotEncrypt.js +2 -2
  100. package/src/lib/errors/block/cannotEncrypt.js.map +1 -1
  101. package/src/lib/errors/blockServiceError.d.ts +2 -2
  102. package/src/lib/errors/blockServiceError.d.ts.map +1 -1
  103. package/src/lib/errors/blockServiceError.js +15 -15
  104. package/src/lib/errors/blockServiceError.js.map +1 -1
  105. package/src/lib/errors/bufferError.js +2 -2
  106. package/src/lib/errors/bufferError.js.map +1 -1
  107. package/src/lib/errors/cblError.d.ts +2 -2
  108. package/src/lib/errors/cblError.d.ts.map +1 -1
  109. package/src/lib/errors/cblError.js +37 -36
  110. package/src/lib/errors/cblError.js.map +1 -1
  111. package/src/lib/errors/checksumMismatch.js +2 -2
  112. package/src/lib/errors/checksumMismatch.js.map +1 -1
  113. package/src/lib/errors/disposed.js +2 -2
  114. package/src/lib/errors/disposed.js.map +1 -1
  115. package/src/lib/errors/document.d.ts +2 -2
  116. package/src/lib/errors/document.d.ts.map +1 -1
  117. package/src/lib/errors/document.js +5 -5
  118. package/src/lib/errors/document.js.map +1 -1
  119. package/src/lib/errors/eciesError.d.ts +2 -2
  120. package/src/lib/errors/eciesError.d.ts.map +1 -1
  121. package/src/lib/errors/eciesError.js +20 -20
  122. package/src/lib/errors/eciesError.js.map +1 -1
  123. package/src/lib/errors/extendedCblError.d.ts +2 -2
  124. package/src/lib/errors/extendedCblError.d.ts.map +1 -1
  125. package/src/lib/errors/extendedCblError.js +25 -25
  126. package/src/lib/errors/extendedCblError.js.map +1 -1
  127. package/src/lib/errors/failedToHydrate.js +2 -2
  128. package/src/lib/errors/failedToHydrate.js.map +1 -1
  129. package/src/lib/errors/failedToSerialize.js +2 -2
  130. package/src/lib/errors/failedToSerialize.js.map +1 -1
  131. package/src/lib/errors/fecError.d.ts +2 -2
  132. package/src/lib/errors/fecError.d.ts.map +1 -1
  133. package/src/lib/errors/fecError.js +19 -19
  134. package/src/lib/errors/fecError.js.map +1 -1
  135. package/src/lib/errors/handleTupleError.d.ts +2 -2
  136. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  137. package/src/lib/errors/handleTupleError.js +5 -5
  138. package/src/lib/errors/handleTupleError.js.map +1 -1
  139. package/src/lib/errors/index.d.ts +0 -6
  140. package/src/lib/errors/index.d.ts.map +1 -1
  141. package/src/lib/errors/index.js +0 -9
  142. package/src/lib/errors/index.js.map +1 -1
  143. package/src/lib/errors/invalidBlockSize.js +2 -2
  144. package/src/lib/errors/invalidBlockSize.js.map +1 -1
  145. package/src/lib/errors/invalidBlockSizeLength.js +2 -2
  146. package/src/lib/errors/invalidBlockSizeLength.js.map +1 -1
  147. package/src/lib/errors/invalidCredentials.js +2 -2
  148. package/src/lib/errors/invalidCredentials.js.map +1 -1
  149. package/src/lib/errors/invalidIDFormat.js +2 -2
  150. package/src/lib/errors/invalidIDFormat.js.map +1 -1
  151. package/src/lib/errors/invalidSessionID.js +2 -2
  152. package/src/lib/errors/invalidSessionID.js.map +1 -1
  153. package/src/lib/errors/invalidTupleCount.js +2 -2
  154. package/src/lib/errors/invalidTupleCount.js.map +1 -1
  155. package/src/lib/errors/isolatedKeyError.d.ts +2 -2
  156. package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
  157. package/src/lib/errors/isolatedKeyError.js +7 -7
  158. package/src/lib/errors/isolatedKeyError.js.map +1 -1
  159. package/src/lib/errors/memberError.d.ts +2 -2
  160. package/src/lib/errors/memberError.d.ts.map +1 -1
  161. package/src/lib/errors/memberError.js +27 -27
  162. package/src/lib/errors/memberError.js.map +1 -1
  163. package/src/lib/errors/memoryTupleError.d.ts +2 -2
  164. package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
  165. package/src/lib/errors/memoryTupleError.js +7 -7
  166. package/src/lib/errors/memoryTupleError.js.map +1 -1
  167. package/src/lib/errors/metadataMismatch.js +2 -2
  168. package/src/lib/errors/metadataMismatch.js.map +1 -1
  169. package/src/lib/errors/multiEncryptedError.d.ts +2 -2
  170. package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
  171. package/src/lib/errors/multiEncryptedError.js +11 -11
  172. package/src/lib/errors/multiEncryptedError.js.map +1 -1
  173. package/src/lib/errors/notImplemented.js +2 -2
  174. package/src/lib/errors/notImplemented.js.map +1 -1
  175. package/src/lib/errors/quorumError.d.ts +2 -2
  176. package/src/lib/errors/quorumError.d.ts.map +1 -1
  177. package/src/lib/errors/quorumError.js +8 -8
  178. package/src/lib/errors/quorumError.js.map +1 -1
  179. package/src/lib/errors/sealingError.d.ts +2 -2
  180. package/src/lib/errors/sealingError.d.ts.map +1 -1
  181. package/src/lib/errors/sealingError.js +9 -9
  182. package/src/lib/errors/sealingError.js.map +1 -1
  183. package/src/lib/errors/secureStorage.d.ts +2 -2
  184. package/src/lib/errors/secureStorage.d.ts.map +1 -1
  185. package/src/lib/errors/secureStorage.js +4 -4
  186. package/src/lib/errors/secureStorage.js.map +1 -1
  187. package/src/lib/errors/storeError.d.ts +2 -2
  188. package/src/lib/errors/storeError.d.ts.map +1 -1
  189. package/src/lib/errors/storeError.js +20 -20
  190. package/src/lib/errors/storeError.js.map +1 -1
  191. package/src/lib/errors/streamError.d.ts +2 -2
  192. package/src/lib/errors/streamError.d.ts.map +1 -1
  193. package/src/lib/errors/streamError.js +8 -8
  194. package/src/lib/errors/streamError.js.map +1 -1
  195. package/src/lib/errors/symmetricError.d.ts +2 -2
  196. package/src/lib/errors/symmetricError.d.ts.map +1 -1
  197. package/src/lib/errors/symmetricError.js +3 -3
  198. package/src/lib/errors/symmetricError.js.map +1 -1
  199. package/src/lib/errors/systemKeyringError.d.ts +2 -2
  200. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  201. package/src/lib/errors/systemKeyringError.js +4 -4
  202. package/src/lib/errors/systemKeyringError.js.map +1 -1
  203. package/src/lib/errors/tupleError.d.ts +2 -2
  204. package/src/lib/errors/tupleError.d.ts.map +1 -1
  205. package/src/lib/errors/tupleError.js +13 -13
  206. package/src/lib/errors/tupleError.js.map +1 -1
  207. package/src/lib/errors/typedError.d.ts +2 -2
  208. package/src/lib/errors/typedError.d.ts.map +1 -1
  209. package/src/lib/errors/typedWithReasonError.d.ts +3 -3
  210. package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
  211. package/src/lib/errors/typedWithReasonError.js.map +1 -1
  212. package/src/lib/errors/userNotFound.js +2 -2
  213. package/src/lib/errors/userNotFound.js.map +1 -1
  214. package/src/lib/errors/whitenedError.d.ts +2 -2
  215. package/src/lib/errors/whitenedError.d.ts.map +1 -1
  216. package/src/lib/errors/whitenedError.js +5 -5
  217. package/src/lib/errors/whitenedError.js.map +1 -1
  218. package/src/lib/i18n/index.d.ts +2 -2
  219. package/src/lib/i18n/index.d.ts.map +1 -1
  220. package/src/lib/i18n/index.js +2 -2
  221. package/src/lib/i18n/index.js.map +1 -1
  222. package/src/lib/index.d.ts +4 -0
  223. package/src/lib/index.d.ts.map +1 -1
  224. package/src/lib/index.js +4 -0
  225. package/src/lib/index.js.map +1 -1
  226. package/src/lib/init.d.ts +10 -0
  227. package/src/lib/init.d.ts.map +1 -1
  228. package/src/lib/init.js +20 -0
  229. package/src/lib/init.js.map +1 -1
  230. package/src/lib/interfaces/blocks/headers/index.d.ts +1 -0
  231. package/src/lib/interfaces/blocks/headers/index.d.ts.map +1 -1
  232. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts +63 -0
  233. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts.map +1 -0
  234. package/src/lib/interfaces/{storage/superCbl.js → blocks/headers/superCblHeader.js} +1 -1
  235. package/src/lib/interfaces/blocks/headers/superCblHeader.js.map +1 -0
  236. package/src/lib/interfaces/constants.d.ts +29 -0
  237. package/src/lib/interfaces/constants.d.ts.map +1 -1
  238. package/src/lib/interfaces/serviceProvider.interface.d.ts +2 -1
  239. package/src/lib/interfaces/serviceProvider.interface.d.ts.map +1 -1
  240. package/src/lib/interfaces/services/cblServices.d.ts +148 -0
  241. package/src/lib/interfaces/services/cblServices.d.ts.map +1 -0
  242. package/src/lib/interfaces/services/cblServices.js +11 -0
  243. package/src/lib/interfaces/services/cblServices.js.map +1 -0
  244. package/src/lib/interfaces/services/index.d.ts +1 -0
  245. package/src/lib/interfaces/services/index.d.ts.map +1 -1
  246. package/src/lib/interfaces/storage/index.d.ts +0 -1
  247. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  248. package/src/lib/logging/blockLogger.d.ts +212 -0
  249. package/src/lib/logging/blockLogger.d.ts.map +1 -0
  250. package/src/lib/logging/blockLogger.js +327 -0
  251. package/src/lib/logging/blockLogger.js.map +1 -0
  252. package/src/lib/logging/index.d.ts +24 -0
  253. package/src/lib/logging/index.d.ts.map +1 -0
  254. package/src/lib/logging/index.js +27 -0
  255. package/src/lib/logging/index.js.map +1 -0
  256. package/src/lib/quorum.d.ts.map +1 -1
  257. package/src/lib/quorum.js +5 -4
  258. package/src/lib/quorum.js.map +1 -1
  259. package/src/lib/quorumDataRecord.d.ts.map +1 -1
  260. package/src/lib/quorumDataRecord.js +3 -2
  261. package/src/lib/quorumDataRecord.js.map +1 -1
  262. package/src/lib/schemas/network/networkDocumentSchema.d.ts.map +1 -1
  263. package/src/lib/schemas/network/networkDocumentSchema.js +9 -8
  264. package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
  265. package/src/lib/schemas/quorumDocument.d.ts.map +1 -1
  266. package/src/lib/schemas/quorumDocument.js +6 -4
  267. package/src/lib/schemas/quorumDocument.js.map +1 -1
  268. package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
  269. package/src/lib/services/blockCapacity.service.js +14 -5
  270. package/src/lib/services/blockCapacity.service.js.map +1 -1
  271. package/src/lib/services/blockFormatService.d.ts +56 -0
  272. package/src/lib/services/blockFormatService.d.ts.map +1 -0
  273. package/src/lib/services/blockFormatService.js +282 -0
  274. package/src/lib/services/blockFormatService.js.map +1 -0
  275. package/src/lib/services/blockService.d.ts +6 -0
  276. package/src/lib/services/blockService.d.ts.map +1 -1
  277. package/src/lib/services/blockService.js +120 -18
  278. package/src/lib/services/blockService.js.map +1 -1
  279. package/src/lib/services/cblService.d.ts +159 -1
  280. package/src/lib/services/cblService.d.ts.map +1 -1
  281. package/src/lib/services/cblService.js +498 -17
  282. package/src/lib/services/cblService.js.map +1 -1
  283. package/src/lib/services/index.d.ts +0 -2
  284. package/src/lib/services/index.d.ts.map +1 -1
  285. package/src/lib/services/index.js +0 -2
  286. package/src/lib/services/index.js.map +1 -1
  287. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  288. package/src/lib/services/member/memberCblService.js +11 -8
  289. package/src/lib/services/member/memberCblService.js.map +1 -1
  290. package/src/lib/services/memberStore.d.ts.map +1 -1
  291. package/src/lib/services/memberStore.js +20 -28
  292. package/src/lib/services/memberStore.js.map +1 -1
  293. package/src/lib/services/sealing.service.d.ts.map +1 -1
  294. package/src/lib/services/sealing.service.js +2 -1
  295. package/src/lib/services/sealing.service.js.map +1 -1
  296. package/src/lib/services/service.provider.d.ts.map +1 -1
  297. package/src/lib/services/service.provider.js +3 -11
  298. package/src/lib/services/service.provider.js.map +1 -1
  299. package/src/lib/strings/englishUs.js +392 -392
  300. package/src/lib/strings/englishUs.js.map +1 -1
  301. package/src/lib/test/service.initializer.helper.d.ts +2 -1
  302. package/src/lib/test/service.initializer.helper.d.ts.map +1 -1
  303. package/src/lib/test/service.initializer.helper.js +11 -15
  304. package/src/lib/test/service.initializer.helper.js.map +1 -1
  305. package/src/lib/utils/constantTime.d.ts +112 -0
  306. package/src/lib/utils/constantTime.d.ts.map +1 -0
  307. package/src/lib/utils/constantTime.js +180 -0
  308. package/src/lib/utils/constantTime.js.map +1 -0
  309. package/src/lib/utils/constantTimeXor.d.ts +76 -0
  310. package/src/lib/utils/constantTimeXor.d.ts.map +1 -0
  311. package/src/lib/utils/constantTimeXor.js +122 -0
  312. package/src/lib/utils/constantTimeXor.js.map +1 -0
  313. package/src/lib/utils/dateUtils.d.ts +67 -0
  314. package/src/lib/utils/dateUtils.d.ts.map +1 -0
  315. package/src/lib/utils/dateUtils.js +136 -0
  316. package/src/lib/utils/dateUtils.js.map +1 -0
  317. package/src/lib/utils/index.d.ts +57 -0
  318. package/src/lib/utils/index.d.ts.map +1 -1
  319. package/src/lib/utils/index.js +69 -0
  320. package/src/lib/utils/index.js.map +1 -1
  321. package/src/lib/utils/typeGuards.d.ts +102 -0
  322. package/src/lib/utils/typeGuards.d.ts.map +1 -0
  323. package/src/lib/utils/typeGuards.js +244 -0
  324. package/src/lib/utils/typeGuards.js.map +1 -0
  325. package/src/lib/enumerations/stringNames.d.ts.map +0 -1
  326. package/src/lib/enumerations/stringNames.js +0 -436
  327. package/src/lib/enumerations/stringNames.js.map +0 -1
  328. package/src/lib/errors/superCbl.d.ts +0 -24
  329. package/src/lib/errors/superCbl.d.ts.map +0 -1
  330. package/src/lib/errors/superCbl.js +0 -43
  331. package/src/lib/errors/superCbl.js.map +0 -1
  332. package/src/lib/interfaces/storage/superCbl.d.ts +0 -102
  333. package/src/lib/interfaces/storage/superCbl.d.ts.map +0 -1
  334. package/src/lib/interfaces/storage/superCbl.js.map +0 -1
  335. package/src/lib/services/jsonCblCapacity.service.d.ts +0 -80
  336. package/src/lib/services/jsonCblCapacity.service.d.ts.map +0 -1
  337. package/src/lib/services/jsonCblCapacity.service.js +0 -147
  338. package/src/lib/services/jsonCblCapacity.service.js.map +0 -1
  339. package/src/lib/services/superCbl.service.d.ts +0 -68
  340. package/src/lib/services/superCbl.service.d.ts.map +0 -1
  341. package/src/lib/services/superCbl.service.js +0 -213
  342. 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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAwHH,kDAuFC;AAUD,oEA8BC;AAWD,wDAmBC;AAWD,0EAqBC;AAnTD,yDAAuE;AACvE,yDAAkD;AAClD,iEAA0D;AA6B1D;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YACkB,KAAa,EACb,MAAc,EACd,KAAe;QAE/B,KAAK,CAAC,qCAAqC,KAAK,MAAM,MAAM,EAAE,CAAC,CAAC;QAJhD,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AATD,kDASC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,2BAAe,CAAC,QAAQ,CAAC,KAAkB,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,2CAA2C;IAC3C,IAAI,KAAK,KAAK,mBAAS,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kDAAkD;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAS,CAAC,CAAC,QAAQ,CAAC,KAAkB,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,sDAAsD;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,uBAAa,CAAC,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,wCAAwC;QACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,IAAa;IAC/C,6BAA6B;IAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAC3B,MAAM,EACN,2BAA2B,EAC3B,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,sBAAsB;IACtB,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,mBAAmB,CAC3B,MAAM,EACN,sCAAsC,EACtC,GAAG,CAAC,MAAM,CAAC,CACZ,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,mBAAmB,CAC3B,MAAM,EACN,sCAAsC,EACtC,GAAG,CAAC,MAAM,CAAC,CACZ,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,mBAAmB,CAC3B,UAAU,EACV,0CAA0C,EAC1C,GAAG,CAAC,UAAU,CAAC,CAChB,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC,CAAC,sBAAsB,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,sBAAsB,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,kBAAkB,EAClB,GAAG,CAAC,sBAAsB,CAAC,CAC5B,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,sBAAsB,EACtB,GAAG,CAAC,sBAAsB,CAAC,CAC5B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,oBAAoB,EACpB,GAAG,CAAC,sBAAsB,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,mBAAmB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,mBAAmB,CAC3B,aAAa,EACb,mDAAmD,EACnD,GAAG,CAAC,aAAa,CAAC,CACnB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,4BAA4B,CAC1C,IAAa;IAEb,sCAAsC;IACtC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,IAA0C,CAAC;IAEvD,yBAAyB;IACzB,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,mBAAmB,CAC3B,SAAS,EACT,kBAAkB,EAClB,GAAG,CAAC,SAAS,CAAC,CACf,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,mBAAmB,CAC3B,SAAS,EACT,mBAAmB,EACnB,GAAG,CAAC,SAAS,CAAC,CACf,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,IAAI,IAAa,CAAC;IAElB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,CAC3B,MAAM,EACN,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2EAA2E;IAC3E,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,+BAA+B,CAC7C,IAAY;IAEZ,IAAI,IAAa,CAAC;IAElB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,CAC3B,MAAM,EACN,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oFAAoF;IACpF,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAC7D,CAAC"}
@@ -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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"}