@brightchain/brightchain-lib 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) 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 +36 -3
  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 +106 -52
  22. package/src/lib/blocks/cblBase.js.map +1 -1
  23. package/src/lib/blocks/encrypted.d.ts +34 -5
  24. package/src/lib/blocks/encrypted.d.ts.map +1 -1
  25. package/src/lib/blocks/encrypted.js +129 -24
  26. package/src/lib/blocks/encrypted.js.map +1 -1
  27. package/src/lib/blocks/encryptedBlockFactory.js +2 -2
  28. package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
  29. package/src/lib/blocks/ephemeral.d.ts +35 -9
  30. package/src/lib/blocks/ephemeral.d.ts.map +1 -1
  31. package/src/lib/blocks/ephemeral.js +71 -42
  32. package/src/lib/blocks/ephemeral.js.map +1 -1
  33. package/src/lib/blocks/extendedCbl.d.ts +1 -1
  34. package/src/lib/blocks/extendedCbl.d.ts.map +1 -1
  35. package/src/lib/blocks/extendedCbl.js +7 -7
  36. package/src/lib/blocks/extendedCbl.js.map +1 -1
  37. package/src/lib/blocks/handle.js +2 -2
  38. package/src/lib/blocks/handle.js.map +1 -1
  39. package/src/lib/blocks/handleTuple.js +2 -2
  40. package/src/lib/blocks/handleTuple.js.map +1 -1
  41. package/src/lib/blocks/random.d.ts +2 -1
  42. package/src/lib/blocks/random.d.ts.map +1 -1
  43. package/src/lib/blocks/random.js +7 -4
  44. package/src/lib/blocks/random.js.map +1 -1
  45. package/src/lib/blocks/rawData.d.ts +3 -1
  46. package/src/lib/blocks/rawData.d.ts.map +1 -1
  47. package/src/lib/blocks/rawData.js +31 -6
  48. package/src/lib/blocks/rawData.js.map +1 -1
  49. package/src/lib/blocks/whitened.d.ts +2 -1
  50. package/src/lib/blocks/whitened.d.ts.map +1 -1
  51. package/src/lib/blocks/whitened.js +7 -5
  52. package/src/lib/blocks/whitened.js.map +1 -1
  53. package/src/lib/config/constants.d.ts +2 -0
  54. package/src/lib/config/constants.d.ts.map +1 -0
  55. package/src/lib/config/constants.js +5 -0
  56. package/src/lib/config/constants.js.map +1 -0
  57. package/src/lib/constants.d.ts +37 -0
  58. package/src/lib/constants.d.ts.map +1 -1
  59. package/src/lib/constants.js +40 -1
  60. package/src/lib/constants.js.map +1 -1
  61. package/src/lib/cpus/index.d.ts +2 -3
  62. package/src/lib/cpus/index.d.ts.map +1 -1
  63. package/src/lib/cpus/index.js +5 -0
  64. package/src/lib/cpus/index.js.map +1 -1
  65. package/src/lib/cpus/instructionFactory.d.ts +56 -0
  66. package/src/lib/cpus/instructionFactory.d.ts.map +1 -0
  67. package/src/lib/cpus/instructionFactory.js +190 -0
  68. package/src/lib/cpus/instructionFactory.js.map +1 -0
  69. package/src/lib/cpus/instructionTables.d.ts +14 -12
  70. package/src/lib/cpus/instructionTables.d.ts.map +1 -1
  71. package/src/lib/cpus/instructionTables.js +17 -147
  72. package/src/lib/cpus/instructionTables.js.map +1 -1
  73. package/src/lib/cpus/riscvCpu.d.ts +51 -0
  74. package/src/lib/cpus/riscvCpu.d.ts.map +1 -0
  75. package/src/lib/cpus/riscvCpu.js +131 -0
  76. package/src/lib/cpus/riscvCpu.js.map +1 -0
  77. package/src/lib/documents/base/document.d.ts +1 -1
  78. package/src/lib/documents/base/document.d.ts.map +1 -1
  79. package/src/lib/documents/member/index.d.ts +2 -0
  80. package/src/lib/documents/member/index.d.ts.map +1 -1
  81. package/src/lib/documents/member/index.js +2 -0
  82. package/src/lib/documents/member/index.js.map +1 -1
  83. package/src/lib/documents/member/memberDocument.d.ts +4 -3
  84. package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
  85. package/src/lib/documents/member/memberDocument.js +11 -8
  86. package/src/lib/documents/member/memberDocument.js.map +1 -1
  87. package/src/lib/documents/member/memberHydration.d.ts.map +1 -1
  88. package/src/lib/documents/member/memberHydration.js +7 -21
  89. package/src/lib/documents/member/memberHydration.js.map +1 -1
  90. package/src/lib/documents/member/memberOperational.d.ts.map +1 -1
  91. package/src/lib/documents/member/memberOperational.js +2 -2
  92. package/src/lib/documents/member/memberOperational.js.map +1 -1
  93. package/src/lib/documents/member/memberProfileDocument.d.ts +138 -0
  94. package/src/lib/documents/member/memberProfileDocument.d.ts.map +1 -0
  95. package/src/lib/documents/member/memberProfileDocument.js +326 -0
  96. package/src/lib/documents/member/memberProfileDocument.js.map +1 -0
  97. package/src/lib/documents/member/memberProfileHydration.d.ts +12 -0
  98. package/src/lib/documents/member/memberProfileHydration.d.ts.map +1 -0
  99. package/src/lib/documents/member/memberProfileHydration.js +143 -0
  100. package/src/lib/documents/member/memberProfileHydration.js.map +1 -0
  101. package/src/lib/documents/network/networkDocument.d.ts.map +1 -1
  102. package/src/lib/documents/network/networkDocument.js +4 -3
  103. package/src/lib/documents/network/networkDocument.js.map +1 -1
  104. package/src/lib/documents/quorumDocument.d.ts +3 -14
  105. package/src/lib/documents/quorumDocument.d.ts.map +1 -1
  106. package/src/lib/documents/quorumDocument.js +4 -2
  107. package/src/lib/documents/quorumDocument.js.map +1 -1
  108. package/src/lib/encryptedBlockMetadata.d.ts +13 -5
  109. package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
  110. package/src/lib/encryptedBlockMetadata.js +31 -23
  111. package/src/lib/encryptedBlockMetadata.js.map +1 -1
  112. package/src/lib/enumerations/blockSize.d.ts +2 -2
  113. package/src/lib/enumerations/blockSize.d.ts.map +1 -1
  114. package/src/lib/enumerations/blockSize.js +15 -15
  115. package/src/lib/enumerations/blockSize.js.map +1 -1
  116. package/src/lib/enumerations/{stringNames.d.ts → brightChainStrings.d.ts} +4 -3
  117. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -0
  118. package/src/lib/enumerations/brightChainStrings.js +437 -0
  119. package/src/lib/enumerations/brightChainStrings.js.map +1 -0
  120. package/src/lib/enumerations/cblErrorType.d.ts +1 -0
  121. package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
  122. package/src/lib/enumerations/cblErrorType.js +1 -0
  123. package/src/lib/enumerations/cblErrorType.js.map +1 -1
  124. package/src/lib/enumerations/index.d.ts +1 -1
  125. package/src/lib/enumerations/index.d.ts.map +1 -1
  126. package/src/lib/enumerations/index.js +1 -1
  127. package/src/lib/enumerations/index.js.map +1 -1
  128. package/src/lib/enumerations/votingDerivationErrorType.d.ts +2 -2
  129. package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
  130. package/src/lib/enumerations/votingDerivationErrorType.js +11 -11
  131. package/src/lib/enumerations/votingDerivationErrorType.js.map +1 -1
  132. package/src/lib/ephemeralBlockMetadata.d.ts +13 -8
  133. package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
  134. package/src/lib/ephemeralBlockMetadata.js +27 -19
  135. package/src/lib/ephemeralBlockMetadata.js.map +1 -1
  136. package/src/lib/errors/block/blockAccess.d.ts +2 -2
  137. package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
  138. package/src/lib/errors/block/blockAccess.js +8 -8
  139. package/src/lib/errors/block/blockAccess.js.map +1 -1
  140. package/src/lib/errors/block/blockCapacity.d.ts +2 -2
  141. package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
  142. package/src/lib/errors/block/blockCapacity.js +8 -8
  143. package/src/lib/errors/block/blockCapacity.js.map +1 -1
  144. package/src/lib/errors/block/blockError.d.ts +2 -2
  145. package/src/lib/errors/block/blockError.d.ts.map +1 -1
  146. package/src/lib/errors/block/blockError.js +16 -16
  147. package/src/lib/errors/block/blockError.js.map +1 -1
  148. package/src/lib/errors/block/blockMetadata.d.ts +2 -2
  149. package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
  150. package/src/lib/errors/block/blockMetadata.js +8 -8
  151. package/src/lib/errors/block/blockMetadata.js.map +1 -1
  152. package/src/lib/errors/block/blockValidation.d.ts +2 -2
  153. package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
  154. package/src/lib/errors/block/blockValidation.js +36 -36
  155. package/src/lib/errors/block/blockValidation.js.map +1 -1
  156. package/src/lib/errors/block/cannotDecrypt.d.ts.map +1 -1
  157. package/src/lib/errors/block/cannotDecrypt.js +2 -2
  158. package/src/lib/errors/block/cannotDecrypt.js.map +1 -1
  159. package/src/lib/errors/block/cannotEncrypt.d.ts.map +1 -1
  160. package/src/lib/errors/block/cannotEncrypt.js +2 -2
  161. package/src/lib/errors/block/cannotEncrypt.js.map +1 -1
  162. package/src/lib/errors/blockServiceError.d.ts +2 -2
  163. package/src/lib/errors/blockServiceError.d.ts.map +1 -1
  164. package/src/lib/errors/blockServiceError.js +15 -15
  165. package/src/lib/errors/blockServiceError.js.map +1 -1
  166. package/src/lib/errors/bufferError.d.ts.map +1 -1
  167. package/src/lib/errors/bufferError.js +2 -2
  168. package/src/lib/errors/bufferError.js.map +1 -1
  169. package/src/lib/errors/cblError.d.ts +2 -2
  170. package/src/lib/errors/cblError.d.ts.map +1 -1
  171. package/src/lib/errors/cblError.js +37 -36
  172. package/src/lib/errors/cblError.js.map +1 -1
  173. package/src/lib/errors/checksumMismatch.js +2 -2
  174. package/src/lib/errors/checksumMismatch.js.map +1 -1
  175. package/src/lib/errors/disposed.js +2 -2
  176. package/src/lib/errors/disposed.js.map +1 -1
  177. package/src/lib/errors/document.d.ts +2 -2
  178. package/src/lib/errors/document.d.ts.map +1 -1
  179. package/src/lib/errors/document.js +5 -5
  180. package/src/lib/errors/document.js.map +1 -1
  181. package/src/lib/errors/eciesError.d.ts +2 -2
  182. package/src/lib/errors/eciesError.d.ts.map +1 -1
  183. package/src/lib/errors/eciesError.js +20 -20
  184. package/src/lib/errors/eciesError.js.map +1 -1
  185. package/src/lib/errors/extendedCblError.d.ts +2 -2
  186. package/src/lib/errors/extendedCblError.d.ts.map +1 -1
  187. package/src/lib/errors/extendedCblError.js +25 -25
  188. package/src/lib/errors/extendedCblError.js.map +1 -1
  189. package/src/lib/errors/failedToHydrate.js +2 -2
  190. package/src/lib/errors/failedToHydrate.js.map +1 -1
  191. package/src/lib/errors/failedToSerialize.js +2 -2
  192. package/src/lib/errors/failedToSerialize.js.map +1 -1
  193. package/src/lib/errors/fecError.d.ts +2 -2
  194. package/src/lib/errors/fecError.d.ts.map +1 -1
  195. package/src/lib/errors/fecError.js +19 -19
  196. package/src/lib/errors/fecError.js.map +1 -1
  197. package/src/lib/errors/handleTupleError.d.ts +2 -2
  198. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  199. package/src/lib/errors/handleTupleError.js +5 -5
  200. package/src/lib/errors/handleTupleError.js.map +1 -1
  201. package/src/lib/errors/index.d.ts +0 -6
  202. package/src/lib/errors/index.d.ts.map +1 -1
  203. package/src/lib/errors/index.js +0 -9
  204. package/src/lib/errors/index.js.map +1 -1
  205. package/src/lib/errors/invalidBlockSize.js +2 -2
  206. package/src/lib/errors/invalidBlockSize.js.map +1 -1
  207. package/src/lib/errors/invalidBlockSizeLength.js +2 -2
  208. package/src/lib/errors/invalidBlockSizeLength.js.map +1 -1
  209. package/src/lib/errors/invalidCredentials.js +2 -2
  210. package/src/lib/errors/invalidCredentials.js.map +1 -1
  211. package/src/lib/errors/invalidIDFormat.js +2 -2
  212. package/src/lib/errors/invalidIDFormat.js.map +1 -1
  213. package/src/lib/errors/invalidSessionID.js +2 -2
  214. package/src/lib/errors/invalidSessionID.js.map +1 -1
  215. package/src/lib/errors/invalidTupleCount.js +2 -2
  216. package/src/lib/errors/invalidTupleCount.js.map +1 -1
  217. package/src/lib/errors/isolatedKeyError.d.ts +2 -2
  218. package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
  219. package/src/lib/errors/isolatedKeyError.js +7 -7
  220. package/src/lib/errors/isolatedKeyError.js.map +1 -1
  221. package/src/lib/errors/memberError.d.ts +2 -2
  222. package/src/lib/errors/memberError.d.ts.map +1 -1
  223. package/src/lib/errors/memberError.js +27 -27
  224. package/src/lib/errors/memberError.js.map +1 -1
  225. package/src/lib/errors/memoryTupleError.d.ts +2 -2
  226. package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
  227. package/src/lib/errors/memoryTupleError.js +7 -7
  228. package/src/lib/errors/memoryTupleError.js.map +1 -1
  229. package/src/lib/errors/metadataMismatch.js +2 -2
  230. package/src/lib/errors/metadataMismatch.js.map +1 -1
  231. package/src/lib/errors/multiEncryptedError.d.ts +2 -2
  232. package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
  233. package/src/lib/errors/multiEncryptedError.js +11 -11
  234. package/src/lib/errors/multiEncryptedError.js.map +1 -1
  235. package/src/lib/errors/notImplemented.js +2 -2
  236. package/src/lib/errors/notImplemented.js.map +1 -1
  237. package/src/lib/errors/quorumError.d.ts +2 -2
  238. package/src/lib/errors/quorumError.d.ts.map +1 -1
  239. package/src/lib/errors/quorumError.js +8 -8
  240. package/src/lib/errors/quorumError.js.map +1 -1
  241. package/src/lib/errors/sealingError.d.ts +2 -2
  242. package/src/lib/errors/sealingError.d.ts.map +1 -1
  243. package/src/lib/errors/sealingError.js +9 -9
  244. package/src/lib/errors/sealingError.js.map +1 -1
  245. package/src/lib/errors/secureStorage.d.ts +2 -2
  246. package/src/lib/errors/secureStorage.d.ts.map +1 -1
  247. package/src/lib/errors/secureStorage.js +4 -4
  248. package/src/lib/errors/secureStorage.js.map +1 -1
  249. package/src/lib/errors/storeError.d.ts +2 -2
  250. package/src/lib/errors/storeError.d.ts.map +1 -1
  251. package/src/lib/errors/storeError.js +20 -20
  252. package/src/lib/errors/storeError.js.map +1 -1
  253. package/src/lib/errors/streamError.d.ts +2 -2
  254. package/src/lib/errors/streamError.d.ts.map +1 -1
  255. package/src/lib/errors/streamError.js +8 -8
  256. package/src/lib/errors/streamError.js.map +1 -1
  257. package/src/lib/errors/symmetricError.d.ts +2 -2
  258. package/src/lib/errors/symmetricError.d.ts.map +1 -1
  259. package/src/lib/errors/symmetricError.js +3 -3
  260. package/src/lib/errors/symmetricError.js.map +1 -1
  261. package/src/lib/errors/systemKeyringError.d.ts +2 -2
  262. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  263. package/src/lib/errors/systemKeyringError.js +4 -4
  264. package/src/lib/errors/systemKeyringError.js.map +1 -1
  265. package/src/lib/errors/tupleError.d.ts +2 -2
  266. package/src/lib/errors/tupleError.d.ts.map +1 -1
  267. package/src/lib/errors/tupleError.js +13 -13
  268. package/src/lib/errors/tupleError.js.map +1 -1
  269. package/src/lib/errors/typedError.d.ts +2 -2
  270. package/src/lib/errors/typedError.d.ts.map +1 -1
  271. package/src/lib/errors/typedWithReasonError.d.ts +3 -3
  272. package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
  273. package/src/lib/errors/typedWithReasonError.js.map +1 -1
  274. package/src/lib/errors/userNotFound.js +2 -2
  275. package/src/lib/errors/userNotFound.js.map +1 -1
  276. package/src/lib/errors/whitenedError.d.ts +2 -2
  277. package/src/lib/errors/whitenedError.d.ts.map +1 -1
  278. package/src/lib/errors/whitenedError.js +5 -5
  279. package/src/lib/errors/whitenedError.js.map +1 -1
  280. package/src/lib/factories/blockFactory.d.ts +23 -0
  281. package/src/lib/factories/blockFactory.d.ts.map +1 -0
  282. package/src/lib/factories/blockFactory.js +43 -0
  283. package/src/lib/factories/blockFactory.js.map +1 -0
  284. package/src/lib/i18n/index.d.ts +2 -2
  285. package/src/lib/i18n/index.d.ts.map +1 -1
  286. package/src/lib/i18n/index.js +2 -2
  287. package/src/lib/i18n/index.js.map +1 -1
  288. package/src/lib/index.d.ts +9 -0
  289. package/src/lib/index.d.ts.map +1 -1
  290. package/src/lib/index.js +12 -0
  291. package/src/lib/index.js.map +1 -1
  292. package/src/lib/init.d.ts +10 -0
  293. package/src/lib/init.d.ts.map +1 -1
  294. package/src/lib/init.js +24 -4
  295. package/src/lib/init.js.map +1 -1
  296. package/src/lib/interfaces/blockCapacity.d.ts +8 -0
  297. package/src/lib/interfaces/blockCapacity.d.ts.map +1 -1
  298. package/src/lib/interfaces/blocks/encrypted.d.ts +1 -1
  299. package/src/lib/interfaces/blocks/encrypted.d.ts.map +1 -1
  300. package/src/lib/interfaces/blocks/ephemeral.d.ts +4 -7
  301. package/src/lib/interfaces/blocks/ephemeral.d.ts.map +1 -1
  302. package/src/lib/interfaces/blocks/headers/index.d.ts +1 -0
  303. package/src/lib/interfaces/blocks/headers/index.d.ts.map +1 -1
  304. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts +63 -0
  305. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts.map +1 -0
  306. package/src/lib/interfaces/{storage/superCbl.js → blocks/headers/superCblHeader.js} +1 -1
  307. package/src/lib/interfaces/blocks/headers/superCblHeader.js.map +1 -0
  308. package/src/lib/interfaces/blocks/metadata/index.d.ts +0 -1
  309. package/src/lib/interfaces/blocks/metadata/index.d.ts.map +1 -1
  310. package/src/lib/interfaces/constants.d.ts +29 -0
  311. package/src/lib/interfaces/constants.d.ts.map +1 -1
  312. package/src/lib/interfaces/document/quorumDocument.d.ts +15 -0
  313. package/src/lib/interfaces/document/quorumDocument.d.ts.map +1 -0
  314. package/src/lib/interfaces/document/quorumDocument.js +3 -0
  315. package/src/lib/interfaces/document/quorumDocument.js.map +1 -0
  316. package/src/lib/interfaces/member/memberData.d.ts +2 -0
  317. package/src/lib/interfaces/member/memberData.d.ts.map +1 -1
  318. package/src/lib/interfaces/member/profileStorage.d.ts +77 -0
  319. package/src/lib/interfaces/member/profileStorage.d.ts.map +1 -0
  320. package/src/lib/interfaces/member/profileStorage.js +3 -0
  321. package/src/lib/interfaces/member/profileStorage.js.map +1 -0
  322. package/src/lib/interfaces/serviceProvider.interface.d.ts +11 -8
  323. package/src/lib/interfaces/serviceProvider.interface.d.ts.map +1 -1
  324. package/src/lib/interfaces/services/cblServices.d.ts +148 -0
  325. package/src/lib/interfaces/services/cblServices.d.ts.map +1 -0
  326. package/src/lib/interfaces/services/cblServices.js +11 -0
  327. package/src/lib/interfaces/services/cblServices.js.map +1 -0
  328. package/src/lib/interfaces/services/ephemeralBlockServices.d.ts +15 -0
  329. package/src/lib/interfaces/services/ephemeralBlockServices.d.ts.map +1 -0
  330. package/src/lib/interfaces/services/ephemeralBlockServices.js +3 -0
  331. package/src/lib/interfaces/services/ephemeralBlockServices.js.map +1 -0
  332. package/src/lib/interfaces/services/index.d.ts +1 -0
  333. package/src/lib/interfaces/services/index.d.ts.map +1 -1
  334. package/src/lib/interfaces/storage/index.d.ts +0 -1
  335. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  336. package/src/lib/logging/blockLogger.d.ts +218 -0
  337. package/src/lib/logging/blockLogger.d.ts.map +1 -0
  338. package/src/lib/logging/blockLogger.js +341 -0
  339. package/src/lib/logging/blockLogger.js.map +1 -0
  340. package/src/lib/logging/index.d.ts +24 -0
  341. package/src/lib/logging/index.d.ts.map +1 -0
  342. package/src/lib/logging/index.js +27 -0
  343. package/src/lib/logging/index.js.map +1 -0
  344. package/src/lib/logging/structuredLogger.d.ts +42 -0
  345. package/src/lib/logging/structuredLogger.d.ts.map +1 -0
  346. package/src/lib/logging/structuredLogger.js +93 -0
  347. package/src/lib/logging/structuredLogger.js.map +1 -0
  348. package/src/lib/primeTupleGeneratorStream.d.ts.map +1 -1
  349. package/src/lib/primeTupleGeneratorStream.js +4 -2
  350. package/src/lib/primeTupleGeneratorStream.js.map +1 -1
  351. package/src/lib/quorum.d.ts.map +1 -1
  352. package/src/lib/quorum.js +7 -5
  353. package/src/lib/quorum.js.map +1 -1
  354. package/src/lib/quorumDataRecord.d.ts +1 -1
  355. package/src/lib/quorumDataRecord.d.ts.map +1 -1
  356. package/src/lib/quorumDataRecord.js +5 -4
  357. package/src/lib/quorumDataRecord.js.map +1 -1
  358. package/src/lib/schemas/network/networkDocumentSchema.d.ts.map +1 -1
  359. package/src/lib/schemas/network/networkDocumentSchema.js +9 -8
  360. package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
  361. package/src/lib/schemas/quorumDocument.d.ts +1 -1
  362. package/src/lib/schemas/quorumDocument.d.ts.map +1 -1
  363. package/src/lib/schemas/quorumDocument.js +6 -4
  364. package/src/lib/schemas/quorumDocument.js.map +1 -1
  365. package/src/lib/security/dosProtection.d.ts +13 -0
  366. package/src/lib/security/dosProtection.d.ts.map +1 -0
  367. package/src/lib/security/dosProtection.js +29 -0
  368. package/src/lib/security/dosProtection.js.map +1 -0
  369. package/src/lib/security/dosProtectionValidator.d.ts +27 -0
  370. package/src/lib/security/dosProtectionValidator.d.ts.map +1 -0
  371. package/src/lib/security/dosProtectionValidator.js +60 -0
  372. package/src/lib/security/dosProtectionValidator.js.map +1 -0
  373. package/src/lib/security/index.d.ts +12 -0
  374. package/src/lib/security/index.d.ts.map +1 -0
  375. package/src/lib/security/index.js +15 -0
  376. package/src/lib/security/index.js.map +1 -0
  377. package/src/lib/security/rateLimitTypes.d.ts +20 -0
  378. package/src/lib/security/rateLimitTypes.d.ts.map +1 -0
  379. package/src/lib/security/rateLimitTypes.js +15 -0
  380. package/src/lib/security/rateLimitTypes.js.map +1 -0
  381. package/src/lib/security/rateLimiter.d.ts +29 -0
  382. package/src/lib/security/rateLimiter.d.ts.map +1 -0
  383. package/src/lib/security/rateLimiter.js +107 -0
  384. package/src/lib/security/rateLimiter.js.map +1 -0
  385. package/src/lib/security/securityAuditLogger.d.ts +59 -0
  386. package/src/lib/security/securityAuditLogger.d.ts.map +1 -0
  387. package/src/lib/security/securityAuditLogger.js +120 -0
  388. package/src/lib/security/securityAuditLogger.js.map +1 -0
  389. package/src/lib/security/securityEvent.d.ts +45 -0
  390. package/src/lib/security/securityEvent.d.ts.map +1 -0
  391. package/src/lib/security/securityEvent.js +44 -0
  392. package/src/lib/security/securityEvent.js.map +1 -0
  393. package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
  394. package/src/lib/services/blockCapacity.service.js +14 -5
  395. package/src/lib/services/blockCapacity.service.js.map +1 -1
  396. package/src/lib/services/blockFormatService.d.ts +41 -0
  397. package/src/lib/services/blockFormatService.d.ts.map +1 -0
  398. package/src/lib/services/blockFormatService.js +252 -0
  399. package/src/lib/services/blockFormatService.js.map +1 -0
  400. package/src/lib/services/blockService.d.ts +6 -0
  401. package/src/lib/services/blockService.d.ts.map +1 -1
  402. package/src/lib/services/blockService.js +130 -28
  403. package/src/lib/services/blockService.js.map +1 -1
  404. package/src/lib/services/cblService.d.ts +162 -3
  405. package/src/lib/services/cblService.d.ts.map +1 -1
  406. package/src/lib/services/cblService.js +502 -21
  407. package/src/lib/services/cblService.js.map +1 -1
  408. package/src/lib/services/globalServiceProvider.d.ts +4 -0
  409. package/src/lib/services/globalServiceProvider.d.ts.map +1 -0
  410. package/src/lib/services/globalServiceProvider.js +26 -0
  411. package/src/lib/services/globalServiceProvider.js.map +1 -0
  412. package/src/lib/services/index.d.ts +0 -2
  413. package/src/lib/services/index.d.ts.map +1 -1
  414. package/src/lib/services/index.js +0 -2
  415. package/src/lib/services/index.js.map +1 -1
  416. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  417. package/src/lib/services/member/memberCblService.js +11 -8
  418. package/src/lib/services/member/memberCblService.js.map +1 -1
  419. package/src/lib/services/memberStore.d.ts +8 -0
  420. package/src/lib/services/memberStore.d.ts.map +1 -1
  421. package/src/lib/services/memberStore.js +105 -76
  422. package/src/lib/services/memberStore.js.map +1 -1
  423. package/src/lib/services/sealing.service.d.ts +1 -1
  424. package/src/lib/services/sealing.service.d.ts.map +1 -1
  425. package/src/lib/services/sealing.service.js +4 -13
  426. package/src/lib/services/sealing.service.js.map +1 -1
  427. package/src/lib/services/service.provider.d.ts +2 -0
  428. package/src/lib/services/service.provider.d.ts.map +1 -1
  429. package/src/lib/services/service.provider.js +7 -12
  430. package/src/lib/services/service.provider.js.map +1 -1
  431. package/src/lib/services/serviceLocator.d.ts.map +1 -1
  432. package/src/lib/services/serviceLocator.js +2 -0
  433. package/src/lib/services/serviceLocator.js.map +1 -1
  434. package/src/lib/services/tuple.service.js +4 -4
  435. package/src/lib/services/tuple.service.js.map +1 -1
  436. package/src/lib/sharedTypes.d.ts +1 -22
  437. package/src/lib/sharedTypes.d.ts.map +1 -1
  438. package/src/lib/sharedTypes.js.map +1 -1
  439. package/src/lib/strings/englishUs.d.ts.map +1 -1
  440. package/src/lib/strings/englishUs.js +392 -392
  441. package/src/lib/strings/englishUs.js.map +1 -1
  442. package/src/lib/test/service.initializer.helper.d.ts +2 -1
  443. package/src/lib/test/service.initializer.helper.d.ts.map +1 -1
  444. package/src/lib/test/service.initializer.helper.js +11 -15
  445. package/src/lib/test/service.initializer.helper.js.map +1 -1
  446. package/src/lib/types/schema.d.ts +38 -0
  447. package/src/lib/types/schema.d.ts.map +1 -0
  448. package/src/lib/types/schema.js +7 -0
  449. package/src/lib/types/schema.js.map +1 -0
  450. package/src/lib/utils/constantTime.d.ts +27 -0
  451. package/src/lib/utils/constantTime.d.ts.map +1 -0
  452. package/src/lib/utils/constantTime.js +67 -0
  453. package/src/lib/utils/constantTime.js.map +1 -0
  454. package/src/lib/utils/constantTimeXor.d.ts +76 -0
  455. package/src/lib/utils/constantTimeXor.d.ts.map +1 -0
  456. package/src/lib/utils/constantTimeXor.js +122 -0
  457. package/src/lib/utils/constantTimeXor.js.map +1 -0
  458. package/src/lib/utils/dateUtils.d.ts +67 -0
  459. package/src/lib/utils/dateUtils.d.ts.map +1 -0
  460. package/src/lib/utils/dateUtils.js +136 -0
  461. package/src/lib/utils/dateUtils.js.map +1 -0
  462. package/src/lib/utils/index.d.ts +57 -0
  463. package/src/lib/utils/index.d.ts.map +1 -1
  464. package/src/lib/utils/index.js +69 -0
  465. package/src/lib/utils/index.js.map +1 -1
  466. package/src/lib/utils/typeGuards.d.ts +102 -0
  467. package/src/lib/utils/typeGuards.d.ts.map +1 -0
  468. package/src/lib/utils/typeGuards.js +244 -0
  469. package/src/lib/utils/typeGuards.js.map +1 -0
  470. package/src/lib/cpus/instructions.d.ts +0 -35
  471. package/src/lib/cpus/instructions.d.ts.map +0 -1
  472. package/src/lib/cpus/instructions.js +0 -285
  473. package/src/lib/cpus/instructions.js.map +0 -1
  474. package/src/lib/cpus/mach-o.d.ts +0 -7
  475. package/src/lib/cpus/mach-o.d.ts.map +0 -1
  476. package/src/lib/cpus/mach-o.js +0 -99
  477. package/src/lib/cpus/mach-o.js.map +0 -1
  478. package/src/lib/cpus/x86Cpu.d.ts +0 -21
  479. package/src/lib/cpus/x86Cpu.d.ts.map +0 -1
  480. package/src/lib/cpus/x86Cpu.js +0 -89
  481. package/src/lib/cpus/x86Cpu.js.map +0 -1
  482. package/src/lib/enumerations/stringNames.d.ts.map +0 -1
  483. package/src/lib/enumerations/stringNames.js +0 -436
  484. package/src/lib/enumerations/stringNames.js.map +0 -1
  485. package/src/lib/errors/superCbl.d.ts +0 -24
  486. package/src/lib/errors/superCbl.d.ts.map +0 -1
  487. package/src/lib/errors/superCbl.js +0 -43
  488. package/src/lib/errors/superCbl.js.map +0 -1
  489. package/src/lib/interfaces/storage/superCbl.d.ts +0 -102
  490. package/src/lib/interfaces/storage/superCbl.d.ts.map +0 -1
  491. package/src/lib/interfaces/storage/superCbl.js.map +0 -1
  492. package/src/lib/services/jsonCblCapacity.service.d.ts +0 -80
  493. package/src/lib/services/jsonCblCapacity.service.d.ts.map +0 -1
  494. package/src/lib/services/jsonCblCapacity.service.js +0 -147
  495. package/src/lib/services/jsonCblCapacity.service.js.map +0 -1
  496. package/src/lib/services/superCbl.service.d.ts +0 -68
  497. package/src/lib/services/superCbl.service.d.ts.map +0 -1
  498. package/src/lib/services/superCbl.service.js +0 -213
  499. package/src/lib/services/superCbl.service.js.map +0 -1
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Date Utilities Module
4
+ *
5
+ * Provides robust date handling utilities with timezone support for BrightChain.
6
+ * All dates are stored internally in UTC to ensure consistency across timezones.
7
+ *
8
+ * @module dateUtils
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.parseDate = parseDate;
12
+ exports.serializeDate = serializeDate;
13
+ exports.isValidDate = isValidDate;
14
+ /**
15
+ * Parse a date from various formats (ISO 8601, Unix timestamp).
16
+ *
17
+ * Supports:
18
+ * - ISO 8601 strings (e.g., "2024-01-23T10:30:00Z", "2024-01-23T10:30:00.000Z")
19
+ * - Unix timestamps in milliseconds (number)
20
+ * - Unix timestamps in seconds (number < 10000000000)
21
+ *
22
+ * @param value - Date string or Unix timestamp
23
+ * @returns Date object in UTC
24
+ * @throws Error if date is invalid or malformed
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Parse ISO 8601 string
29
+ * const date1 = parseDate("2024-01-23T10:30:00Z");
30
+ *
31
+ * // Parse Unix timestamp (milliseconds)
32
+ * const date2 = parseDate(1706008200000);
33
+ *
34
+ * // Parse Unix timestamp (seconds)
35
+ * const date3 = parseDate(1706008200);
36
+ * ```
37
+ */
38
+ function parseDate(value) {
39
+ if (typeof value === 'number') {
40
+ // Handle Unix timestamps
41
+ // Strategy: Use the value as-is first, then check if it produces a reasonable date
42
+ // If the date is before 1980 or after 2200 when interpreted as milliseconds,
43
+ // and the value is small enough to be seconds, try interpreting as seconds
44
+ let timestamp = value;
45
+ let date = new Date(timestamp);
46
+ // Check if we should try interpreting as seconds instead
47
+ // This handles the case where small numbers (< 10 billion) might be seconds
48
+ if (!isNaN(date.getTime())) {
49
+ const year = date.getFullYear();
50
+ // If the date is unreasonably early (before 1980) when interpreted as ms,
51
+ // and the value could be seconds (< 10 billion), try seconds
52
+ if (year < 1980 && value < 10000000000 && value > 0) {
53
+ timestamp = value * 1000;
54
+ date = new Date(timestamp);
55
+ }
56
+ // Also handle negative timestamps (before 1970)
57
+ else if (value < 0 && value > -10000000000) {
58
+ // Small negative numbers are likely seconds
59
+ timestamp = value * 1000;
60
+ date = new Date(timestamp);
61
+ }
62
+ }
63
+ if (isNaN(date.getTime())) {
64
+ throw new Error(`Invalid Unix timestamp: ${value}`);
65
+ }
66
+ return date;
67
+ }
68
+ if (typeof value === 'string') {
69
+ // Try parsing as ISO 8601 string
70
+ const date = new Date(value);
71
+ if (isNaN(date.getTime())) {
72
+ throw new Error(`Invalid date string: "${value}". Expected ISO 8601 format (e.g., "2024-01-23T10:30:00Z") or Unix timestamp.`);
73
+ }
74
+ return date;
75
+ }
76
+ throw new Error(`Invalid date value type: ${typeof value}. Expected string or number.`);
77
+ }
78
+ /**
79
+ * Serialize a date to ISO 8601 format with UTC timezone.
80
+ *
81
+ * Always returns dates in UTC timezone with 'Z' suffix.
82
+ * Format: "YYYY-MM-DDTHH:mm:ss.sssZ"
83
+ *
84
+ * @param date - Date to serialize
85
+ * @returns ISO 8601 string in UTC
86
+ * @throws Error if date is invalid
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const date = new Date("2024-01-23T10:30:00Z");
91
+ * const serialized = serializeDate(date);
92
+ * // Returns: "2024-01-23T10:30:00.000Z"
93
+ * ```
94
+ */
95
+ function serializeDate(date) {
96
+ if (!(date instanceof Date)) {
97
+ throw new Error(`Invalid date object: expected Date instance, got ${typeof date}`);
98
+ }
99
+ if (isNaN(date.getTime())) {
100
+ throw new Error('Invalid date: date object contains NaN timestamp');
101
+ }
102
+ return date.toISOString();
103
+ }
104
+ /**
105
+ * Validate that a date is valid and optionally check if it's not in the future.
106
+ *
107
+ * @param date - Date to validate
108
+ * @param allowFuture - Whether to allow future dates (default: false)
109
+ * @returns true if valid, false otherwise
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const date = new Date("2024-01-23T10:30:00Z");
114
+ * const isValid = isValidDate(date); // true if date is in the past
115
+ * const isValidFuture = isValidDate(date, true); // true regardless of future/past
116
+ * ```
117
+ */
118
+ function isValidDate(date, allowFuture = false) {
119
+ // Check if it's a Date instance
120
+ if (!(date instanceof Date)) {
121
+ return false;
122
+ }
123
+ // Check if the date is valid (not NaN)
124
+ if (isNaN(date.getTime())) {
125
+ return false;
126
+ }
127
+ // Check if date is in the future (if not allowed)
128
+ if (!allowFuture) {
129
+ const now = new Date();
130
+ if (date.getTime() > now.getTime()) {
131
+ return false;
132
+ }
133
+ }
134
+ return true;
135
+ }
136
+ //# sourceMappingURL=dateUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/dateUtils.ts"],"names":[],"mappings":"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"}
@@ -55,4 +55,61 @@ export * from './checksumUtils';
55
55
  * @see {@link xorUtils}
56
56
  */
57
57
  export * from './xorUtils';
58
+ /**
59
+ * Constant-time comparison utilities for security-sensitive operations.
60
+ *
61
+ * Provides functions for:
62
+ * - Constant-time equality comparison (Uint8Array, hex strings, numbers)
63
+ * - Constant-time conditional selection
64
+ * - Constant-time zero checking
65
+ *
66
+ * These utilities prevent timing-based side-channel attacks by ensuring
67
+ * operations take the same amount of time regardless of input values.
68
+ *
69
+ * @see {@link constantTime}
70
+ */
71
+ export * from './constantTime';
72
+ /**
73
+ * Constant-time XOR operations for security-sensitive operations.
74
+ *
75
+ * Provides functions for:
76
+ * - Constant-time XOR of two arrays
77
+ * - Constant-time XOR of multiple arrays
78
+ *
79
+ * These utilities prevent timing-based side-channel attacks by ensuring
80
+ * XOR operations take the same amount of time regardless of input byte values.
81
+ * Critical for whitening/brightening operations in the Owner-Free Filesystem.
82
+ *
83
+ * @see {@link constantTimeXor}
84
+ */
85
+ export * from './constantTimeXor';
86
+ /**
87
+ * Type guard utilities for JSON deserialization.
88
+ *
89
+ * Provides functions for:
90
+ * - Runtime type checking of JSON data
91
+ * - Validating BlockMetadataJson structure
92
+ * - Validating EphemeralBlockMetadataJson structure
93
+ * - Parsing JSON with type safety
94
+ *
95
+ * These utilities ensure that JSON data conforms to expected TypeScript
96
+ * interfaces before constructing objects, maintaining type safety at runtime.
97
+ *
98
+ * @see {@link typeGuards}
99
+ */
100
+ export * from './typeGuards';
101
+ /**
102
+ * Date handling utilities with timezone support.
103
+ *
104
+ * Provides functions for:
105
+ * - Parsing dates from ISO 8601 strings and Unix timestamps
106
+ * - Serializing dates to ISO 8601 format in UTC
107
+ * - Validating dates (including future date checks)
108
+ *
109
+ * All dates are stored internally in UTC to ensure consistency across timezones.
110
+ * These utilities provide robust date handling for block metadata timestamps.
111
+ *
112
+ * @see {@link dateUtils}
113
+ */
114
+ export * from './dateUtils';
58
115
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC;AAK5B;;;;;;;;;GASG;AACH,cAAc,iBAAiB,CAAC;AAKhC;;;;;;;;;GASG;AACH,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC;AAK5B;;;;;;;;;GASG;AACH,cAAc,iBAAiB,CAAC;AAKhC;;;;;;;;;GASG;AACH,cAAc,YAAY,CAAC;AAK3B;;;;;;;;;;;;GAYG;AACH,cAAc,gBAAgB,CAAC;AAK/B;;;;;;;;;;;;GAYG;AACH,cAAc,mBAAmB,CAAC;AAKlC;;;;;;;;;;;;;GAaG;AACH,cAAc,cAAc,CAAC;AAK7B;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC"}
@@ -67,4 +67,73 @@ tslib_1.__exportStar(require("./checksumUtils"), exports);
67
67
  * @see {@link xorUtils}
68
68
  */
69
69
  tslib_1.__exportStar(require("./xorUtils"), exports);
70
+ // ============================================================================
71
+ // Constant-Time Utilities
72
+ // ============================================================================
73
+ /**
74
+ * Constant-time comparison utilities for security-sensitive operations.
75
+ *
76
+ * Provides functions for:
77
+ * - Constant-time equality comparison (Uint8Array, hex strings, numbers)
78
+ * - Constant-time conditional selection
79
+ * - Constant-time zero checking
80
+ *
81
+ * These utilities prevent timing-based side-channel attacks by ensuring
82
+ * operations take the same amount of time regardless of input values.
83
+ *
84
+ * @see {@link constantTime}
85
+ */
86
+ tslib_1.__exportStar(require("./constantTime"), exports);
87
+ // ============================================================================
88
+ // Constant-Time XOR Utilities
89
+ // ============================================================================
90
+ /**
91
+ * Constant-time XOR operations for security-sensitive operations.
92
+ *
93
+ * Provides functions for:
94
+ * - Constant-time XOR of two arrays
95
+ * - Constant-time XOR of multiple arrays
96
+ *
97
+ * These utilities prevent timing-based side-channel attacks by ensuring
98
+ * XOR operations take the same amount of time regardless of input byte values.
99
+ * Critical for whitening/brightening operations in the Owner-Free Filesystem.
100
+ *
101
+ * @see {@link constantTimeXor}
102
+ */
103
+ tslib_1.__exportStar(require("./constantTimeXor"), exports);
104
+ // ============================================================================
105
+ // Type Guard Utilities
106
+ // ============================================================================
107
+ /**
108
+ * Type guard utilities for JSON deserialization.
109
+ *
110
+ * Provides functions for:
111
+ * - Runtime type checking of JSON data
112
+ * - Validating BlockMetadataJson structure
113
+ * - Validating EphemeralBlockMetadataJson structure
114
+ * - Parsing JSON with type safety
115
+ *
116
+ * These utilities ensure that JSON data conforms to expected TypeScript
117
+ * interfaces before constructing objects, maintaining type safety at runtime.
118
+ *
119
+ * @see {@link typeGuards}
120
+ */
121
+ tslib_1.__exportStar(require("./typeGuards"), exports);
122
+ // ============================================================================
123
+ // Date Utilities
124
+ // ============================================================================
125
+ /**
126
+ * Date handling utilities with timezone support.
127
+ *
128
+ * Provides functions for:
129
+ * - Parsing dates from ISO 8601 strings and Unix timestamps
130
+ * - Serializing dates to ISO 8601 format in UTC
131
+ * - Validating dates (including future date checks)
132
+ *
133
+ * All dates are stored internally in UTC to ensure consistency across timezones.
134
+ * These utilities provide robust date handling for block metadata timestamps.
135
+ *
136
+ * @see {@link dateUtils}
137
+ */
138
+ tslib_1.__exportStar(require("./dateUtils"), exports);
70
139
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B;AAE5B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,0DAAgC;AAEhC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,qDAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B;AAE5B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,0DAAgC;AAEhC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,qDAA2B;AAE3B,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,yDAA+B;AAE/B,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,4DAAkC;AAElC,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;;GAaG;AACH,uDAA6B;AAE7B,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Type Guards for JSON Deserialization
3
+ *
4
+ * This module provides runtime type checking for JSON deserialization of block metadata.
5
+ * Type guards ensure that JSON data conforms to expected TypeScript interfaces before
6
+ * constructing objects, maintaining type safety at runtime.
7
+ *
8
+ * @module typeGuards
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { isBlockMetadataJson, parseBlockMetadataJson } from 'brightchain-lib';
13
+ *
14
+ * // Validate JSON data structure
15
+ * if (isBlockMetadataJson(data)) {
16
+ * // TypeScript knows data is BlockMetadataJson
17
+ * const metadata = new BlockMetadata(data.size, data.type, ...);
18
+ * }
19
+ *
20
+ * // Parse and validate JSON string
21
+ * try {
22
+ * const data = parseBlockMetadataJson(jsonString);
23
+ * // data is guaranteed to be BlockMetadataJson
24
+ * } catch (error) {
25
+ * // Handle validation error with descriptive message
26
+ * }
27
+ * ```
28
+ */
29
+ /**
30
+ * JSON representation of BlockMetadata.
31
+ * This interface defines the expected structure of JSON data
32
+ * when deserializing BlockMetadata objects.
33
+ */
34
+ export interface BlockMetadataJson {
35
+ /** Block size in bytes (must be a valid BlockSize enum value) */
36
+ size: number;
37
+ /** Block type (must be a valid BlockType enum value) */
38
+ type: number;
39
+ /** Data type (must be a valid BlockDataType enum value) */
40
+ dataType: number;
41
+ /** Length of data without padding (must be non-negative) */
42
+ lengthWithoutPadding: number;
43
+ /** Date created (ISO 8601 string or Unix timestamp) */
44
+ dateCreated: string | number;
45
+ }
46
+ /**
47
+ * JSON representation of EphemeralBlockMetadata.
48
+ * Extends BlockMetadataJson with creator information.
49
+ */
50
+ export interface EphemeralBlockMetadataJson extends BlockMetadataJson {
51
+ /** Creator ID (serialized as string) */
52
+ creator: string;
53
+ }
54
+ /**
55
+ * Error thrown when JSON validation fails.
56
+ * Provides descriptive information about which field failed validation.
57
+ */
58
+ export declare class JsonValidationError extends Error {
59
+ readonly field: string;
60
+ readonly reason: string;
61
+ readonly value?: unknown | undefined;
62
+ constructor(field: string, reason: string, value?: unknown | undefined);
63
+ }
64
+ /**
65
+ * Type guard for BlockMetadataJson.
66
+ * Validates that an unknown value conforms to the BlockMetadataJson interface.
67
+ *
68
+ * @param data - Data to validate
69
+ * @returns True if data is BlockMetadataJson
70
+ * @throws JsonValidationError if validation fails with descriptive error
71
+ */
72
+ export declare function isBlockMetadataJson(data: unknown): data is BlockMetadataJson;
73
+ /**
74
+ * Type guard for EphemeralBlockMetadataJson.
75
+ * Validates that an unknown value conforms to the EphemeralBlockMetadataJson interface.
76
+ *
77
+ * @param data - Data to validate
78
+ * @returns True if data is EphemeralBlockMetadataJson
79
+ * @throws JsonValidationError if validation fails with descriptive error
80
+ */
81
+ export declare function isEphemeralBlockMetadataJson(data: unknown): data is EphemeralBlockMetadataJson;
82
+ /**
83
+ * Parse and validate a JSON string as BlockMetadataJson.
84
+ * Combines JSON parsing with type guard validation.
85
+ *
86
+ * @param json - JSON string to parse
87
+ * @returns Validated BlockMetadataJson object
88
+ * @throws JsonValidationError if validation fails
89
+ * @throws SyntaxError if JSON parsing fails
90
+ */
91
+ export declare function parseBlockMetadataJson(json: string): BlockMetadataJson;
92
+ /**
93
+ * Parse and validate a JSON string as EphemeralBlockMetadataJson.
94
+ * Combines JSON parsing with type guard validation.
95
+ *
96
+ * @param json - JSON string to parse
97
+ * @returns Validated EphemeralBlockMetadataJson object
98
+ * @throws JsonValidationError if validation fails
99
+ * @throws SyntaxError if JSON parsing fails
100
+ */
101
+ export declare function parseEphemeralBlockMetadataJson(json: string): EphemeralBlockMetadataJson;
102
+ //# sourceMappingURL=typeGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/typeGuards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,KAAK,EAAE,MAAM;aACb,MAAM,EAAE,MAAM;aACd,KAAK,CAAC,EAAE,OAAO;gBAFf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAkED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAmF5E;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,0BAA0B,CA4BpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAmBtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GACX,0BAA0B,CAmB5B"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ /**
3
+ * Type Guards for JSON Deserialization
4
+ *
5
+ * This module provides runtime type checking for JSON deserialization of block metadata.
6
+ * Type guards ensure that JSON data conforms to expected TypeScript interfaces before
7
+ * constructing objects, maintaining type safety at runtime.
8
+ *
9
+ * @module typeGuards
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { isBlockMetadataJson, parseBlockMetadataJson } from 'brightchain-lib';
14
+ *
15
+ * // Validate JSON data structure
16
+ * if (isBlockMetadataJson(data)) {
17
+ * // TypeScript knows data is BlockMetadataJson
18
+ * const metadata = new BlockMetadata(data.size, data.type, ...);
19
+ * }
20
+ *
21
+ * // Parse and validate JSON string
22
+ * try {
23
+ * const data = parseBlockMetadataJson(jsonString);
24
+ * // data is guaranteed to be BlockMetadataJson
25
+ * } catch (error) {
26
+ * // Handle validation error with descriptive message
27
+ * }
28
+ * ```
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.JsonValidationError = void 0;
32
+ exports.isBlockMetadataJson = isBlockMetadataJson;
33
+ exports.isEphemeralBlockMetadataJson = isEphemeralBlockMetadataJson;
34
+ exports.parseBlockMetadataJson = parseBlockMetadataJson;
35
+ exports.parseEphemeralBlockMetadataJson = parseEphemeralBlockMetadataJson;
36
+ const blockDataType_1 = require("../enumerations/blockDataType");
37
+ const blockSize_1 = require("../enumerations/blockSize");
38
+ const blockType_1 = require("../enumerations/blockType");
39
+ /**
40
+ * Error thrown when JSON validation fails.
41
+ * Provides descriptive information about which field failed validation.
42
+ */
43
+ class JsonValidationError extends Error {
44
+ constructor(field, reason, value) {
45
+ super(`JSON validation failed for field '${field}': ${reason}`);
46
+ this.field = field;
47
+ this.reason = reason;
48
+ this.value = value;
49
+ this.name = 'JsonValidationError';
50
+ }
51
+ }
52
+ exports.JsonValidationError = JsonValidationError;
53
+ /**
54
+ * Check if a value is a valid BlockSize enum value.
55
+ * @param value - Value to check
56
+ * @returns True if value is a valid BlockSize
57
+ */
58
+ function isValidBlockSize(value) {
59
+ if (typeof value !== 'number') {
60
+ return false;
61
+ }
62
+ return blockSize_1.validBlockSizes.includes(value);
63
+ }
64
+ /**
65
+ * Check if a value is a valid BlockType enum value.
66
+ * BlockType.Unknown (-1) is explicitly rejected as it represents
67
+ * uninitialized or invalid blocks and should not be used in metadata.
68
+ *
69
+ * @param value - Value to check
70
+ * @returns True if value is a valid BlockType (excluding Unknown)
71
+ */
72
+ function isValidBlockType(value) {
73
+ if (typeof value !== 'number') {
74
+ return false;
75
+ }
76
+ // Explicitly reject BlockType.Unknown (-1)
77
+ if (value === blockType_1.default.Unknown) {
78
+ return false;
79
+ }
80
+ // Check if the value exists in the BlockType enum
81
+ return Object.values(blockType_1.default).includes(value);
82
+ }
83
+ /**
84
+ * Check if a value is a valid BlockDataType enum value.
85
+ * @param value - Value to check
86
+ * @returns True if value is a valid BlockDataType
87
+ */
88
+ function isValidBlockDataType(value) {
89
+ if (typeof value !== 'number') {
90
+ return false;
91
+ }
92
+ // Check if the value exists in the BlockDataType enum
93
+ return Object.values(blockDataType_1.default).includes(value);
94
+ }
95
+ /**
96
+ * Check if a value is a valid date representation (ISO 8601 string or Unix timestamp).
97
+ * @param value - Value to check
98
+ * @returns True if value can be parsed as a date
99
+ */
100
+ function isValidDateValue(value) {
101
+ if (typeof value === 'string') {
102
+ // Check if it's a valid ISO 8601 string
103
+ const date = new Date(value);
104
+ return !isNaN(date.getTime());
105
+ }
106
+ if (typeof value === 'number') {
107
+ // Check if it's a valid Unix timestamp
108
+ const date = new Date(value);
109
+ return !isNaN(date.getTime());
110
+ }
111
+ return false;
112
+ }
113
+ /**
114
+ * Type guard for BlockMetadataJson.
115
+ * Validates that an unknown value conforms to the BlockMetadataJson interface.
116
+ *
117
+ * @param data - Data to validate
118
+ * @returns True if data is BlockMetadataJson
119
+ * @throws JsonValidationError if validation fails with descriptive error
120
+ */
121
+ function isBlockMetadataJson(data) {
122
+ // Check if data is an object
123
+ if (typeof data !== 'object' || data === null) {
124
+ throw new JsonValidationError('data', 'must be a non-null object', data);
125
+ }
126
+ const obj = data;
127
+ // Validate size field
128
+ if (!('size' in obj)) {
129
+ throw new JsonValidationError('size', 'field is required');
130
+ }
131
+ if (!isValidBlockSize(obj['size'])) {
132
+ throw new JsonValidationError('size', 'must be a valid BlockSize enum value', obj['size']);
133
+ }
134
+ // Validate type field
135
+ if (!('type' in obj)) {
136
+ throw new JsonValidationError('type', 'field is required');
137
+ }
138
+ if (!isValidBlockType(obj['type'])) {
139
+ throw new JsonValidationError('type', 'must be a valid BlockType enum value', obj['type']);
140
+ }
141
+ // Validate dataType field
142
+ if (!('dataType' in obj)) {
143
+ throw new JsonValidationError('dataType', 'field is required');
144
+ }
145
+ if (!isValidBlockDataType(obj['dataType'])) {
146
+ throw new JsonValidationError('dataType', 'must be a valid BlockDataType enum value', obj['dataType']);
147
+ }
148
+ // Validate lengthWithoutPadding field
149
+ if (!('lengthWithoutPadding' in obj)) {
150
+ throw new JsonValidationError('lengthWithoutPadding', 'field is required');
151
+ }
152
+ if (typeof obj['lengthWithoutPadding'] !== 'number') {
153
+ throw new JsonValidationError('lengthWithoutPadding', 'must be a number', obj['lengthWithoutPadding']);
154
+ }
155
+ if (obj['lengthWithoutPadding'] < 0) {
156
+ throw new JsonValidationError('lengthWithoutPadding', 'must be non-negative', obj['lengthWithoutPadding']);
157
+ }
158
+ if (!Number.isInteger(obj['lengthWithoutPadding'])) {
159
+ throw new JsonValidationError('lengthWithoutPadding', 'must be an integer', obj['lengthWithoutPadding']);
160
+ }
161
+ // Validate dateCreated field
162
+ if (!('dateCreated' in obj)) {
163
+ throw new JsonValidationError('dateCreated', 'field is required');
164
+ }
165
+ if (!isValidDateValue(obj['dateCreated'])) {
166
+ throw new JsonValidationError('dateCreated', 'must be a valid ISO 8601 string or Unix timestamp', obj['dateCreated']);
167
+ }
168
+ return true;
169
+ }
170
+ /**
171
+ * Type guard for EphemeralBlockMetadataJson.
172
+ * Validates that an unknown value conforms to the EphemeralBlockMetadataJson interface.
173
+ *
174
+ * @param data - Data to validate
175
+ * @returns True if data is EphemeralBlockMetadataJson
176
+ * @throws JsonValidationError if validation fails with descriptive error
177
+ */
178
+ function isEphemeralBlockMetadataJson(data) {
179
+ // First validate as BlockMetadataJson
180
+ if (!isBlockMetadataJson(data)) {
181
+ return false;
182
+ }
183
+ const obj = data;
184
+ // Validate creator field
185
+ if (!('creator' in obj)) {
186
+ throw new JsonValidationError('creator', 'field is required');
187
+ }
188
+ if (typeof obj['creator'] !== 'string') {
189
+ throw new JsonValidationError('creator', 'must be a string', obj['creator']);
190
+ }
191
+ if (obj['creator'].length === 0) {
192
+ throw new JsonValidationError('creator', 'must not be empty', obj['creator']);
193
+ }
194
+ return true;
195
+ }
196
+ /**
197
+ * Parse and validate a JSON string as BlockMetadataJson.
198
+ * Combines JSON parsing with type guard validation.
199
+ *
200
+ * @param json - JSON string to parse
201
+ * @returns Validated BlockMetadataJson object
202
+ * @throws JsonValidationError if validation fails
203
+ * @throws SyntaxError if JSON parsing fails
204
+ */
205
+ function parseBlockMetadataJson(json) {
206
+ let data;
207
+ try {
208
+ data = JSON.parse(json);
209
+ }
210
+ catch (error) {
211
+ throw new JsonValidationError('json', `JSON parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
212
+ }
213
+ // Validate using type guard
214
+ if (isBlockMetadataJson(data)) {
215
+ return data;
216
+ }
217
+ // This should never be reached since isBlockMetadataJson throws on failure
218
+ throw new JsonValidationError('json', 'validation failed');
219
+ }
220
+ /**
221
+ * Parse and validate a JSON string as EphemeralBlockMetadataJson.
222
+ * Combines JSON parsing with type guard validation.
223
+ *
224
+ * @param json - JSON string to parse
225
+ * @returns Validated EphemeralBlockMetadataJson object
226
+ * @throws JsonValidationError if validation fails
227
+ * @throws SyntaxError if JSON parsing fails
228
+ */
229
+ function parseEphemeralBlockMetadataJson(json) {
230
+ let data;
231
+ try {
232
+ data = JSON.parse(json);
233
+ }
234
+ catch (error) {
235
+ throw new JsonValidationError('json', `JSON parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
236
+ }
237
+ // Validate using type guard
238
+ if (isEphemeralBlockMetadataJson(data)) {
239
+ return data;
240
+ }
241
+ // This should never be reached since isEphemeralBlockMetadataJson throws on failure
242
+ throw new JsonValidationError('json', 'validation failed');
243
+ }
244
+ //# sourceMappingURL=typeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/typeGuards.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAwHH,kDAmFC;AAUD,oEA8BC;AAWD,wDAmBC;AAWD,0EAqBC;AA/SD,iEAA0D;AAC1D,yDAAuE;AACvE,yDAAkD;AA6BlD;;;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,CAAC,MAAM,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC3E,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"}