@brightchain/brightchain-lib 0.29.26 → 0.30.1

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 (290) hide show
  1. package/package.json +10 -4
  2. package/src/index.d.ts +1 -1
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +2 -1
  5. package/src/index.js.map +1 -1
  6. package/src/lib/constants.d.ts +3 -26
  7. package/src/lib/constants.d.ts.map +1 -1
  8. package/src/lib/constants.js +2 -1
  9. package/src/lib/constants.js.map +1 -1
  10. package/src/lib/db/collection.d.ts +1 -1
  11. package/src/lib/db/collection.d.ts.map +1 -1
  12. package/src/lib/db/collection.js +2 -1
  13. package/src/lib/db/collection.js.map +1 -1
  14. package/src/lib/enumeration-translations/index.d.ts +2 -0
  15. package/src/lib/enumeration-translations/index.d.ts.map +1 -1
  16. package/src/lib/enumeration-translations/index.js +1 -0
  17. package/src/lib/enumeration-translations/index.js.map +1 -1
  18. package/src/lib/enumeration-translations/memberStatusType.d.ts +5 -0
  19. package/src/lib/enumeration-translations/memberStatusType.d.ts.map +1 -0
  20. package/src/lib/enumeration-translations/memberStatusType.js +58 -0
  21. package/src/lib/enumeration-translations/memberStatusType.js.map +1 -0
  22. package/src/lib/enumerations/brightChainStrings.d.ts +61 -0
  23. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  24. package/src/lib/enumerations/brightChainStrings.js +64 -0
  25. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  26. package/src/lib/enumerations/brightchainFeatures.d.ts +1 -0
  27. package/src/lib/enumerations/brightchainFeatures.d.ts.map +1 -1
  28. package/src/lib/enumerations/brightchainFeatures.js +1 -0
  29. package/src/lib/enumerations/brightchainFeatures.js.map +1 -1
  30. package/src/lib/enumerations/communication.d.ts +7 -1
  31. package/src/lib/enumerations/communication.d.ts.map +1 -1
  32. package/src/lib/enumerations/communication.js +6 -0
  33. package/src/lib/enumerations/communication.js.map +1 -1
  34. package/src/lib/enumerations/friendRequestStatus.d.ts +7 -0
  35. package/src/lib/enumerations/friendRequestStatus.d.ts.map +1 -0
  36. package/src/lib/enumerations/friendRequestStatus.js +11 -0
  37. package/src/lib/enumerations/friendRequestStatus.js.map +1 -0
  38. package/src/lib/enumerations/friendsErrorCode.d.ts +10 -0
  39. package/src/lib/enumerations/friendsErrorCode.d.ts.map +1 -0
  40. package/src/lib/enumerations/friendsErrorCode.js +14 -0
  41. package/src/lib/enumerations/friendsErrorCode.js.map +1 -0
  42. package/src/lib/enumerations/friendshipStatus.d.ts +7 -0
  43. package/src/lib/enumerations/friendshipStatus.d.ts.map +1 -0
  44. package/src/lib/enumerations/friendshipStatus.js +11 -0
  45. package/src/lib/enumerations/friendshipStatus.js.map +1 -0
  46. package/src/lib/enumerations/index.d.ts +3 -0
  47. package/src/lib/enumerations/index.d.ts.map +1 -1
  48. package/src/lib/enumerations/index.js +4 -0
  49. package/src/lib/enumerations/index.js.map +1 -1
  50. package/src/lib/enumerations/messaging/emailErrorType.d.ts +15 -2
  51. package/src/lib/enumerations/messaging/emailErrorType.d.ts.map +1 -1
  52. package/src/lib/enumerations/messaging/emailErrorType.js +17 -1
  53. package/src/lib/enumerations/messaging/emailErrorType.js.map +1 -1
  54. package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts +4 -2
  55. package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts.map +1 -1
  56. package/src/lib/enumerations/messaging/messageEncryptionScheme.js +3 -1
  57. package/src/lib/enumerations/messaging/messageEncryptionScheme.js.map +1 -1
  58. package/src/lib/errors/encryptionErrors.d.ts +71 -0
  59. package/src/lib/errors/encryptionErrors.d.ts.map +1 -0
  60. package/src/lib/errors/encryptionErrors.js +112 -0
  61. package/src/lib/errors/encryptionErrors.js.map +1 -0
  62. package/src/lib/errors/friendsServiceError.d.ts +20 -0
  63. package/src/lib/errors/friendsServiceError.d.ts.map +1 -0
  64. package/src/lib/errors/friendsServiceError.js +48 -0
  65. package/src/lib/errors/friendsServiceError.js.map +1 -0
  66. package/src/lib/errors/index.d.ts +15 -0
  67. package/src/lib/errors/index.d.ts.map +1 -1
  68. package/src/lib/errors/index.js +21 -0
  69. package/src/lib/errors/index.js.map +1 -1
  70. package/src/lib/i18n/i18n-setup.d.ts +2 -2
  71. package/src/lib/i18n/i18n-setup.d.ts.map +1 -1
  72. package/src/lib/i18n/strings/englishUK.d.ts +2 -2
  73. package/src/lib/i18n/strings/englishUK.d.ts.map +1 -1
  74. package/src/lib/i18n/strings/englishUK.js.map +1 -1
  75. package/src/lib/i18n/strings/englishUs.d.ts +2 -2
  76. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  77. package/src/lib/i18n/strings/englishUs.js +65 -1
  78. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  79. package/src/lib/i18n/strings/french.d.ts +2 -2
  80. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  81. package/src/lib/i18n/strings/french.js +78 -13
  82. package/src/lib/i18n/strings/french.js.map +1 -1
  83. package/src/lib/i18n/strings/german.d.ts +2 -2
  84. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  85. package/src/lib/i18n/strings/german.js +77 -12
  86. package/src/lib/i18n/strings/german.js.map +1 -1
  87. package/src/lib/i18n/strings/japanese.d.ts +2 -2
  88. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  89. package/src/lib/i18n/strings/japanese.js +77 -12
  90. package/src/lib/i18n/strings/japanese.js.map +1 -1
  91. package/src/lib/i18n/strings/mandarin.d.ts +2 -2
  92. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  93. package/src/lib/i18n/strings/mandarin.js +77 -12
  94. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  95. package/src/lib/i18n/strings/spanish.d.ts +2 -2
  96. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  97. package/src/lib/i18n/strings/spanish.js +77 -12
  98. package/src/lib/i18n/strings/spanish.js.map +1 -1
  99. package/src/lib/i18n/strings/ukrainian.d.ts +2 -2
  100. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  101. package/src/lib/i18n/strings/ukrainian.js +77 -12
  102. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  103. package/src/lib/index.d.ts +31 -0
  104. package/src/lib/index.d.ts.map +1 -1
  105. package/src/lib/index.js +29 -1
  106. package/src/lib/index.js.map +1 -1
  107. package/src/lib/interfaces/appSubsystemPlugin.d.ts +69 -0
  108. package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -0
  109. package/src/lib/interfaces/appSubsystemPlugin.js +3 -0
  110. package/src/lib/interfaces/appSubsystemPlugin.js.map +1 -0
  111. package/src/lib/interfaces/auth/writeProof.d.ts +2 -0
  112. package/src/lib/interfaces/auth/writeProof.d.ts.map +1 -1
  113. package/src/lib/interfaces/auth/writeProofUtils.d.ts +1 -1
  114. package/src/lib/interfaces/auth/writeProofUtils.d.ts.map +1 -1
  115. package/src/lib/interfaces/auth/writeProofUtils.js +2 -2
  116. package/src/lib/interfaces/auth/writeProofUtils.js.map +1 -1
  117. package/src/lib/interfaces/availability/gossipService.d.ts +99 -1
  118. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  119. package/src/lib/interfaces/availability/gossipService.js +4 -0
  120. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  121. package/src/lib/interfaces/communication/blockContentStore.d.ts +57 -0
  122. package/src/lib/interfaces/communication/blockContentStore.d.ts.map +1 -0
  123. package/src/lib/interfaces/communication/blockContentStore.js +21 -0
  124. package/src/lib/interfaces/communication/blockContentStore.js.map +1 -0
  125. package/src/lib/interfaces/communication/chatStorageProvider.d.ts +77 -0
  126. package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -0
  127. package/src/lib/interfaces/communication/chatStorageProvider.js +25 -0
  128. package/src/lib/interfaces/communication/chatStorageProvider.js.map +1 -0
  129. package/src/lib/interfaces/communication/index.d.ts +4 -0
  130. package/src/lib/interfaces/communication/index.d.ts.map +1 -0
  131. package/src/lib/interfaces/communication/index.js +3 -0
  132. package/src/lib/interfaces/communication/index.js.map +1 -0
  133. package/src/lib/interfaces/communication/server.d.ts +57 -0
  134. package/src/lib/interfaces/communication/server.d.ts.map +1 -0
  135. package/src/lib/interfaces/communication/server.js +14 -0
  136. package/src/lib/interfaces/communication/server.js.map +1 -0
  137. package/src/lib/interfaces/communication.d.ts +62 -5
  138. package/src/lib/interfaces/communication.d.ts.map +1 -1
  139. package/src/lib/interfaces/communication.js +8 -0
  140. package/src/lib/interfaces/communication.js.map +1 -1
  141. package/src/lib/interfaces/communicationEvents.d.ts +59 -1
  142. package/src/lib/interfaces/communicationEvents.d.ts.map +1 -1
  143. package/src/lib/interfaces/constants.d.ts +2 -0
  144. package/src/lib/interfaces/constants.d.ts.map +1 -1
  145. package/src/lib/interfaces/events/communicationEventEmitter.d.ts +9 -0
  146. package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -1
  147. package/src/lib/interfaces/events/communicationEventEmitter.js +9 -0
  148. package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -1
  149. package/src/lib/interfaces/friends/baseFriendRequest.d.ts +13 -0
  150. package/src/lib/interfaces/friends/baseFriendRequest.d.ts.map +1 -0
  151. package/src/lib/interfaces/friends/baseFriendRequest.js +3 -0
  152. package/src/lib/interfaces/friends/baseFriendRequest.js.map +1 -0
  153. package/src/lib/interfaces/friends/baseFriendship.d.ts +11 -0
  154. package/src/lib/interfaces/friends/baseFriendship.d.ts.map +1 -0
  155. package/src/lib/interfaces/friends/baseFriendship.js +3 -0
  156. package/src/lib/interfaces/friends/baseFriendship.js.map +1 -0
  157. package/src/lib/interfaces/friends/friendsService.d.ts +32 -0
  158. package/src/lib/interfaces/friends/friendsService.d.ts.map +1 -0
  159. package/src/lib/interfaces/friends/friendsService.js +3 -0
  160. package/src/lib/interfaces/friends/friendsService.js.map +1 -0
  161. package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts +17 -0
  162. package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts.map +1 -0
  163. package/src/lib/interfaces/friends/friendsSuggestionProvider.js +3 -0
  164. package/src/lib/interfaces/friends/friendsSuggestionProvider.js.map +1 -0
  165. package/src/lib/interfaces/friends/index.d.ts +6 -0
  166. package/src/lib/interfaces/friends/index.d.ts.map +1 -0
  167. package/src/lib/interfaces/friends/index.js +3 -0
  168. package/src/lib/interfaces/friends/index.js.map +1 -0
  169. package/src/lib/interfaces/friends/pagination.d.ts +11 -0
  170. package/src/lib/interfaces/friends/pagination.d.ts.map +1 -0
  171. package/src/lib/interfaces/friends/pagination.js +3 -0
  172. package/src/lib/interfaces/friends/pagination.js.map +1 -0
  173. package/src/lib/interfaces/index.d.ts +6 -1
  174. package/src/lib/interfaces/index.d.ts.map +1 -1
  175. package/src/lib/interfaces/index.js +3 -0
  176. package/src/lib/interfaces/index.js.map +1 -1
  177. package/src/lib/interfaces/messaging/gpgKey.d.ts +93 -0
  178. package/src/lib/interfaces/messaging/gpgKey.d.ts.map +1 -0
  179. package/src/lib/interfaces/messaging/gpgKey.js +12 -0
  180. package/src/lib/interfaces/messaging/gpgKey.js.map +1 -0
  181. package/src/lib/interfaces/messaging/index.d.ts +4 -0
  182. package/src/lib/interfaces/messaging/index.d.ts.map +1 -1
  183. package/src/lib/interfaces/messaging/index.js +4 -0
  184. package/src/lib/interfaces/messaging/index.js.map +1 -1
  185. package/src/lib/interfaces/messaging/keyStore.d.ts +100 -0
  186. package/src/lib/interfaces/messaging/keyStore.d.ts.map +1 -0
  187. package/src/lib/interfaces/messaging/keyStore.js +13 -0
  188. package/src/lib/interfaces/messaging/keyStore.js.map +1 -0
  189. package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts +92 -0
  190. package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts.map +1 -0
  191. package/src/lib/interfaces/messaging/recipientKeyResolver.js +13 -0
  192. package/src/lib/interfaces/messaging/recipientKeyResolver.js.map +1 -0
  193. package/src/lib/interfaces/messaging/smimeCertificate.d.ts +99 -0
  194. package/src/lib/interfaces/messaging/smimeCertificate.d.ts.map +1 -0
  195. package/src/lib/interfaces/messaging/smimeCertificate.js +12 -0
  196. package/src/lib/interfaces/messaging/smimeCertificate.js.map +1 -0
  197. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +8 -0
  198. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
  199. package/src/lib/interfaces/responses/communicationResponses.d.ts +25 -0
  200. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
  201. package/src/lib/interfaces/storage/documentTypes.d.ts +4 -0
  202. package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -1
  203. package/src/lib/services/blockService.d.ts +11 -3
  204. package/src/lib/services/blockService.d.ts.map +1 -1
  205. package/src/lib/services/blockService.js +22 -2
  206. package/src/lib/services/blockService.js.map +1 -1
  207. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +108 -0
  208. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -0
  209. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +284 -0
  210. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -0
  211. package/src/lib/services/communication/attachmentUtils.d.ts +20 -0
  212. package/src/lib/services/communication/attachmentUtils.d.ts.map +1 -0
  213. package/src/lib/services/communication/attachmentUtils.js +43 -0
  214. package/src/lib/services/communication/attachmentUtils.js.map +1 -0
  215. package/src/lib/services/communication/channelService.d.ts +143 -14
  216. package/src/lib/services/communication/channelService.d.ts.map +1 -1
  217. package/src/lib/services/communication/channelService.js +562 -41
  218. package/src/lib/services/communication/channelService.js.map +1 -1
  219. package/src/lib/services/communication/conversationService.d.ts +91 -4
  220. package/src/lib/services/communication/conversationService.d.ts.map +1 -1
  221. package/src/lib/services/communication/conversationService.js +269 -7
  222. package/src/lib/services/communication/conversationService.js.map +1 -1
  223. package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts +36 -0
  224. package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts.map +1 -0
  225. package/src/lib/services/communication/eciesKeyEncryptionHandler.js +30 -0
  226. package/src/lib/services/communication/eciesKeyEncryptionHandler.js.map +1 -0
  227. package/src/lib/services/communication/groupService.d.ts +99 -21
  228. package/src/lib/services/communication/groupService.d.ts.map +1 -1
  229. package/src/lib/services/communication/groupService.js +387 -41
  230. package/src/lib/services/communication/groupService.js.map +1 -1
  231. package/src/lib/services/communication/index.d.ts +6 -1
  232. package/src/lib/services/communication/index.d.ts.map +1 -1
  233. package/src/lib/services/communication/index.js +20 -1
  234. package/src/lib/services/communication/index.js.map +1 -1
  235. package/src/lib/services/communication/keyEpochManager.d.ts +41 -0
  236. package/src/lib/services/communication/keyEpochManager.d.ts.map +1 -0
  237. package/src/lib/services/communication/keyEpochManager.js +59 -0
  238. package/src/lib/services/communication/keyEpochManager.js.map +1 -0
  239. package/src/lib/services/communication/rehydrationHelpers.d.ts +32 -0
  240. package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -0
  241. package/src/lib/services/communication/rehydrationHelpers.js +58 -0
  242. package/src/lib/services/communication/rehydrationHelpers.js.map +1 -0
  243. package/src/lib/services/communication/serverService.d.ts +193 -0
  244. package/src/lib/services/communication/serverService.d.ts.map +1 -0
  245. package/src/lib/services/communication/serverService.js +495 -0
  246. package/src/lib/services/communication/serverService.js.map +1 -0
  247. package/src/lib/services/copyOnWrite.service.d.ts +110 -0
  248. package/src/lib/services/copyOnWrite.service.d.ts.map +1 -0
  249. package/src/lib/services/copyOnWrite.service.js +256 -0
  250. package/src/lib/services/copyOnWrite.service.js.map +1 -0
  251. package/src/lib/services/index.d.ts +1 -0
  252. package/src/lib/services/index.d.ts.map +1 -1
  253. package/src/lib/services/index.js +1 -0
  254. package/src/lib/services/index.js.map +1 -1
  255. package/src/lib/services/memberStore.d.ts +17 -1
  256. package/src/lib/services/memberStore.d.ts.map +1 -1
  257. package/src/lib/services/memberStore.js +98 -17
  258. package/src/lib/services/memberStore.js.map +1 -1
  259. package/src/lib/services/messaging/emailEncryptionService.d.ts +162 -0
  260. package/src/lib/services/messaging/emailEncryptionService.d.ts.map +1 -1
  261. package/src/lib/services/messaging/emailEncryptionService.js +293 -0
  262. package/src/lib/services/messaging/emailEncryptionService.js.map +1 -1
  263. package/src/lib/services/messaging/emailMessageService.d.ts +64 -0
  264. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  265. package/src/lib/services/messaging/emailMessageService.js +142 -13
  266. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  267. package/src/lib/services/messaging/gpgKeyManager.d.ts +130 -0
  268. package/src/lib/services/messaging/gpgKeyManager.d.ts.map +1 -0
  269. package/src/lib/services/messaging/gpgKeyManager.js +381 -0
  270. package/src/lib/services/messaging/gpgKeyManager.js.map +1 -0
  271. package/src/lib/services/messaging/index.d.ts +3 -0
  272. package/src/lib/services/messaging/index.d.ts.map +1 -1
  273. package/src/lib/services/messaging/index.js +3 -0
  274. package/src/lib/services/messaging/index.js.map +1 -1
  275. package/src/lib/services/messaging/recipientKeyResolver.d.ts +47 -0
  276. package/src/lib/services/messaging/recipientKeyResolver.d.ts.map +1 -0
  277. package/src/lib/services/messaging/recipientKeyResolver.js +132 -0
  278. package/src/lib/services/messaging/recipientKeyResolver.js.map +1 -0
  279. package/src/lib/services/messaging/smimeCertificateManager.d.ts +207 -0
  280. package/src/lib/services/messaging/smimeCertificateManager.d.ts.map +1 -0
  281. package/src/lib/services/messaging/smimeCertificateManager.js +696 -0
  282. package/src/lib/services/messaging/smimeCertificateManager.js.map +1 -0
  283. package/src/lib/utils/index.d.ts +6 -0
  284. package/src/lib/utils/index.d.ts.map +1 -1
  285. package/src/lib/utils/index.js +9 -0
  286. package/src/lib/utils/index.js.map +1 -1
  287. package/src/lib/utils/sortPair.d.ts +6 -0
  288. package/src/lib/utils/sortPair.d.ts.map +1 -0
  289. package/src/lib/utils/sortPair.js +11 -0
  290. package/src/lib/utils/sortPair.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockChatStorageProvider.d.ts","sourceRoot":"","sources":["../../../../../../../brightchain-lib/src/lib/services/communication/__tests__/mockChatStorageProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ /**
3
+ * In-memory mock implementation of IChatStorageProvider for property-based
4
+ * and unit tests.
5
+ *
6
+ * Each IChatCollection<T> is backed by a T[] array. findMany() returns the
7
+ * full array by default, but can be configured to throw for error-propagation
8
+ * tests.
9
+ *
10
+ * Also exports fast-check arbitraries for all BrightChat entity types.
11
+ *
12
+ * Requirements: all (test infrastructure)
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.arbServerInviteToken = exports.arbInviteToken = exports.arbMessage = exports.arbServer = exports.arbChannel = exports.arbGroup = exports.arbConversation = exports.arbEncryptedSharedKey = exports.MockChatStorageProvider = exports.MockChatCollection = void 0;
16
+ const tslib_1 = require("tslib");
17
+ const fast_check_1 = tslib_1.__importDefault(require("fast-check"));
18
+ const communication_1 = require("../../../enumerations/communication");
19
+ // ─── Mock Collection ────────────────────────────────────────────────────────
20
+ /**
21
+ * In-memory IChatCollection backed by a plain array.
22
+ *
23
+ * `findMany()` returns the full backing array unless `errorOnFindMany` is set,
24
+ * in which case it throws the configured error.
25
+ */
26
+ class MockChatCollection {
27
+ items = [];
28
+ errorOnFindMany = null;
29
+ constructor(initialItems = []) {
30
+ this.items = [...initialItems];
31
+ }
32
+ /** Configure findMany() to throw the given error on next (and subsequent) calls. */
33
+ setFindManyError(error) {
34
+ this.errorOnFindMany = error;
35
+ }
36
+ /** Clear any configured findMany() error. */
37
+ clearFindManyError() {
38
+ this.errorOnFindMany = null;
39
+ }
40
+ async create(doc) {
41
+ this.items.push(doc);
42
+ }
43
+ async findById(key) {
44
+ // Simple lookup — assumes T has an `id` or `token` field
45
+ const item = this.items.find((i) => i['id'] === key ||
46
+ i['token'] === key);
47
+ return item ?? null;
48
+ }
49
+ async findMany(_filter) {
50
+ if (this.errorOnFindMany) {
51
+ throw this.errorOnFindMany;
52
+ }
53
+ return [...this.items];
54
+ }
55
+ async update(key, doc) {
56
+ const idx = this.items.findIndex((i) => i['id'] === key ||
57
+ i['token'] === key);
58
+ if (idx >= 0) {
59
+ this.items[idx] = doc;
60
+ }
61
+ }
62
+ async delete(key) {
63
+ this.items = this.items.filter((i) => i['id'] !== key &&
64
+ i['token'] !== key);
65
+ }
66
+ /** Direct access to the backing array (for test assertions). */
67
+ getItems() {
68
+ return [...this.items];
69
+ }
70
+ }
71
+ exports.MockChatCollection = MockChatCollection;
72
+ // ─── Mock Storage Provider ──────────────────────────────────────────────────
73
+ /**
74
+ * In-memory IChatStorageProvider. All collections are MockChatCollection
75
+ * instances that can be pre-populated and configured independently.
76
+ */
77
+ class MockChatStorageProvider {
78
+ conversations;
79
+ messages;
80
+ groups;
81
+ groupMessages;
82
+ channels;
83
+ channelMessages;
84
+ inviteTokens;
85
+ servers;
86
+ serverInvites;
87
+ constructor(opts) {
88
+ this.conversations = new MockChatCollection(opts?.conversations);
89
+ this.messages = new MockChatCollection(opts?.messages);
90
+ this.groups = new MockChatCollection(opts?.groups);
91
+ this.groupMessages = new MockChatCollection(opts?.groupMessages);
92
+ this.channels = new MockChatCollection(opts?.channels);
93
+ this.channelMessages = new MockChatCollection(opts?.channelMessages);
94
+ this.inviteTokens = new MockChatCollection(opts?.inviteTokens);
95
+ this.servers = new MockChatCollection(opts?.servers);
96
+ this.serverInvites = new MockChatCollection(opts?.serverInvites);
97
+ }
98
+ }
99
+ exports.MockChatStorageProvider = MockChatStorageProvider;
100
+ // ─── fast-check Arbitraries ─────────────────────────────────────────────────
101
+ /** Arbitrary for non-empty alphanumeric IDs (1–36 chars). */
102
+ const arbId = fast_check_1.default.stringMatching(/^[a-zA-Z0-9]{1,36}$/);
103
+ /** Arbitrary for a Date within a reasonable range. */
104
+ const arbDate = fast_check_1.default.date({ min: new Date('2020-01-01'), max: new Date('2030-01-01') });
105
+ /** Arbitrary for DefaultRole enum values. */
106
+ const arbRole = fast_check_1.default.constantFrom(communication_1.DefaultRole.OWNER, communication_1.DefaultRole.ADMIN, communication_1.DefaultRole.MODERATOR, communication_1.DefaultRole.MEMBER);
107
+ /** Arbitrary for ChannelVisibility enum values. */
108
+ const arbVisibility = fast_check_1.default.constantFrom(communication_1.ChannelVisibility.PUBLIC, communication_1.ChannelVisibility.PRIVATE, communication_1.ChannelVisibility.SECRET, communication_1.ChannelVisibility.INVISIBLE);
109
+ /**
110
+ * Arbitrary for `Map<number, Map<string, string>>` representing
111
+ * encrypted shared keys across 1–5 epochs.
112
+ *
113
+ * Each epoch maps 1–5 member IDs to a base64-like wrapped key string.
114
+ */
115
+ const arbEncryptedSharedKey = (minEpochs = 1, maxEpochs = 5) => fast_check_1.default
116
+ .array(fast_check_1.default.tuple(fast_check_1.default.nat({ max: 100 }), // epoch number
117
+ fast_check_1.default.array(fast_check_1.default.tuple(arbId, fast_check_1.default.base64String({ minLength: 8, maxLength: 64 })), { minLength: 1, maxLength: 5 })), { minLength: minEpochs, maxLength: maxEpochs })
118
+ .map((entries) => {
119
+ const outer = new Map();
120
+ // Use unique epoch numbers by offsetting duplicates
121
+ let nextEpoch = 0;
122
+ for (const [epoch, members] of entries) {
123
+ const usedEpoch = outer.has(epoch) ? nextEpoch++ : epoch;
124
+ if (outer.has(usedEpoch)) {
125
+ nextEpoch = usedEpoch + 1;
126
+ outer.set(nextEpoch++, new Map(members));
127
+ }
128
+ else {
129
+ outer.set(usedEpoch, new Map(members));
130
+ if (usedEpoch >= nextEpoch)
131
+ nextEpoch = usedEpoch + 1;
132
+ }
133
+ }
134
+ return outer;
135
+ });
136
+ exports.arbEncryptedSharedKey = arbEncryptedSharedKey;
137
+ /** Arbitrary for IGroupMember. */
138
+ const arbGroupMember = fast_check_1.default.record({
139
+ memberId: arbId,
140
+ role: arbRole,
141
+ joinedAt: arbDate,
142
+ mutedUntil: fast_check_1.default.option(arbDate, { nil: undefined }),
143
+ });
144
+ /** Arbitrary for IChannelMember. */
145
+ const arbChannelMember = fast_check_1.default.record({
146
+ memberId: arbId,
147
+ role: arbRole,
148
+ joinedAt: arbDate,
149
+ mutedUntil: fast_check_1.default.option(arbDate, { nil: undefined }),
150
+ });
151
+ /**
152
+ * Arbitrary for IConversation<string, string>.
153
+ * Generates a conversation with two distinct participants and a valid
154
+ * encryptedSharedKey map.
155
+ */
156
+ exports.arbConversation = fast_check_1.default
157
+ .record({
158
+ id: arbId,
159
+ participant1: arbId,
160
+ participant2: arbId,
161
+ encryptedSharedKey: (0, exports.arbEncryptedSharedKey)(),
162
+ createdAt: arbDate,
163
+ lastMessageAt: arbDate,
164
+ lastMessagePreview: fast_check_1.default.option(fast_check_1.default.string({ minLength: 0, maxLength: 100 }), {
165
+ nil: undefined,
166
+ }),
167
+ })
168
+ .filter((r) => r.participant1 !== r.participant2)
169
+ .map((r) => ({
170
+ id: r.id,
171
+ participants: [r.participant1, r.participant2],
172
+ encryptedSharedKey: r.encryptedSharedKey,
173
+ createdAt: r.createdAt,
174
+ lastMessageAt: r.lastMessageAt,
175
+ lastMessagePreview: r.lastMessagePreview,
176
+ }));
177
+ /**
178
+ * Arbitrary for IGroup<string, string>.
179
+ * Generates a group with 1–10 members and a valid encryptedSharedKey map.
180
+ */
181
+ exports.arbGroup = fast_check_1.default.record({
182
+ id: arbId,
183
+ name: fast_check_1.default.string({ minLength: 1, maxLength: 50 }),
184
+ creatorId: arbId,
185
+ members: fast_check_1.default.array(arbGroupMember, { minLength: 1, maxLength: 10 }),
186
+ encryptedSharedKey: (0, exports.arbEncryptedSharedKey)(),
187
+ createdAt: arbDate,
188
+ lastMessageAt: arbDate,
189
+ pinnedMessageIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 5 }),
190
+ promotedFromConversation: fast_check_1.default.option(arbId, { nil: undefined }),
191
+ });
192
+ /**
193
+ * Arbitrary for IChannel<string, string>.
194
+ * Generates a channel with members, visibility, and a valid encryptedSharedKey.
195
+ */
196
+ exports.arbChannel = fast_check_1.default.record({
197
+ id: arbId,
198
+ name: fast_check_1.default.string({ minLength: 1, maxLength: 50 }),
199
+ topic: fast_check_1.default.string({ minLength: 0, maxLength: 100 }),
200
+ creatorId: arbId,
201
+ visibility: arbVisibility,
202
+ members: fast_check_1.default.array(arbChannelMember, { minLength: 1, maxLength: 10 }),
203
+ encryptedSharedKey: (0, exports.arbEncryptedSharedKey)(),
204
+ createdAt: arbDate,
205
+ lastMessageAt: arbDate,
206
+ pinnedMessageIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 5 }),
207
+ historyVisibleToNewMembers: fast_check_1.default.boolean(),
208
+ serverId: fast_check_1.default.option(arbId, { nil: undefined }),
209
+ });
210
+ /**
211
+ * Arbitrary for IServer<string, string>.
212
+ * Generates a server with members, channels, and categories.
213
+ */
214
+ exports.arbServer = fast_check_1.default
215
+ .record({
216
+ id: arbId,
217
+ name: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
218
+ iconUrl: fast_check_1.default.option(fast_check_1.default.webUrl(), { nil: undefined }),
219
+ ownerId: arbId,
220
+ memberIds: fast_check_1.default.array(arbId, { minLength: 1, maxLength: 10 }),
221
+ channelIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 10 }),
222
+ categories: fast_check_1.default.array(fast_check_1.default.record({
223
+ id: arbId,
224
+ name: fast_check_1.default.string({ minLength: 1, maxLength: 50 }),
225
+ position: fast_check_1.default.nat({ max: 20 }),
226
+ channelIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 5 }),
227
+ }), { minLength: 0, maxLength: 5 }),
228
+ createdAt: arbDate,
229
+ updatedAt: arbDate,
230
+ });
231
+ /**
232
+ * Arbitrary for ICommunicationMessage<string, string>.
233
+ * Optionally accepts a fixed contextId; otherwise generates a random one.
234
+ */
235
+ const arbMessage = (contextId) => fast_check_1.default.record({
236
+ id: arbId,
237
+ contextType: fast_check_1.default.constantFrom('conversation', 'group', 'channel'),
238
+ contextId: contextId ? fast_check_1.default.constant(contextId) : arbId,
239
+ senderId: arbId,
240
+ encryptedContent: fast_check_1.default.base64String({ minLength: 1, maxLength: 200 }),
241
+ createdAt: arbDate,
242
+ editedAt: fast_check_1.default.option(arbDate, { nil: undefined }),
243
+ editHistory: fast_check_1.default.constant([]),
244
+ deleted: fast_check_1.default.constant(false),
245
+ deletedBy: fast_check_1.default.option(arbId, { nil: undefined }),
246
+ pinned: fast_check_1.default.boolean(),
247
+ reactions: fast_check_1.default.constant([]),
248
+ keyEpoch: fast_check_1.default.nat({ max: 100 }),
249
+ attachments: fast_check_1.default.constant([]),
250
+ expiresAt: fast_check_1.default.option(arbDate, { nil: undefined }),
251
+ maxReads: fast_check_1.default.option(fast_check_1.default.nat({ max: 100 }), { nil: undefined }),
252
+ readCount: fast_check_1.default.option(fast_check_1.default.nat({ max: 100 }), { nil: undefined }),
253
+ readBy: fast_check_1.default.option(fast_check_1.default.constant(new Map()), { nil: undefined }),
254
+ exploded: fast_check_1.default.option(fast_check_1.default.boolean(), { nil: undefined }),
255
+ explodedAt: fast_check_1.default.option(arbDate, { nil: undefined }),
256
+ });
257
+ exports.arbMessage = arbMessage;
258
+ /**
259
+ * Arbitrary for IInviteToken<string>.
260
+ * Generates a channel invite token with valid metadata.
261
+ */
262
+ exports.arbInviteToken = fast_check_1.default.record({
263
+ token: fast_check_1.default.stringMatching(/^[a-zA-Z0-9]{8,32}$/),
264
+ channelId: arbId,
265
+ createdBy: arbId,
266
+ createdAt: arbDate,
267
+ expiresAt: arbDate,
268
+ maxUses: fast_check_1.default.integer({ min: 1, max: 1000 }),
269
+ currentUses: fast_check_1.default.nat({ max: 999 }),
270
+ });
271
+ /**
272
+ * Arbitrary for IServerInviteToken<string>.
273
+ * Generates a server invite token with valid metadata.
274
+ */
275
+ exports.arbServerInviteToken = fast_check_1.default.record({
276
+ token: fast_check_1.default.stringMatching(/^[a-zA-Z0-9]{8,32}$/),
277
+ serverId: arbId,
278
+ createdBy: arbId,
279
+ createdAt: arbDate,
280
+ expiresAt: fast_check_1.default.option(arbDate, { nil: undefined }),
281
+ maxUses: fast_check_1.default.option(fast_check_1.default.integer({ min: 1, max: 1000 }), { nil: undefined }),
282
+ currentUses: fast_check_1.default.nat({ max: 999 }),
283
+ });
284
+ //# sourceMappingURL=mockChatStorageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockChatStorageProvider.js","sourceRoot":"","sources":["../../../../../../../brightchain-lib/src/lib/services/communication/__tests__/mockChatStorageProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;AAEH,oEAA4B;AAmB5B,uEAG6C;AAE7C,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAa,kBAAkB;IACrB,KAAK,GAAQ,EAAE,CAAC;IAChB,eAAe,GAAiB,IAAI,CAAC;IAE7C,YAAY,eAAoB,EAAE;QAChC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,oFAAoF;IACpF,gBAAgB,CAAC,KAAY;QAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,6CAA6C;IAC7C,kBAAkB;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAM;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,yDAAyD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CACH,CAA6B,CAAC,IAAI,CAAC,KAAK,GAAG;YAC3C,CAA6B,CAAC,OAAO,CAAC,KAAK,GAAG,CAClD,CAAC;QACF,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,GAAM;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAC9B,CAAC,CAAC,EAAE,EAAE,CACH,CAA6B,CAAC,IAAI,CAAC,KAAK,GAAG;YAC3C,CAA6B,CAAC,OAAO,CAAC,KAAK,GAAG,CAClD,CAAC;QACF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CACH,CAA6B,CAAC,IAAI,CAAC,KAAK,GAAG;YAC3C,CAA6B,CAAC,OAAO,CAAC,KAAK,GAAG,CAClD,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF;AA9DD,gDA8DC;AAGD,+EAA+E;AAE/E;;;GAGG;AACH,MAAa,uBAAuB;IACzB,aAAa,CAAoC;IACjD,QAAQ,CAA4C;IACpD,MAAM,CAA6B;IACnC,aAAa,CAA4C;IACzD,QAAQ,CAA+B;IACvC,eAAe,CAA4C;IAC3D,YAAY,CAAmC;IAC/C,OAAO,CAA8B;IACrC,aAAa,CAAyC;IAE/D,YAAY,IAUX;QACC,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;CACF;AAhCD,0DAgCC;AAED,+EAA+E;AAE/E,6DAA6D;AAC7D,MAAM,KAAK,GAAG,oBAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAEvD,sDAAsD;AACtD,MAAM,OAAO,GAAG,oBAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAEtF,6CAA6C;AAC7C,MAAM,OAAO,GAAG,oBAAE,CAAC,YAAY,CAC7B,2BAAW,CAAC,KAAK,EACjB,2BAAW,CAAC,KAAK,EACjB,2BAAW,CAAC,SAAS,EACrB,2BAAW,CAAC,MAAM,CACnB,CAAC;AAEF,mDAAmD;AACnD,MAAM,aAAa,GAAG,oBAAE,CAAC,YAAY,CACnC,iCAAiB,CAAC,MAAM,EACxB,iCAAiB,CAAC,OAAO,EACzB,iCAAiB,CAAC,MAAM,EACxB,iCAAiB,CAAC,SAAS,CAC5B,CAAC;AAEF;;;;;GAKG;AACI,MAAM,qBAAqB,GAAG,CACnC,SAAS,GAAG,CAAC,EACb,SAAS,GAAG,CAAC,EACmC,EAAE,CAClD,oBAAE;KACC,KAAK,CACJ,oBAAE,CAAC,KAAK,CACN,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,eAAe;AACrC,oBAAE,CAAC,KAAK,CACN,oBAAE,CAAC,KAAK,CAAC,KAAK,EAAE,oBAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EACjE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAC/B,CACF,EACD,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAC/C;KACA,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;IACf,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,oDAAoD;IACpD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACzD,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,IAAI,SAAS,IAAI,SAAS;gBAAE,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,CAAC;AA9BM,QAAA,qBAAqB,yBA8B3B;AAEP,kCAAkC;AAClC,MAAM,cAAc,GAA+B,oBAAE,CAAC,MAAM,CAAC;IAC3D,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,oBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CACnD,CAAC,CAAC;AAEH,oCAAoC;AACpC,MAAM,gBAAgB,GAAiC,oBAAE,CAAC,MAAM,CAAC;IAC/D,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,oBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CACnD,CAAC,CAAC;AAGH;;;;GAIG;AACU,QAAA,eAAe,GAAgC,oBAAE;KAC3D,MAAM,CAAC;IACN,EAAE,EAAE,KAAK;IACT,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,IAAA,6BAAqB,GAAE;IAC3C,SAAS,EAAE,OAAO;IAClB,aAAa,EAAE,OAAO;IACtB,kBAAkB,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;QACzE,GAAG,EAAE,SAAS;KACf,CAAC;CACH,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,CAAC;KAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,CAAC,CAAC,EAAE;IACR,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAqB;IAClE,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;IACxC,SAAS,EAAE,CAAC,CAAC,SAAS;IACtB,aAAa,EAAE,CAAC,CAAC,aAAa;IAC9B,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;CACzC,CAAC,CAAC,CAAC;AAEN;;;GAGG;AACU,QAAA,QAAQ,GAAyB,oBAAE,CAAC,MAAM,CAAC;IACtD,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,oBAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAChD,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,oBAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAClE,kBAAkB,EAAE,IAAA,6BAAqB,GAAE;IAC3C,SAAS,EAAE,OAAO;IAClB,aAAa,EAAE,OAAO;IACtB,gBAAgB,EAAE,oBAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACjE,wBAAwB,EAAE,oBAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CAC/D,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,UAAU,GAA2B,oBAAE,CAAC,MAAM,CAAC;IAC1D,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,oBAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAChD,KAAK,EAAE,oBAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAClD,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,oBAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACpE,kBAAkB,EAAE,IAAA,6BAAqB,GAAE;IAC3C,SAAS,EAAE,OAAO;IAClB,aAAa,EAAE,OAAO;IACtB,gBAAgB,EAAE,oBAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACjE,0BAA0B,EAAE,oBAAE,CAAC,OAAO,EAAE;IACxC,QAAQ,EAAE,oBAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CAC/C,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,SAAS,GAA0B,oBAAE;KAC/C,MAAM,CAAC;IACN,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,oBAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACjD,OAAO,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACnD,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,oBAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3D,UAAU,EAAE,oBAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC5D,UAAU,EAAE,oBAAE,CAAC,KAAK,CAClB,oBAAE,CAAC,MAAM,CAAC;QACR,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,oBAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAChD,QAAQ,EAAE,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC7B,UAAU,EAAE,oBAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;KAC5D,CAAkC,EACnC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAC/B;IACD,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AAEL;;;GAGG;AACI,MAAM,UAAU,GAAG,CACxB,SAAkB,EACmB,EAAE,CACvC,oBAAE,CAAC,MAAM,CAAC;IACR,EAAE,EAAE,KAAK;IACT,WAAW,EAAE,oBAAE,CAAC,YAAY,CAC1B,cAAuB,EACvB,OAAgB,EAChB,SAAkB,CACnB;IACD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;IACrD,QAAQ,EAAE,KAAK;IACf,gBAAgB,EAAE,oBAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACnE,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,oBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAChD,WAAW,EAAE,oBAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5B,OAAO,EAAE,oBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3B,SAAS,EAAE,oBAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC/C,MAAM,EAAE,oBAAE,CAAC,OAAO,EAAE;IACpB,SAAS,EAAE,oBAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1B,QAAQ,EAAE,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC9B,WAAW,EAAE,oBAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5B,SAAS,EAAE,oBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACjD,QAAQ,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC7D,SAAS,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC9D,MAAM,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAC3E,QAAQ,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACrD,UAAU,EAAE,oBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CACnD,CAAC,CAAC;AA5BQ,QAAA,UAAU,cA4BlB;AAEL;;;GAGG;AACU,QAAA,cAAc,GAA+B,oBAAE,CAAC,MAAM,CAAC;IAClE,KAAK,EAAE,oBAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC;IAC/C,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,oBAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1C,WAAW,EAAE,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,oBAAoB,GAAqC,oBAAE,CAAC,MAAM,CAAC;IAC9E,KAAK,EAAE,oBAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC;IAC/C,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,oBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACjD,OAAO,EAAE,oBAAE,CAAC,MAAM,CAAC,oBAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACzE,WAAW,EAAE,oBAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CAClC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared attachment validation and processing utilities for chat services.
3
+ *
4
+ * Validates attachment size/count limits and converts IChatAttachmentInput[]
5
+ * into IChatAttachmentMetadata[] for storage on messages.
6
+ *
7
+ * Requirements: 11.1, 11.2, 11.4, 11.5
8
+ */
9
+ import { IAttachmentConfig, IChatAttachmentInput, IChatAttachmentMetadata } from '../../interfaces/communication';
10
+ /**
11
+ * Validate attachment limits and produce metadata entries.
12
+ *
13
+ * Checks count limit first, then per-file size limit.
14
+ * Returns an array of IChatAttachmentMetadata with generated assetIds.
15
+ *
16
+ * @throws TooManyAttachmentsError if attachments.length > config.maxAttachmentsPerMessage
17
+ * @throws AttachmentTooLargeError if any attachment exceeds config.maxFileSizeBytes
18
+ */
19
+ export declare function validateAndPrepareAttachments(attachments: IChatAttachmentInput[], config?: IAttachmentConfig): IChatAttachmentMetadata[];
20
+ //# sourceMappingURL=attachmentUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachmentUtils.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/attachmentUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAEL,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,oBAAoB,EAAE,EACnC,MAAM,GAAE,iBAA6C,GACpD,uBAAuB,EAAE,CA6B3B"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * Shared attachment validation and processing utilities for chat services.
4
+ *
5
+ * Validates attachment size/count limits and converts IChatAttachmentInput[]
6
+ * into IChatAttachmentMetadata[] for storage on messages.
7
+ *
8
+ * Requirements: 11.1, 11.2, 11.4, 11.5
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.validateAndPrepareAttachments = validateAndPrepareAttachments;
12
+ const uuid_1 = require("uuid");
13
+ const encryptionErrors_1 = require("../../errors/encryptionErrors");
14
+ const communication_1 = require("../../interfaces/communication");
15
+ /**
16
+ * Validate attachment limits and produce metadata entries.
17
+ *
18
+ * Checks count limit first, then per-file size limit.
19
+ * Returns an array of IChatAttachmentMetadata with generated assetIds.
20
+ *
21
+ * @throws TooManyAttachmentsError if attachments.length > config.maxAttachmentsPerMessage
22
+ * @throws AttachmentTooLargeError if any attachment exceeds config.maxFileSizeBytes
23
+ */
24
+ function validateAndPrepareAttachments(attachments, config = communication_1.DEFAULT_ATTACHMENT_CONFIG) {
25
+ if (attachments.length > config.maxAttachmentsPerMessage) {
26
+ throw new encryptionErrors_1.TooManyAttachmentsError(attachments.length, config.maxAttachmentsPerMessage);
27
+ }
28
+ const metadata = [];
29
+ for (const att of attachments) {
30
+ if (att.content.length > config.maxFileSizeBytes) {
31
+ throw new encryptionErrors_1.AttachmentTooLargeError(att.fileName, att.content.length, config.maxFileSizeBytes);
32
+ }
33
+ metadata.push({
34
+ assetId: (0, uuid_1.v4)(),
35
+ fileName: att.fileName,
36
+ mimeType: att.mimeType,
37
+ encryptedSize: att.content.length, // placeholder — real encryption may change size
38
+ originalSize: att.content.length,
39
+ });
40
+ }
41
+ return metadata;
42
+ }
43
+ //# sourceMappingURL=attachmentUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachmentUtils.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/attachmentUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAuBH,sEAgCC;AArDD,+BAAoC;AACpC,oEAGuC;AACvC,kEAKwC;AAExC;;;;;;;;GAQG;AACH,SAAgB,6BAA6B,CAC3C,WAAmC,EACnC,SAA4B,yCAAyB;IAErD,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACzD,MAAM,IAAI,0CAAuB,CAC/B,WAAW,CAAC,MAAM,EAClB,MAAM,CAAC,wBAAwB,CAChC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAA8B,EAAE,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjD,MAAM,IAAI,0CAAuB,CAC/B,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,OAAO,CAAC,MAAM,EAClB,MAAM,CAAC,gBAAgB,CACxB,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAA,SAAM,GAAE;YACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,gDAAgD;YACnF,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;SACjC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -5,11 +5,24 @@
5
5
  * Supports channel creation with visibility modes, join/leave, messaging,
6
6
  * search, invite token generation/redemption, mute/kick operations.
7
7
  *
8
- * Requirements: 10.3
8
+ * Uses epoch-aware key management via IKeyEpochState for forward secrecy.
9
+ * Each key rotation creates a new epoch. Messages record which epoch they
10
+ * were encrypted under. On member removal, all epoch keys are re-wrapped
11
+ * for remaining members only.
12
+ *
13
+ * When an IChatStorageProvider is injected, channels, channel messages, and
14
+ * invite tokens are also persisted to the provider's collections (write-through).
15
+ * Sync helper methods continue to read from the in-memory Maps so their
16
+ * signatures remain unchanged.
17
+ *
18
+ * Requirements: 10.3, 1.1, 1.2, 1.3, 1.4, 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 9.1
9
19
  */
10
20
  import { ChannelVisibility, Permission } from '../../enumerations/communication';
11
- import { IChannel, IChannelUpdate, ICommunicationMessage, IInviteToken, IPaginatedResult } from '../../interfaces/communication';
21
+ import { IChannel, IChannelUpdate, IChatAttachmentInput, ICommunicationMessage, IInviteToken, IPaginatedResult } from '../../interfaces/communication';
22
+ import { IChatStorageProvider } from '../../interfaces/communication/chatStorageProvider';
23
+ import { IBlockContentStore } from '../../interfaces/communication/blockContentStore';
12
24
  import { ICommunicationEventEmitter } from '../../interfaces/events';
25
+ import { IKeyEpochState } from './keyEpochManager';
13
26
  import { MessageOperationsService } from './messageOperationsService';
14
27
  import { PermissionService } from './permissionService';
15
28
  export declare class ChannelNotFoundError extends Error {
@@ -64,34 +77,111 @@ export declare class ChannelService {
64
77
  private readonly channels;
65
78
  /** channelId → messages (ordered by createdAt ascending) */
66
79
  private readonly messages;
67
- /** channelId → raw symmetric key (Uint8Array) */
68
- private readonly symmetricKeys;
80
+ /** channelId → epoch-aware key state (raw keys + wrapped keys per epoch) */
81
+ private readonly keyEpochStates;
69
82
  /** token string → IInviteToken */
70
83
  private readonly inviteTokens;
71
- /** channel name (lowercase) → channelId for uniqueness */
84
+ /**
85
+ * Per-server channel name uniqueness index.
86
+ * Outer key = serverId (or '__standalone__' for channels without a server).
87
+ * Inner key = normalized channel name → channelId.
88
+ */
72
89
  private readonly nameIndex;
90
+ /** Sentinel key for channels that don't belong to any server. */
91
+ private static readonly STANDALONE_KEY;
92
+ /** Whether init() has already been called (idempotency guard). */
93
+ private initialized;
73
94
  private readonly permissionService;
74
95
  private readonly encryptKey;
75
96
  private readonly messageOps;
76
97
  private readonly eventEmitter;
77
98
  private readonly randomBytesProvider;
78
- constructor(permissionService: PermissionService, encryptKey?: ChannelKeyEncryptionHandler, messageOps?: MessageOperationsService, eventEmitter?: ICommunicationEventEmitter, randomBytesProvider?: (length: number) => Uint8Array);
99
+ /** Optional persistent collection for channels (write-through). */
100
+ private readonly channelCollection;
101
+ /** Optional persistent collection for channel messages (write-through). */
102
+ private readonly channelMessageCollection;
103
+ /** Optional persistent collection for invite tokens (write-through). */
104
+ private readonly inviteTokenCollection;
105
+ /** Optional block content store for storing message content as blocks. */
106
+ private readonly blockContentStore;
107
+ constructor(permissionService: PermissionService, encryptKey?: ChannelKeyEncryptionHandler, messageOps?: MessageOperationsService, eventEmitter?: ICommunicationEventEmitter, randomBytesProvider?: (length: number) => Uint8Array, storageProvider?: IChatStorageProvider, blockContentStore?: IBlockContentStore);
108
+ /**
109
+ * Load persisted channels, channel messages, and invite tokens back into
110
+ * in-memory Maps, rebuilding derived indexes, key epoch states, and
111
+ * permission registrations.
112
+ *
113
+ * Idempotent: only the first call performs rehydration. No-op when no
114
+ * storage provider was supplied at construction time.
115
+ *
116
+ * Requirements: 1.3, 1.5, 1.6, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 8.1, 8.2, 8.3, 9.1, 9.3, 9.4
117
+ */
118
+ init(): Promise<void>;
79
119
  private assertChannelExists;
80
120
  private assertIsMember;
81
121
  private assertPermission;
82
122
  private assertNotMuted;
83
123
  private generateSymmetricKey;
124
+ /**
125
+ * Encrypt a symmetric key for multiple members, returning a Map<memberId, wrappedKey>.
126
+ * Wraps key wrapping failures as KeyUnwrapError with context information.
127
+ *
128
+ * Requirements: 12.3
129
+ */
84
130
  private encryptKeyForMembers;
131
+ /**
132
+ * Create initial epoch state (epoch 0) for a new channel.
133
+ * Uses KeyEpochManager pattern: creates epoch 0 with wrapped keys for all members.
134
+ *
135
+ * Requirements: 1.3, 2.1
136
+ */
137
+ private createInitialEpochState;
138
+ /**
139
+ * Add a member to an existing epoch state: wrap ALL epoch keys for the new member.
140
+ * This gives the new member access to full message history.
141
+ *
142
+ * Requirements: 2.2, 6.1, 6.3
143
+ */
144
+ private addMemberToEpochState;
145
+ /**
146
+ * Rotate key: increment epoch, add new key, delete removed member from ALL epochs,
147
+ * re-wrap ALL epoch keys for remaining members.
148
+ *
149
+ * Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6
150
+ */
151
+ private rotateEpochState;
152
+ /**
153
+ * Rotate the channel's symmetric key using epoch-aware key management.
154
+ * Generates a new key, increments epoch, re-wraps all epoch keys for remaining members,
155
+ * and removes the departed member from all epochs.
156
+ *
157
+ * Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
158
+ */
85
159
  private rotateKey;
160
+ /**
161
+ * Assert that a key epoch exists in the epoch state for a given context.
162
+ * Throws KeyEpochNotFoundError if the epoch is not found.
163
+ *
164
+ * Requirements: 12.3
165
+ */
166
+ private assertEpochExists;
86
167
  private normalizeChannelName;
168
+ /** Get the nameIndex scope key for a channel's server (or standalone). */
169
+ private nameScope;
170
+ /** Check if a channel name is taken within a given server scope. */
171
+ private isNameTaken;
172
+ /** Register a channel name in the scoped index. */
173
+ private registerName;
174
+ /** Remove a channel name from the scoped index. */
175
+ private unregisterName;
87
176
  /**
88
177
  * Create a new channel.
89
178
  * Generates a shared symmetric key and encrypts it for the creator.
90
179
  * The creator is assigned the OWNER role.
180
+ * Uses KeyEpochManager pattern to create initial epoch 0.
91
181
  *
92
- * Requirement 10.3: channel creation with visibility.
182
+ * Requirements: 10.3, 1.3, 2.1, 9.1
93
183
  */
94
- createChannel(name: string, creatorId: string, visibility: ChannelVisibility, topic?: string): Promise<IChannel>;
184
+ createChannel(name: string, creatorId: string, visibility: ChannelVisibility, topic?: string, serverId?: string): Promise<IChannel>;
95
185
  /**
96
186
  * List channels visible to a member.
97
187
  * Returns public channels, plus private/secret/invisible channels
@@ -117,21 +207,51 @@ export declare class ChannelService {
117
207
  deleteChannel(channelId: string, requesterId: string): Promise<void>;
118
208
  /**
119
209
  * Join a public channel. Rejects invite-only channels.
210
+ * Wraps ALL epoch keys for the new member so they can read history.
120
211
  *
121
- * Requirement 10.3: add member, reject invite-only without invitation.
212
+ * Requirements: 10.3, 2.2
122
213
  */
123
214
  joinChannel(channelId: string, memberId: string): Promise<void>;
215
+ /**
216
+ * Remove a member from a channel (server-level operation).
217
+ * Bypasses permission checks — used by ServerService when a member is removed
218
+ * from a server so that key rotation is performed for each affected channel.
219
+ * Silently skips if the member is not in the channel.
220
+ *
221
+ * Requirements: 7.1, 7.2, 7.3
222
+ */
223
+ removeMemberFromChannel(channelId: string, memberId: string): Promise<void>;
224
+ /**
225
+ * Add a member to a channel (server-level operation).
226
+ * Bypasses visibility checks — used by ServerService when a member joins a server
227
+ * so that all epoch keys are wrapped for the new member across all server channels.
228
+ * Silently skips if the member is already in the channel.
229
+ *
230
+ * Requirements: 6.1, 6.2, 6.3
231
+ */
232
+ addMemberToChannel(channelId: string, memberId: string): Promise<void>;
124
233
  /**
125
234
  * Leave a channel voluntarily. Rotates the shared key.
235
+ *
236
+ * Requirements: 3.5
126
237
  */
127
238
  leaveChannel(channelId: string, memberId: string): Promise<void>;
128
239
  /**
129
240
  * Send a message to a channel.
130
- * Requirement 10.3: messaging with permission and mute checks.
241
+ * Encrypts content with the current epoch's CEK and records the keyEpoch.
242
+ * Optionally accepts attachments which are validated against platform limits.
243
+ *
244
+ * Requirements: 10.3, 1.1, 1.4, 9.1, 11.1, 11.2, 11.4, 11.5
131
245
  */
132
- sendMessage(channelId: string, senderId: string, content: string): Promise<ICommunicationMessage>;
246
+ sendMessage(channelId: string, senderId: string, content: string, attachments?: IChatAttachmentInput[]): Promise<ICommunicationMessage>;
133
247
  /**
134
248
  * Get messages in a channel with cursor-based pagination.
249
+ * Messages are returned with their keyEpoch so clients can decrypt
250
+ * using the appropriate epoch's CEK.
251
+ * Validates that each message's keyEpoch exists in the epoch state;
252
+ * throws KeyEpochNotFoundError if a message references a non-existent epoch.
253
+ *
254
+ * Requirements: 1.2, 12.3
135
255
  */
136
256
  getMessages(channelId: string, memberId: string, cursor?: string, limit?: number): Promise<IPaginatedResult<ICommunicationMessage>>;
137
257
  /**
@@ -147,8 +267,9 @@ export declare class ChannelService {
147
267
  createInvite(channelId: string, creatorId: string, maxUses?: number, expiresInMs?: number): Promise<IInviteToken>;
148
268
  /**
149
269
  * Redeem an invite token to join a channel.
270
+ * Wraps ALL epoch keys for the joining member.
150
271
  *
151
- * Requirement 10.3: validate expiry and usage limits.
272
+ * Requirements: 10.3, 2.2
152
273
  */
153
274
  redeemInvite(token: string, memberId: string): Promise<void>;
154
275
  /**
@@ -159,10 +280,10 @@ export declare class ChannelService {
159
280
  */
160
281
  muteMember(channelId: string, requesterId: string, targetId: string, durationMs: number): Promise<void>;
161
282
  /**
162
- * Kick a member from a channel. Rotates encryption keys.
283
+ * Kick a member from a channel. Rotates encryption keys using epoch-aware rotation.
163
284
  * Requires KICK_MEMBERS permission.
164
285
  *
165
- * Requirement 10.3: remove member and rotate keys.
286
+ * Requirements: 10.3, 3.1, 3.2, 3.3, 3.4
166
287
  */
167
288
  kickMember(channelId: string, requesterId: string, targetId: string): Promise<void>;
168
289
  /**
@@ -196,7 +317,15 @@ export declare class ChannelService {
196
317
  */
197
318
  removeReaction(channelId: string, messageId: string, memberId: string, reactionId: string): Promise<void>;
198
319
  getChannelById(channelId: string): IChannel | undefined;
320
+ /**
321
+ * Get the current epoch's raw symmetric key for a channel.
322
+ * Returns the key for the latest epoch (backward-compatible accessor).
323
+ */
199
324
  getSymmetricKey(channelId: string): Uint8Array | undefined;
325
+ /**
326
+ * Get the full epoch state for a channel (testing / internal use).
327
+ */
328
+ getKeyEpochState(channelId: string): IKeyEpochState<string> | undefined;
200
329
  getAllMessages(channelId: string): ICommunicationMessage[];
201
330
  getInviteToken(token: string): IInviteToken | undefined;
202
331
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"channelService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/channelService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channelService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/channelService.ts"],"names":[],"mappings":"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"}