@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,575 @@
1
+ "use strict";
2
+ /**
3
+ * ChannelService — manages channel lifecycle, visibility, invites, and messaging.
4
+ *
5
+ * Maintains in-memory stores for channels, messages, and invite tokens.
6
+ * Supports channel creation with visibility modes, join/leave, messaging,
7
+ * search, invite token generation/redemption, mute/kick operations.
8
+ *
9
+ * Requirements: 10.3
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ChannelService = exports.InviteTokenNotFoundError = exports.InviteTokenExpiredError = exports.ChannelJoinDeniedError = exports.ChannelNameConflictError = exports.MemberAlreadyInChannelError = exports.ChannelReactionNotFoundError = exports.NotMessageAuthorError = exports.ChannelMemberMutedError = exports.ChannelPermissionError = exports.ChannelMessageNotFoundError = exports.NotChannelMemberError = exports.ChannelNotFoundError = void 0;
13
+ exports.extractChannelKeyFromDefault = extractChannelKeyFromDefault;
14
+ const uuid_1 = require("uuid");
15
+ const platformCrypto_1 = require("../../crypto/platformCrypto");
16
+ const communication_1 = require("../../enumerations/communication");
17
+ const events_1 = require("../../interfaces/events");
18
+ const pagination_1 = require("../../utils/pagination");
19
+ const messageOperationsService_1 = require("./messageOperationsService");
20
+ // ─── Error classes ──────────────────────────────────────────────────────────
21
+ class ChannelNotFoundError extends Error {
22
+ constructor(channelId) {
23
+ super(`Channel ${channelId} not found`);
24
+ this.name = 'ChannelNotFoundError';
25
+ }
26
+ }
27
+ exports.ChannelNotFoundError = ChannelNotFoundError;
28
+ class NotChannelMemberError extends Error {
29
+ constructor() {
30
+ super('You are not a member of this channel');
31
+ this.name = 'NotChannelMemberError';
32
+ }
33
+ }
34
+ exports.NotChannelMemberError = NotChannelMemberError;
35
+ class ChannelMessageNotFoundError extends Error {
36
+ constructor(messageId) {
37
+ super(`Message ${messageId} not found`);
38
+ this.name = 'ChannelMessageNotFoundError';
39
+ }
40
+ }
41
+ exports.ChannelMessageNotFoundError = ChannelMessageNotFoundError;
42
+ class ChannelPermissionError extends Error {
43
+ constructor(permission) {
44
+ super(`Missing permission: ${permission}`);
45
+ this.name = 'ChannelPermissionError';
46
+ this.missingPermission = permission;
47
+ }
48
+ }
49
+ exports.ChannelPermissionError = ChannelPermissionError;
50
+ class ChannelMemberMutedError extends Error {
51
+ constructor() {
52
+ super('You are muted in this channel');
53
+ this.name = 'ChannelMemberMutedError';
54
+ }
55
+ }
56
+ exports.ChannelMemberMutedError = ChannelMemberMutedError;
57
+ class NotMessageAuthorError extends Error {
58
+ constructor() {
59
+ super('You can only edit messages you authored');
60
+ this.name = 'NotMessageAuthorError';
61
+ }
62
+ }
63
+ exports.NotMessageAuthorError = NotMessageAuthorError;
64
+ class ChannelReactionNotFoundError extends Error {
65
+ constructor(reactionId) {
66
+ super(`Reaction ${reactionId} not found`);
67
+ this.name = 'ChannelReactionNotFoundError';
68
+ }
69
+ }
70
+ exports.ChannelReactionNotFoundError = ChannelReactionNotFoundError;
71
+ class MemberAlreadyInChannelError extends Error {
72
+ constructor(memberId) {
73
+ super(`Member ${memberId} is already in this channel`);
74
+ this.name = 'MemberAlreadyInChannelError';
75
+ }
76
+ }
77
+ exports.MemberAlreadyInChannelError = MemberAlreadyInChannelError;
78
+ class ChannelNameConflictError extends Error {
79
+ constructor(name) {
80
+ super(`Channel name "${name}" is already taken`);
81
+ this.name = 'ChannelNameConflictError';
82
+ }
83
+ }
84
+ exports.ChannelNameConflictError = ChannelNameConflictError;
85
+ class ChannelJoinDeniedError extends Error {
86
+ constructor() {
87
+ super('This channel requires an invitation to join');
88
+ this.name = 'ChannelJoinDeniedError';
89
+ }
90
+ }
91
+ exports.ChannelJoinDeniedError = ChannelJoinDeniedError;
92
+ class InviteTokenExpiredError extends Error {
93
+ constructor() {
94
+ super('Invite token has expired or has been fully used');
95
+ this.name = 'InviteTokenExpiredError';
96
+ }
97
+ }
98
+ exports.InviteTokenExpiredError = InviteTokenExpiredError;
99
+ class InviteTokenNotFoundError extends Error {
100
+ constructor(token) {
101
+ super(`Invite token ${token} not found`);
102
+ this.name = 'InviteTokenNotFoundError';
103
+ }
104
+ }
105
+ exports.InviteTokenNotFoundError = InviteTokenNotFoundError;
106
+ /**
107
+ * Default key encryption: base64-encodes the key prefixed with memberId.
108
+ * Placeholder; real implementations use ECIES.
109
+ */
110
+ function defaultKeyEncryption(memberId, symmetricKey) {
111
+ const binary = Array.from(symmetricKey)
112
+ .map((b) => String.fromCharCode(b))
113
+ .join('');
114
+ const base64 = btoa(binary);
115
+ return `enc:${memberId}:${base64}`;
116
+ }
117
+ /**
118
+ * Extract the symmetric key from a default-encrypted key string.
119
+ * Only works with the default placeholder encryption.
120
+ */
121
+ function extractChannelKeyFromDefault(encrypted) {
122
+ const parts = encrypted.split(':');
123
+ const base64 = parts[2];
124
+ const binary = atob(base64);
125
+ const bytes = new Uint8Array(binary.length);
126
+ for (let i = 0; i < binary.length; i++) {
127
+ bytes[i] = binary.charCodeAt(i);
128
+ }
129
+ return bytes;
130
+ }
131
+ class ChannelService {
132
+ constructor(permissionService, encryptKey = defaultKeyEncryption, messageOps, eventEmitter, randomBytesProvider) {
133
+ /** channelId → IChannel */
134
+ this.channels = new Map();
135
+ /** channelId → messages (ordered by createdAt ascending) */
136
+ this.messages = new Map();
137
+ /** channelId → raw symmetric key (Uint8Array) */
138
+ this.symmetricKeys = new Map();
139
+ /** token string → IInviteToken */
140
+ this.inviteTokens = new Map();
141
+ /** channel name (lowercase) → channelId for uniqueness */
142
+ this.nameIndex = new Map();
143
+ this.permissionService = permissionService;
144
+ this.encryptKey = encryptKey;
145
+ this.messageOps =
146
+ messageOps ?? new messageOperationsService_1.MessageOperationsService(permissionService);
147
+ this.eventEmitter = eventEmitter ?? new events_1.NullEventEmitter();
148
+ this.randomBytesProvider = randomBytesProvider ?? platformCrypto_1.getRandomBytes;
149
+ }
150
+ // ─── Helpers ────────────────────────────────────────────────────────────
151
+ assertChannelExists(channelId) {
152
+ const channel = this.channels.get(channelId);
153
+ if (!channel)
154
+ throw new ChannelNotFoundError(channelId);
155
+ return channel;
156
+ }
157
+ assertIsMember(channel, memberId) {
158
+ const member = channel.members.find((m) => m.memberId === memberId);
159
+ if (!member)
160
+ throw new NotChannelMemberError();
161
+ return member;
162
+ }
163
+ assertPermission(memberId, channelId, permission) {
164
+ if (!this.permissionService.hasPermission(memberId, channelId, permission)) {
165
+ throw new ChannelPermissionError(permission);
166
+ }
167
+ }
168
+ assertNotMuted(memberId, channelId) {
169
+ if (this.permissionService.isMuted(memberId, channelId)) {
170
+ throw new ChannelMemberMutedError();
171
+ }
172
+ }
173
+ generateSymmetricKey() {
174
+ return this.randomBytesProvider(32);
175
+ }
176
+ encryptKeyForMembers(memberIds, symmetricKey) {
177
+ const encrypted = new Map();
178
+ for (const id of memberIds) {
179
+ encrypted.set(id, this.encryptKey(id, symmetricKey));
180
+ }
181
+ return encrypted;
182
+ }
183
+ rotateKey(channel) {
184
+ const newKey = this.generateSymmetricKey();
185
+ this.symmetricKeys.set(channel.id, newKey);
186
+ channel.encryptedSharedKey = this.encryptKeyForMembers(channel.members.map((m) => m.memberId), newKey);
187
+ }
188
+ normalizeChannelName(name) {
189
+ return name.toLowerCase().replace(/\s+/g, '-');
190
+ }
191
+ // ─── Channel lifecycle ──────────────────────────────────────────────────
192
+ /**
193
+ * Create a new channel.
194
+ * Generates a shared symmetric key and encrypts it for the creator.
195
+ * The creator is assigned the OWNER role.
196
+ *
197
+ * Requirement 10.3: channel creation with visibility.
198
+ */
199
+ async createChannel(name, creatorId, visibility, topic = '') {
200
+ const normalized = this.normalizeChannelName(name);
201
+ if (this.nameIndex.has(normalized)) {
202
+ throw new ChannelNameConflictError(name);
203
+ }
204
+ const now = new Date();
205
+ const symmetricKey = this.generateSymmetricKey();
206
+ const channelId = (0, uuid_1.v4)();
207
+ const members = [
208
+ {
209
+ memberId: creatorId,
210
+ role: communication_1.DefaultRole.OWNER,
211
+ joinedAt: now,
212
+ },
213
+ ];
214
+ const encryptedSharedKey = this.encryptKeyForMembers([creatorId], symmetricKey);
215
+ const channel = {
216
+ id: channelId,
217
+ name: normalized,
218
+ topic,
219
+ creatorId,
220
+ visibility,
221
+ members,
222
+ encryptedSharedKey,
223
+ createdAt: now,
224
+ lastMessageAt: now,
225
+ pinnedMessageIds: [],
226
+ historyVisibleToNewMembers: true,
227
+ };
228
+ this.channels.set(channelId, channel);
229
+ this.messages.set(channelId, []);
230
+ this.symmetricKeys.set(channelId, symmetricKey);
231
+ this.nameIndex.set(normalized, channelId);
232
+ this.permissionService.assignRole(creatorId, channelId, communication_1.DefaultRole.OWNER);
233
+ return channel;
234
+ }
235
+ /**
236
+ * List channels visible to a member.
237
+ * Returns public channels, plus private/secret/invisible channels
238
+ * where the member is already a member.
239
+ *
240
+ * Requirement 10.3: visibility filtering.
241
+ */
242
+ async listChannels(memberId, cursor, limit = 50) {
243
+ const visible = Array.from(this.channels.values()).filter((ch) => {
244
+ if (ch.visibility === communication_1.ChannelVisibility.PUBLIC)
245
+ return true;
246
+ return ch.members.some((m) => m.memberId === memberId);
247
+ });
248
+ visible.sort((a, b) => b.lastMessageAt.getTime() - a.lastMessageAt.getTime());
249
+ return (0, pagination_1.paginateItems)(visible, cursor, limit);
250
+ }
251
+ /**
252
+ * Get channel metadata. Requires membership.
253
+ */
254
+ async getChannel(channelId, requesterId) {
255
+ const channel = this.assertChannelExists(channelId);
256
+ this.assertIsMember(channel, requesterId);
257
+ return channel;
258
+ }
259
+ /**
260
+ * Update channel settings (visibility, topic, name).
261
+ * Requires MANAGE_CHANNEL permission.
262
+ *
263
+ * Requirement 10.3: immediately enforce new visibility rules.
264
+ */
265
+ async updateChannel(channelId, requesterId, updates) {
266
+ const channel = this.assertChannelExists(channelId);
267
+ this.assertIsMember(channel, requesterId);
268
+ this.assertPermission(requesterId, channelId, communication_1.Permission.MANAGE_CHANNEL);
269
+ if (updates.name !== undefined) {
270
+ const normalized = this.normalizeChannelName(updates.name);
271
+ const existingId = this.nameIndex.get(normalized);
272
+ if (existingId && existingId !== channelId) {
273
+ throw new ChannelNameConflictError(updates.name);
274
+ }
275
+ this.nameIndex.delete(channel.name);
276
+ channel.name = normalized;
277
+ this.nameIndex.set(normalized, channelId);
278
+ }
279
+ if (updates.topic !== undefined) {
280
+ channel.topic = updates.topic;
281
+ }
282
+ if (updates.visibility !== undefined) {
283
+ channel.visibility = updates.visibility;
284
+ }
285
+ if (updates.historyVisibleToNewMembers !== undefined) {
286
+ channel.historyVisibleToNewMembers = updates.historyVisibleToNewMembers;
287
+ }
288
+ this.eventEmitter.emitChannelUpdated(channelId, channelId, requesterId);
289
+ return channel;
290
+ }
291
+ /**
292
+ * Delete a channel. Requires MANAGE_CHANNEL permission.
293
+ */
294
+ async deleteChannel(channelId, requesterId) {
295
+ const channel = this.assertChannelExists(channelId);
296
+ this.assertIsMember(channel, requesterId);
297
+ this.assertPermission(requesterId, channelId, communication_1.Permission.MANAGE_CHANNEL);
298
+ this.nameIndex.delete(channel.name);
299
+ this.channels.delete(channelId);
300
+ this.messages.delete(channelId);
301
+ this.symmetricKeys.delete(channelId);
302
+ }
303
+ // ─── Join / Leave ─────────────────────────────────────────────────────
304
+ /**
305
+ * Join a public channel. Rejects invite-only channels.
306
+ *
307
+ * Requirement 10.3: add member, reject invite-only without invitation.
308
+ */
309
+ async joinChannel(channelId, memberId) {
310
+ const channel = this.assertChannelExists(channelId);
311
+ if (channel.members.some((m) => m.memberId === memberId)) {
312
+ throw new MemberAlreadyInChannelError(memberId);
313
+ }
314
+ if (channel.visibility !== communication_1.ChannelVisibility.PUBLIC) {
315
+ throw new ChannelJoinDeniedError();
316
+ }
317
+ const now = new Date();
318
+ channel.members.push({
319
+ memberId,
320
+ role: communication_1.DefaultRole.MEMBER,
321
+ joinedAt: now,
322
+ });
323
+ const currentKey = this.symmetricKeys.get(channelId);
324
+ channel.encryptedSharedKey.set(memberId, this.encryptKey(memberId, currentKey));
325
+ this.permissionService.assignRole(memberId, channelId, communication_1.DefaultRole.MEMBER);
326
+ this.eventEmitter.emitMemberJoined('channel', channelId, memberId);
327
+ }
328
+ /**
329
+ * Leave a channel voluntarily. Rotates the shared key.
330
+ */
331
+ async leaveChannel(channelId, memberId) {
332
+ const channel = this.assertChannelExists(channelId);
333
+ this.assertIsMember(channel, memberId);
334
+ channel.members = channel.members.filter((m) => m.memberId !== memberId);
335
+ channel.encryptedSharedKey.delete(memberId);
336
+ if (channel.members.length > 0) {
337
+ this.rotateKey(channel);
338
+ }
339
+ this.eventEmitter.emitMemberLeft('channel', channelId, memberId);
340
+ }
341
+ // ─── Messaging ────────────────────────────────────────────────────────
342
+ /**
343
+ * Send a message to a channel.
344
+ * Requirement 10.3: messaging with permission and mute checks.
345
+ */
346
+ async sendMessage(channelId, senderId, content) {
347
+ const channel = this.assertChannelExists(channelId);
348
+ this.assertIsMember(channel, senderId);
349
+ this.assertPermission(senderId, channelId, communication_1.Permission.SEND_MESSAGES);
350
+ this.assertNotMuted(senderId, channelId);
351
+ const now = new Date();
352
+ const message = {
353
+ id: (0, uuid_1.v4)(),
354
+ contextType: 'channel',
355
+ contextId: channelId,
356
+ senderId,
357
+ encryptedContent: content,
358
+ createdAt: now,
359
+ editHistory: [],
360
+ deleted: false,
361
+ pinned: false,
362
+ reactions: [],
363
+ };
364
+ this.messages.get(channelId).push(message);
365
+ channel.lastMessageAt = now;
366
+ this.eventEmitter.emitMessageSent('channel', channelId, message.id, senderId);
367
+ return message;
368
+ }
369
+ /**
370
+ * Get messages in a channel with cursor-based pagination.
371
+ */
372
+ async getMessages(channelId, memberId, cursor, limit = 50) {
373
+ const channel = this.assertChannelExists(channelId);
374
+ this.assertIsMember(channel, memberId);
375
+ const msgs = this.messages.get(channelId) ?? [];
376
+ return (0, pagination_1.paginateItems)(msgs, cursor, limit);
377
+ }
378
+ /**
379
+ * Search messages in a channel by keyword.
380
+ */
381
+ async searchMessages(channelId, memberId, query, cursor, limit = 50) {
382
+ const channel = this.assertChannelExists(channelId);
383
+ this.assertIsMember(channel, memberId);
384
+ const msgs = this.messages.get(channelId) ?? [];
385
+ const lowerQuery = query.toLowerCase();
386
+ const matching = msgs.filter((m) => !m.deleted &&
387
+ typeof m.encryptedContent === 'string' &&
388
+ m.encryptedContent.toLowerCase().includes(lowerQuery));
389
+ return (0, pagination_1.paginateItems)(matching, cursor, limit);
390
+ }
391
+ // ─── Invite tokens ────────────────────────────────────────────────────
392
+ /**
393
+ * Generate an invite token for a channel.
394
+ * Requires CREATE_INVITES permission.
395
+ *
396
+ * Requirement 10.3: time-limited, single-use or multi-use invite token.
397
+ */
398
+ async createInvite(channelId, creatorId, maxUses = 1, expiresInMs = 24 * 60 * 60 * 1000) {
399
+ const channel = this.assertChannelExists(channelId);
400
+ this.assertIsMember(channel, creatorId);
401
+ this.assertPermission(creatorId, channelId, communication_1.Permission.CREATE_INVITES);
402
+ const now = new Date();
403
+ const token = {
404
+ token: (0, uuid_1.v4)(),
405
+ channelId,
406
+ createdBy: creatorId,
407
+ createdAt: now,
408
+ expiresAt: new Date(now.getTime() + expiresInMs),
409
+ maxUses,
410
+ currentUses: 0,
411
+ };
412
+ this.inviteTokens.set(token.token, token);
413
+ return token;
414
+ }
415
+ /**
416
+ * Redeem an invite token to join a channel.
417
+ *
418
+ * Requirement 10.3: validate expiry and usage limits.
419
+ */
420
+ async redeemInvite(token, memberId) {
421
+ const invite = this.inviteTokens.get(token);
422
+ if (!invite) {
423
+ throw new InviteTokenNotFoundError(token);
424
+ }
425
+ if (new Date() >= invite.expiresAt) {
426
+ throw new InviteTokenExpiredError();
427
+ }
428
+ if (invite.currentUses >= invite.maxUses) {
429
+ throw new InviteTokenExpiredError();
430
+ }
431
+ const channel = this.assertChannelExists(invite.channelId);
432
+ if (channel.members.some((m) => m.memberId === memberId)) {
433
+ throw new MemberAlreadyInChannelError(memberId);
434
+ }
435
+ const now = new Date();
436
+ channel.members.push({
437
+ memberId,
438
+ role: communication_1.DefaultRole.MEMBER,
439
+ joinedAt: now,
440
+ });
441
+ const currentKey = this.symmetricKeys.get(channel.id);
442
+ channel.encryptedSharedKey.set(memberId, this.encryptKey(memberId, currentKey));
443
+ this.permissionService.assignRole(memberId, channel.id, communication_1.DefaultRole.MEMBER);
444
+ invite.currentUses++;
445
+ this.eventEmitter.emitMemberJoined('channel', channel.id, memberId);
446
+ }
447
+ // ─── Moderation ───────────────────────────────────────────────────────
448
+ /**
449
+ * Mute a member in a channel.
450
+ * Requires MUTE_MEMBERS permission.
451
+ *
452
+ * Requirement 10.3: prevent muted member from sending messages.
453
+ */
454
+ async muteMember(channelId, requesterId, targetId, durationMs) {
455
+ const channel = this.assertChannelExists(channelId);
456
+ this.assertIsMember(channel, requesterId);
457
+ this.assertIsMember(channel, targetId);
458
+ this.assertPermission(requesterId, channelId, communication_1.Permission.MUTE_MEMBERS);
459
+ this.permissionService.muteMember(targetId, channelId, durationMs);
460
+ const member = channel.members.find((m) => m.memberId === targetId);
461
+ if (member) {
462
+ member.mutedUntil = new Date(Date.now() + durationMs);
463
+ }
464
+ this.eventEmitter.emitMemberMuted('channel', channelId, targetId, requesterId, durationMs);
465
+ }
466
+ /**
467
+ * Kick a member from a channel. Rotates encryption keys.
468
+ * Requires KICK_MEMBERS permission.
469
+ *
470
+ * Requirement 10.3: remove member and rotate keys.
471
+ */
472
+ async kickMember(channelId, requesterId, targetId) {
473
+ const channel = this.assertChannelExists(channelId);
474
+ this.assertIsMember(channel, requesterId);
475
+ this.assertIsMember(channel, targetId);
476
+ this.assertPermission(requesterId, channelId, communication_1.Permission.KICK_MEMBERS);
477
+ channel.members = channel.members.filter((m) => m.memberId !== targetId);
478
+ channel.encryptedSharedKey.delete(targetId);
479
+ if (channel.members.length > 0) {
480
+ this.rotateKey(channel);
481
+ }
482
+ this.eventEmitter.emitMemberKicked('channel', channelId, targetId, requesterId);
483
+ }
484
+ // ─── Message operations ───────────────────────────────────────────────
485
+ /**
486
+ * Edit a message authored by the requesting member.
487
+ * Delegates to MessageOperationsService.
488
+ */
489
+ async editMessage(channelId, messageId, memberId, newContent) {
490
+ const channel = this.assertChannelExists(channelId);
491
+ this.assertIsMember(channel, memberId);
492
+ const msgs = this.messages.get(channelId) ?? [];
493
+ const edited = this.messageOps.editMessage(msgs, messageId, memberId, newContent, (id) => new ChannelMessageNotFoundError(id), () => new NotMessageAuthorError());
494
+ this.eventEmitter.emitMessageEdited('channel', channelId, messageId, memberId);
495
+ return edited;
496
+ }
497
+ /**
498
+ * Delete a message. Authors can delete their own; moderators/admins can delete any.
499
+ * Delegates to MessageOperationsService.
500
+ */
501
+ async deleteMessage(channelId, messageId, memberId) {
502
+ const channel = this.assertChannelExists(channelId);
503
+ this.assertIsMember(channel, memberId);
504
+ const msgs = this.messages.get(channelId) ?? [];
505
+ this.messageOps.deleteMessage(msgs, channelId, messageId, memberId, (id) => new ChannelMessageNotFoundError(id), (p) => new ChannelPermissionError(p));
506
+ this.eventEmitter.emitMessageDeleted('channel', channelId, messageId, memberId);
507
+ }
508
+ /**
509
+ * Pin a message in a channel.
510
+ * Delegates to MessageOperationsService.
511
+ */
512
+ async pinMessage(channelId, messageId, memberId) {
513
+ const channel = this.assertChannelExists(channelId);
514
+ this.assertIsMember(channel, memberId);
515
+ const msgs = this.messages.get(channelId) ?? [];
516
+ this.messageOps.pinMessage(msgs, channelId, messageId, memberId, channel, (id) => new ChannelMessageNotFoundError(id), (p) => new ChannelPermissionError(p));
517
+ this.eventEmitter.emitMessagePinEvent(communication_1.CommunicationEventType.MESSAGE_PINNED, 'channel', channelId, messageId, memberId);
518
+ }
519
+ /**
520
+ * Unpin a message in a channel.
521
+ * Delegates to MessageOperationsService.
522
+ */
523
+ async unpinMessage(channelId, messageId, memberId) {
524
+ const channel = this.assertChannelExists(channelId);
525
+ this.assertIsMember(channel, memberId);
526
+ const msgs = this.messages.get(channelId) ?? [];
527
+ this.messageOps.unpinMessage(msgs, channelId, messageId, memberId, channel, (id) => new ChannelMessageNotFoundError(id), (p) => new ChannelPermissionError(p));
528
+ this.eventEmitter.emitMessagePinEvent(communication_1.CommunicationEventType.MESSAGE_UNPINNED, 'channel', channelId, messageId, memberId);
529
+ }
530
+ /**
531
+ * Add a reaction to a message.
532
+ * Delegates to MessageOperationsService.
533
+ */
534
+ async addReaction(channelId, messageId, memberId, emoji) {
535
+ const channel = this.assertChannelExists(channelId);
536
+ this.assertIsMember(channel, memberId);
537
+ const msgs = this.messages.get(channelId) ?? [];
538
+ const reactionId = this.messageOps.addReaction(msgs, messageId, memberId, emoji, (id) => new ChannelMessageNotFoundError(id));
539
+ this.eventEmitter.emitReactionEvent(communication_1.CommunicationEventType.REACTION_ADDED, 'channel', channelId, messageId, memberId, emoji, reactionId);
540
+ return reactionId;
541
+ }
542
+ /**
543
+ * Remove a reaction from a message.
544
+ * Delegates to MessageOperationsService.
545
+ */
546
+ async removeReaction(channelId, messageId, memberId, reactionId) {
547
+ const channel = this.assertChannelExists(channelId);
548
+ this.assertIsMember(channel, memberId);
549
+ const msgs = this.messages.get(channelId) ?? [];
550
+ this.messageOps.removeReaction(msgs, messageId, reactionId, (id) => new ChannelMessageNotFoundError(id), (id) => new ChannelReactionNotFoundError(id));
551
+ this.eventEmitter.emitReactionEvent(communication_1.CommunicationEventType.REACTION_REMOVED, 'channel', channelId, messageId, memberId, '', reactionId);
552
+ }
553
+ // ─── Accessors (for testing / internal use) ───────────────────────────
554
+ getChannelById(channelId) {
555
+ return this.channels.get(channelId);
556
+ }
557
+ getSymmetricKey(channelId) {
558
+ return this.symmetricKeys.get(channelId);
559
+ }
560
+ getAllMessages(channelId) {
561
+ return this.messages.get(channelId) ?? [];
562
+ }
563
+ getInviteToken(token) {
564
+ return this.inviteTokens.get(token);
565
+ }
566
+ /**
567
+ * Return all channels the given member belongs to (no pagination).
568
+ * Used by SearchService for cross-context keyword search.
569
+ */
570
+ listChannelsForMember(memberId) {
571
+ return Array.from(this.channels.values()).filter((ch) => ch.members.some((m) => m.memberId === memberId));
572
+ }
573
+ }
574
+ exports.ChannelService = ChannelService;
575
+ //# sourceMappingURL=channelService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/channelService.ts"],"names":[],"mappings":"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"}