@brightchain/brightchain-lib 0.14.0 → 0.15.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 (571) hide show
  1. package/brightchain-lib/BROWSER_COMPAT.md +54 -0
  2. package/package.json +15 -4
  3. package/src/lib/blocks/cblBase.d.ts +16 -1
  4. package/src/lib/blocks/cblBase.d.ts.map +1 -1
  5. package/src/lib/blocks/cblBase.js +33 -4
  6. package/src/lib/blocks/cblBase.js.map +1 -1
  7. package/src/lib/blocks/extendedCbl.d.ts.map +1 -1
  8. package/src/lib/blocks/extendedCbl.js +2 -1
  9. package/src/lib/blocks/extendedCbl.js.map +1 -1
  10. package/src/lib/blocks/handle.d.ts +5 -0
  11. package/src/lib/blocks/handle.d.ts.map +1 -1
  12. package/src/lib/blocks/handle.js.map +1 -1
  13. package/src/lib/blocks/handleTuple.d.ts +9 -1
  14. package/src/lib/blocks/handleTuple.d.ts.map +1 -1
  15. package/src/lib/blocks/handleTuple.js +23 -1
  16. package/src/lib/blocks/handleTuple.js.map +1 -1
  17. package/src/lib/blocks/index.d.ts +1 -0
  18. package/src/lib/blocks/index.d.ts.map +1 -1
  19. package/src/lib/blocks/index.js +1 -0
  20. package/src/lib/blocks/index.js.map +1 -1
  21. package/src/lib/blocks/memoryTuple.d.ts +9 -2
  22. package/src/lib/blocks/memoryTuple.d.ts.map +1 -1
  23. package/src/lib/blocks/memoryTuple.js +12 -3
  24. package/src/lib/blocks/memoryTuple.js.map +1 -1
  25. package/src/lib/blocks/vcbl.d.ts +27 -0
  26. package/src/lib/blocks/vcbl.d.ts.map +1 -0
  27. package/src/lib/blocks/vcbl.js +107 -0
  28. package/src/lib/blocks/vcbl.js.map +1 -0
  29. package/src/lib/constants.d.ts +5 -1
  30. package/src/lib/constants.d.ts.map +1 -1
  31. package/src/lib/constants.js +4 -0
  32. package/src/lib/constants.js.map +1 -1
  33. package/src/lib/crypto/index.d.ts +12 -0
  34. package/src/lib/crypto/index.d.ts.map +1 -0
  35. package/src/lib/crypto/index.js +23 -0
  36. package/src/lib/crypto/index.js.map +1 -0
  37. package/src/lib/crypto/platformCrypto.d.ts +132 -0
  38. package/src/lib/crypto/platformCrypto.d.ts.map +1 -0
  39. package/src/lib/crypto/platformCrypto.js +181 -0
  40. package/src/lib/crypto/platformCrypto.js.map +1 -0
  41. package/src/lib/enumeration-translations/blockType.d.ts.map +1 -1
  42. package/src/lib/enumeration-translations/blockType.js +16 -0
  43. package/src/lib/enumeration-translations/blockType.js.map +1 -1
  44. package/src/lib/enumerations/blockType.d.ts +12 -0
  45. package/src/lib/enumerations/blockType.d.ts.map +1 -1
  46. package/src/lib/enumerations/blockType.js +14 -0
  47. package/src/lib/enumerations/blockType.js.map +1 -1
  48. package/src/lib/enumerations/brightChainStrings.d.ts +4 -0
  49. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  50. package/src/lib/enumerations/brightChainStrings.js +4 -0
  51. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  52. package/src/lib/enumerations/cblErrorType.d.ts +2 -1
  53. package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
  54. package/src/lib/enumerations/cblErrorType.js +1 -0
  55. package/src/lib/enumerations/cblErrorType.js.map +1 -1
  56. package/src/lib/enumerations/communication.d.ts +57 -0
  57. package/src/lib/enumerations/communication.d.ts.map +1 -0
  58. package/src/lib/enumerations/communication.js +89 -0
  59. package/src/lib/enumerations/communication.js.map +1 -0
  60. package/src/lib/enumerations/deviceType.d.ts +15 -0
  61. package/src/lib/enumerations/deviceType.d.ts.map +1 -0
  62. package/src/lib/enumerations/deviceType.js +19 -0
  63. package/src/lib/enumerations/deviceType.js.map +1 -0
  64. package/src/lib/enumerations/handleTupleErrorType.d.ts +2 -1
  65. package/src/lib/enumerations/handleTupleErrorType.d.ts.map +1 -1
  66. package/src/lib/enumerations/handleTupleErrorType.js +1 -0
  67. package/src/lib/enumerations/handleTupleErrorType.js.map +1 -1
  68. package/src/lib/enumerations/index.d.ts +6 -0
  69. package/src/lib/enumerations/index.d.ts.map +1 -1
  70. package/src/lib/enumerations/index.js +11 -0
  71. package/src/lib/enumerations/index.js.map +1 -1
  72. package/src/lib/enumerations/paperKeyPurpose.d.ts +15 -0
  73. package/src/lib/enumerations/paperKeyPurpose.d.ts.map +1 -0
  74. package/src/lib/enumerations/paperKeyPurpose.js +19 -0
  75. package/src/lib/enumerations/paperKeyPurpose.js.map +1 -0
  76. package/src/lib/enumerations/proofPlatform.d.ts +24 -0
  77. package/src/lib/enumerations/proofPlatform.d.ts.map +1 -0
  78. package/src/lib/enumerations/proofPlatform.js +28 -0
  79. package/src/lib/enumerations/proofPlatform.js.map +1 -0
  80. package/src/lib/enumerations/readConcern.d.ts +22 -0
  81. package/src/lib/enumerations/readConcern.d.ts.map +1 -0
  82. package/src/lib/enumerations/readConcern.js +26 -0
  83. package/src/lib/enumerations/readConcern.js.map +1 -0
  84. package/src/lib/enumerations/tupleErrorType.d.ts +2 -1
  85. package/src/lib/enumerations/tupleErrorType.d.ts.map +1 -1
  86. package/src/lib/enumerations/tupleErrorType.js +1 -0
  87. package/src/lib/enumerations/tupleErrorType.js.map +1 -1
  88. package/src/lib/enumerations/verificationStatus.d.ts +17 -0
  89. package/src/lib/enumerations/verificationStatus.d.ts.map +1 -0
  90. package/src/lib/enumerations/verificationStatus.js +21 -0
  91. package/src/lib/enumerations/verificationStatus.js.map +1 -0
  92. package/src/lib/errors/blockFetchError.d.ts +51 -0
  93. package/src/lib/errors/blockFetchError.d.ts.map +1 -0
  94. package/src/lib/errors/blockFetchError.js +63 -0
  95. package/src/lib/errors/blockFetchError.js.map +1 -0
  96. package/src/lib/errors/cblError.d.ts.map +1 -1
  97. package/src/lib/errors/cblError.js +1 -0
  98. package/src/lib/errors/cblError.js.map +1 -1
  99. package/src/lib/errors/handleTupleError.d.ts +10 -1
  100. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  101. package/src/lib/errors/handleTupleError.js +10 -1
  102. package/src/lib/errors/handleTupleError.js.map +1 -1
  103. package/src/lib/errors/index.d.ts +16 -0
  104. package/src/lib/errors/index.d.ts.map +1 -1
  105. package/src/lib/errors/index.js +22 -0
  106. package/src/lib/errors/index.js.map +1 -1
  107. package/src/lib/errors/poolDeletionError.d.ts +10 -0
  108. package/src/lib/errors/poolDeletionError.d.ts.map +1 -0
  109. package/src/lib/errors/poolDeletionError.js +16 -0
  110. package/src/lib/errors/poolDeletionError.js.map +1 -0
  111. package/src/lib/errors/poolDeletionTombstoneError.d.ts +12 -0
  112. package/src/lib/errors/poolDeletionTombstoneError.d.ts.map +1 -0
  113. package/src/lib/errors/poolDeletionTombstoneError.js +18 -0
  114. package/src/lib/errors/poolDeletionTombstoneError.js.map +1 -0
  115. package/src/lib/errors/tupleError.d.ts.map +1 -1
  116. package/src/lib/errors/tupleError.js +1 -0
  117. package/src/lib/errors/tupleError.js.map +1 -1
  118. package/src/lib/i18n/i18n-setup.d.ts +1 -1
  119. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  120. package/src/lib/i18n/strings/englishUs.js +4 -0
  121. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  122. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  123. package/src/lib/i18n/strings/french.js +4 -0
  124. package/src/lib/i18n/strings/french.js.map +1 -1
  125. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  126. package/src/lib/i18n/strings/german.js +4 -0
  127. package/src/lib/i18n/strings/german.js.map +1 -1
  128. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  129. package/src/lib/i18n/strings/japanese.js +4 -0
  130. package/src/lib/i18n/strings/japanese.js.map +1 -1
  131. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  132. package/src/lib/i18n/strings/mandarin.js +4 -0
  133. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  134. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  135. package/src/lib/i18n/strings/spanish.js +4 -0
  136. package/src/lib/i18n/strings/spanish.js.map +1 -1
  137. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  138. package/src/lib/i18n/strings/ukrainian.js +4 -0
  139. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  140. package/src/lib/index.d.ts +4 -0
  141. package/src/lib/index.d.ts.map +1 -1
  142. package/src/lib/index.js +4 -0
  143. package/src/lib/index.js.map +1 -1
  144. package/src/lib/interfaces/auth/index.d.ts +4 -0
  145. package/src/lib/interfaces/auth/index.d.ts.map +1 -0
  146. package/src/lib/interfaces/auth/index.js +8 -0
  147. package/src/lib/interfaces/auth/index.js.map +1 -0
  148. package/src/lib/interfaces/auth/nodeAuthenticator.d.ts +19 -0
  149. package/src/lib/interfaces/auth/nodeAuthenticator.d.ts.map +1 -0
  150. package/src/lib/interfaces/auth/nodeAuthenticator.js +3 -0
  151. package/src/lib/interfaces/auth/nodeAuthenticator.js.map +1 -0
  152. package/src/lib/interfaces/auth/poolAcl.d.ts +65 -0
  153. package/src/lib/interfaces/auth/poolAcl.d.ts.map +1 -0
  154. package/src/lib/interfaces/auth/poolAcl.js +52 -0
  155. package/src/lib/interfaces/auth/poolAcl.js.map +1 -0
  156. package/src/lib/interfaces/availability/availabilityService.d.ts +5 -3
  157. package/src/lib/interfaces/availability/availabilityService.d.ts.map +1 -1
  158. package/src/lib/interfaces/availability/availabilityService.js.map +1 -1
  159. package/src/lib/interfaces/availability/blockRegistry.d.ts +52 -3
  160. package/src/lib/interfaces/availability/blockRegistry.d.ts.map +1 -1
  161. package/src/lib/interfaces/availability/blockRegistry.js +1 -1
  162. package/src/lib/interfaces/availability/discoveryProtocol.d.ts +81 -3
  163. package/src/lib/interfaces/availability/discoveryProtocol.d.ts.map +1 -1
  164. package/src/lib/interfaces/availability/discoveryProtocol.js.map +1 -1
  165. package/src/lib/interfaces/availability/gossipService.d.ts +110 -6
  166. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  167. package/src/lib/interfaces/availability/gossipService.js +94 -1
  168. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  169. package/src/lib/interfaces/availability/index.d.ts +1 -0
  170. package/src/lib/interfaces/availability/index.d.ts.map +1 -1
  171. package/src/lib/interfaces/availability/index.js +1 -0
  172. package/src/lib/interfaces/availability/index.js.map +1 -1
  173. package/src/lib/interfaces/availability/locationRecord.d.ts +6 -0
  174. package/src/lib/interfaces/availability/locationRecord.d.ts.map +1 -1
  175. package/src/lib/interfaces/availability/locationRecord.js +12 -0
  176. package/src/lib/interfaces/availability/locationRecord.js.map +1 -1
  177. package/src/lib/interfaces/availability/poolDeletionTombstone.d.ts +40 -0
  178. package/src/lib/interfaces/availability/poolDeletionTombstone.d.ts.map +1 -0
  179. package/src/lib/interfaces/availability/poolDeletionTombstone.js +19 -0
  180. package/src/lib/interfaces/availability/poolDeletionTombstone.js.map +1 -0
  181. package/src/lib/interfaces/availability/reconciliationService.d.ts +52 -0
  182. package/src/lib/interfaces/availability/reconciliationService.d.ts.map +1 -1
  183. package/src/lib/interfaces/availability/reconciliationService.js.map +1 -1
  184. package/src/lib/interfaces/blockCapacity.d.ts +9 -0
  185. package/src/lib/interfaces/blockCapacity.d.ts.map +1 -1
  186. package/src/lib/interfaces/blockEncryption.d.ts +4 -2
  187. package/src/lib/interfaces/blockEncryption.d.ts.map +1 -1
  188. package/src/lib/interfaces/blockFetch/blockFetchTransport.d.ts +26 -0
  189. package/src/lib/interfaces/blockFetch/blockFetchTransport.d.ts.map +1 -0
  190. package/src/lib/interfaces/blockFetch/blockFetchTransport.js +12 -0
  191. package/src/lib/interfaces/blockFetch/blockFetchTransport.js.map +1 -0
  192. package/src/lib/interfaces/blockFetch/blockFetcher.d.ts +71 -0
  193. package/src/lib/interfaces/blockFetch/blockFetcher.d.ts.map +1 -0
  194. package/src/lib/interfaces/blockFetch/blockFetcher.js +22 -0
  195. package/src/lib/interfaces/blockFetch/blockFetcher.js.map +1 -0
  196. package/src/lib/interfaces/blockFetch/enrichedQueryResult.d.ts +43 -0
  197. package/src/lib/interfaces/blockFetch/enrichedQueryResult.d.ts.map +1 -0
  198. package/src/lib/interfaces/blockFetch/enrichedQueryResult.js +13 -0
  199. package/src/lib/interfaces/blockFetch/enrichedQueryResult.js.map +1 -0
  200. package/src/lib/interfaces/blockFetch/fetchQueue.d.ts +70 -0
  201. package/src/lib/interfaces/blockFetch/fetchQueue.d.ts.map +1 -0
  202. package/src/lib/interfaces/blockFetch/fetchQueue.js +18 -0
  203. package/src/lib/interfaces/blockFetch/fetchQueue.js.map +1 -0
  204. package/src/lib/interfaces/blockFetch/index.d.ts +10 -0
  205. package/src/lib/interfaces/blockFetch/index.d.ts.map +1 -0
  206. package/src/lib/interfaces/blockFetch/index.js +13 -0
  207. package/src/lib/interfaces/blockFetch/index.js.map +1 -0
  208. package/src/lib/interfaces/blocks/index.d.ts +1 -0
  209. package/src/lib/interfaces/blocks/index.d.ts.map +1 -1
  210. package/src/lib/interfaces/blocks/vcbl.d.ts +16 -0
  211. package/src/lib/interfaces/blocks/vcbl.d.ts.map +1 -0
  212. package/src/lib/interfaces/blocks/vcbl.js +3 -0
  213. package/src/lib/interfaces/blocks/vcbl.js.map +1 -0
  214. package/src/lib/interfaces/brightpass/auditLog.d.ts +25 -0
  215. package/src/lib/interfaces/brightpass/auditLog.d.ts.map +1 -0
  216. package/src/lib/interfaces/brightpass/auditLog.js +21 -0
  217. package/src/lib/interfaces/brightpass/auditLog.js.map +1 -0
  218. package/src/lib/interfaces/brightpass/emergencyAccess.d.ts +11 -0
  219. package/src/lib/interfaces/brightpass/emergencyAccess.d.ts.map +1 -0
  220. package/src/lib/interfaces/brightpass/emergencyAccess.js +3 -0
  221. package/src/lib/interfaces/brightpass/emergencyAccess.js.map +1 -0
  222. package/src/lib/interfaces/brightpass/entryPropertyRecord.d.ts +11 -0
  223. package/src/lib/interfaces/brightpass/entryPropertyRecord.d.ts.map +1 -0
  224. package/src/lib/interfaces/brightpass/entryPropertyRecord.js +3 -0
  225. package/src/lib/interfaces/brightpass/entryPropertyRecord.js.map +1 -0
  226. package/src/lib/interfaces/brightpass/importTypes.d.ts +10 -0
  227. package/src/lib/interfaces/brightpass/importTypes.d.ts.map +1 -0
  228. package/src/lib/interfaces/brightpass/importTypes.js +3 -0
  229. package/src/lib/interfaces/brightpass/importTypes.js.map +1 -0
  230. package/src/lib/interfaces/brightpass/index.d.ts +7 -0
  231. package/src/lib/interfaces/brightpass/index.d.ts.map +1 -0
  232. package/src/lib/interfaces/brightpass/index.js +10 -0
  233. package/src/lib/interfaces/brightpass/index.js.map +1 -0
  234. package/src/lib/interfaces/brightpass/vaultEntry.d.ts +48 -0
  235. package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -0
  236. package/src/lib/interfaces/brightpass/vaultEntry.js +3 -0
  237. package/src/lib/interfaces/brightpass/vaultEntry.js.map +1 -0
  238. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +34 -0
  239. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -0
  240. package/src/lib/interfaces/brightpass/vaultMetadata.js +3 -0
  241. package/src/lib/interfaces/brightpass/vaultMetadata.js.map +1 -0
  242. package/src/lib/interfaces/clusterKeys.d.ts +4 -2
  243. package/src/lib/interfaces/clusterKeys.d.ts.map +1 -1
  244. package/src/lib/interfaces/communication.d.ts +173 -0
  245. package/src/lib/interfaces/communication.d.ts.map +1 -0
  246. package/src/lib/interfaces/communication.js +17 -0
  247. package/src/lib/interfaces/communication.js.map +1 -0
  248. package/src/lib/interfaces/communicationEvents.d.ts +168 -0
  249. package/src/lib/interfaces/communicationEvents.d.ts.map +1 -0
  250. package/src/lib/interfaces/communicationEvents.js +12 -0
  251. package/src/lib/interfaces/communicationEvents.js.map +1 -0
  252. package/src/lib/interfaces/crypto/ethereumWallet.d.ts +72 -0
  253. package/src/lib/interfaces/crypto/ethereumWallet.d.ts.map +1 -0
  254. package/src/lib/interfaces/crypto/ethereumWallet.js +12 -0
  255. package/src/lib/interfaces/crypto/ethereumWallet.js.map +1 -0
  256. package/src/lib/interfaces/crypto/gitSignature.d.ts +95 -0
  257. package/src/lib/interfaces/crypto/gitSignature.d.ts.map +1 -0
  258. package/src/lib/interfaces/crypto/gitSignature.js +12 -0
  259. package/src/lib/interfaces/crypto/gitSignature.js.map +1 -0
  260. package/src/lib/interfaces/crypto/index.d.ts +3 -0
  261. package/src/lib/interfaces/crypto/index.d.ts.map +1 -0
  262. package/src/lib/interfaces/crypto/index.js +3 -0
  263. package/src/lib/interfaces/crypto/index.js.map +1 -0
  264. package/src/lib/interfaces/dataKeyComponents.d.ts +7 -2
  265. package/src/lib/interfaces/dataKeyComponents.d.ts.map +1 -1
  266. package/src/lib/interfaces/encryptedBlockCreator.d.ts +4 -2
  267. package/src/lib/interfaces/encryptedBlockCreator.d.ts.map +1 -1
  268. package/src/lib/interfaces/events/communicationEventEmitter.d.ts +65 -0
  269. package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -0
  270. package/src/lib/interfaces/events/communicationEventEmitter.js +60 -0
  271. package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -0
  272. package/src/lib/interfaces/events/index.d.ts +2 -0
  273. package/src/lib/interfaces/events/index.d.ts.map +1 -0
  274. package/src/lib/interfaces/events/index.js +5 -0
  275. package/src/lib/interfaces/events/index.js.map +1 -0
  276. package/src/lib/interfaces/failableResult.d.ts +15 -0
  277. package/src/lib/interfaces/failableResult.d.ts.map +1 -0
  278. package/src/lib/interfaces/failableResult.js +3 -0
  279. package/src/lib/interfaces/failableResult.js.map +1 -0
  280. package/src/lib/interfaces/identity/device.d.ts +59 -0
  281. package/src/lib/interfaces/identity/device.d.ts.map +1 -0
  282. package/src/lib/interfaces/identity/device.js +17 -0
  283. package/src/lib/interfaces/identity/device.js.map +1 -0
  284. package/src/lib/interfaces/identity/deviceKeyStorage.d.ts +71 -0
  285. package/src/lib/interfaces/identity/deviceKeyStorage.d.ts.map +1 -0
  286. package/src/lib/interfaces/identity/deviceKeyStorage.js +16 -0
  287. package/src/lib/interfaces/identity/deviceKeyStorage.js.map +1 -0
  288. package/src/lib/interfaces/identity/identityProof.d.ts +90 -0
  289. package/src/lib/interfaces/identity/identityProof.d.ts.map +1 -0
  290. package/src/lib/interfaces/identity/identityProof.js +18 -0
  291. package/src/lib/interfaces/identity/identityProof.js.map +1 -0
  292. package/src/lib/interfaces/identity/index.d.ts +7 -0
  293. package/src/lib/interfaces/identity/index.d.ts.map +1 -0
  294. package/src/lib/interfaces/identity/index.js +3 -0
  295. package/src/lib/interfaces/identity/index.js.map +1 -0
  296. package/src/lib/interfaces/identity/paperKey.d.ts +97 -0
  297. package/src/lib/interfaces/identity/paperKey.d.ts.map +1 -0
  298. package/src/lib/interfaces/identity/paperKey.js +17 -0
  299. package/src/lib/interfaces/identity/paperKey.js.map +1 -0
  300. package/src/lib/interfaces/identity/publicProfile.d.ts +74 -0
  301. package/src/lib/interfaces/identity/publicProfile.d.ts.map +1 -0
  302. package/src/lib/interfaces/identity/publicProfile.js +18 -0
  303. package/src/lib/interfaces/identity/publicProfile.js.map +1 -0
  304. package/src/lib/interfaces/identity/splitPaperKey.d.ts +73 -0
  305. package/src/lib/interfaces/identity/splitPaperKey.d.ts.map +1 -0
  306. package/src/lib/interfaces/identity/splitPaperKey.js +20 -0
  307. package/src/lib/interfaces/identity/splitPaperKey.js.map +1 -0
  308. package/src/lib/interfaces/index.d.ts +11 -2
  309. package/src/lib/interfaces/index.d.ts.map +1 -1
  310. package/src/lib/interfaces/index.js +12 -0
  311. package/src/lib/interfaces/index.js.map +1 -1
  312. package/src/lib/interfaces/network/node.d.ts +4 -2
  313. package/src/lib/interfaces/network/node.d.ts.map +1 -1
  314. package/src/lib/interfaces/network/nodeAdvertisement.d.ts +4 -2
  315. package/src/lib/interfaces/network/nodeAdvertisement.d.ts.map +1 -1
  316. package/src/lib/interfaces/privateVotingDerivation.d.ts +7 -2
  317. package/src/lib/interfaces/privateVotingDerivation.d.ts.map +1 -1
  318. package/src/lib/interfaces/requests/communicationRequests.d.ts +154 -0
  319. package/src/lib/interfaces/requests/communicationRequests.d.ts.map +1 -0
  320. package/src/lib/interfaces/requests/communicationRequests.js +10 -0
  321. package/src/lib/interfaces/requests/communicationRequests.js.map +1 -0
  322. package/src/lib/interfaces/requests/index.d.ts +2 -0
  323. package/src/lib/interfaces/requests/index.d.ts.map +1 -0
  324. package/src/lib/interfaces/requests/index.js +3 -0
  325. package/src/lib/interfaces/requests/index.js.map +1 -0
  326. package/src/lib/interfaces/responses/blockDataResponse.d.ts +11 -0
  327. package/src/lib/interfaces/responses/blockDataResponse.d.ts.map +1 -0
  328. package/src/lib/interfaces/responses/blockDataResponse.js +3 -0
  329. package/src/lib/interfaces/responses/blockDataResponse.js.map +1 -0
  330. package/src/lib/interfaces/responses/communicationResponses.d.ts +82 -0
  331. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -0
  332. package/src/lib/interfaces/responses/communicationResponses.js +17 -0
  333. package/src/lib/interfaces/responses/communicationResponses.js.map +1 -0
  334. package/src/lib/interfaces/responses/cryptoResponses.d.ts +30 -0
  335. package/src/lib/interfaces/responses/cryptoResponses.d.ts.map +1 -0
  336. package/src/lib/interfaces/responses/cryptoResponses.js +12 -0
  337. package/src/lib/interfaces/responses/cryptoResponses.js.map +1 -0
  338. package/src/lib/interfaces/responses/deviceResponses.d.ts +26 -0
  339. package/src/lib/interfaces/responses/deviceResponses.d.ts.map +1 -0
  340. package/src/lib/interfaces/responses/deviceResponses.js +15 -0
  341. package/src/lib/interfaces/responses/deviceResponses.js.map +1 -0
  342. package/src/lib/interfaces/responses/directoryResponses.d.ts +26 -0
  343. package/src/lib/interfaces/responses/directoryResponses.d.ts.map +1 -0
  344. package/src/lib/interfaces/responses/directoryResponses.js +12 -0
  345. package/src/lib/interfaces/responses/directoryResponses.js.map +1 -0
  346. package/src/lib/interfaces/responses/emailResponses.d.ts +40 -0
  347. package/src/lib/interfaces/responses/emailResponses.d.ts.map +1 -0
  348. package/src/lib/interfaces/responses/emailResponses.js +18 -0
  349. package/src/lib/interfaces/responses/emailResponses.js.map +1 -0
  350. package/src/lib/interfaces/responses/explodingMessageResponses.d.ts +42 -0
  351. package/src/lib/interfaces/responses/explodingMessageResponses.d.ts.map +1 -0
  352. package/src/lib/interfaces/responses/explodingMessageResponses.js +11 -0
  353. package/src/lib/interfaces/responses/explodingMessageResponses.js.map +1 -0
  354. package/src/lib/interfaces/responses/identityProofResponses.d.ts +33 -0
  355. package/src/lib/interfaces/responses/identityProofResponses.d.ts.map +1 -0
  356. package/src/lib/interfaces/responses/identityProofResponses.js +12 -0
  357. package/src/lib/interfaces/responses/identityProofResponses.js.map +1 -0
  358. package/src/lib/interfaces/responses/index.d.ts +3 -1
  359. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  360. package/src/lib/interfaces/sealResults.d.ts +7 -2
  361. package/src/lib/interfaces/sealResults.d.ts.map +1 -1
  362. package/src/lib/interfaces/services/fecService.d.ts +7 -5
  363. package/src/lib/interfaces/services/fecService.d.ts.map +1 -1
  364. package/src/lib/interfaces/services/fecService.js +2 -0
  365. package/src/lib/interfaces/services/fecService.js.map +1 -1
  366. package/src/lib/interfaces/singleEncryptedBlockDetails.d.ts +7 -2
  367. package/src/lib/interfaces/singleEncryptedBlockDetails.d.ts.map +1 -1
  368. package/src/lib/interfaces/storage/blockMetadata.d.ts +8 -1
  369. package/src/lib/interfaces/storage/blockMetadata.d.ts.map +1 -1
  370. package/src/lib/interfaces/storage/blockMetadata.js +3 -1
  371. package/src/lib/interfaces/storage/blockMetadata.js.map +1 -1
  372. package/src/lib/interfaces/storage/cblIndex.d.ts +141 -0
  373. package/src/lib/interfaces/storage/cblIndex.d.ts.map +1 -0
  374. package/src/lib/interfaces/storage/cblIndex.js +28 -0
  375. package/src/lib/interfaces/storage/cblIndex.js.map +1 -0
  376. package/src/lib/interfaces/storage/clientSession.d.ts +22 -0
  377. package/src/lib/interfaces/storage/clientSession.d.ts.map +1 -0
  378. package/src/lib/interfaces/storage/clientSession.js +3 -0
  379. package/src/lib/interfaces/storage/clientSession.js.map +1 -0
  380. package/src/lib/interfaces/storage/collection.d.ts +80 -0
  381. package/src/lib/interfaces/storage/collection.d.ts.map +1 -0
  382. package/src/lib/interfaces/storage/collection.js +3 -0
  383. package/src/lib/interfaces/storage/collection.js.map +1 -0
  384. package/src/lib/interfaces/storage/database.d.ts +30 -0
  385. package/src/lib/interfaces/storage/database.d.ts.map +1 -0
  386. package/src/lib/interfaces/storage/database.js +3 -0
  387. package/src/lib/interfaces/storage/database.js.map +1 -0
  388. package/src/lib/interfaces/storage/databaseLifecycleHooks.d.ts +43 -0
  389. package/src/lib/interfaces/storage/databaseLifecycleHooks.d.ts.map +1 -0
  390. package/src/lib/interfaces/storage/databaseLifecycleHooks.js +3 -0
  391. package/src/lib/interfaces/storage/databaseLifecycleHooks.js.map +1 -0
  392. package/src/lib/interfaces/storage/documentTypes.d.ts +413 -0
  393. package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -0
  394. package/src/lib/interfaces/storage/documentTypes.js +8 -0
  395. package/src/lib/interfaces/storage/documentTypes.js.map +1 -0
  396. package/src/lib/interfaces/storage/encryptedPool.d.ts +64 -0
  397. package/src/lib/interfaces/storage/encryptedPool.d.ts.map +1 -0
  398. package/src/lib/interfaces/storage/encryptedPool.js +26 -0
  399. package/src/lib/interfaces/storage/encryptedPool.js.map +1 -0
  400. package/src/lib/interfaces/storage/headRegistry.d.ts +128 -0
  401. package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -0
  402. package/src/lib/interfaces/storage/headRegistry.js +3 -0
  403. package/src/lib/interfaces/storage/headRegistry.js.map +1 -0
  404. package/src/lib/interfaces/storage/index.d.ts +14 -0
  405. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  406. package/src/lib/interfaces/storage/index.js +14 -1
  407. package/src/lib/interfaces/storage/index.js.map +1 -1
  408. package/src/lib/interfaces/storage/pooledBlockStore.d.ts +163 -0
  409. package/src/lib/interfaces/storage/pooledBlockStore.d.ts.map +1 -0
  410. package/src/lib/interfaces/storage/pooledBlockStore.js +77 -0
  411. package/src/lib/interfaces/storage/pooledBlockStore.js.map +1 -0
  412. package/src/lib/interfaces/storage/readConcernBlockStore.d.ts +47 -0
  413. package/src/lib/interfaces/storage/readConcernBlockStore.d.ts.map +1 -0
  414. package/src/lib/interfaces/storage/readConcernBlockStore.js +29 -0
  415. package/src/lib/interfaces/storage/readConcernBlockStore.js.map +1 -0
  416. package/src/lib/interfaces/symmetricEncryptionResults.d.ts +7 -5
  417. package/src/lib/interfaces/symmetricEncryptionResults.d.ts.map +1 -1
  418. package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
  419. package/src/lib/services/blockCapacity.service.js +15 -0
  420. package/src/lib/services/blockCapacity.service.js.map +1 -1
  421. package/src/lib/services/brightpass/auditLogger.d.ts +41 -0
  422. package/src/lib/services/brightpass/auditLogger.d.ts.map +1 -0
  423. package/src/lib/services/brightpass/auditLogger.js +47 -0
  424. package/src/lib/services/brightpass/auditLogger.js.map +1 -0
  425. package/src/lib/services/brightpass/breachDetector.d.ts +68 -0
  426. package/src/lib/services/brightpass/breachDetector.d.ts.map +1 -0
  427. package/src/lib/services/brightpass/breachDetector.js +102 -0
  428. package/src/lib/services/brightpass/breachDetector.js.map +1 -0
  429. package/src/lib/services/brightpass/importParser.d.ts +105 -0
  430. package/src/lib/services/brightpass/importParser.d.ts.map +1 -0
  431. package/src/lib/services/brightpass/importParser.js +380 -0
  432. package/src/lib/services/brightpass/importParser.js.map +1 -0
  433. package/src/lib/services/brightpass/index.d.ts +16 -0
  434. package/src/lib/services/brightpass/index.d.ts.map +1 -0
  435. package/src/lib/services/brightpass/index.js +19 -0
  436. package/src/lib/services/brightpass/index.js.map +1 -0
  437. package/src/lib/services/brightpass/passwordGenerator.d.ts +111 -0
  438. package/src/lib/services/brightpass/passwordGenerator.d.ts.map +1 -0
  439. package/src/lib/services/brightpass/passwordGenerator.js +162 -0
  440. package/src/lib/services/brightpass/passwordGenerator.js.map +1 -0
  441. package/src/lib/services/brightpass/totpEngine.d.ts +191 -0
  442. package/src/lib/services/brightpass/totpEngine.d.ts.map +1 -0
  443. package/src/lib/services/brightpass/totpEngine.js +198 -0
  444. package/src/lib/services/brightpass/totpEngine.js.map +1 -0
  445. package/src/lib/services/brightpass/vaultKeyDerivation.d.ts +26 -0
  446. package/src/lib/services/brightpass/vaultKeyDerivation.d.ts.map +1 -0
  447. package/src/lib/services/brightpass/vaultKeyDerivation.js +42 -0
  448. package/src/lib/services/brightpass/vaultKeyDerivation.js.map +1 -0
  449. package/src/lib/services/brightpass/vaultSerializer.d.ts +14 -0
  450. package/src/lib/services/brightpass/vaultSerializer.d.ts.map +1 -0
  451. package/src/lib/services/brightpass/vaultSerializer.js +77 -0
  452. package/src/lib/services/brightpass/vaultSerializer.js.map +1 -0
  453. package/src/lib/services/cblService.d.ts +4 -2
  454. package/src/lib/services/cblService.d.ts.map +1 -1
  455. package/src/lib/services/cblService.js +8 -4
  456. package/src/lib/services/cblService.js.map +1 -1
  457. package/src/lib/services/communication/channelService.d.ts +208 -0
  458. package/src/lib/services/communication/channelService.d.ts.map +1 -0
  459. package/src/lib/services/communication/channelService.js +575 -0
  460. package/src/lib/services/communication/channelService.js.map +1 -0
  461. package/src/lib/services/communication/conversationService.d.ts +130 -0
  462. package/src/lib/services/communication/conversationService.d.ts.map +1 -0
  463. package/src/lib/services/communication/conversationService.js +279 -0
  464. package/src/lib/services/communication/conversationService.js.map +1 -0
  465. package/src/lib/services/communication/explodingMessageService.d.ts +168 -0
  466. package/src/lib/services/communication/explodingMessageService.d.ts.map +1 -0
  467. package/src/lib/services/communication/explodingMessageService.js +287 -0
  468. package/src/lib/services/communication/explodingMessageService.js.map +1 -0
  469. package/src/lib/services/communication/groupService.d.ts +165 -0
  470. package/src/lib/services/communication/groupService.d.ts.map +1 -0
  471. package/src/lib/services/communication/groupService.js +437 -0
  472. package/src/lib/services/communication/groupService.js.map +1 -0
  473. package/src/lib/services/communication/index.d.ts +16 -0
  474. package/src/lib/services/communication/index.d.ts.map +1 -0
  475. package/src/lib/services/communication/index.js +63 -0
  476. package/src/lib/services/communication/index.js.map +1 -0
  477. package/src/lib/services/communication/messageOperationsService.d.ts +81 -0
  478. package/src/lib/services/communication/messageOperationsService.d.ts.map +1 -0
  479. package/src/lib/services/communication/messageOperationsService.js +162 -0
  480. package/src/lib/services/communication/messageOperationsService.js.map +1 -0
  481. package/src/lib/services/communication/permissionService.d.ts +47 -0
  482. package/src/lib/services/communication/permissionService.d.ts.map +1 -0
  483. package/src/lib/services/communication/permissionService.js +82 -0
  484. package/src/lib/services/communication/permissionService.js.map +1 -0
  485. package/src/lib/services/communication/searchService.d.ts +30 -0
  486. package/src/lib/services/communication/searchService.d.ts.map +1 -0
  487. package/src/lib/services/communication/searchService.js +83 -0
  488. package/src/lib/services/communication/searchService.js.map +1 -0
  489. package/src/lib/services/crypto/ethereumWalletService.d.ts +159 -0
  490. package/src/lib/services/crypto/ethereumWalletService.d.ts.map +1 -0
  491. package/src/lib/services/crypto/ethereumWalletService.js +345 -0
  492. package/src/lib/services/crypto/ethereumWalletService.js.map +1 -0
  493. package/src/lib/services/crypto/gitSigningService.d.ts +145 -0
  494. package/src/lib/services/crypto/gitSigningService.d.ts.map +1 -0
  495. package/src/lib/services/crypto/gitSigningService.js +291 -0
  496. package/src/lib/services/crypto/gitSigningService.js.map +1 -0
  497. package/src/lib/services/crypto/index.d.ts +3 -0
  498. package/src/lib/services/crypto/index.d.ts.map +1 -0
  499. package/src/lib/services/crypto/index.js +6 -0
  500. package/src/lib/services/crypto/index.js.map +1 -0
  501. package/src/lib/services/identity/deviceProvisioningService.d.ts +146 -0
  502. package/src/lib/services/identity/deviceProvisioningService.d.ts.map +1 -0
  503. package/src/lib/services/identity/deviceProvisioningService.js +219 -0
  504. package/src/lib/services/identity/deviceProvisioningService.js.map +1 -0
  505. package/src/lib/services/identity/identityProofService.d.ts +139 -0
  506. package/src/lib/services/identity/identityProofService.d.ts.map +1 -0
  507. package/src/lib/services/identity/identityProofService.js +245 -0
  508. package/src/lib/services/identity/identityProofService.js.map +1 -0
  509. package/src/lib/services/identity/index.d.ts +14 -0
  510. package/src/lib/services/identity/index.d.ts.map +1 -0
  511. package/src/lib/services/identity/index.js +17 -0
  512. package/src/lib/services/identity/index.js.map +1 -0
  513. package/src/lib/services/identity/memberIdentityProofService.d.ts +179 -0
  514. package/src/lib/services/identity/memberIdentityProofService.d.ts.map +1 -0
  515. package/src/lib/services/identity/memberIdentityProofService.js +232 -0
  516. package/src/lib/services/identity/memberIdentityProofService.js.map +1 -0
  517. package/src/lib/services/identity/memberPaperKeyService.d.ts +223 -0
  518. package/src/lib/services/identity/memberPaperKeyService.d.ts.map +1 -0
  519. package/src/lib/services/identity/memberPaperKeyService.js +279 -0
  520. package/src/lib/services/identity/memberPaperKeyService.js.map +1 -0
  521. package/src/lib/services/identity/paperKeyService.d.ts +106 -0
  522. package/src/lib/services/identity/paperKeyService.d.ts.map +1 -0
  523. package/src/lib/services/identity/paperKeyService.js +161 -0
  524. package/src/lib/services/identity/paperKeyService.js.map +1 -0
  525. package/src/lib/services/identity/publicKeyDirectoryService.d.ts +210 -0
  526. package/src/lib/services/identity/publicKeyDirectoryService.d.ts.map +1 -0
  527. package/src/lib/services/identity/publicKeyDirectoryService.js +328 -0
  528. package/src/lib/services/identity/publicKeyDirectoryService.js.map +1 -0
  529. package/src/lib/services/identity/splitPaperKeyService.d.ts +92 -0
  530. package/src/lib/services/identity/splitPaperKeyService.d.ts.map +1 -0
  531. package/src/lib/services/identity/splitPaperKeyService.js +305 -0
  532. package/src/lib/services/identity/splitPaperKeyService.js.map +1 -0
  533. package/src/lib/services/index.d.ts +4 -0
  534. package/src/lib/services/index.d.ts.map +1 -1
  535. package/src/lib/services/index.js +7 -0
  536. package/src/lib/services/index.js.map +1 -1
  537. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  538. package/src/lib/services/messaging/emailMessageService.js +26 -9
  539. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  540. package/src/lib/services/messaging/emailParser.d.ts +18 -0
  541. package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
  542. package/src/lib/services/messaging/emailParser.js +18 -0
  543. package/src/lib/services/messaging/emailParser.js.map +1 -1
  544. package/src/lib/services/tuple.service.d.ts +27 -2
  545. package/src/lib/services/tuple.service.d.ts.map +1 -1
  546. package/src/lib/services/tuple.service.js +62 -20
  547. package/src/lib/services/tuple.service.js.map +1 -1
  548. package/src/lib/services/vcblService.d.ts +36 -0
  549. package/src/lib/services/vcblService.d.ts.map +1 -0
  550. package/src/lib/services/vcblService.js +326 -0
  551. package/src/lib/services/vcblService.js.map +1 -0
  552. package/src/lib/stores/index.d.ts +1 -0
  553. package/src/lib/stores/index.d.ts.map +1 -1
  554. package/src/lib/stores/index.js +1 -0
  555. package/src/lib/stores/index.js.map +1 -1
  556. package/src/lib/stores/pooledMemoryBlockStore.d.ts +134 -0
  557. package/src/lib/stores/pooledMemoryBlockStore.d.ts.map +1 -0
  558. package/src/lib/stores/pooledMemoryBlockStore.js +583 -0
  559. package/src/lib/stores/pooledMemoryBlockStore.js.map +1 -0
  560. package/src/lib/types/checksum.d.ts +11 -0
  561. package/src/lib/types/checksum.d.ts.map +1 -1
  562. package/src/lib/types/checksum.js +11 -0
  563. package/src/lib/types/checksum.js.map +1 -1
  564. package/src/lib/utils/index.d.ts +9 -0
  565. package/src/lib/utils/index.d.ts.map +1 -1
  566. package/src/lib/utils/index.js +12 -0
  567. package/src/lib/utils/index.js.map +1 -1
  568. package/src/lib/utils/pagination.d.ts +27 -0
  569. package/src/lib/utils/pagination.d.ts.map +1 -0
  570. package/src/lib/utils/pagination.js +38 -0
  571. package/src/lib/utils/pagination.js.map +1 -0
@@ -0,0 +1,130 @@
1
+ /**
2
+ * ConversationService — manages direct message conversations and promotion to groups.
3
+ *
4
+ * Maintains in-memory stores for conversations and messages, delegating
5
+ * encrypted content storage to MessagePassingService. Supports cursor-based
6
+ * pagination, message deletion, and conversation promotion to groups.
7
+ *
8
+ * Requirements: 10.1
9
+ */
10
+ import { ICommunicationMessage, IConversation, IGroup, IPaginatedResult } from '../../interfaces/communication';
11
+ import { ICommunicationEventEmitter } from '../../interfaces/events';
12
+ /**
13
+ * Callback to check whether a member exists and is not blocked by the sender.
14
+ * Returns true if the member is reachable, false otherwise.
15
+ * Used to produce uniform errors for non-existent and blocked members.
16
+ */
17
+ export type MemberReachabilityCheck = (senderId: string, recipientId: string) => boolean;
18
+ /**
19
+ * Callback to promote a conversation to a group.
20
+ * Injected from GroupService once it is available.
21
+ * Returns the newly created IGroup.
22
+ */
23
+ export type GroupPromotionHandler = (conversationId: string, existingParticipants: [string, string], newMemberIds: string[], messages: ICommunicationMessage[], requesterId: string) => Promise<IGroup>;
24
+ /**
25
+ * Uniform error thrown when a recipient is not reachable.
26
+ * The message is intentionally identical for non-existent and blocked members
27
+ * to prevent information leakage.
28
+ */
29
+ export declare class RecipientNotReachableError extends Error {
30
+ constructor();
31
+ }
32
+ export declare class ConversationNotFoundError extends Error {
33
+ constructor(conversationId: string);
34
+ }
35
+ export declare class NotParticipantError extends Error {
36
+ constructor();
37
+ }
38
+ export declare class MessageNotFoundError extends Error {
39
+ constructor(messageId: string);
40
+ }
41
+ export declare class NotMessageAuthorError extends Error {
42
+ constructor();
43
+ }
44
+ export declare class GroupPromotionNotConfiguredError extends Error {
45
+ constructor();
46
+ }
47
+ export declare class ConversationService {
48
+ /** conversationId → IConversation */
49
+ private readonly conversations;
50
+ /** conversationId → messages (ordered by createdAt ascending) */
51
+ private readonly messages;
52
+ /** "memberA:memberB" (sorted) → conversationId for dedup */
53
+ private readonly participantIndex;
54
+ /** Set of blocked pairs: "blocker:blocked" */
55
+ private readonly blockedPairs;
56
+ /** Set of known member IDs */
57
+ private readonly knownMembers;
58
+ private groupPromotionHandler;
59
+ private readonly memberReachabilityCheck;
60
+ private readonly eventEmitter;
61
+ constructor(memberReachabilityCheck?: MemberReachabilityCheck | null, eventEmitter?: ICommunicationEventEmitter);
62
+ /**
63
+ * Register a member as known (exists in the system).
64
+ */
65
+ registerMember(memberId: string): void;
66
+ /**
67
+ * Block a member. The blocker will not receive messages from the blocked member.
68
+ */
69
+ blockMember(blockerId: string, blockedId: string): void;
70
+ /**
71
+ * Set the handler for promoting conversations to groups.
72
+ * Called during initialization once GroupService is available.
73
+ */
74
+ setGroupPromotionHandler(handler: GroupPromotionHandler): void;
75
+ /**
76
+ * Check if a recipient is reachable by the sender.
77
+ * Returns false for non-existent or blocked members.
78
+ */
79
+ private isReachable;
80
+ /**
81
+ * Build a sorted participant key for dedup lookups.
82
+ */
83
+ private participantKey;
84
+ /**
85
+ * Create a new conversation between two members, or return the existing one.
86
+ */
87
+ createOrGetConversation(memberA: string, memberB: string): Promise<IConversation>;
88
+ /**
89
+ * List conversations for a member, sorted by lastMessageAt descending.
90
+ * Supports cursor-based pagination.
91
+ */
92
+ listConversations(memberId: string, cursor?: string, limit?: number): Promise<IPaginatedResult<IConversation>>;
93
+ /**
94
+ * Get messages in a conversation, in chronological order.
95
+ * Supports cursor-based pagination.
96
+ */
97
+ getMessages(conversationId: string, memberId: string, cursor?: string, limit?: number): Promise<IPaginatedResult<ICommunicationMessage>>;
98
+ /**
99
+ * Send a message in a conversation.
100
+ * Creates the conversation if it doesn't exist.
101
+ * Checks recipient reachability and returns a uniform error for
102
+ * non-existent or blocked members.
103
+ */
104
+ sendMessage(senderId: string, recipientId: string, content: string, conversationId?: string): Promise<ICommunicationMessage>;
105
+ /**
106
+ * Delete a message authored by the requesting member.
107
+ * Marks the message as deleted for all participants.
108
+ */
109
+ deleteMessage(conversationId: string, messageId: string, memberId: string): Promise<void>;
110
+ /**
111
+ * Promote a conversation to a group by adding new members.
112
+ * Delegates to the GroupPromotionHandler (wired from GroupService).
113
+ */
114
+ promoteToGroup(conversationId: string, newMemberIds: string[], requesterId: string): Promise<IGroup>;
115
+ /**
116
+ * Get a conversation by ID. Returns undefined if not found.
117
+ */
118
+ getConversation(conversationId: string): IConversation | undefined;
119
+ /**
120
+ * Get all messages for a conversation (no pagination). Used internally
121
+ * for promotion and testing.
122
+ */
123
+ getAllMessages(conversationId: string): ICommunicationMessage[];
124
+ /**
125
+ * Return all conversations that include the given member (no pagination).
126
+ * Used by SearchService for cross-context keyword search.
127
+ */
128
+ listAllConversationsForMember(memberId: string): IConversation[];
129
+ }
130
+ //# sourceMappingURL=conversationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/conversationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ /**
3
+ * ConversationService — manages direct message conversations and promotion to groups.
4
+ *
5
+ * Maintains in-memory stores for conversations and messages, delegating
6
+ * encrypted content storage to MessagePassingService. Supports cursor-based
7
+ * pagination, message deletion, and conversation promotion to groups.
8
+ *
9
+ * Requirements: 10.1
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConversationService = exports.GroupPromotionNotConfiguredError = exports.NotMessageAuthorError = exports.MessageNotFoundError = exports.NotParticipantError = exports.ConversationNotFoundError = exports.RecipientNotReachableError = void 0;
13
+ const uuid_1 = require("uuid");
14
+ const events_1 = require("../../interfaces/events");
15
+ const pagination_1 = require("../../utils/pagination");
16
+ /**
17
+ * Uniform error thrown when a recipient is not reachable.
18
+ * The message is intentionally identical for non-existent and blocked members
19
+ * to prevent information leakage.
20
+ */
21
+ class RecipientNotReachableError extends Error {
22
+ constructor() {
23
+ super('Recipient not found');
24
+ this.name = 'RecipientNotReachableError';
25
+ }
26
+ }
27
+ exports.RecipientNotReachableError = RecipientNotReachableError;
28
+ class ConversationNotFoundError extends Error {
29
+ constructor(conversationId) {
30
+ super(`Conversation ${conversationId} not found`);
31
+ this.name = 'ConversationNotFoundError';
32
+ }
33
+ }
34
+ exports.ConversationNotFoundError = ConversationNotFoundError;
35
+ class NotParticipantError extends Error {
36
+ constructor() {
37
+ super('You are not a participant in this conversation');
38
+ this.name = 'NotParticipantError';
39
+ }
40
+ }
41
+ exports.NotParticipantError = NotParticipantError;
42
+ class MessageNotFoundError extends Error {
43
+ constructor(messageId) {
44
+ super(`Message ${messageId} not found`);
45
+ this.name = 'MessageNotFoundError';
46
+ }
47
+ }
48
+ exports.MessageNotFoundError = MessageNotFoundError;
49
+ class NotMessageAuthorError extends Error {
50
+ constructor() {
51
+ super('You can only delete messages you authored');
52
+ this.name = 'NotMessageAuthorError';
53
+ }
54
+ }
55
+ exports.NotMessageAuthorError = NotMessageAuthorError;
56
+ class GroupPromotionNotConfiguredError extends Error {
57
+ constructor() {
58
+ super('Group promotion is not configured');
59
+ this.name = 'GroupPromotionNotConfiguredError';
60
+ }
61
+ }
62
+ exports.GroupPromotionNotConfiguredError = GroupPromotionNotConfiguredError;
63
+ class ConversationService {
64
+ constructor(memberReachabilityCheck = null, eventEmitter = new events_1.NullEventEmitter()) {
65
+ /** conversationId → IConversation */
66
+ this.conversations = new Map();
67
+ /** conversationId → messages (ordered by createdAt ascending) */
68
+ this.messages = new Map();
69
+ /** "memberA:memberB" (sorted) → conversationId for dedup */
70
+ this.participantIndex = new Map();
71
+ /** Set of blocked pairs: "blocker:blocked" */
72
+ this.blockedPairs = new Set();
73
+ /** Set of known member IDs */
74
+ this.knownMembers = new Set();
75
+ this.groupPromotionHandler = null;
76
+ this.memberReachabilityCheck = memberReachabilityCheck;
77
+ this.eventEmitter = eventEmitter;
78
+ }
79
+ /**
80
+ * Register a member as known (exists in the system).
81
+ */
82
+ registerMember(memberId) {
83
+ this.knownMembers.add(memberId);
84
+ }
85
+ /**
86
+ * Block a member. The blocker will not receive messages from the blocked member.
87
+ */
88
+ blockMember(blockerId, blockedId) {
89
+ this.blockedPairs.add(`${blockerId}:${blockedId}`);
90
+ }
91
+ /**
92
+ * Set the handler for promoting conversations to groups.
93
+ * Called during initialization once GroupService is available.
94
+ */
95
+ setGroupPromotionHandler(handler) {
96
+ this.groupPromotionHandler = handler;
97
+ }
98
+ /**
99
+ * Check if a recipient is reachable by the sender.
100
+ * Returns false for non-existent or blocked members.
101
+ */
102
+ isReachable(senderId, recipientId) {
103
+ if (this.memberReachabilityCheck) {
104
+ return this.memberReachabilityCheck(senderId, recipientId);
105
+ }
106
+ if (!this.knownMembers.has(recipientId)) {
107
+ return false;
108
+ }
109
+ return !this.blockedPairs.has(`${recipientId}:${senderId}`);
110
+ }
111
+ /**
112
+ * Build a sorted participant key for dedup lookups.
113
+ */
114
+ participantKey(a, b) {
115
+ return a < b ? `${a}:${b}` : `${b}:${a}`;
116
+ }
117
+ /**
118
+ * Create a new conversation between two members, or return the existing one.
119
+ */
120
+ async createOrGetConversation(memberA, memberB) {
121
+ const key = this.participantKey(memberA, memberB);
122
+ const existingId = this.participantIndex.get(key);
123
+ if (existingId) {
124
+ const existing = this.conversations.get(existingId);
125
+ if (existing) {
126
+ return existing;
127
+ }
128
+ }
129
+ const now = new Date();
130
+ const conversation = {
131
+ id: (0, uuid_1.v4)(),
132
+ participants: [memberA, memberB],
133
+ createdAt: now,
134
+ lastMessageAt: now,
135
+ };
136
+ this.conversations.set(conversation.id, conversation);
137
+ this.messages.set(conversation.id, []);
138
+ this.participantIndex.set(key, conversation.id);
139
+ return conversation;
140
+ }
141
+ /**
142
+ * List conversations for a member, sorted by lastMessageAt descending.
143
+ * Supports cursor-based pagination.
144
+ */
145
+ async listConversations(memberId, cursor, limit = 20) {
146
+ const memberConversations = Array.from(this.conversations.values())
147
+ .filter((c) => c.participants[0] === memberId || c.participants[1] === memberId)
148
+ .sort((a, b) => b.lastMessageAt.getTime() - a.lastMessageAt.getTime());
149
+ return (0, pagination_1.paginateItems)(memberConversations, cursor, limit);
150
+ }
151
+ /**
152
+ * Get messages in a conversation, in chronological order.
153
+ * Supports cursor-based pagination.
154
+ */
155
+ async getMessages(conversationId, memberId, cursor, limit = 50) {
156
+ const conversation = this.conversations.get(conversationId);
157
+ if (!conversation) {
158
+ throw new ConversationNotFoundError(conversationId);
159
+ }
160
+ if (conversation.participants[0] !== memberId &&
161
+ conversation.participants[1] !== memberId) {
162
+ throw new NotParticipantError();
163
+ }
164
+ const msgs = this.messages.get(conversationId) ?? [];
165
+ return (0, pagination_1.paginateItems)(msgs, cursor, limit);
166
+ }
167
+ /**
168
+ * Send a message in a conversation.
169
+ * Creates the conversation if it doesn't exist.
170
+ * Checks recipient reachability and returns a uniform error for
171
+ * non-existent or blocked members.
172
+ */
173
+ async sendMessage(senderId, recipientId, content, conversationId) {
174
+ // Check reachability: uniform error for blocked/non-existent
175
+ if (!this.isReachable(senderId, recipientId)) {
176
+ throw new RecipientNotReachableError();
177
+ }
178
+ let conversation;
179
+ if (conversationId) {
180
+ const existing = this.conversations.get(conversationId);
181
+ if (!existing) {
182
+ throw new ConversationNotFoundError(conversationId);
183
+ }
184
+ conversation = existing;
185
+ }
186
+ else {
187
+ conversation = await this.createOrGetConversation(senderId, recipientId);
188
+ }
189
+ const now = new Date();
190
+ const message = {
191
+ id: (0, uuid_1.v4)(),
192
+ contextType: 'conversation',
193
+ contextId: conversation.id,
194
+ senderId,
195
+ encryptedContent: content,
196
+ createdAt: now,
197
+ editHistory: [],
198
+ deleted: false,
199
+ pinned: false,
200
+ reactions: [],
201
+ };
202
+ const msgs = this.messages.get(conversation.id);
203
+ if (msgs) {
204
+ msgs.push(message);
205
+ }
206
+ // Update conversation's lastMessageAt
207
+ conversation.lastMessageAt = now;
208
+ // Emit message sent event
209
+ this.eventEmitter.emitMessageSent('conversation', conversation.id, message.id, senderId);
210
+ return message;
211
+ }
212
+ /**
213
+ * Delete a message authored by the requesting member.
214
+ * Marks the message as deleted for all participants.
215
+ */
216
+ async deleteMessage(conversationId, messageId, memberId) {
217
+ const conversation = this.conversations.get(conversationId);
218
+ if (!conversation) {
219
+ throw new ConversationNotFoundError(conversationId);
220
+ }
221
+ if (conversation.participants[0] !== memberId &&
222
+ conversation.participants[1] !== memberId) {
223
+ throw new NotParticipantError();
224
+ }
225
+ const msgs = this.messages.get(conversationId) ?? [];
226
+ const message = msgs.find((m) => m.id === messageId);
227
+ if (!message) {
228
+ throw new MessageNotFoundError(messageId);
229
+ }
230
+ if (message.senderId !== memberId) {
231
+ throw new NotMessageAuthorError();
232
+ }
233
+ message.deleted = true;
234
+ message.deletedBy = memberId;
235
+ // Emit message deleted event
236
+ this.eventEmitter.emitMessageDeleted('conversation', conversationId, messageId, memberId);
237
+ }
238
+ /**
239
+ * Promote a conversation to a group by adding new members.
240
+ * Delegates to the GroupPromotionHandler (wired from GroupService).
241
+ */
242
+ async promoteToGroup(conversationId, newMemberIds, requesterId) {
243
+ if (!this.groupPromotionHandler) {
244
+ throw new GroupPromotionNotConfiguredError();
245
+ }
246
+ const conversation = this.conversations.get(conversationId);
247
+ if (!conversation) {
248
+ throw new ConversationNotFoundError(conversationId);
249
+ }
250
+ if (conversation.participants[0] !== requesterId &&
251
+ conversation.participants[1] !== requesterId) {
252
+ throw new NotParticipantError();
253
+ }
254
+ const msgs = this.messages.get(conversationId) ?? [];
255
+ return this.groupPromotionHandler(conversationId, conversation.participants, newMemberIds, msgs, requesterId);
256
+ }
257
+ /**
258
+ * Get a conversation by ID. Returns undefined if not found.
259
+ */
260
+ getConversation(conversationId) {
261
+ return this.conversations.get(conversationId);
262
+ }
263
+ /**
264
+ * Get all messages for a conversation (no pagination). Used internally
265
+ * for promotion and testing.
266
+ */
267
+ getAllMessages(conversationId) {
268
+ return this.messages.get(conversationId) ?? [];
269
+ }
270
+ /**
271
+ * Return all conversations that include the given member (no pagination).
272
+ * Used by SearchService for cross-context keyword search.
273
+ */
274
+ listAllConversationsForMember(memberId) {
275
+ return Array.from(this.conversations.values()).filter((c) => c.participants[0] === memberId || c.participants[1] === memberId);
276
+ }
277
+ }
278
+ exports.ConversationService = ConversationService;
279
+ //# sourceMappingURL=conversationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/conversationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * ExplodingMessageService — self-destructing message logic for BrightChain.
3
+ *
4
+ * Provides time-based and read-count-based message expiration with
5
+ * secure deletion. Messages can be configured to auto-destruct after
6
+ * a specified time or after being read a certain number of times.
7
+ *
8
+ * All methods are stateless and operate on message objects directly.
9
+ * Persistence and scheduling are handled by the caller.
10
+ *
11
+ * Requirements: 8.1, 8.2, 8.3, 8.4, 8.7
12
+ */
13
+ import { CommunicationEventType } from '../../enumerations/communication';
14
+ import { ICommunicationMessage } from '../../interfaces/communication';
15
+ export declare class ExplodingMessageError extends Error {
16
+ constructor(message: string);
17
+ }
18
+ export declare class MessageAlreadyExplodedError extends ExplodingMessageError {
19
+ constructor(messageId: string);
20
+ }
21
+ export declare class InvalidExpirationError extends ExplodingMessageError {
22
+ constructor(reason: string);
23
+ }
24
+ /**
25
+ * Event emitted when a message explodes (is permanently deleted).
26
+ */
27
+ export interface IExplodingMessageEvent {
28
+ type: CommunicationEventType;
29
+ messageId: string;
30
+ contextId: string;
31
+ contextType: 'conversation' | 'group' | 'channel';
32
+ reason: 'time_expired' | 'read_count_exceeded';
33
+ explodedAt: Date;
34
+ }
35
+ /**
36
+ * Result of checking expired messages.
37
+ */
38
+ export interface IExpiredMessagesResult {
39
+ /** Messages that have expired and should be deleted */
40
+ expired: ICommunicationMessage[];
41
+ /** Events to emit for each expired message */
42
+ events: IExplodingMessageEvent[];
43
+ }
44
+ /**
45
+ * Service for managing self-destructing (exploding) messages.
46
+ *
47
+ * Supports two expiration modes:
48
+ * - Time-based: message expires after a specified duration
49
+ * - Read-count: message expires after being read N times
50
+ *
51
+ * Both modes can be combined on a single message.
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * // Set a 5-minute expiration
56
+ * ExplodingMessageService.setExpiration(message, {
57
+ * expiresInMs: 5 * 60 * 1000,
58
+ * });
59
+ *
60
+ * // Set a read-count limit
61
+ * ExplodingMessageService.setExpiration(message, {
62
+ * maxReads: 3,
63
+ * });
64
+ *
65
+ * // Mark as read by a member
66
+ * ExplodingMessageService.markRead(message, 'member-123');
67
+ *
68
+ * // Check if expired
69
+ * const shouldExplode = ExplodingMessageService.checkExpiration(message);
70
+ * ```
71
+ */
72
+ export declare class ExplodingMessageService {
73
+ /**
74
+ * Configure expiration settings on a message.
75
+ *
76
+ * @param message - The message to configure
77
+ * @param options - Expiration options
78
+ * @param options.expiresAt - Absolute expiration time
79
+ * @param options.expiresInMs - Relative expiration (milliseconds from now)
80
+ * @param options.maxReads - Maximum read count before expiration
81
+ * @throws {MessageAlreadyExplodedError} If the message has already exploded
82
+ * @throws {InvalidExpirationError} If no expiration option is provided
83
+ *
84
+ * Requirements: 8.1, 8.2
85
+ */
86
+ static setExpiration(message: ICommunicationMessage, options: {
87
+ expiresAt?: Date;
88
+ expiresInMs?: number;
89
+ maxReads?: number;
90
+ }): void;
91
+ /**
92
+ * Record that a member has read a message.
93
+ *
94
+ * Increments the read count and records the member's read timestamp.
95
+ * If the member has already read the message, this is a no-op for
96
+ * the read count but updates the timestamp.
97
+ *
98
+ * @param message - The message to mark as read
99
+ * @param memberId - The ID of the member who read the message
100
+ * @returns `true` if the message should now be exploded (read count exceeded)
101
+ * @throws {MessageAlreadyExplodedError} If the message has already exploded
102
+ *
103
+ * Requirements: 8.2, 8.3
104
+ */
105
+ static markRead(message: ICommunicationMessage, memberId: string): boolean;
106
+ /**
107
+ * Check whether a message has expired based on its expiration settings.
108
+ *
109
+ * Checks both time-based and read-count-based expiration.
110
+ *
111
+ * @param message - The message to check
112
+ * @param now - Optional current time (defaults to Date.now())
113
+ * @returns The reason for expiration, or `null` if not expired
114
+ *
115
+ * Requirements: 8.1, 8.2, 8.4
116
+ */
117
+ static checkExpiration(message: ICommunicationMessage, now?: Date): 'time_expired' | 'read_count_exceeded' | null;
118
+ /**
119
+ * Explode (permanently delete) a message.
120
+ *
121
+ * Clears the encrypted content and marks the message as exploded.
122
+ * The message metadata is preserved for audit purposes.
123
+ *
124
+ * @param message - The message to explode
125
+ * @returns The explosion event
126
+ * @throws {MessageAlreadyExplodedError} If the message has already exploded
127
+ *
128
+ * Requirements: 8.4, 8.7
129
+ */
130
+ static explode(message: ICommunicationMessage): IExplodingMessageEvent;
131
+ /**
132
+ * Scan a collection of messages and find all that have expired.
133
+ *
134
+ * Returns the expired messages and the events to emit for each.
135
+ * Does NOT modify the messages — call {@link explode} on each
136
+ * returned message to actually delete them.
137
+ *
138
+ * @param messages - The messages to scan
139
+ * @param now - Optional current time (defaults to Date.now())
140
+ * @returns The expired messages and their events
141
+ *
142
+ * Requirements: 8.4
143
+ */
144
+ static deleteExpired(messages: ReadonlyArray<ICommunicationMessage>, now?: Date): IExpiredMessagesResult;
145
+ /**
146
+ * Check if a message is an exploding message (has any expiration configured).
147
+ *
148
+ * @param message - The message to check
149
+ * @returns `true` if the message has expiration settings
150
+ */
151
+ static isExplodingMessage(message: ICommunicationMessage): boolean;
152
+ /**
153
+ * Get the remaining time until a message expires (in milliseconds).
154
+ *
155
+ * @param message - The message to check
156
+ * @param now - Optional current time
157
+ * @returns Remaining time in ms, or `null` if no time-based expiration
158
+ */
159
+ static getRemainingTime(message: ICommunicationMessage, now?: Date): number | null;
160
+ /**
161
+ * Get the remaining reads before a message expires.
162
+ *
163
+ * @param message - The message to check
164
+ * @returns Remaining reads, or `null` if no read-count expiration
165
+ */
166
+ static getRemainingReads(message: ICommunicationMessage): number | null;
167
+ }
168
+ //# sourceMappingURL=explodingMessageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explodingMessageService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/explodingMessageService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAIvE,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,2BAA4B,SAAQ,qBAAqB;gBACxD,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,MAAM,EAAE,MAAM;CAI3B;AAID;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,cAAc,GAAG,qBAAqB,CAAC;IAC/C,UAAU,EAAE,IAAI,CAAC;CAClB;AAID;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,MAAM,EAAE,sBAAsB,EAAE,CAAC;CAClC;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,uBAAuB;IAClC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,aAAa,CAClB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,IAAI;IA6CP;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IA6B1E;;;;;;;;;;OAUG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,qBAAqB,EAC9B,GAAG,CAAC,EAAE,IAAI,GACT,cAAc,GAAG,qBAAqB,GAAG,IAAI;IAwBhD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,sBAAsB;IAuBtE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,aAAa,CAClB,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,EAC9C,GAAG,CAAC,EAAE,IAAI,GACT,sBAAsB;IA+BzB;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO;IAIlE;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CACrB,OAAO,EAAE,qBAAqB,EAC9B,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,GAAG,IAAI;IAShB;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI;CAOxE"}