@brightchain/brightchain-lib 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) 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/encryptedBlockFactory.d.ts.map +1 -1
  27. package/src/lib/blocks/encryptedBlockFactory.js +29 -16
  28. package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
  29. package/src/lib/blocks/ephemeral.d.ts.map +1 -1
  30. package/src/lib/blocks/ephemeral.js +17 -10
  31. package/src/lib/blocks/ephemeral.js.map +1 -1
  32. package/src/lib/blocks/rawData.d.ts.map +1 -1
  33. package/src/lib/blocks/rawData.js +5 -1
  34. package/src/lib/blocks/rawData.js.map +1 -1
  35. package/src/lib/constants.d.ts +37 -0
  36. package/src/lib/constants.d.ts.map +1 -1
  37. package/src/lib/constants.js +40 -1
  38. package/src/lib/constants.js.map +1 -1
  39. package/src/lib/documents/member/memberDocument.d.ts +4 -3
  40. package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
  41. package/src/lib/documents/member/memberDocument.js +9 -8
  42. package/src/lib/documents/member/memberDocument.js.map +1 -1
  43. package/src/lib/documents/member/memberHydration.d.ts.map +1 -1
  44. package/src/lib/documents/member/memberHydration.js +11 -13
  45. package/src/lib/documents/member/memberHydration.js.map +1 -1
  46. package/src/lib/documents/member/memberOperational.d.ts.map +1 -1
  47. package/src/lib/documents/member/memberOperational.js +2 -2
  48. package/src/lib/documents/member/memberOperational.js.map +1 -1
  49. package/src/lib/documents/network/networkDocument.d.ts.map +1 -1
  50. package/src/lib/documents/network/networkDocument.js +4 -3
  51. package/src/lib/documents/network/networkDocument.js.map +1 -1
  52. package/src/lib/encryptedBlockMetadata.d.ts +11 -4
  53. package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
  54. package/src/lib/encryptedBlockMetadata.js +29 -22
  55. package/src/lib/encryptedBlockMetadata.js.map +1 -1
  56. package/src/lib/enumerations/blockSize.d.ts +2 -2
  57. package/src/lib/enumerations/blockSize.d.ts.map +1 -1
  58. package/src/lib/enumerations/blockSize.js +15 -15
  59. package/src/lib/enumerations/blockSize.js.map +1 -1
  60. package/src/lib/enumerations/{stringNames.d.ts → brightChainStrings.d.ts} +4 -3
  61. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -0
  62. package/src/lib/enumerations/brightChainStrings.js +437 -0
  63. package/src/lib/enumerations/brightChainStrings.js.map +1 -0
  64. package/src/lib/enumerations/cblErrorType.d.ts +1 -0
  65. package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
  66. package/src/lib/enumerations/cblErrorType.js +1 -0
  67. package/src/lib/enumerations/cblErrorType.js.map +1 -1
  68. package/src/lib/enumerations/index.d.ts +1 -1
  69. package/src/lib/enumerations/index.d.ts.map +1 -1
  70. package/src/lib/enumerations/index.js +1 -1
  71. package/src/lib/enumerations/index.js.map +1 -1
  72. package/src/lib/enumerations/votingDerivationErrorType.d.ts +2 -2
  73. package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
  74. package/src/lib/enumerations/votingDerivationErrorType.js +11 -11
  75. package/src/lib/enumerations/votingDerivationErrorType.js.map +1 -1
  76. package/src/lib/ephemeralBlockMetadata.d.ts +10 -7
  77. package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
  78. package/src/lib/ephemeralBlockMetadata.js +24 -17
  79. package/src/lib/ephemeralBlockMetadata.js.map +1 -1
  80. package/src/lib/errors/block/blockAccess.d.ts +2 -2
  81. package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
  82. package/src/lib/errors/block/blockAccess.js +8 -8
  83. package/src/lib/errors/block/blockAccess.js.map +1 -1
  84. package/src/lib/errors/block/blockCapacity.d.ts +2 -2
  85. package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
  86. package/src/lib/errors/block/blockCapacity.js +8 -8
  87. package/src/lib/errors/block/blockCapacity.js.map +1 -1
  88. package/src/lib/errors/block/blockError.d.ts +2 -2
  89. package/src/lib/errors/block/blockError.d.ts.map +1 -1
  90. package/src/lib/errors/block/blockError.js +16 -16
  91. package/src/lib/errors/block/blockError.js.map +1 -1
  92. package/src/lib/errors/block/blockMetadata.d.ts +2 -2
  93. package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
  94. package/src/lib/errors/block/blockMetadata.js +8 -8
  95. package/src/lib/errors/block/blockMetadata.js.map +1 -1
  96. package/src/lib/errors/block/blockValidation.d.ts +2 -2
  97. package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
  98. package/src/lib/errors/block/blockValidation.js +36 -36
  99. package/src/lib/errors/block/blockValidation.js.map +1 -1
  100. package/src/lib/errors/block/cannotDecrypt.js +2 -2
  101. package/src/lib/errors/block/cannotDecrypt.js.map +1 -1
  102. package/src/lib/errors/block/cannotEncrypt.js +2 -2
  103. package/src/lib/errors/block/cannotEncrypt.js.map +1 -1
  104. package/src/lib/errors/blockServiceError.d.ts +2 -2
  105. package/src/lib/errors/blockServiceError.d.ts.map +1 -1
  106. package/src/lib/errors/blockServiceError.js +15 -15
  107. package/src/lib/errors/blockServiceError.js.map +1 -1
  108. package/src/lib/errors/bufferError.js +2 -2
  109. package/src/lib/errors/bufferError.js.map +1 -1
  110. package/src/lib/errors/cblError.d.ts +2 -2
  111. package/src/lib/errors/cblError.d.ts.map +1 -1
  112. package/src/lib/errors/cblError.js +37 -36
  113. package/src/lib/errors/cblError.js.map +1 -1
  114. package/src/lib/errors/checksumMismatch.js +2 -2
  115. package/src/lib/errors/checksumMismatch.js.map +1 -1
  116. package/src/lib/errors/disposed.js +2 -2
  117. package/src/lib/errors/disposed.js.map +1 -1
  118. package/src/lib/errors/document.d.ts +2 -2
  119. package/src/lib/errors/document.d.ts.map +1 -1
  120. package/src/lib/errors/document.js +5 -5
  121. package/src/lib/errors/document.js.map +1 -1
  122. package/src/lib/errors/eciesError.d.ts +2 -2
  123. package/src/lib/errors/eciesError.d.ts.map +1 -1
  124. package/src/lib/errors/eciesError.js +20 -20
  125. package/src/lib/errors/eciesError.js.map +1 -1
  126. package/src/lib/errors/extendedCblError.d.ts +2 -2
  127. package/src/lib/errors/extendedCblError.d.ts.map +1 -1
  128. package/src/lib/errors/extendedCblError.js +25 -25
  129. package/src/lib/errors/extendedCblError.js.map +1 -1
  130. package/src/lib/errors/failedToHydrate.js +2 -2
  131. package/src/lib/errors/failedToHydrate.js.map +1 -1
  132. package/src/lib/errors/failedToSerialize.js +2 -2
  133. package/src/lib/errors/failedToSerialize.js.map +1 -1
  134. package/src/lib/errors/fecError.d.ts +2 -2
  135. package/src/lib/errors/fecError.d.ts.map +1 -1
  136. package/src/lib/errors/fecError.js +19 -19
  137. package/src/lib/errors/fecError.js.map +1 -1
  138. package/src/lib/errors/handleTupleError.d.ts +2 -2
  139. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  140. package/src/lib/errors/handleTupleError.js +5 -5
  141. package/src/lib/errors/handleTupleError.js.map +1 -1
  142. package/src/lib/errors/index.d.ts +0 -6
  143. package/src/lib/errors/index.d.ts.map +1 -1
  144. package/src/lib/errors/index.js +0 -9
  145. package/src/lib/errors/index.js.map +1 -1
  146. package/src/lib/errors/invalidBlockSize.js +2 -2
  147. package/src/lib/errors/invalidBlockSize.js.map +1 -1
  148. package/src/lib/errors/invalidBlockSizeLength.js +2 -2
  149. package/src/lib/errors/invalidBlockSizeLength.js.map +1 -1
  150. package/src/lib/errors/invalidCredentials.js +2 -2
  151. package/src/lib/errors/invalidCredentials.js.map +1 -1
  152. package/src/lib/errors/invalidIDFormat.js +2 -2
  153. package/src/lib/errors/invalidIDFormat.js.map +1 -1
  154. package/src/lib/errors/invalidSessionID.js +2 -2
  155. package/src/lib/errors/invalidSessionID.js.map +1 -1
  156. package/src/lib/errors/invalidTupleCount.js +2 -2
  157. package/src/lib/errors/invalidTupleCount.js.map +1 -1
  158. package/src/lib/errors/isolatedKeyError.d.ts +2 -2
  159. package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
  160. package/src/lib/errors/isolatedKeyError.js +7 -7
  161. package/src/lib/errors/isolatedKeyError.js.map +1 -1
  162. package/src/lib/errors/memberError.d.ts +2 -2
  163. package/src/lib/errors/memberError.d.ts.map +1 -1
  164. package/src/lib/errors/memberError.js +27 -27
  165. package/src/lib/errors/memberError.js.map +1 -1
  166. package/src/lib/errors/memoryTupleError.d.ts +2 -2
  167. package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
  168. package/src/lib/errors/memoryTupleError.js +7 -7
  169. package/src/lib/errors/memoryTupleError.js.map +1 -1
  170. package/src/lib/errors/metadataMismatch.js +2 -2
  171. package/src/lib/errors/metadataMismatch.js.map +1 -1
  172. package/src/lib/errors/multiEncryptedError.d.ts +2 -2
  173. package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
  174. package/src/lib/errors/multiEncryptedError.js +11 -11
  175. package/src/lib/errors/multiEncryptedError.js.map +1 -1
  176. package/src/lib/errors/notImplemented.js +2 -2
  177. package/src/lib/errors/notImplemented.js.map +1 -1
  178. package/src/lib/errors/quorumError.d.ts +2 -2
  179. package/src/lib/errors/quorumError.d.ts.map +1 -1
  180. package/src/lib/errors/quorumError.js +8 -8
  181. package/src/lib/errors/quorumError.js.map +1 -1
  182. package/src/lib/errors/sealingError.d.ts +2 -2
  183. package/src/lib/errors/sealingError.d.ts.map +1 -1
  184. package/src/lib/errors/sealingError.js +9 -9
  185. package/src/lib/errors/sealingError.js.map +1 -1
  186. package/src/lib/errors/secureStorage.d.ts +2 -2
  187. package/src/lib/errors/secureStorage.d.ts.map +1 -1
  188. package/src/lib/errors/secureStorage.js +4 -4
  189. package/src/lib/errors/secureStorage.js.map +1 -1
  190. package/src/lib/errors/storeError.d.ts +2 -2
  191. package/src/lib/errors/storeError.d.ts.map +1 -1
  192. package/src/lib/errors/storeError.js +20 -20
  193. package/src/lib/errors/storeError.js.map +1 -1
  194. package/src/lib/errors/streamError.d.ts +2 -2
  195. package/src/lib/errors/streamError.d.ts.map +1 -1
  196. package/src/lib/errors/streamError.js +8 -8
  197. package/src/lib/errors/streamError.js.map +1 -1
  198. package/src/lib/errors/symmetricError.d.ts +2 -2
  199. package/src/lib/errors/symmetricError.d.ts.map +1 -1
  200. package/src/lib/errors/symmetricError.js +3 -3
  201. package/src/lib/errors/symmetricError.js.map +1 -1
  202. package/src/lib/errors/systemKeyringError.d.ts +2 -2
  203. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  204. package/src/lib/errors/systemKeyringError.js +4 -4
  205. package/src/lib/errors/systemKeyringError.js.map +1 -1
  206. package/src/lib/errors/tupleError.d.ts +2 -2
  207. package/src/lib/errors/tupleError.d.ts.map +1 -1
  208. package/src/lib/errors/tupleError.js +13 -13
  209. package/src/lib/errors/tupleError.js.map +1 -1
  210. package/src/lib/errors/typedError.d.ts +2 -2
  211. package/src/lib/errors/typedError.d.ts.map +1 -1
  212. package/src/lib/errors/typedWithReasonError.d.ts +3 -3
  213. package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
  214. package/src/lib/errors/typedWithReasonError.js.map +1 -1
  215. package/src/lib/errors/userNotFound.js +2 -2
  216. package/src/lib/errors/userNotFound.js.map +1 -1
  217. package/src/lib/errors/whitenedError.d.ts +2 -2
  218. package/src/lib/errors/whitenedError.d.ts.map +1 -1
  219. package/src/lib/errors/whitenedError.js +5 -5
  220. package/src/lib/errors/whitenedError.js.map +1 -1
  221. package/src/lib/i18n/index.d.ts +2 -2
  222. package/src/lib/i18n/index.d.ts.map +1 -1
  223. package/src/lib/i18n/index.js +2 -2
  224. package/src/lib/i18n/index.js.map +1 -1
  225. package/src/lib/index.d.ts +4 -0
  226. package/src/lib/index.d.ts.map +1 -1
  227. package/src/lib/index.js +4 -0
  228. package/src/lib/index.js.map +1 -1
  229. package/src/lib/init.d.ts +10 -0
  230. package/src/lib/init.d.ts.map +1 -1
  231. package/src/lib/init.js +20 -0
  232. package/src/lib/init.js.map +1 -1
  233. package/src/lib/interfaces/blocks/headers/index.d.ts +1 -0
  234. package/src/lib/interfaces/blocks/headers/index.d.ts.map +1 -1
  235. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts +63 -0
  236. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts.map +1 -0
  237. package/src/lib/interfaces/{storage/superCbl.js → blocks/headers/superCblHeader.js} +1 -1
  238. package/src/lib/interfaces/blocks/headers/superCblHeader.js.map +1 -0
  239. package/src/lib/interfaces/constants.d.ts +29 -0
  240. package/src/lib/interfaces/constants.d.ts.map +1 -1
  241. package/src/lib/interfaces/serviceProvider.interface.d.ts +2 -1
  242. package/src/lib/interfaces/serviceProvider.interface.d.ts.map +1 -1
  243. package/src/lib/interfaces/services/cblServices.d.ts +148 -0
  244. package/src/lib/interfaces/services/cblServices.d.ts.map +1 -0
  245. package/src/lib/interfaces/services/cblServices.js +11 -0
  246. package/src/lib/interfaces/services/cblServices.js.map +1 -0
  247. package/src/lib/interfaces/services/index.d.ts +1 -0
  248. package/src/lib/interfaces/services/index.d.ts.map +1 -1
  249. package/src/lib/interfaces/storage/index.d.ts +0 -1
  250. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  251. package/src/lib/logging/blockLogger.d.ts +212 -0
  252. package/src/lib/logging/blockLogger.d.ts.map +1 -0
  253. package/src/lib/logging/blockLogger.js +327 -0
  254. package/src/lib/logging/blockLogger.js.map +1 -0
  255. package/src/lib/logging/index.d.ts +24 -0
  256. package/src/lib/logging/index.d.ts.map +1 -0
  257. package/src/lib/logging/index.js +27 -0
  258. package/src/lib/logging/index.js.map +1 -0
  259. package/src/lib/quorum.d.ts.map +1 -1
  260. package/src/lib/quorum.js +5 -4
  261. package/src/lib/quorum.js.map +1 -1
  262. package/src/lib/quorumDataRecord.d.ts.map +1 -1
  263. package/src/lib/quorumDataRecord.js +3 -2
  264. package/src/lib/quorumDataRecord.js.map +1 -1
  265. package/src/lib/schemas/network/networkDocumentSchema.d.ts.map +1 -1
  266. package/src/lib/schemas/network/networkDocumentSchema.js +9 -8
  267. package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
  268. package/src/lib/schemas/quorumDocument.d.ts.map +1 -1
  269. package/src/lib/schemas/quorumDocument.js +6 -4
  270. package/src/lib/schemas/quorumDocument.js.map +1 -1
  271. package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
  272. package/src/lib/services/blockCapacity.service.js +14 -5
  273. package/src/lib/services/blockCapacity.service.js.map +1 -1
  274. package/src/lib/services/blockFormatService.d.ts +56 -0
  275. package/src/lib/services/blockFormatService.d.ts.map +1 -0
  276. package/src/lib/services/blockFormatService.js +282 -0
  277. package/src/lib/services/blockFormatService.js.map +1 -0
  278. package/src/lib/services/blockService.d.ts +6 -0
  279. package/src/lib/services/blockService.d.ts.map +1 -1
  280. package/src/lib/services/blockService.js +120 -18
  281. package/src/lib/services/blockService.js.map +1 -1
  282. package/src/lib/services/cblService.d.ts +159 -1
  283. package/src/lib/services/cblService.d.ts.map +1 -1
  284. package/src/lib/services/cblService.js +498 -17
  285. package/src/lib/services/cblService.js.map +1 -1
  286. package/src/lib/services/index.d.ts +0 -2
  287. package/src/lib/services/index.d.ts.map +1 -1
  288. package/src/lib/services/index.js +0 -2
  289. package/src/lib/services/index.js.map +1 -1
  290. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  291. package/src/lib/services/member/memberCblService.js +11 -8
  292. package/src/lib/services/member/memberCblService.js.map +1 -1
  293. package/src/lib/services/memberStore.d.ts.map +1 -1
  294. package/src/lib/services/memberStore.js +20 -28
  295. package/src/lib/services/memberStore.js.map +1 -1
  296. package/src/lib/services/sealing.service.d.ts.map +1 -1
  297. package/src/lib/services/sealing.service.js +2 -1
  298. package/src/lib/services/sealing.service.js.map +1 -1
  299. package/src/lib/services/service.provider.d.ts.map +1 -1
  300. package/src/lib/services/service.provider.js +3 -11
  301. package/src/lib/services/service.provider.js.map +1 -1
  302. package/src/lib/strings/englishUs.js +392 -392
  303. package/src/lib/strings/englishUs.js.map +1 -1
  304. package/src/lib/test/service.initializer.helper.d.ts +2 -1
  305. package/src/lib/test/service.initializer.helper.d.ts.map +1 -1
  306. package/src/lib/test/service.initializer.helper.js +11 -15
  307. package/src/lib/test/service.initializer.helper.js.map +1 -1
  308. package/src/lib/utils/constantTime.d.ts +112 -0
  309. package/src/lib/utils/constantTime.d.ts.map +1 -0
  310. package/src/lib/utils/constantTime.js +180 -0
  311. package/src/lib/utils/constantTime.js.map +1 -0
  312. package/src/lib/utils/constantTimeXor.d.ts +76 -0
  313. package/src/lib/utils/constantTimeXor.d.ts.map +1 -0
  314. package/src/lib/utils/constantTimeXor.js +122 -0
  315. package/src/lib/utils/constantTimeXor.js.map +1 -0
  316. package/src/lib/utils/dateUtils.d.ts +67 -0
  317. package/src/lib/utils/dateUtils.d.ts.map +1 -0
  318. package/src/lib/utils/dateUtils.js +136 -0
  319. package/src/lib/utils/dateUtils.js.map +1 -0
  320. package/src/lib/utils/index.d.ts +57 -0
  321. package/src/lib/utils/index.d.ts.map +1 -1
  322. package/src/lib/utils/index.js +69 -0
  323. package/src/lib/utils/index.js.map +1 -1
  324. package/src/lib/utils/typeGuards.d.ts +102 -0
  325. package/src/lib/utils/typeGuards.d.ts.map +1 -0
  326. package/src/lib/utils/typeGuards.js +244 -0
  327. package/src/lib/utils/typeGuards.js.map +1 -0
  328. package/src/lib/enumerations/stringNames.d.ts.map +0 -1
  329. package/src/lib/enumerations/stringNames.js +0 -436
  330. package/src/lib/enumerations/stringNames.js.map +0 -1
  331. package/src/lib/errors/superCbl.d.ts +0 -24
  332. package/src/lib/errors/superCbl.d.ts.map +0 -1
  333. package/src/lib/errors/superCbl.js +0 -43
  334. package/src/lib/errors/superCbl.js.map +0 -1
  335. package/src/lib/interfaces/storage/superCbl.d.ts +0 -102
  336. package/src/lib/interfaces/storage/superCbl.d.ts.map +0 -1
  337. package/src/lib/interfaces/storage/superCbl.js.map +0 -1
  338. package/src/lib/services/jsonCblCapacity.service.d.ts +0 -80
  339. package/src/lib/services/jsonCblCapacity.service.d.ts.map +0 -1
  340. package/src/lib/services/jsonCblCapacity.service.js +0 -147
  341. package/src/lib/services/jsonCblCapacity.service.js.map +0 -1
  342. package/src/lib/services/superCbl.service.d.ts +0 -68
  343. package/src/lib/services/superCbl.service.d.ts.map +0 -1
  344. package/src/lib/services/superCbl.service.js +0 -213
  345. package/src/lib/services/superCbl.service.js.map +0 -1
@@ -0,0 +1,169 @@
1
+ # Block Test Coverage Audit
2
+
3
+ **Date**: 2026-01-24
4
+ **Overall Coverage**: 61.6% statements, 46.76% branches, 51.8% functions, 62.04% lines
5
+
6
+ ## Block Files Below 90% Coverage
7
+
8
+ ### Critical Block Files (Core Block Types)
9
+
10
+ | File | Statements | Branches | Functions | Lines | Priority |
11
+ |------|-----------|----------|-----------|-------|----------|
12
+ | `lib/blocks/encrypted.ts` | 25.66% | 22% | 30.43% | 25.66% | **HIGH** |
13
+ | `lib/blocks/extendedCbl.ts` | 6.06% | 0% | 0% | 6.06% | **HIGH** |
14
+ | `lib/blocks/cblBase.ts` | 50.96% | 49.09% | 47.61% | 51.45% | **HIGH** |
15
+ | `lib/blocks/ephemeral.ts` | 66.36% | 60.46% | 93.75% | 66.36% | **MEDIUM** |
16
+ | `lib/blocks/handleTuple.ts` | 60.34% | 26.31% | 58.33% | 59.61% | **MEDIUM** |
17
+ | `lib/blocks/memoryTuple.ts` | 21.21% | 12.5% | 20% | 21.31% | **MEDIUM** |
18
+ | `lib/blocks/parity.ts` | 85.71% | 75% | 100% | 85.71% | **LOW** |
19
+ | `lib/blocks/base.ts` | 81.25% | 58.33% | 73.68% | 80.43% | **LOW** |
20
+ | `lib/blocks/cbl.ts` | 71.42% | 100% | 33.33% | 71.42% | **LOW** |
21
+ | `lib/blocks/whitened.ts` | 70.76% | 90.9% | 78.57% | 70.96% | **LOW** |
22
+ | `lib/blocks/random.ts` | 70.73% | 90% | 83.33% | 71.79% | **LOW** |
23
+
24
+ ### Block Metadata Files
25
+
26
+ | File | Statements | Branches | Functions | Lines | Priority |
27
+ |------|-----------|----------|-----------|-------|----------|
28
+ | `lib/encryptedBlockMetadata.ts` | 61.53% | 53.84% | 50% | 61.53% | **MEDIUM** |
29
+ | `lib/cblBlockMetadata.ts` | 0% | 100% | 0% | 0% | **HIGH** |
30
+ | `lib/extendedCblBlockMetadata.ts` | 0% | 100% | 0% | 0% | **HIGH** |
31
+
32
+ ### Block-Related Services
33
+
34
+ | File | Statements | Branches | Functions | Lines | Priority |
35
+ |------|-----------|----------|-----------|-------|----------|
36
+ | `lib/services/blockService.ts` | 26.95% | 10% | 25% | 26.69% | **HIGH** |
37
+ | `lib/services/tuple.service.ts` | 32.54% | 18.36% | 42.1% | 33.33% | **HIGH** |
38
+
39
+ ## Coverage Gaps by Category
40
+
41
+ ### 1. Edge Cases Not Tested
42
+
43
+ #### Empty Data Blocks
44
+ - **Missing**: Tests for blocks with zero-length data
45
+ - **Files affected**: `base.ts`, `rawData.ts`, `ephemeral.ts`
46
+ - **Lines uncovered**: Base block constructor edge cases
47
+
48
+ #### Maximum Size Blocks
49
+ - **Missing**: Tests for blocks at BlockSize limits (Small=1024, Medium=4096, Large=32768, Huge=262144)
50
+ - **Files affected**: All block types
51
+ - **Lines uncovered**: Size validation paths
52
+
53
+ #### Invalid Checksum Handling
54
+ - **Missing**: Comprehensive tests for checksum mismatch scenarios
55
+ - **Files affected**: `base.ts` (lines 248-261), `rawData.ts` (lines 86-97)
56
+ - **Lines uncovered**: Checksum validation error paths
57
+
58
+ #### Boundary Conditions
59
+ - **Missing**: Tests for:
60
+ - Blocks exactly at size boundaries
61
+ - Blocks with padding edge cases
62
+ - Blocks with maximum tuple counts
63
+ - **Files affected**: `cblBase.ts`, `handleTuple.ts`, `memoryTuple.ts`
64
+
65
+ ### 2. Error Conditions Not Tested
66
+
67
+ #### EncryptedBlock Errors (25.66% coverage)
68
+ - **Uncovered lines**: 53, 267-271, 300-314, 317, 325-354, 382, 399, 410-777
69
+ - **Missing error tests**:
70
+ - Decryption failures with invalid keys
71
+ - Encryption with missing recipients
72
+ - Malformed encrypted data parsing
73
+ - ECIES encryption/decryption errors
74
+ - Multi-recipient encryption edge cases
75
+
76
+ #### ExtendedCBL Errors (6.06% coverage)
77
+ - **Uncovered lines**: 32-269 (almost entire file)
78
+ - **Missing error tests**:
79
+ - Invalid file name encoding
80
+ - Invalid MIME type
81
+ - Extended header parsing failures
82
+ - File name length validation
83
+
84
+ #### CBLBase Errors (50.96% coverage)
85
+ - **Uncovered lines**: 108, 221-225, 248-249, 272-273, 288-330, 340, 356-390
86
+ - **Missing error tests**:
87
+ - Invalid address count
88
+ - Tuple size validation failures
89
+ - Circular dependency scenarios
90
+ - Cache invalidation edge cases
91
+
92
+ #### BlockService Errors (26.95% coverage)
93
+ - **Uncovered lines**: 46-120, 154, 156, 158, 172, 230-699, 764-833
94
+ - **Missing error tests**:
95
+ - Service initialization failures
96
+ - Block creation with invalid parameters
97
+ - Encryption service unavailable
98
+ - Validation service failures
99
+
100
+ ### 3. Constructor Invariants Not Property-Tested
101
+
102
+ #### Missing Property Tests for:
103
+ 1. **BaseBlock**: Constructor should maintain data integrity
104
+ 2. **EphemeralBlock**: Creator ID should be preserved
105
+ 3. **EncryptedBlock**: Encryption details should be cached correctly
106
+ 4. **CBLBase**: Address count should match parsed addresses
107
+ 5. **ExtendedCBL**: File metadata should round-trip correctly
108
+ 6. **WhitenedBlock**: Whitening should be reversible
109
+ 7. **RandomBlock**: Random data should have correct entropy
110
+ 8. **HandleTuple**: Tuple handles should be valid
111
+ 9. **MemoryTuple**: Memory tuples should maintain consistency
112
+
113
+ ## Recommended Test Additions
114
+
115
+ ### High Priority (Task 12.2 - Edge Cases)
116
+ 1. **Empty data block tests** - All block types with zero-length data
117
+ 2. **Maximum size block tests** - All block types at size limits
118
+ 3. **Invalid checksum tests** - Comprehensive checksum mismatch scenarios
119
+ 4. **Boundary condition tests** - Size boundaries, padding edge cases
120
+
121
+ ### High Priority (Task 12.3 - Error Conditions)
122
+ 1. **EncryptedBlock error tests** - All encryption/decryption failure paths
123
+ 2. **ExtendedCBL error tests** - File metadata validation failures
124
+ 3. **CBLBase error tests** - Address validation and cache errors
125
+ 4. **BlockService error tests** - Service initialization and operation failures
126
+
127
+ ### High Priority (Task 12.4 - Property Tests)
128
+ 1. **Block constructor property tests** - Invariants for all block types
129
+ 2. **Serialization round-trip property tests** - All block types
130
+ 3. **Immutability property tests** - Already implemented (passing)
131
+ 4. **Cache consistency property tests** - CBL and EncryptedBlock caches
132
+
133
+ ## Files Requiring Immediate Attention
134
+
135
+ ### Critical (< 30% coverage)
136
+ 1. `lib/blocks/encrypted.ts` (25.66%) - Core encryption functionality
137
+ 2. `lib/services/blockService.ts` (26.95%) - Core block operations
138
+ 3. `lib/blocks/memoryTuple.ts` (21.21%) - Tuple storage
139
+ 4. `lib/blocks/extendedCbl.ts` (6.06%) - Extended CBL functionality
140
+ 5. `lib/cblBlockMetadata.ts` (0%) - CBL metadata
141
+ 6. `lib/extendedCblBlockMetadata.ts` (0%) - Extended CBL metadata
142
+
143
+ ### Important (30-70% coverage)
144
+ 1. `lib/blocks/cblBase.ts` (50.96%) - CBL base functionality
145
+ 2. `lib/blocks/ephemeral.ts` (66.36%) - Ephemeral blocks
146
+ 3. `lib/blocks/handleTuple.ts` (60.34%) - Handle tuples
147
+ 4. `lib/encryptedBlockMetadata.ts` (61.53%) - Encrypted metadata
148
+ 5. `lib/services/tuple.service.ts` (32.54%) - Tuple service
149
+
150
+ ## Coverage Goal
151
+
152
+ **Target**: 90% coverage for all block-related files
153
+ **Current**: 61.6% overall, with critical block files at 25-50%
154
+ **Gap**: Need to add approximately 200-300 test cases to reach target
155
+
156
+ ## Notes
157
+
158
+ - Existing property tests are passing and provide good coverage for:
159
+ - XOR operations (constantTimeXor)
160
+ - Type guards (typeGuards)
161
+ - Date utilities (dateUtils)
162
+ - Block immutability (immutability.property.spec.ts)
163
+ - CBL consistency (cbl.consistency.property.spec.ts)
164
+
165
+ - Need to focus on:
166
+ - EncryptedBlock encryption/decryption paths
167
+ - ExtendedCBL file metadata handling
168
+ - BlockService initialization and operations
169
+ - Error condition coverage across all block types
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightchain/brightchain-lib",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "BrightChain core library - browser-compatible blockchain storage",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
@@ -37,7 +37,7 @@
37
37
  "author": "Digital Defiance",
38
38
  "license": "MIT",
39
39
  "dependencies": {
40
- "@digitaldefiance/ecies-lib": "^4.13.1",
40
+ "@digitaldefiance/ecies-lib": "^4.13.8",
41
41
  "@digitaldefiance/i18n-lib": "^3.8.16",
42
42
  "tslib": "^2.3.0"
43
43
  },
package/src/browser.d.ts CHANGED
@@ -6,21 +6,18 @@ export * from './lib/stores/memoryBlockStore';
6
6
  export { BaseBlock } from './lib/blocks/base';
7
7
  export { createBlockHandle, isBlockHandle, type BlockHandle, } from './lib/blocks/handle';
8
8
  export { RawDataBlock } from './lib/blocks/rawData';
9
+ export { constantTimeXor, constantTimeXorMultiple, XorLengthMismatchError, } from './lib/utils/constantTimeXor';
9
10
  export { ServiceProvider } from './lib/services/service.provider';
10
11
  export { initializeBrightChain } from './lib/init';
11
12
  export { Checksum } from './lib/types/checksum';
12
13
  export { CBLService } from './lib/services/cblService';
13
14
  export { ChecksumService } from './lib/services/checksum.service';
14
- export { JsonCBLCapacityCalculator } from './lib/services/jsonCblCapacity.service';
15
15
  export { MessageCBLService } from './lib/services/messaging/messageCBLService';
16
- export { SuperCBLService, parseCBLData } from './lib/services/superCbl.service';
17
16
  export { MessageDeliveryStatus } from './lib/enumerations/messaging/messageDeliveryStatus';
18
17
  export { MessageEncryptionScheme } from './lib/enumerations/messaging/messageEncryptionScheme';
19
18
  export { MessagePriority } from './lib/enumerations/messaging/messagePriority';
20
19
  export type { IMessageMetadata } from './lib/interfaces/messaging/messageMetadata';
21
20
  export type { IMessageCBLOptions } from './lib/services/messaging/messageCBLService';
22
21
  export type { BlockInfo, FileReceipt } from './lib/brightChain';
23
- export { SuperCBLError, SuperCBLErrorType } from './lib/errors/superCbl';
24
22
  export type { CBLMagnetComponents, CBLStorageResult, CBLWhiteningOptions, } from './lib/interfaces/storage/cblWhitening';
25
- export type { CBLData, CBLType, CBLv1, RegularCBLv2, SubCBL, SuperCBL, SuperCBLConfig, SuperCBLCreationResult, } from './lib/interfaces/storage/superCbl';
26
23
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,sBAAsB,GACvB,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC"}
package/src/browser.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Minimal browser-compatible exports
3
3
  // Only exports core functionality that works without Node.js modules
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.SuperCBLErrorType = exports.SuperCBLError = exports.MessagePriority = exports.MessageEncryptionScheme = exports.MessageDeliveryStatus = exports.parseCBLData = exports.SuperCBLService = exports.MessageCBLService = exports.JsonCBLCapacityCalculator = exports.ChecksumService = exports.CBLService = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
5
+ exports.MessagePriority = exports.MessageEncryptionScheme = exports.MessageDeliveryStatus = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.XorLengthMismatchError = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./lib/brightChain"), exports);
8
8
  tslib_1.__exportStar(require("./lib/enumerations/blockSize"), exports);
@@ -17,6 +17,11 @@ Object.defineProperty(exports, "createBlockHandle", { enumerable: true, get: fun
17
17
  Object.defineProperty(exports, "isBlockHandle", { enumerable: true, get: function () { return handle_1.isBlockHandle; } });
18
18
  var rawData_1 = require("./lib/blocks/rawData");
19
19
  Object.defineProperty(exports, "RawDataBlock", { enumerable: true, get: function () { return rawData_1.RawDataBlock; } });
20
+ // Export constant-time XOR utilities (browser-compatible)
21
+ var constantTimeXor_1 = require("./lib/utils/constantTimeXor");
22
+ Object.defineProperty(exports, "constantTimeXor", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXor; } });
23
+ Object.defineProperty(exports, "constantTimeXorMultiple", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXorMultiple; } });
24
+ Object.defineProperty(exports, "XorLengthMismatchError", { enumerable: true, get: function () { return constantTimeXor_1.XorLengthMismatchError; } });
20
25
  // Export ServiceProvider for advanced usage
21
26
  var service_provider_1 = require("./lib/services/service.provider");
22
27
  Object.defineProperty(exports, "ServiceProvider", { enumerable: true, get: function () { return service_provider_1.ServiceProvider; } });
@@ -31,13 +36,8 @@ var cblService_1 = require("./lib/services/cblService");
31
36
  Object.defineProperty(exports, "CBLService", { enumerable: true, get: function () { return cblService_1.CBLService; } });
32
37
  var checksum_service_1 = require("./lib/services/checksum.service");
33
38
  Object.defineProperty(exports, "ChecksumService", { enumerable: true, get: function () { return checksum_service_1.ChecksumService; } });
34
- var jsonCblCapacity_service_1 = require("./lib/services/jsonCblCapacity.service");
35
- Object.defineProperty(exports, "JsonCBLCapacityCalculator", { enumerable: true, get: function () { return jsonCblCapacity_service_1.JsonCBLCapacityCalculator; } });
36
39
  var messageCBLService_1 = require("./lib/services/messaging/messageCBLService");
37
40
  Object.defineProperty(exports, "MessageCBLService", { enumerable: true, get: function () { return messageCBLService_1.MessageCBLService; } });
38
- var superCbl_service_1 = require("./lib/services/superCbl.service");
39
- Object.defineProperty(exports, "SuperCBLService", { enumerable: true, get: function () { return superCbl_service_1.SuperCBLService; } });
40
- Object.defineProperty(exports, "parseCBLData", { enumerable: true, get: function () { return superCbl_service_1.parseCBLData; } });
41
41
  // Export messaging enums and interfaces
42
42
  var messageDeliveryStatus_1 = require("./lib/enumerations/messaging/messageDeliveryStatus");
43
43
  Object.defineProperty(exports, "MessageDeliveryStatus", { enumerable: true, get: function () { return messageDeliveryStatus_1.MessageDeliveryStatus; } });
@@ -45,7 +45,4 @@ var messageEncryptionScheme_1 = require("./lib/enumerations/messaging/messageEnc
45
45
  Object.defineProperty(exports, "MessageEncryptionScheme", { enumerable: true, get: function () { return messageEncryptionScheme_1.MessageEncryptionScheme; } });
46
46
  var messagePriority_1 = require("./lib/enumerations/messaging/messagePriority");
47
47
  Object.defineProperty(exports, "MessagePriority", { enumerable: true, get: function () { return messagePriority_1.MessagePriority; } });
48
- var superCbl_1 = require("./lib/errors/superCbl");
49
- Object.defineProperty(exports, "SuperCBLError", { enumerable: true, get: function () { return superCbl_1.SuperCBLError; } });
50
- Object.defineProperty(exports, "SuperCBLErrorType", { enumerable: true, get: function () { return superCbl_1.SuperCBLErrorType; } });
51
48
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,kFAAmF;AAA1E,oIAAA,yBAAyB,OAAA;AAClC,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAC1B,oEAAgF;AAAvE,mHAAA,eAAe,OAAA;AAAE,gHAAA,YAAY,OAAA;AAEtC,wCAAwC;AACxC,4FAA2F;AAAlF,8HAAA,qBAAqB,OAAA;AAC9B,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAMxB,kDAAyE;AAAhE,yGAAA,aAAa,OAAA;AAAE,6GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,0DAA0D;AAC1D,+DAIqC;AAHnC,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AACvB,yHAAA,sBAAsB,OAAA;AAGxB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,4FAA2F;AAAlF,8HAAA,qBAAqB,OAAA;AAC9B,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA"}
@@ -18,20 +18,21 @@ export declare class BlockMetadata implements IBaseBlockMetadata {
18
18
  * @returns JSON representation of metadata
19
19
  */
20
20
  toJson(): string;
21
- static fromJsonValidator(data: any): void;
22
- static fromJsonAdditionalData<T extends Record<string, any>>(data: any): T;
23
21
  /**
24
- * Parse metadata from JSON representation.
22
+ * Parse metadata from JSON representation using type guards.
25
23
  * Handles:
26
- * 1. Type conversion
27
- * 2. Optional fields
28
- * 3. Custom attributes
24
+ * 1. Type validation with descriptive errors
25
+ * 2. Type conversion
26
+ * 3. Optional fields
27
+ * 4. Custom attributes
28
+ * 5. Robust date parsing with timezone support
29
29
  *
30
30
  * @param json - JSON string containing metadata
31
- * @returns Parsed metadata object
32
- * @throws If JSON is invalid or required fields are missing
31
+ * @returns Parsed BlockMetadata instance
32
+ * @throws JsonValidationError if JSON is invalid or required fields are missing/invalid
33
33
  */
34
- static fromJson<B extends BlockMetadata, T extends Record<string, any>>(json: string): B & T;
34
+ static fromJson(json: string): BlockMetadata;
35
+ static fromJsonAdditionalData<T extends Record<string, any>>(data: any): T;
35
36
  get size(): BlockSize;
36
37
  get type(): BlockType;
37
38
  get dataType(): BlockDataType;
@@ -1 +1 @@
1
- {"version":3,"file":"blockMetadata.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF;;;GAGG;AACH,qBAAa,aAAc,YAAW,kBAAkB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAO;gBAGlC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,OAAa;IAS1B;;;OAGG;IACI,MAAM,IAAI,MAAM;WAUT,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;WASlC,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,IAAI,EAAE,GAAG,GACR,CAAC;IAIJ;;;;;;;;;;OAUG;WACW,QAAQ,CACpB,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;IAyBtB,IAAW,IAAI,IAAI,SAAS,CAE3B;IACD,IAAW,IAAI,IAAI,SAAS,CAE3B;IACD,IAAW,QAAQ,IAAI,aAAa,CAEnC;IACD,IAAW,oBAAoB,IAAI,MAAM,CAExC;IACD,IAAW,WAAW,IAAI,IAAI,CAE7B;CACF"}
1
+ {"version":3,"file":"blockMetadata.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAIhF;;;GAGG;AACH,qBAAa,aAAc,YAAW,kBAAkB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAO;gBAGlC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,OAAa;IAS1B;;;OAGG;IACI,MAAM,IAAI,MAAM;IAUvB;;;;;;;;;;;;OAYG;WACW,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;WAiBrC,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,IAAI,EAAE,GAAG,GACR,CAAC;IAIJ,IAAW,IAAI,IAAI,SAAS,CAE3B;IACD,IAAW,IAAI,IAAI,SAAS,CAE3B;IACD,IAAW,QAAQ,IAAI,aAAa,CAEnC;IACD,IAAW,oBAAoB,IAAI,MAAM,CAExC;IACD,IAAW,WAAW,IAAI,IAAI,CAE7B;CACF"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BlockMetadata = void 0;
4
- const blockMetadataErrorType_1 = require("./enumerations/blockMetadataErrorType");
5
- const block_1 = require("./errors/block");
4
+ const typeGuards_1 = require("./utils/typeGuards");
5
+ const dateUtils_1 = require("./utils/dateUtils");
6
6
  /**
7
7
  * BlockMetadata provides utility functions for working with block metadata.
8
8
  * These functions ensure consistent metadata handling across the system.
@@ -25,48 +25,32 @@ class BlockMetadata {
25
25
  type: this.type,
26
26
  dataType: this.dataType,
27
27
  lengthWithoutPadding: this.lengthWithoutPadding,
28
- dateCreated: this.dateCreated,
28
+ dateCreated: this.dateCreated.toISOString(),
29
29
  });
30
30
  }
31
- static fromJsonValidator(data) {
32
- // Validate required fields
33
- if (!data.size || !data.type || !data.dataType || !data.dateCreated) {
34
- throw new block_1.BlockMetadataError(blockMetadataErrorType_1.BlockMetadataErrorType.MissingRequiredMetadata);
35
- }
36
- }
37
- static fromJsonAdditionalData(data) {
38
- return {};
39
- }
40
31
  /**
41
- * Parse metadata from JSON representation.
32
+ * Parse metadata from JSON representation using type guards.
42
33
  * Handles:
43
- * 1. Type conversion
44
- * 2. Optional fields
45
- * 3. Custom attributes
34
+ * 1. Type validation with descriptive errors
35
+ * 2. Type conversion
36
+ * 3. Optional fields
37
+ * 4. Custom attributes
38
+ * 5. Robust date parsing with timezone support
46
39
  *
47
40
  * @param json - JSON string containing metadata
48
- * @returns Parsed metadata object
49
- * @throws If JSON is invalid or required fields are missing
41
+ * @returns Parsed BlockMetadata instance
42
+ * @throws JsonValidationError if JSON is invalid or required fields are missing/invalid
50
43
  */
51
44
  static fromJson(json) {
52
- try {
53
- const data = JSON.parse(json);
54
- // Validate required fields
55
- this.fromJsonValidator(data);
56
- // Convert types and maintain extensibility
57
- return {
58
- ...data,
59
- ...this.fromJsonAdditionalData(data),
60
- dateCreated: data.dateCreated, // Already a string
61
- size: data.size,
62
- type: data.type,
63
- dataType: data.dataType,
64
- lengthWithoutPadding: data.lengthWithoutPadding,
65
- };
66
- }
67
- catch (error) {
68
- throw new Error(`Failed to parse metadata: ${error instanceof Error ? error.message : 'Unknown error'}`);
69
- }
45
+ // Use type guard to validate and parse
46
+ const data = (0, typeGuards_1.parseBlockMetadataJson)(json);
47
+ // Parse date using robust date utilities
48
+ const dateCreated = (0, dateUtils_1.parseDate)(data.dateCreated);
49
+ // Create a proper BlockMetadata instance
50
+ return new BlockMetadata(data.size, data.type, data.dataType, data.lengthWithoutPadding, dateCreated);
51
+ }
52
+ static fromJsonAdditionalData(data) {
53
+ return {};
70
54
  }
71
55
  get size() {
72
56
  return this._size;
@@ -1 +1 @@
1
- {"version":3,"file":"blockMetadata.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":";;;AAEA,kFAA+E;AAG/E,0CAAoD;AAGpD;;;GAGG;AACH,MAAa,aAAa;IAOxB,YACE,IAAe,EACf,IAAe,EACf,QAAuB,EACvB,oBAA4B,EAC5B,WAAW,GAAG,IAAI,IAAI,EAAE;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,IAAS;QACvC,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpE,MAAM,IAAI,0BAAkB,CAC1B,+CAAsB,CAAC,uBAAuB,CAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAClC,IAAS;QAET,OAAO,EAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,QAAQ,CAGpB,IAAY;QACZ,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,2BAA2B;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE7B,2CAA2C;YAC3C,OAAO;gBACL,GAAG,IAAI;gBACP,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;gBACpC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,mBAAmB;gBAClD,IAAI,EAAE,IAAI,CAAC,IAAiB;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAiB;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAyB;gBACxC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;aACvC,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,6BACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AAxGD,sCAwGC"}
1
+ {"version":3,"file":"blockMetadata.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockMetadata.ts"],"names":[],"mappings":";;;AAOA,mDAA4D;AAC5D,iDAA8C;AAE9C;;;GAGG;AACH,MAAa,aAAa;IAOxB,YACE,IAAe,EACf,IAAe,EACf,QAAuB,EACvB,oBAA4B,EAC5B,WAAW,GAAG,IAAI,IAAI,EAAE;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,QAAQ,CAAC,IAAY;QACjC,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;QAE1C,yCAAyC;QACzC,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhD,yCAAyC;QACzC,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,IAAiB,EACtB,IAAI,CAAC,IAAiB,EACtB,IAAI,CAAC,QAAyB,EAC9B,IAAI,CAAC,oBAAoB,EACzB,WAAW,CACZ,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAClC,IAAS;QAET,OAAO,EAAO,CAAC;IACjB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AAtFD,sCAsFC"}
@@ -19,6 +19,26 @@ import { Checksum } from '../types/checksum';
19
19
  * - Data Type
20
20
  * - Checksum
21
21
  * - Date Created
22
+ *
23
+ * **Immutability Contract:**
24
+ * All blocks are immutable after construction. The underlying data buffer
25
+ * should not be modified after the block is created. This ensures:
26
+ * - Cache consistency: Cached values remain valid throughout the block's lifetime
27
+ * - Thread safety: Blocks can be safely shared across contexts
28
+ * - Data integrity: Block checksums remain valid
29
+ *
30
+ * While TypeScript/JavaScript cannot enforce true immutability on Uint8Array,
31
+ * the block system is designed with the expectation that:
32
+ * 1. Block data is never modified after construction
33
+ * 2. Cached values (encryption details, address counts) are computed once
34
+ * 3. All getters return consistent values across multiple calls
35
+ *
36
+ * Modifying block data after construction will result in:
37
+ * - Invalid checksums
38
+ * - Stale cached values
39
+ * - Undefined behavior in validation and encryption operations
40
+ *
41
+ * @see Requirements 6.3, 6.4
22
42
  */
23
43
  export declare abstract class BaseBlock implements IBaseBlock {
24
44
  protected readonly _blockSize: BlockSize;
@@ -119,6 +139,8 @@ export declare abstract class BaseBlock implements IBaseBlock {
119
139
  abstract get layerPayloadSize(): number;
120
140
  /**
121
141
  * Get all layers in the inheritance chain
142
+ * This represents the class hierarchy, not instance relationships.
143
+ * Used for calculating total overhead from all block types in the hierarchy.
122
144
  */
123
145
  get layers(): IBaseBlock[];
124
146
  /**
@@ -127,6 +149,7 @@ export declare abstract class BaseBlock implements IBaseBlock {
127
149
  get lowerLayerHeaderSize(): number;
128
150
  /**
129
151
  * Get the parent layer in the inheritance chain
152
+ * Returns null as we don't track parent instances in the current architecture.
130
153
  */
131
154
  get parent(): IBaseBlock | null;
132
155
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AACH,8BAAsB,SAAU,YAAW,UAAU;IACnD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD;;;;;;;;;;OAUG;IACH,SAAS,aACP,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,EACvB,OAAO,UAAO,EACd,UAAU,UAAO;IA+BnB;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,QAAQ,CAEhC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,cAAc,CAE1C;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,IAAI,CAE7B;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,aAAa,CAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;aACa,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;aACa,YAAY,IAAI,IAAI;IAEpC;;;OAGG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACH,aAAoB,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;IAElD;;OAEG;IACH,aAAoB,iBAAiB,IAAI,MAAM,CAAC;IAEhD;;OAEG;IACH,aAAoB,eAAe,IAAI,UAAU,CAAC;IAElD;;OAEG;IACH,aAAoB,SAAS,IAAI,UAAU,CAAC;IAE5C;;OAEG;IACH,aAAoB,YAAY,IAAI,UAAU,CAAC;IAE/C;;OAEG;IACH,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C;;OAEG;IACH,IAAW,MAAM,IAAI,UAAU,EAAE,CAMhC;IAED;;OAEG;IACH,IAAW,oBAAoB,IAAI,MAAM,CAUxC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,UAAU,GAAG,IAAI,CAGrC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,CAUjC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAatC;CACF"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,8BAAsB,SAAU,YAAW,UAAU;IACnD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD;;;;;;;;;;OAUG;IACH,SAAS,aACP,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,EACvB,OAAO,UAAO,EACd,UAAU,UAAO;IA+BnB;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,QAAQ,CAEhC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,cAAc,CAE1C;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,IAAI,CAE7B;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,aAAa,CAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;aACa,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;aACa,YAAY,IAAI,IAAI;IAEpC;;;OAGG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACH,aAAoB,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;IAElD;;OAEG;IACH,aAAoB,iBAAiB,IAAI,MAAM,CAAC;IAEhD;;OAEG;IACH,aAAoB,eAAe,IAAI,UAAU,CAAC;IAElD;;OAEG;IACH,aAAoB,SAAS,IAAI,UAAU,CAAC;IAE5C;;OAEG;IACH,aAAoB,YAAY,IAAI,UAAU,CAAC;IAE/C;;OAEG;IACH,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C;;;;OAIG;IACH,IAAW,MAAM,IAAI,UAAU,EAAE,CAMhC;IAED;;OAEG;IACH,IAAW,oBAAoB,IAAI,MAAM,CAGxC;IAED;;;OAGG;IACH,IAAW,MAAM,IAAI,UAAU,GAAG,IAAI,CAIrC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,CAUjC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAatC;CACF"}
@@ -18,6 +18,26 @@ const block_1 = require("../errors/block");
18
18
  * - Data Type
19
19
  * - Checksum
20
20
  * - Date Created
21
+ *
22
+ * **Immutability Contract:**
23
+ * All blocks are immutable after construction. The underlying data buffer
24
+ * should not be modified after the block is created. This ensures:
25
+ * - Cache consistency: Cached values remain valid throughout the block's lifetime
26
+ * - Thread safety: Blocks can be safely shared across contexts
27
+ * - Data integrity: Block checksums remain valid
28
+ *
29
+ * While TypeScript/JavaScript cannot enforce true immutability on Uint8Array,
30
+ * the block system is designed with the expectation that:
31
+ * 1. Block data is never modified after construction
32
+ * 2. Cached values (encryption details, address counts) are computed once
33
+ * 3. All getters return consistent values across multiple calls
34
+ *
35
+ * Modifying block data after construction will result in:
36
+ * - Invalid checksums
37
+ * - Stale cached values
38
+ * - Undefined behavior in validation and encryption operations
39
+ *
40
+ * @see Requirements 6.3, 6.4
21
41
  */
22
42
  class BaseBlock {
23
43
  /**
@@ -116,33 +136,31 @@ class BaseBlock {
116
136
  }
117
137
  /**
118
138
  * Get all layers in the inheritance chain
139
+ * This represents the class hierarchy, not instance relationships.
140
+ * Used for calculating total overhead from all block types in the hierarchy.
119
141
  */
120
142
  get layers() {
121
- const collectLayers = (block) => {
122
- const parent = block.parent;
123
- return parent ? [...collectLayers(parent), block] : [block];
124
- };
125
- return collectLayers(this);
143
+ // For a single block instance, the only "layer" is itself
144
+ // The concept of multiple layers would apply if we had composition
145
+ // (e.g., an encrypted block wrapping a data block), but in our
146
+ // current architecture, we use inheritance instead.
147
+ return [this];
126
148
  }
127
149
  /**
128
150
  * Get the total header size of all layers below this one
129
151
  */
130
152
  get lowerLayerHeaderSize() {
131
- const layers = this.layers;
132
- const currentLayerIndex = layers.indexOf(this);
133
- if (currentLayerIndex === -1) {
134
- throw new Error('Current layer not found in layers');
135
- }
136
- return layers.slice(0, currentLayerIndex).reduce((sum, layer) => {
137
- return sum + layer.layerOverheadSize;
138
- }, 0);
153
+ // Since we simplified layers to just return [this], there are no lower layers
154
+ return 0;
139
155
  }
140
156
  /**
141
157
  * Get the parent layer in the inheritance chain
158
+ * Returns null as we don't track parent instances in the current architecture.
142
159
  */
143
160
  get parent() {
144
- const proto = Object.getPrototypeOf(this);
145
- return proto === BaseBlock.prototype ? null : proto;
161
+ // In the current architecture, blocks don't have parent block instances
162
+ // They use class inheritance, but we don't track parent instances
163
+ return null;
146
164
  }
147
165
  /**
148
166
  * Get the total header overhead from all layers
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
- import { type PlatformID } from '@digitaldefiance/ecies-lib';
1
+ import { Member, type PlatformID } from '@digitaldefiance/ecies-lib';
2
+ import { BlockSize } from '../enumerations/blockSize';
2
3
  import { IConstituentBlockListBlock } from '../interfaces/blocks/cbl';
4
+ import { ICBLServices } from '../interfaces/services/cblServices';
3
5
  import { CBLBase } from './cblBase';
4
6
  /**
5
7
  * Constituent Block List
@@ -11,8 +13,39 @@ import { CBLBase } from './cblBase';
11
13
  *
12
14
  * The signature is placed at the end of the header and signs both the header fields
13
15
  * and the address data that follows, ensuring integrity of the entire structure.
16
+ *
17
+ * This class supports dependency injection for services to break circular
18
+ * dependencies. When services are not provided, it falls back to using
19
+ * ServiceLocator for backward compatibility.
20
+ *
21
+ * @typeParam TID - The platform ID type (defaults to Uint8Array)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Using dependency injection (recommended)
26
+ * const services: ICBLServices<Uint8Array> = {
27
+ * checksumService: checksumService,
28
+ * cblService: cblService,
29
+ * };
30
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize, services);
31
+ *
32
+ * // Using ServiceLocator (backward compatible)
33
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize);
34
+ * ```
35
+ *
36
+ * @requirements 2.1, 2.2, 2.4
14
37
  */
15
38
  export declare class ConstituentBlockListBlock<TID extends PlatformID = Uint8Array> extends CBLBase<TID> implements IConstituentBlockListBlock<TID> {
39
+ /**
40
+ * Create a new CBL block
41
+ * @param data The CBL data (header + addresses, optionally padded)
42
+ * @param creator The creator of the CBL
43
+ * @param blockSize Optional block size for signature validation (required if data is unpadded)
44
+ * @param services Optional injected services for dependency injection (breaks circular dependencies)
45
+ *
46
+ * @requirements 2.1, 2.2, 2.4
47
+ */
48
+ constructor(data: Uint8Array, creator: Member<TID>, blockSize?: BlockSize, services?: ICBLServices<TID>);
16
49
  /**
17
50
  * Get the maximum number of addresses that can be stored in a CBL block.
18
51
  * Does not account for encryption overhead.
@@ -1 +1 @@
1
- {"version":3,"file":"cbl.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cbl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,qBAAa,yBAAyB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CACxE,SAAQ,OAAO,CAAC,GAAG,CACnB,YAAW,0BAA0B,CAAC,GAAG,CAAC;IAE1C;;;;OAIG;IACH,IAAW,eAAe,IAAI,MAAM,CAKnC;IAED;;;;OAIG;IACH,IAAW,wBAAwB,IAAI,MAAM,CAK5C;CACF"}
1
+ {"version":3,"file":"cbl.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cbl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,yBAAyB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CACxE,SAAQ,OAAO,CAAC,GAAG,CACnB,YAAW,0BAA0B,CAAC,GAAG,CAAC;IAE1C;;;;;;;;OAQG;gBAED,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;IAK9B;;;;OAIG;IACH,IAAW,eAAe,IAAI,MAAM,CAKnC;IAED;;;;OAIG;IACH,IAAW,wBAAwB,IAAI,MAAM,CAK5C;CACF"}