@sudoplatform/sudo-secure-communications 0.0.1 → 5.0.2

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 (1342) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +29 -0
  3. package/cjs/gen/graphqlTypes.js +1812 -0
  4. package/cjs/gen/graphqlTypes.js.map +1 -0
  5. package/cjs/index.js +11 -0
  6. package/cjs/index.js.map +1 -0
  7. package/cjs/private/data/channels/defaultChannelsService.js +127 -0
  8. package/cjs/private/data/channels/defaultChannelsService.js.map +1 -0
  9. package/cjs/private/data/channels/transformer/channelInvitationRequestTransformer.js +20 -0
  10. package/cjs/private/data/channels/transformer/channelInvitationRequestTransformer.js.map +1 -0
  11. package/cjs/private/data/channels/transformer/channelJoinRuleTransformer.js +55 -0
  12. package/cjs/private/data/channels/transformer/channelJoinRuleTransformer.js.map +1 -0
  13. package/cjs/private/data/channels/transformer/channelMemberTransformer.js +32 -0
  14. package/cjs/private/data/channels/transformer/channelMemberTransformer.js.map +1 -0
  15. package/cjs/private/data/channels/transformer/channelPermissionsTransformer.js +55 -0
  16. package/cjs/private/data/channels/transformer/channelPermissionsTransformer.js.map +1 -0
  17. package/cjs/private/data/channels/transformer/channelPowerLevelsTransformer.js +106 -0
  18. package/cjs/private/data/channels/transformer/channelPowerLevelsTransformer.js.map +1 -0
  19. package/cjs/private/data/channels/transformer/channelRoleTransformer.js +38 -0
  20. package/cjs/private/data/channels/transformer/channelRoleTransformer.js.map +1 -0
  21. package/cjs/private/data/channels/transformer/channelSortOrderTransformer.js +69 -0
  22. package/cjs/private/data/channels/transformer/channelSortOrderTransformer.js.map +1 -0
  23. package/cjs/private/data/channels/transformer/channelTransformer.js +55 -0
  24. package/cjs/private/data/channels/transformer/channelTransformer.js.map +1 -0
  25. package/cjs/private/data/channels/transformer/publicChannelInfoTransformer.js +28 -0
  26. package/cjs/private/data/channels/transformer/publicChannelInfoTransformer.js.map +1 -0
  27. package/cjs/private/data/channels/transformer/publicChannelJoinRuleTransformer.js +47 -0
  28. package/cjs/private/data/channels/transformer/publicChannelJoinRuleTransformer.js.map +1 -0
  29. package/cjs/private/data/channels/transformer/publicChannelSearchResultTransformer.js +42 -0
  30. package/cjs/private/data/channels/transformer/publicChannelSearchResultTransformer.js.map +1 -0
  31. package/cjs/private/data/common/apiClient.js +216 -0
  32. package/cjs/private/data/common/apiClient.js.map +1 -0
  33. package/cjs/private/data/common/config.js +28 -0
  34. package/cjs/private/data/common/config.js.map +1 -0
  35. package/cjs/private/data/common/matrixClientManager.js +1802 -0
  36. package/cjs/private/data/common/matrixClientManager.js.map +1 -0
  37. package/cjs/private/data/common/matrixTypes.js +13 -0
  38. package/cjs/private/data/common/matrixTypes.js.map +1 -0
  39. package/cjs/private/data/common/privateSecureCommsClientOptions.js +8 -0
  40. package/cjs/private/data/common/privateSecureCommsClientOptions.js.map +1 -0
  41. package/cjs/private/data/common/s3Client.js +74 -0
  42. package/cjs/private/data/common/s3Client.js.map +1 -0
  43. package/cjs/private/data/common/transformer/errorTransformer.js +48 -0
  44. package/cjs/private/data/common/transformer/errorTransformer.js.map +1 -0
  45. package/cjs/private/data/common/transformer/membershipStateTransformer.js +45 -0
  46. package/cjs/private/data/common/transformer/membershipStateTransformer.js.map +1 -0
  47. package/cjs/private/data/directChats/matrixDirectChatsService.js +157 -0
  48. package/cjs/private/data/directChats/matrixDirectChatsService.js.map +1 -0
  49. package/cjs/private/data/directChats/transformer/directChatInvitationTransformer.js +18 -0
  50. package/cjs/private/data/directChats/transformer/directChatInvitationTransformer.js.map +1 -0
  51. package/cjs/private/data/directChats/transformer/directChatPowerLevelsTransformer.js +21 -0
  52. package/cjs/private/data/directChats/transformer/directChatPowerLevelsTransformer.js.map +1 -0
  53. package/cjs/private/data/directChats/transformer/directChatTransformer.js +18 -0
  54. package/cjs/private/data/directChats/transformer/directChatTransformer.js.map +1 -0
  55. package/cjs/private/data/groups/transformer/groupMemberTransformer.js +32 -0
  56. package/cjs/private/data/groups/transformer/groupMemberTransformer.js.map +1 -0
  57. package/cjs/private/data/groups/transformer/groupPermissionsTransformer.js +48 -0
  58. package/cjs/private/data/groups/transformer/groupPermissionsTransformer.js.map +1 -0
  59. package/cjs/private/data/groups/transformer/groupPowerLevelsTransformer.js +36 -0
  60. package/cjs/private/data/groups/transformer/groupPowerLevelsTransformer.js.map +1 -0
  61. package/cjs/private/data/groups/transformer/groupRoleTransformer.js +34 -0
  62. package/cjs/private/data/groups/transformer/groupRoleTransformer.js.map +1 -0
  63. package/cjs/private/data/groups/transformer/groupTransformer.js +40 -0
  64. package/cjs/private/data/groups/transformer/groupTransformer.js.map +1 -0
  65. package/cjs/private/data/handle/defaultHandleService.js +46 -0
  66. package/cjs/private/data/handle/defaultHandleService.js.map +1 -0
  67. package/cjs/private/data/handle/transformer/handleTransformer.js +35 -0
  68. package/cjs/private/data/handle/transformer/handleTransformer.js.map +1 -0
  69. package/cjs/private/data/media/defaultMediaCredentialService.js +29 -0
  70. package/cjs/private/data/media/defaultMediaCredentialService.js.map +1 -0
  71. package/cjs/private/data/media/matrixMediaService.js +151 -0
  72. package/cjs/private/data/media/matrixMediaService.js.map +1 -0
  73. package/cjs/private/data/media/mediaCredentialManager.js +76 -0
  74. package/cjs/private/data/media/mediaCredentialManager.js.map +1 -0
  75. package/cjs/private/data/media/transformer/fileEncryptionInfoTransformer.js +20 -0
  76. package/cjs/private/data/media/transformer/fileEncryptionInfoTransformer.js.map +1 -0
  77. package/cjs/private/data/media/transformer/roomMediaCredentialTransformer.js +21 -0
  78. package/cjs/private/data/media/transformer/roomMediaCredentialTransformer.js.map +1 -0
  79. package/cjs/private/data/messaging/matrixMessagingService.js +345 -0
  80. package/cjs/private/data/messaging/matrixMessagingService.js.map +1 -0
  81. package/cjs/private/data/messaging/transformer/chatSummaryTransformer.js +37 -0
  82. package/cjs/private/data/messaging/transformer/chatSummaryTransformer.js.map +1 -0
  83. package/cjs/private/data/messaging/transformer/messageMentionTransformer.js +27 -0
  84. package/cjs/private/data/messaging/transformer/messageMentionTransformer.js.map +1 -0
  85. package/cjs/private/data/messaging/transformer/messageReactionTransformer.js +26 -0
  86. package/cjs/private/data/messaging/transformer/messageReactionTransformer.js.map +1 -0
  87. package/cjs/private/data/messaging/transformer/messageReceiptTransformer.js +31 -0
  88. package/cjs/private/data/messaging/transformer/messageReceiptTransformer.js.map +1 -0
  89. package/cjs/private/data/messaging/transformer/messageStateTransformer.js +34 -0
  90. package/cjs/private/data/messaging/transformer/messageStateTransformer.js.map +1 -0
  91. package/cjs/private/data/messaging/transformer/messageTransformer.js +363 -0
  92. package/cjs/private/data/messaging/transformer/messageTransformer.js.map +1 -0
  93. package/cjs/private/data/messaging/transformer/pollResponsesTransformer.js +26 -0
  94. package/cjs/private/data/messaging/transformer/pollResponsesTransformer.js.map +1 -0
  95. package/cjs/private/data/messaging/transformer/pollTypeTransformer.js +39 -0
  96. package/cjs/private/data/messaging/transformer/pollTypeTransformer.js.map +1 -0
  97. package/cjs/private/data/messaging/transformer/searchMessagesItemTransformer.js +59 -0
  98. package/cjs/private/data/messaging/transformer/searchMessagesItemTransformer.js.map +1 -0
  99. package/cjs/private/data/notification/defaultNotificationService.js +266 -0
  100. package/cjs/private/data/notification/defaultNotificationService.js.map +1 -0
  101. package/cjs/private/data/rooms/matrixRoomsService.js +327 -0
  102. package/cjs/private/data/rooms/matrixRoomsService.js.map +1 -0
  103. package/cjs/private/data/rooms/transformer/roomPowerLevelsTransformer.js +23 -0
  104. package/cjs/private/data/rooms/transformer/roomPowerLevelsTransformer.js.map +1 -0
  105. package/cjs/private/data/security/matrixSecurityService.js +91 -0
  106. package/cjs/private/data/security/matrixSecurityService.js.map +1 -0
  107. package/cjs/private/data/session/defaultSessionService.js +34 -0
  108. package/cjs/private/data/session/defaultSessionService.js.map +1 -0
  109. package/cjs/private/data/session/sessionManager.js +164 -0
  110. package/cjs/private/data/session/sessionManager.js.map +1 -0
  111. package/cjs/private/data/session/transformer/sessionTransformer.js +36 -0
  112. package/cjs/private/data/session/transformer/sessionTransformer.js.map +1 -0
  113. package/cjs/private/data/storage/handleStorage.js +25 -0
  114. package/cjs/private/data/storage/handleStorage.js.map +1 -0
  115. package/cjs/private/data/storage/indexeddb/indexeddbStorageProvider.js +102 -0
  116. package/cjs/private/data/storage/indexeddb/indexeddbStorageProvider.js.map +1 -0
  117. package/cjs/private/data/storage/secureCommsStore.js +35 -0
  118. package/cjs/private/data/storage/secureCommsStore.js.map +1 -0
  119. package/cjs/private/data/wordValidation/defaultWordValidationService.js +19 -0
  120. package/cjs/private/data/wordValidation/defaultWordValidationService.js.map +1 -0
  121. package/cjs/private/domain/entities/channels/channelEntity.js +129 -0
  122. package/cjs/private/domain/entities/channels/channelEntity.js.map +1 -0
  123. package/cjs/private/domain/entities/channels/channelInvitationRequestEntity.js +8 -0
  124. package/cjs/private/domain/entities/channels/channelInvitationRequestEntity.js.map +1 -0
  125. package/cjs/private/domain/entities/channels/channelsService.js +8 -0
  126. package/cjs/private/domain/entities/channels/channelsService.js.map +1 -0
  127. package/cjs/private/domain/entities/common/memberEntity.js +22 -0
  128. package/cjs/private/domain/entities/common/memberEntity.js.map +1 -0
  129. package/cjs/private/domain/entities/common/ownerEntity.js +8 -0
  130. package/cjs/private/domain/entities/common/ownerEntity.js.map +1 -0
  131. package/cjs/private/domain/entities/common/powerLevelsEntity.js +8 -0
  132. package/cjs/private/domain/entities/common/powerLevelsEntity.js.map +1 -0
  133. package/cjs/private/domain/entities/directChats/directChatEntity.js +38 -0
  134. package/cjs/private/domain/entities/directChats/directChatEntity.js.map +1 -0
  135. package/cjs/private/domain/entities/directChats/directChatInvitationEntity.js +8 -0
  136. package/cjs/private/domain/entities/directChats/directChatInvitationEntity.js.map +1 -0
  137. package/cjs/private/domain/entities/directChats/directChatsService.js +8 -0
  138. package/cjs/private/domain/entities/directChats/directChatsService.js.map +1 -0
  139. package/cjs/private/domain/entities/groups/groupEntity.js +55 -0
  140. package/cjs/private/domain/entities/groups/groupEntity.js.map +1 -0
  141. package/cjs/private/domain/entities/handle/handleEntity.js +8 -0
  142. package/cjs/private/domain/entities/handle/handleEntity.js.map +1 -0
  143. package/cjs/private/domain/entities/handle/handleService.js +8 -0
  144. package/cjs/private/domain/entities/handle/handleService.js.map +1 -0
  145. package/cjs/private/domain/entities/media/fileEncryptionInfoEntity.js +8 -0
  146. package/cjs/private/domain/entities/media/fileEncryptionInfoEntity.js.map +1 -0
  147. package/cjs/private/domain/entities/media/mediaCredentialEntity.js +19 -0
  148. package/cjs/private/domain/entities/media/mediaCredentialEntity.js.map +1 -0
  149. package/cjs/private/domain/entities/media/mediaCredentialService.js +8 -0
  150. package/cjs/private/domain/entities/media/mediaCredentialService.js.map +1 -0
  151. package/cjs/private/domain/entities/media/mediaService.js +8 -0
  152. package/cjs/private/domain/entities/media/mediaService.js.map +1 -0
  153. package/cjs/private/domain/entities/messaging/chatSummaryEntity.js +8 -0
  154. package/cjs/private/domain/entities/messaging/chatSummaryEntity.js.map +1 -0
  155. package/cjs/private/domain/entities/messaging/messageEntity.js +25 -0
  156. package/cjs/private/domain/entities/messaging/messageEntity.js.map +1 -0
  157. package/cjs/private/domain/entities/messaging/messagingService.js +8 -0
  158. package/cjs/private/domain/entities/messaging/messagingService.js.map +1 -0
  159. package/cjs/private/domain/entities/messaging/pollEntity.js +22 -0
  160. package/cjs/private/domain/entities/messaging/pollEntity.js.map +1 -0
  161. package/cjs/private/domain/entities/messaging/thumbnailInfoEntity.js +8 -0
  162. package/cjs/private/domain/entities/messaging/thumbnailInfoEntity.js.map +1 -0
  163. package/cjs/private/domain/entities/notification/notificationService.js +8 -0
  164. package/cjs/private/domain/entities/notification/notificationService.js.map +1 -0
  165. package/cjs/private/domain/entities/rooms/roomEntity.js +28 -0
  166. package/cjs/private/domain/entities/rooms/roomEntity.js.map +1 -0
  167. package/cjs/private/domain/entities/rooms/roomPowerLevelsEntity.js +8 -0
  168. package/cjs/private/domain/entities/rooms/roomPowerLevelsEntity.js.map +1 -0
  169. package/cjs/private/domain/entities/rooms/roomsService.js +8 -0
  170. package/cjs/private/domain/entities/rooms/roomsService.js.map +1 -0
  171. package/cjs/private/domain/entities/security/securityService.js +8 -0
  172. package/cjs/private/domain/entities/security/securityService.js.map +1 -0
  173. package/cjs/private/domain/entities/session/secureCommsSessionEntity.js +8 -0
  174. package/cjs/private/domain/entities/session/secureCommsSessionEntity.js.map +1 -0
  175. package/cjs/private/domain/entities/session/sessionService.js +8 -0
  176. package/cjs/private/domain/entities/session/sessionService.js.map +1 -0
  177. package/cjs/private/domain/entities/wordValidation/wordValidationService.js +8 -0
  178. package/cjs/private/domain/entities/wordValidation/wordValidationService.js.map +1 -0
  179. package/cjs/private/domain/use-cases/channels/acceptInvitationUseCase.js +37 -0
  180. package/cjs/private/domain/use-cases/channels/acceptInvitationUseCase.js.map +1 -0
  181. package/cjs/private/domain/use-cases/channels/banHandleUseCase.js +41 -0
  182. package/cjs/private/domain/use-cases/channels/banHandleUseCase.js.map +1 -0
  183. package/cjs/private/domain/use-cases/channels/createChannelUseCase.js +51 -0
  184. package/cjs/private/domain/use-cases/channels/createChannelUseCase.js.map +1 -0
  185. package/cjs/private/domain/use-cases/channels/declineInvitationUseCase.js +37 -0
  186. package/cjs/private/domain/use-cases/channels/declineInvitationUseCase.js.map +1 -0
  187. package/cjs/private/domain/use-cases/channels/deleteChannelUseCase.js +29 -0
  188. package/cjs/private/domain/use-cases/channels/deleteChannelUseCase.js.map +1 -0
  189. package/cjs/private/domain/use-cases/channels/getChannelMembersUseCase.js +35 -0
  190. package/cjs/private/domain/use-cases/channels/getChannelMembersUseCase.js.map +1 -0
  191. package/cjs/private/domain/use-cases/channels/getChannelMembershipUseCase.js +35 -0
  192. package/cjs/private/domain/use-cases/channels/getChannelMembershipUseCase.js.map +1 -0
  193. package/cjs/private/domain/use-cases/channels/getChannelUseCase.js +52 -0
  194. package/cjs/private/domain/use-cases/channels/getChannelUseCase.js.map +1 -0
  195. package/cjs/private/domain/use-cases/channels/getChannelsUseCase.js +69 -0
  196. package/cjs/private/domain/use-cases/channels/getChannelsUseCase.js.map +1 -0
  197. package/cjs/private/domain/use-cases/channels/joinChannelUseCase.js +34 -0
  198. package/cjs/private/domain/use-cases/channels/joinChannelUseCase.js.map +1 -0
  199. package/cjs/private/domain/use-cases/channels/kickHandleUseCase.js +41 -0
  200. package/cjs/private/domain/use-cases/channels/kickHandleUseCase.js.map +1 -0
  201. package/cjs/private/domain/use-cases/channels/leaveChannelUseCase.js +35 -0
  202. package/cjs/private/domain/use-cases/channels/leaveChannelUseCase.js.map +1 -0
  203. package/cjs/private/domain/use-cases/channels/listInvitationsUseCase.js +42 -0
  204. package/cjs/private/domain/use-cases/channels/listInvitationsUseCase.js.map +1 -0
  205. package/cjs/private/domain/use-cases/channels/listJoinedChannelsUseCase.js +40 -0
  206. package/cjs/private/domain/use-cases/channels/listJoinedChannelsUseCase.js.map +1 -0
  207. package/cjs/private/domain/use-cases/channels/listReceivedInvitationRequestsUseCase.js +34 -0
  208. package/cjs/private/domain/use-cases/channels/listReceivedInvitationRequestsUseCase.js.map +1 -0
  209. package/cjs/private/domain/use-cases/channels/listSentInvitationRequestsUseCase.js +38 -0
  210. package/cjs/private/domain/use-cases/channels/listSentInvitationRequestsUseCase.js.map +1 -0
  211. package/cjs/private/domain/use-cases/channels/searchPublicChannelsUseCase.js +35 -0
  212. package/cjs/private/domain/use-cases/channels/searchPublicChannelsUseCase.js.map +1 -0
  213. package/cjs/private/domain/use-cases/channels/sendInvitationRequestUseCase.js +37 -0
  214. package/cjs/private/domain/use-cases/channels/sendInvitationRequestUseCase.js.map +1 -0
  215. package/cjs/private/domain/use-cases/channels/sendInvitationsUseCase.js +41 -0
  216. package/cjs/private/domain/use-cases/channels/sendInvitationsUseCase.js.map +1 -0
  217. package/cjs/private/domain/use-cases/channels/unbanHandleUseCase.js +40 -0
  218. package/cjs/private/domain/use-cases/channels/unbanHandleUseCase.js.map +1 -0
  219. package/cjs/private/domain/use-cases/channels/updateChannelMemberRoleUseCase.js +42 -0
  220. package/cjs/private/domain/use-cases/channels/updateChannelMemberRoleUseCase.js.map +1 -0
  221. package/cjs/private/domain/use-cases/channels/updateChannelUseCase.js +143 -0
  222. package/cjs/private/domain/use-cases/channels/updateChannelUseCase.js.map +1 -0
  223. package/cjs/private/domain/use-cases/channels/withdrawInvitationUseCase.js +40 -0
  224. package/cjs/private/domain/use-cases/channels/withdrawInvitationUseCase.js.map +1 -0
  225. package/cjs/private/domain/use-cases/directChats/acceptInvitationUseCase.js +37 -0
  226. package/cjs/private/domain/use-cases/directChats/acceptInvitationUseCase.js.map +1 -0
  227. package/cjs/private/domain/use-cases/directChats/blockHandleUseCase.js +37 -0
  228. package/cjs/private/domain/use-cases/directChats/blockHandleUseCase.js.map +1 -0
  229. package/cjs/private/domain/use-cases/directChats/createChatUseCase.js +40 -0
  230. package/cjs/private/domain/use-cases/directChats/createChatUseCase.js.map +1 -0
  231. package/cjs/private/domain/use-cases/directChats/declineInvitationUseCase.js +37 -0
  232. package/cjs/private/domain/use-cases/directChats/declineInvitationUseCase.js.map +1 -0
  233. package/cjs/private/domain/use-cases/directChats/listBlockedHandlesUseCase.js +36 -0
  234. package/cjs/private/domain/use-cases/directChats/listBlockedHandlesUseCase.js.map +1 -0
  235. package/cjs/private/domain/use-cases/directChats/listInvitationsUseCase.js +34 -0
  236. package/cjs/private/domain/use-cases/directChats/listInvitationsUseCase.js.map +1 -0
  237. package/cjs/private/domain/use-cases/directChats/listJoinedChatsUseCase.js +34 -0
  238. package/cjs/private/domain/use-cases/directChats/listJoinedChatsUseCase.js.map +1 -0
  239. package/cjs/private/domain/use-cases/directChats/unblockHandleUseCase.js +37 -0
  240. package/cjs/private/domain/use-cases/directChats/unblockHandleUseCase.js.map +1 -0
  241. package/cjs/private/domain/use-cases/getSessionUseCase.js +29 -0
  242. package/cjs/private/domain/use-cases/getSessionUseCase.js.map +1 -0
  243. package/cjs/private/domain/use-cases/groups/acceptInvitationUseCase.js +37 -0
  244. package/cjs/private/domain/use-cases/groups/acceptInvitationUseCase.js.map +1 -0
  245. package/cjs/private/domain/use-cases/groups/banHandleUseCase.js +41 -0
  246. package/cjs/private/domain/use-cases/groups/banHandleUseCase.js.map +1 -0
  247. package/cjs/private/domain/use-cases/groups/createGroupUseCase.js +77 -0
  248. package/cjs/private/domain/use-cases/groups/createGroupUseCase.js.map +1 -0
  249. package/cjs/private/domain/use-cases/groups/declineInvitationUseCase.js +37 -0
  250. package/cjs/private/domain/use-cases/groups/declineInvitationUseCase.js.map +1 -0
  251. package/cjs/private/domain/use-cases/groups/deleteGroupUseCase.js +66 -0
  252. package/cjs/private/domain/use-cases/groups/deleteGroupUseCase.js.map +1 -0
  253. package/cjs/private/domain/use-cases/groups/getGroupMembersUseCase.js +35 -0
  254. package/cjs/private/domain/use-cases/groups/getGroupMembersUseCase.js.map +1 -0
  255. package/cjs/private/domain/use-cases/groups/getGroupUseCase.js +35 -0
  256. package/cjs/private/domain/use-cases/groups/getGroupUseCase.js.map +1 -0
  257. package/cjs/private/domain/use-cases/groups/getGroupsUseCase.js +39 -0
  258. package/cjs/private/domain/use-cases/groups/getGroupsUseCase.js.map +1 -0
  259. package/cjs/private/domain/use-cases/groups/kickHandleUseCase.js +41 -0
  260. package/cjs/private/domain/use-cases/groups/kickHandleUseCase.js.map +1 -0
  261. package/cjs/private/domain/use-cases/groups/leaveGroupUseCase.js +35 -0
  262. package/cjs/private/domain/use-cases/groups/leaveGroupUseCase.js.map +1 -0
  263. package/cjs/private/domain/use-cases/groups/listInvitationsUseCase.js +55 -0
  264. package/cjs/private/domain/use-cases/groups/listInvitationsUseCase.js.map +1 -0
  265. package/cjs/private/domain/use-cases/groups/listJoinedGroupsUseCase.js +47 -0
  266. package/cjs/private/domain/use-cases/groups/listJoinedGroupsUseCase.js.map +1 -0
  267. package/cjs/private/domain/use-cases/groups/sendInvitationsUseCase.js +41 -0
  268. package/cjs/private/domain/use-cases/groups/sendInvitationsUseCase.js.map +1 -0
  269. package/cjs/private/domain/use-cases/groups/unbanHandleUseCase.js +41 -0
  270. package/cjs/private/domain/use-cases/groups/unbanHandleUseCase.js.map +1 -0
  271. package/cjs/private/domain/use-cases/groups/updateGroupMemberRoleUseCase.js +42 -0
  272. package/cjs/private/domain/use-cases/groups/updateGroupMemberRoleUseCase.js.map +1 -0
  273. package/cjs/private/domain/use-cases/groups/updateGroupUseCase.js +78 -0
  274. package/cjs/private/domain/use-cases/groups/updateGroupUseCase.js.map +1 -0
  275. package/cjs/private/domain/use-cases/groups/withdrawInvitationUseCase.js +40 -0
  276. package/cjs/private/domain/use-cases/groups/withdrawInvitationUseCase.js.map +1 -0
  277. package/cjs/private/domain/use-cases/handles/deprovisionHandleUseCase.js +29 -0
  278. package/cjs/private/domain/use-cases/handles/deprovisionHandleUseCase.js.map +1 -0
  279. package/cjs/private/domain/use-cases/handles/listHandlesUseCase.js +29 -0
  280. package/cjs/private/domain/use-cases/handles/listHandlesUseCase.js.map +1 -0
  281. package/cjs/private/domain/use-cases/handles/provisionHandleUseCase.js +51 -0
  282. package/cjs/private/domain/use-cases/handles/provisionHandleUseCase.js.map +1 -0
  283. package/cjs/private/domain/use-cases/handles/updateHandleUseCase.js +36 -0
  284. package/cjs/private/domain/use-cases/handles/updateHandleUseCase.js.map +1 -0
  285. package/cjs/private/domain/use-cases/media/downloadMediaFileUseCase.js +62 -0
  286. package/cjs/private/domain/use-cases/media/downloadMediaFileUseCase.js.map +1 -0
  287. package/cjs/private/domain/use-cases/messaging/createPollUseCase.js +40 -0
  288. package/cjs/private/domain/use-cases/messaging/createPollUseCase.js.map +1 -0
  289. package/cjs/private/domain/use-cases/messaging/deleteMessageUseCase.js +38 -0
  290. package/cjs/private/domain/use-cases/messaging/deleteMessageUseCase.js.map +1 -0
  291. package/cjs/private/domain/use-cases/messaging/editMessageUseCase.js +38 -0
  292. package/cjs/private/domain/use-cases/messaging/editMessageUseCase.js.map +1 -0
  293. package/cjs/private/domain/use-cases/messaging/editPollUseCase.js +41 -0
  294. package/cjs/private/domain/use-cases/messaging/editPollUseCase.js.map +1 -0
  295. package/cjs/private/domain/use-cases/messaging/endPollUseCase.js +37 -0
  296. package/cjs/private/domain/use-cases/messaging/endPollUseCase.js.map +1 -0
  297. package/cjs/private/domain/use-cases/messaging/getChatSummariesUseCase.js +36 -0
  298. package/cjs/private/domain/use-cases/messaging/getChatSummariesUseCase.js.map +1 -0
  299. package/cjs/private/domain/use-cases/messaging/getMessageUseCase.js +35 -0
  300. package/cjs/private/domain/use-cases/messaging/getMessageUseCase.js.map +1 -0
  301. package/cjs/private/domain/use-cases/messaging/getMessagesUseCase.js +36 -0
  302. package/cjs/private/domain/use-cases/messaging/getMessagesUseCase.js.map +1 -0
  303. package/cjs/private/domain/use-cases/messaging/getPinnedMessagesUseCase.js +34 -0
  304. package/cjs/private/domain/use-cases/messaging/getPinnedMessagesUseCase.js.map +1 -0
  305. package/cjs/private/domain/use-cases/messaging/getPollResponsesUseCase.js +37 -0
  306. package/cjs/private/domain/use-cases/messaging/getPollResponsesUseCase.js.map +1 -0
  307. package/cjs/private/domain/use-cases/messaging/markAsReadUseCase.js +34 -0
  308. package/cjs/private/domain/use-cases/messaging/markAsReadUseCase.js.map +1 -0
  309. package/cjs/private/domain/use-cases/messaging/pinUnpinMessageUseCase.js +38 -0
  310. package/cjs/private/domain/use-cases/messaging/pinUnpinMessageUseCase.js.map +1 -0
  311. package/cjs/private/domain/use-cases/messaging/searchMessagesUseCase.js +41 -0
  312. package/cjs/private/domain/use-cases/messaging/searchMessagesUseCase.js.map +1 -0
  313. package/cjs/private/domain/use-cases/messaging/sendMediaUseCase.js +51 -0
  314. package/cjs/private/domain/use-cases/messaging/sendMediaUseCase.js.map +1 -0
  315. package/cjs/private/domain/use-cases/messaging/sendMessageUseCase.js +40 -0
  316. package/cjs/private/domain/use-cases/messaging/sendMessageUseCase.js.map +1 -0
  317. package/cjs/private/domain/use-cases/messaging/sendPollResponseUseCase.js +38 -0
  318. package/cjs/private/domain/use-cases/messaging/sendPollResponseUseCase.js.map +1 -0
  319. package/cjs/private/domain/use-cases/messaging/sendReplyMessageUseCase.js +41 -0
  320. package/cjs/private/domain/use-cases/messaging/sendReplyMessageUseCase.js.map +1 -0
  321. package/cjs/private/domain/use-cases/messaging/sendThreadMessageUseCase.js +41 -0
  322. package/cjs/private/domain/use-cases/messaging/sendThreadMessageUseCase.js.map +1 -0
  323. package/cjs/private/domain/use-cases/messaging/sendTypingNotificationUseCase.js +37 -0
  324. package/cjs/private/domain/use-cases/messaging/sendTypingNotificationUseCase.js.map +1 -0
  325. package/cjs/private/domain/use-cases/messaging/toggleReactionUseCase.js +36 -0
  326. package/cjs/private/domain/use-cases/messaging/toggleReactionUseCase.js.map +1 -0
  327. package/cjs/private/domain/use-cases/notifications/clearRecipientChatRulesUseCase.js +31 -0
  328. package/cjs/private/domain/use-cases/notifications/clearRecipientChatRulesUseCase.js.map +1 -0
  329. package/cjs/private/domain/use-cases/notifications/getDecodedInfoUseCase.js +29 -0
  330. package/cjs/private/domain/use-cases/notifications/getDecodedInfoUseCase.js.map +1 -0
  331. package/cjs/private/domain/use-cases/notifications/getSettingsUseCase.js +29 -0
  332. package/cjs/private/domain/use-cases/notifications/getSettingsUseCase.js.map +1 -0
  333. package/cjs/private/domain/use-cases/notifications/setDefaultChatRulesUseCase.js +29 -0
  334. package/cjs/private/domain/use-cases/notifications/setDefaultChatRulesUseCase.js.map +1 -0
  335. package/cjs/private/domain/use-cases/notifications/setDefaultEventRulesUseCase.js +29 -0
  336. package/cjs/private/domain/use-cases/notifications/setDefaultEventRulesUseCase.js.map +1 -0
  337. package/cjs/private/domain/use-cases/notifications/setRecipientChatRulesUseCase.js +29 -0
  338. package/cjs/private/domain/use-cases/notifications/setRecipientChatRulesUseCase.js.map +1 -0
  339. package/cjs/private/domain/use-cases/security/acceptVerificationUseCase.js +30 -0
  340. package/cjs/private/domain/use-cases/security/acceptVerificationUseCase.js.map +1 -0
  341. package/cjs/private/domain/use-cases/security/approveVerificationUseCase.js +27 -0
  342. package/cjs/private/domain/use-cases/security/approveVerificationUseCase.js.map +1 -0
  343. package/cjs/private/domain/use-cases/security/cancelVerificationUseCase.js +27 -0
  344. package/cjs/private/domain/use-cases/security/cancelVerificationUseCase.js.map +1 -0
  345. package/cjs/private/domain/use-cases/security/createBackupUseCase.js +28 -0
  346. package/cjs/private/domain/use-cases/security/createBackupUseCase.js.map +1 -0
  347. package/cjs/private/domain/use-cases/security/declineVerificationUseCase.js +27 -0
  348. package/cjs/private/domain/use-cases/security/declineVerificationUseCase.js.map +1 -0
  349. package/cjs/private/domain/use-cases/security/getBackupStateUseCase.js +28 -0
  350. package/cjs/private/domain/use-cases/security/getBackupStateUseCase.js.map +1 -0
  351. package/cjs/private/domain/use-cases/security/isVerifiedUseCase.js +28 -0
  352. package/cjs/private/domain/use-cases/security/isVerifiedUseCase.js.map +1 -0
  353. package/cjs/private/domain/use-cases/security/onSessionVerificationChangedUseCase.js +27 -0
  354. package/cjs/private/domain/use-cases/security/onSessionVerificationChangedUseCase.js.map +1 -0
  355. package/cjs/private/domain/use-cases/security/onVerificationRequestReceivedUseCase.js +27 -0
  356. package/cjs/private/domain/use-cases/security/onVerificationRequestReceivedUseCase.js.map +1 -0
  357. package/cjs/private/domain/use-cases/security/recoverUseCase.js +29 -0
  358. package/cjs/private/domain/use-cases/security/recoverUseCase.js.map +1 -0
  359. package/cjs/private/domain/use-cases/security/requestVerificationUseCase.js +27 -0
  360. package/cjs/private/domain/use-cases/security/requestVerificationUseCase.js.map +1 -0
  361. package/cjs/private/domain/use-cases/security/resetBackupKeyUseCase.js +32 -0
  362. package/cjs/private/domain/use-cases/security/resetBackupKeyUseCase.js.map +1 -0
  363. package/cjs/private/domain/use-cases/security/rotateBackupKeyUseCase.js +32 -0
  364. package/cjs/private/domain/use-cases/security/rotateBackupKeyUseCase.js.map +1 -0
  365. package/cjs/private/domain/use-cases/security/startVerificationUseCase.js +27 -0
  366. package/cjs/private/domain/use-cases/security/startVerificationUseCase.js.map +1 -0
  367. package/cjs/private/util/buffer.js +17 -0
  368. package/cjs/private/util/buffer.js.map +1 -0
  369. package/cjs/private/util/cryptoUtil.js +46 -0
  370. package/cjs/private/util/cryptoUtil.js.map +1 -0
  371. package/cjs/private/util/delay.js +13 -0
  372. package/cjs/private/util/delay.js.map +1 -0
  373. package/cjs/private/util/id.js +22 -0
  374. package/cjs/private/util/id.js.map +1 -0
  375. package/cjs/private/util/mediaUtil.js +41 -0
  376. package/cjs/private/util/mediaUtil.js.map +1 -0
  377. package/cjs/public/errors.js +145 -0
  378. package/cjs/public/errors.js.map +1 -0
  379. package/cjs/public/index.js +13 -0
  380. package/cjs/public/index.js.map +1 -0
  381. package/cjs/public/modules/channelsModule.js +403 -0
  382. package/cjs/public/modules/channelsModule.js.map +1 -0
  383. package/cjs/public/modules/directChatsModule.js +102 -0
  384. package/cjs/public/modules/directChatsModule.js.map +1 -0
  385. package/cjs/public/modules/groupsModule.js +258 -0
  386. package/cjs/public/modules/groupsModule.js.map +1 -0
  387. package/cjs/public/modules/handlesModule.js +74 -0
  388. package/cjs/public/modules/handlesModule.js.map +1 -0
  389. package/cjs/public/modules/index.js +18 -0
  390. package/cjs/public/modules/index.js.map +1 -0
  391. package/cjs/public/modules/mediaModule.js +34 -0
  392. package/cjs/public/modules/mediaModule.js.map +1 -0
  393. package/cjs/public/modules/messagingModule.js +282 -0
  394. package/cjs/public/modules/messagingModule.js.map +1 -0
  395. package/cjs/public/modules/notificationsModule.js +65 -0
  396. package/cjs/public/modules/notificationsModule.js.map +1 -0
  397. package/cjs/public/modules/securityModule.js +114 -0
  398. package/cjs/public/modules/securityModule.js.map +1 -0
  399. package/cjs/public/modules/storageModule.js +66 -0
  400. package/cjs/public/modules/storageModule.js.map +1 -0
  401. package/cjs/public/secureCommsClient.js +75 -0
  402. package/cjs/public/secureCommsClient.js.map +1 -0
  403. package/cjs/public/typings/channel.js +121 -0
  404. package/cjs/public/typings/channel.js.map +1 -0
  405. package/cjs/public/typings/channelInvitationRequest.js +8 -0
  406. package/cjs/public/typings/channelInvitationRequest.js.map +1 -0
  407. package/cjs/public/typings/chatSummary.js +8 -0
  408. package/cjs/public/typings/chatSummary.js.map +1 -0
  409. package/cjs/public/typings/directChat.js +41 -0
  410. package/cjs/public/typings/directChat.js.map +1 -0
  411. package/cjs/public/typings/directChatInvitation.js +8 -0
  412. package/cjs/public/typings/directChatInvitation.js.map +1 -0
  413. package/cjs/public/typings/fileEncryptionInfo.js +8 -0
  414. package/cjs/public/typings/fileEncryptionInfo.js.map +1 -0
  415. package/cjs/public/typings/group.js +58 -0
  416. package/cjs/public/typings/group.js.map +1 -0
  417. package/cjs/public/typings/handle.js +21 -0
  418. package/cjs/public/typings/handle.js.map +1 -0
  419. package/cjs/public/typings/index.js +25 -0
  420. package/cjs/public/typings/index.js.map +1 -0
  421. package/cjs/public/typings/mediaInfo.js +8 -0
  422. package/cjs/public/typings/mediaInfo.js.map +1 -0
  423. package/cjs/public/typings/member.js +28 -0
  424. package/cjs/public/typings/member.js.map +1 -0
  425. package/cjs/public/typings/message.js +25 -0
  426. package/cjs/public/typings/message.js.map +1 -0
  427. package/cjs/public/typings/messageContent.js +8 -0
  428. package/cjs/public/typings/messageContent.js.map +1 -0
  429. package/cjs/public/typings/notification.js +22 -0
  430. package/cjs/public/typings/notification.js.map +1 -0
  431. package/cjs/public/typings/poll.js +22 -0
  432. package/cjs/public/typings/poll.js.map +1 -0
  433. package/cjs/public/typings/recipient.js +45 -0
  434. package/cjs/public/typings/recipient.js.map +1 -0
  435. package/cjs/public/typings/secureCommsSession.js +8 -0
  436. package/cjs/public/typings/secureCommsSession.js.map +1 -0
  437. package/docs/.nojekyll +1 -0
  438. package/docs/assets/hierarchy.js +1 -0
  439. package/docs/assets/highlight.css +78 -0
  440. package/docs/assets/icons.js +18 -0
  441. package/docs/assets/icons.svg +1 -0
  442. package/docs/assets/main.js +60 -0
  443. package/docs/assets/navigation.js +1 -0
  444. package/docs/assets/search.js +1 -0
  445. package/docs/assets/style.css +1611 -0
  446. package/docs/classes/AliasNotAvailableError.html +33 -0
  447. package/docs/classes/ChannelId.html +7 -0
  448. package/docs/classes/ChannelNameNotAvailableError.html +33 -0
  449. package/docs/classes/ChannelNotFoundError.html +33 -0
  450. package/docs/classes/ChannelPermissions.html +25 -0
  451. package/docs/classes/ChatId.html +7 -0
  452. package/docs/classes/DefaultChannelsModule.html +115 -0
  453. package/docs/classes/DefaultDirectChatsModule.html +34 -0
  454. package/docs/classes/DefaultGroupsModule.html +71 -0
  455. package/docs/classes/DefaultHandlesModule.html +16 -0
  456. package/docs/classes/DefaultMediaModule.html +8 -0
  457. package/docs/classes/DefaultMessagingModule.html +72 -0
  458. package/docs/classes/DefaultNotificationsModule.html +23 -0
  459. package/docs/classes/DefaultSecureCommsClient.html +30 -0
  460. package/docs/classes/DefaultSecurityModule.html +81 -0
  461. package/docs/classes/DefaultStorageModule.html +24 -0
  462. package/docs/classes/DirectChatExistsError.html +33 -0
  463. package/docs/classes/DirectChatMembershipError.html +33 -0
  464. package/docs/classes/DirectChatPermissions.html +9 -0
  465. package/docs/classes/GroupId.html +7 -0
  466. package/docs/classes/GroupPermissions.html +23 -0
  467. package/docs/classes/HandleId.html +5 -0
  468. package/docs/classes/HandleNotAvailableError.html +33 -0
  469. package/docs/classes/HandleNotFoundError.html +33 -0
  470. package/docs/classes/IndexedDBStorageProviderFactory.html +3 -0
  471. package/docs/classes/InternalError.html +33 -0
  472. package/docs/classes/InvalidArgumentError.html +33 -0
  473. package/docs/classes/InvalidChannelAliasError.html +33 -0
  474. package/docs/classes/InvalidChannelStateError.html +33 -0
  475. package/docs/classes/InvalidHandleError.html +33 -0
  476. package/docs/classes/NotAllowedError.html +33 -0
  477. package/docs/classes/PermissionDeniedError.html +33 -0
  478. package/docs/classes/RoomNotFoundError.html +33 -0
  479. package/docs/classes/S3DownloadError.html +34 -0
  480. package/docs/classes/S3UploadError.html +34 -0
  481. package/docs/classes/SecureCommsError.html +33 -0
  482. package/docs/classes/SecureCommsServiceConfigNotFoundError.html +33 -0
  483. package/docs/classes/UnacceptableWordsError.html +33 -0
  484. package/docs/classes/UnauthorizedError.html +33 -0
  485. package/docs/enums/BackupState.html +6 -0
  486. package/docs/enums/ChannelJoinRule.html +5 -0
  487. package/docs/enums/ChannelRole.html +7 -0
  488. package/docs/enums/ChannelSortDirection.html +4 -0
  489. package/docs/enums/ChannelSortField.html +4 -0
  490. package/docs/enums/DirectChatRole.html +4 -0
  491. package/docs/enums/GroupRole.html +6 -0
  492. package/docs/enums/MembershipState.html +7 -0
  493. package/docs/enums/MessageNotificationLevel.html +4 -0
  494. package/docs/enums/MessageState.html +5 -0
  495. package/docs/enums/NotificationInfoType.html +3 -0
  496. package/docs/enums/PollType.html +4 -0
  497. package/docs/enums/PublicChannelJoinRule.html +5 -0
  498. package/docs/hierarchy.html +1 -0
  499. package/docs/index.html +38 -0
  500. package/docs/interfaces/AcceptChannelInvitationInput.html +8 -0
  501. package/docs/interfaces/AcceptGroupInvitationInput.html +8 -0
  502. package/docs/interfaces/AcceptInvitationInput.html +7 -0
  503. package/docs/interfaces/AcceptInvitationRequestInput.html +9 -0
  504. package/docs/interfaces/AcceptVerificationRequestInput.html +9 -0
  505. package/docs/interfaces/ApproveVerificationInput.html +5 -0
  506. package/docs/interfaces/Audio.html +14 -0
  507. package/docs/interfaces/AudioMedia.html +8 -0
  508. package/docs/interfaces/AvatarInput.html +9 -0
  509. package/docs/interfaces/BanChannelHandleInput.html +11 -0
  510. package/docs/interfaces/BanGroupHandleInput.html +12 -0
  511. package/docs/interfaces/BaseMessageContent.html +11 -0
  512. package/docs/interfaces/BlockHandleInput.html +7 -0
  513. package/docs/interfaces/CancelVerificationInput.html +5 -0
  514. package/docs/interfaces/Channel.html +27 -0
  515. package/docs/interfaces/ChannelInvitationRequest.html +12 -0
  516. package/docs/interfaces/ChannelInvite.html +5 -0
  517. package/docs/interfaces/ChannelMember.html +10 -0
  518. package/docs/interfaces/ChannelPermissionsInput.html +12 -0
  519. package/docs/interfaces/ChannelSortOrder.html +7 -0
  520. package/docs/interfaces/ChannelsModule.html +114 -0
  521. package/docs/interfaces/ChatMention.html +6 -0
  522. package/docs/interfaces/ChatNotificationRules.html +2 -0
  523. package/docs/interfaces/ChatSummary.html +13 -0
  524. package/docs/interfaces/ClearRecipientChatRulesInput.html +7 -0
  525. package/docs/interfaces/CreateBackupInput.html +5 -0
  526. package/docs/interfaces/CreateChannelInput.html +21 -0
  527. package/docs/interfaces/CreateChatInput.html +7 -0
  528. package/docs/interfaces/CreateGroupInput.html +14 -0
  529. package/docs/interfaces/CreatePollInput.html +15 -0
  530. package/docs/interfaces/DeclineChannelInvitationInput.html +8 -0
  531. package/docs/interfaces/DeclineGroupInvitationInput.html +8 -0
  532. package/docs/interfaces/DeclineInvitationInput.html +7 -0
  533. package/docs/interfaces/DeclineInvitationRequestInput.html +11 -0
  534. package/docs/interfaces/DeclineVerificationInput.html +5 -0
  535. package/docs/interfaces/DeleteChannelInput.html +6 -0
  536. package/docs/interfaces/DeleteGroupInput.html +7 -0
  537. package/docs/interfaces/DeleteMessageInput.html +12 -0
  538. package/docs/interfaces/DeleteOwnRedactReason.html +7 -0
  539. package/docs/interfaces/DirectChat.html +8 -0
  540. package/docs/interfaces/DirectChatInvitation.html +8 -0
  541. package/docs/interfaces/DirectChatInvite.html +5 -0
  542. package/docs/interfaces/DirectChatsModule.html +33 -0
  543. package/docs/interfaces/DownloadMediaFileInput.html +12 -0
  544. package/docs/interfaces/EditMessageInput.html +11 -0
  545. package/docs/interfaces/EditPollInput.html +17 -0
  546. package/docs/interfaces/EditReactionRedactReason.html +5 -0
  547. package/docs/interfaces/Emote.html +10 -0
  548. package/docs/interfaces/EncryptedMessage.html +8 -0
  549. package/docs/interfaces/EndPollInput.html +9 -0
  550. package/docs/interfaces/EventNotificationRules.html +2 -0
  551. package/docs/interfaces/File.html +14 -0
  552. package/docs/interfaces/FileEncryptionInfo.html +12 -0
  553. package/docs/interfaces/FileMedia.html +6 -0
  554. package/docs/interfaces/GetBackupStateInput.html +5 -0
  555. package/docs/interfaces/GetChannelInput.html +7 -0
  556. package/docs/interfaces/GetChannelMembersInput.html +7 -0
  557. package/docs/interfaces/GetChannelMembershipInput.html +7 -0
  558. package/docs/interfaces/GetChannelsInput.html +7 -0
  559. package/docs/interfaces/GetChatSummariesInput.html +7 -0
  560. package/docs/interfaces/GetDecodedInfoInput.html +9 -0
  561. package/docs/interfaces/GetGroupInput.html +7 -0
  562. package/docs/interfaces/GetGroupMembersInput.html +7 -0
  563. package/docs/interfaces/GetGroupsInput.html +7 -0
  564. package/docs/interfaces/GetMessageInput.html +9 -0
  565. package/docs/interfaces/GetMessagesInput.html +11 -0
  566. package/docs/interfaces/GetPinnedMessagesInput.html +7 -0
  567. package/docs/interfaces/GetPollResponsesInput.html +9 -0
  568. package/docs/interfaces/GetSettingsInput.html +5 -0
  569. package/docs/interfaces/Group.html +17 -0
  570. package/docs/interfaces/GroupInvite.html +5 -0
  571. package/docs/interfaces/GroupMember.html +10 -0
  572. package/docs/interfaces/GroupsModule.html +70 -0
  573. package/docs/interfaces/Handle.html +7 -0
  574. package/docs/interfaces/HandleMention.html +10 -0
  575. package/docs/interfaces/HandleStorage.html +7 -0
  576. package/docs/interfaces/HandlesModule.html +16 -0
  577. package/docs/interfaces/HashAlgorithmMap.html +4 -0
  578. package/docs/interfaces/Image.html +20 -0
  579. package/docs/interfaces/ImageMedia.html +10 -0
  580. package/docs/interfaces/Input.html +4 -0
  581. package/docs/interfaces/Invite.html +4 -0
  582. package/docs/interfaces/IsVerifiedInput.html +5 -0
  583. package/docs/interfaces/JoinChannelInput.html +7 -0
  584. package/docs/interfaces/KeyVerificationRequest.html +19 -0
  585. package/docs/interfaces/KickChannelHandleInput.html +12 -0
  586. package/docs/interfaces/KickGroupHandleInput.html +12 -0
  587. package/docs/interfaces/LeaveChannelInput.html +7 -0
  588. package/docs/interfaces/LeaveGroupInput.html +7 -0
  589. package/docs/interfaces/ListHandlesInput.html +7 -0
  590. package/docs/interfaces/ListReceivedInvitationRequestsInput.html +8 -0
  591. package/docs/interfaces/Location.html +12 -0
  592. package/docs/interfaces/MarkAsReadInput.html +7 -0
  593. package/docs/interfaces/MediaModule.html +7 -0
  594. package/docs/interfaces/Member.html +7 -0
  595. package/docs/interfaces/MembershipChange.html +15 -0
  596. package/docs/interfaces/Message.html +24 -0
  597. package/docs/interfaces/MessageNotification.html +5 -0
  598. package/docs/interfaces/MessageReaction.html +9 -0
  599. package/docs/interfaces/MessageReceipt.html +7 -0
  600. package/docs/interfaces/MessagingModule.html +71 -0
  601. package/docs/interfaces/ModerationRedactReason.html +11 -0
  602. package/docs/interfaces/Notice.html +10 -0
  603. package/docs/interfaces/NotificationInfo.html +4 -0
  604. package/docs/interfaces/NotificationSettings.html +4 -0
  605. package/docs/interfaces/NotificationsModule.html +22 -0
  606. package/docs/interfaces/OnSessionVerificationChangedInput.html +7 -0
  607. package/docs/interfaces/OnVerificationRequestReceivedInput.html +7 -0
  608. package/docs/interfaces/OwnedHandle.html +11 -0
  609. package/docs/interfaces/Pagination.html +7 -0
  610. package/docs/interfaces/PinMessageInput.html +9 -0
  611. package/docs/interfaces/PlatformNotificationDataTemplate.html +6 -0
  612. package/docs/interfaces/Poll.html +16 -0
  613. package/docs/interfaces/PollResponse.html +12 -0
  614. package/docs/interfaces/PollResponses.html +10 -0
  615. package/docs/interfaces/ProvisionHandleInput.html +10 -0
  616. package/docs/interfaces/PublicChannelSearchInput.html +24 -0
  617. package/docs/interfaces/PublicChannelSearchResult.html +21 -0
  618. package/docs/interfaces/Recipient.html +5 -0
  619. package/docs/interfaces/RecoverInput.html +7 -0
  620. package/docs/interfaces/RedactedMessage.html +14 -0
  621. package/docs/interfaces/RequestVerificationInput.html +5 -0
  622. package/docs/interfaces/ResetBackupKeyInput.html +5 -0
  623. package/docs/interfaces/RotateBackupKeyInput.html +5 -0
  624. package/docs/interfaces/SearchMessagesInput.html +13 -0
  625. package/docs/interfaces/SearchMessagesItem.html +20 -0
  626. package/docs/interfaces/SecureCommsClient.html +32 -0
  627. package/docs/interfaces/SecureCommsSession.html +19 -0
  628. package/docs/interfaces/SecureCommsStore.html +9 -0
  629. package/docs/interfaces/SecurityModule.html +80 -0
  630. package/docs/interfaces/SelfDestructInfo.html +11 -0
  631. package/docs/interfaces/SelfDestructedMessage.html +12 -0
  632. package/docs/interfaces/SendChannelInvitationsInput.html +9 -0
  633. package/docs/interfaces/SendGroupInvitationsInput.html +9 -0
  634. package/docs/interfaces/SendInvitationRequestInput.html +9 -0
  635. package/docs/interfaces/SendMediaInput.html +33 -0
  636. package/docs/interfaces/SendMessageInput.html +27 -0
  637. package/docs/interfaces/SendPollResponseInput.html +11 -0
  638. package/docs/interfaces/SendTypingNotificationInput.html +9 -0
  639. package/docs/interfaces/SessionAPIs.html +6 -0
  640. package/docs/interfaces/SetDefaultChatRulesInput.html +7 -0
  641. package/docs/interfaces/SetDefaultEventRulesInput.html +7 -0
  642. package/docs/interfaces/SetRecipientChatRulesInput.html +9 -0
  643. package/docs/interfaces/StartVerificationInput.html +5 -0
  644. package/docs/interfaces/StorageModule.html +23 -0
  645. package/docs/interfaces/StorageProvider.html +38 -0
  646. package/docs/interfaces/StorageProviderFactory.html +2 -0
  647. package/docs/interfaces/Text.html +10 -0
  648. package/docs/interfaces/ThumbnailInfo.html +13 -0
  649. package/docs/interfaces/ToggleReactionInput.html +12 -0
  650. package/docs/interfaces/UnbanChannelHandleInput.html +11 -0
  651. package/docs/interfaces/UnbanGroupHandleInput.html +12 -0
  652. package/docs/interfaces/UnblockHandleInput.html +7 -0
  653. package/docs/interfaces/UnknownRedactReason.html +5 -0
  654. package/docs/interfaces/UnpinMessageInput.html +9 -0
  655. package/docs/interfaces/UnreadCount.html +7 -0
  656. package/docs/interfaces/UpdateChannelInput.html +25 -0
  657. package/docs/interfaces/UpdateChannelMemberRoleInput.html +12 -0
  658. package/docs/interfaces/UpdateGroupInput.html +15 -0
  659. package/docs/interfaces/UpdateGroupMemberRoleInput.html +12 -0
  660. package/docs/interfaces/UpdateHandleInput.html +7 -0
  661. package/docs/interfaces/Video.html +20 -0
  662. package/docs/interfaces/VideoMedia.html +12 -0
  663. package/docs/interfaces/WithdrawChannelInvitationInput.html +10 -0
  664. package/docs/interfaces/WithdrawGroupInvitationInput.html +10 -0
  665. package/docs/interfaces/WithdrawInvitationRequestInput.html +7 -0
  666. package/docs/modules.html +1 -0
  667. package/docs/types/MediaInfo.html +2 -0
  668. package/docs/types/MessageContent.html +2 -0
  669. package/docs/types/MessageMention.html +3 -0
  670. package/docs/types/RedactReason.html +2 -0
  671. package/docs/types/SecureCommsClientOptions.html +5 -0
  672. package/lib/gen/graphqlTypes.js +1809 -0
  673. package/lib/gen/graphqlTypes.js.map +1 -0
  674. package/lib/index.js +8 -0
  675. package/lib/index.js.map +1 -0
  676. package/lib/private/data/channels/defaultChannelsService.js +123 -0
  677. package/lib/private/data/channels/defaultChannelsService.js.map +1 -0
  678. package/lib/private/data/channels/transformer/channelInvitationRequestTransformer.js +16 -0
  679. package/lib/private/data/channels/transformer/channelInvitationRequestTransformer.js.map +1 -0
  680. package/lib/private/data/channels/transformer/channelJoinRuleTransformer.js +51 -0
  681. package/lib/private/data/channels/transformer/channelJoinRuleTransformer.js.map +1 -0
  682. package/lib/private/data/channels/transformer/channelMemberTransformer.js +28 -0
  683. package/lib/private/data/channels/transformer/channelMemberTransformer.js.map +1 -0
  684. package/lib/private/data/channels/transformer/channelPermissionsTransformer.js +51 -0
  685. package/lib/private/data/channels/transformer/channelPermissionsTransformer.js.map +1 -0
  686. package/lib/private/data/channels/transformer/channelPowerLevelsTransformer.js +102 -0
  687. package/lib/private/data/channels/transformer/channelPowerLevelsTransformer.js.map +1 -0
  688. package/lib/private/data/channels/transformer/channelRoleTransformer.js +34 -0
  689. package/lib/private/data/channels/transformer/channelRoleTransformer.js.map +1 -0
  690. package/lib/private/data/channels/transformer/channelSortOrderTransformer.js +63 -0
  691. package/lib/private/data/channels/transformer/channelSortOrderTransformer.js.map +1 -0
  692. package/lib/private/data/channels/transformer/channelTransformer.js +51 -0
  693. package/lib/private/data/channels/transformer/channelTransformer.js.map +1 -0
  694. package/lib/private/data/channels/transformer/publicChannelInfoTransformer.js +24 -0
  695. package/lib/private/data/channels/transformer/publicChannelInfoTransformer.js.map +1 -0
  696. package/lib/private/data/channels/transformer/publicChannelJoinRuleTransformer.js +43 -0
  697. package/lib/private/data/channels/transformer/publicChannelJoinRuleTransformer.js.map +1 -0
  698. package/lib/private/data/channels/transformer/publicChannelSearchResultTransformer.js +38 -0
  699. package/lib/private/data/channels/transformer/publicChannelSearchResultTransformer.js.map +1 -0
  700. package/lib/private/data/common/apiClient.js +212 -0
  701. package/lib/private/data/common/apiClient.js.map +1 -0
  702. package/lib/private/data/common/config.js +23 -0
  703. package/lib/private/data/common/config.js.map +1 -0
  704. package/lib/private/data/common/matrixClientManager.js +1798 -0
  705. package/lib/private/data/common/matrixClientManager.js.map +1 -0
  706. package/lib/private/data/common/matrixTypes.js +8 -0
  707. package/lib/private/data/common/matrixTypes.js.map +1 -0
  708. package/lib/private/data/common/privateSecureCommsClientOptions.js +7 -0
  709. package/lib/private/data/common/privateSecureCommsClientOptions.js.map +1 -0
  710. package/lib/private/data/common/s3Client.js +70 -0
  711. package/lib/private/data/common/s3Client.js.map +1 -0
  712. package/lib/private/data/common/transformer/errorTransformer.js +44 -0
  713. package/lib/private/data/common/transformer/errorTransformer.js.map +1 -0
  714. package/lib/private/data/common/transformer/membershipStateTransformer.js +41 -0
  715. package/lib/private/data/common/transformer/membershipStateTransformer.js.map +1 -0
  716. package/lib/private/data/directChats/matrixDirectChatsService.js +153 -0
  717. package/lib/private/data/directChats/matrixDirectChatsService.js.map +1 -0
  718. package/lib/private/data/directChats/transformer/directChatInvitationTransformer.js +14 -0
  719. package/lib/private/data/directChats/transformer/directChatInvitationTransformer.js.map +1 -0
  720. package/lib/private/data/directChats/transformer/directChatPowerLevelsTransformer.js +17 -0
  721. package/lib/private/data/directChats/transformer/directChatPowerLevelsTransformer.js.map +1 -0
  722. package/lib/private/data/directChats/transformer/directChatTransformer.js +14 -0
  723. package/lib/private/data/directChats/transformer/directChatTransformer.js.map +1 -0
  724. package/lib/private/data/groups/transformer/groupMemberTransformer.js +28 -0
  725. package/lib/private/data/groups/transformer/groupMemberTransformer.js.map +1 -0
  726. package/lib/private/data/groups/transformer/groupPermissionsTransformer.js +44 -0
  727. package/lib/private/data/groups/transformer/groupPermissionsTransformer.js.map +1 -0
  728. package/lib/private/data/groups/transformer/groupPowerLevelsTransformer.js +32 -0
  729. package/lib/private/data/groups/transformer/groupPowerLevelsTransformer.js.map +1 -0
  730. package/lib/private/data/groups/transformer/groupRoleTransformer.js +30 -0
  731. package/lib/private/data/groups/transformer/groupRoleTransformer.js.map +1 -0
  732. package/lib/private/data/groups/transformer/groupTransformer.js +36 -0
  733. package/lib/private/data/groups/transformer/groupTransformer.js.map +1 -0
  734. package/lib/private/data/handle/defaultHandleService.js +42 -0
  735. package/lib/private/data/handle/defaultHandleService.js.map +1 -0
  736. package/lib/private/data/handle/transformer/handleTransformer.js +31 -0
  737. package/lib/private/data/handle/transformer/handleTransformer.js.map +1 -0
  738. package/lib/private/data/media/defaultMediaCredentialService.js +25 -0
  739. package/lib/private/data/media/defaultMediaCredentialService.js.map +1 -0
  740. package/lib/private/data/media/matrixMediaService.js +147 -0
  741. package/lib/private/data/media/matrixMediaService.js.map +1 -0
  742. package/lib/private/data/media/mediaCredentialManager.js +72 -0
  743. package/lib/private/data/media/mediaCredentialManager.js.map +1 -0
  744. package/lib/private/data/media/transformer/fileEncryptionInfoTransformer.js +16 -0
  745. package/lib/private/data/media/transformer/fileEncryptionInfoTransformer.js.map +1 -0
  746. package/lib/private/data/media/transformer/roomMediaCredentialTransformer.js +17 -0
  747. package/lib/private/data/media/transformer/roomMediaCredentialTransformer.js.map +1 -0
  748. package/lib/private/data/messaging/matrixMessagingService.js +341 -0
  749. package/lib/private/data/messaging/matrixMessagingService.js.map +1 -0
  750. package/lib/private/data/messaging/transformer/chatSummaryTransformer.js +33 -0
  751. package/lib/private/data/messaging/transformer/chatSummaryTransformer.js.map +1 -0
  752. package/lib/private/data/messaging/transformer/messageMentionTransformer.js +23 -0
  753. package/lib/private/data/messaging/transformer/messageMentionTransformer.js.map +1 -0
  754. package/lib/private/data/messaging/transformer/messageReactionTransformer.js +22 -0
  755. package/lib/private/data/messaging/transformer/messageReactionTransformer.js.map +1 -0
  756. package/lib/private/data/messaging/transformer/messageReceiptTransformer.js +27 -0
  757. package/lib/private/data/messaging/transformer/messageReceiptTransformer.js.map +1 -0
  758. package/lib/private/data/messaging/transformer/messageStateTransformer.js +30 -0
  759. package/lib/private/data/messaging/transformer/messageStateTransformer.js.map +1 -0
  760. package/lib/private/data/messaging/transformer/messageTransformer.js +359 -0
  761. package/lib/private/data/messaging/transformer/messageTransformer.js.map +1 -0
  762. package/lib/private/data/messaging/transformer/pollResponsesTransformer.js +22 -0
  763. package/lib/private/data/messaging/transformer/pollResponsesTransformer.js.map +1 -0
  764. package/lib/private/data/messaging/transformer/pollTypeTransformer.js +35 -0
  765. package/lib/private/data/messaging/transformer/pollTypeTransformer.js.map +1 -0
  766. package/lib/private/data/messaging/transformer/searchMessagesItemTransformer.js +55 -0
  767. package/lib/private/data/messaging/transformer/searchMessagesItemTransformer.js.map +1 -0
  768. package/lib/private/data/notification/defaultNotificationService.js +262 -0
  769. package/lib/private/data/notification/defaultNotificationService.js.map +1 -0
  770. package/lib/private/data/rooms/matrixRoomsService.js +323 -0
  771. package/lib/private/data/rooms/matrixRoomsService.js.map +1 -0
  772. package/lib/private/data/rooms/transformer/roomPowerLevelsTransformer.js +19 -0
  773. package/lib/private/data/rooms/transformer/roomPowerLevelsTransformer.js.map +1 -0
  774. package/lib/private/data/security/matrixSecurityService.js +87 -0
  775. package/lib/private/data/security/matrixSecurityService.js.map +1 -0
  776. package/lib/private/data/session/defaultSessionService.js +30 -0
  777. package/lib/private/data/session/defaultSessionService.js.map +1 -0
  778. package/lib/private/data/session/sessionManager.js +159 -0
  779. package/lib/private/data/session/sessionManager.js.map +1 -0
  780. package/lib/private/data/session/transformer/sessionTransformer.js +32 -0
  781. package/lib/private/data/session/transformer/sessionTransformer.js.map +1 -0
  782. package/lib/private/data/storage/handleStorage.js +21 -0
  783. package/lib/private/data/storage/handleStorage.js.map +1 -0
  784. package/lib/private/data/storage/indexeddb/indexeddbStorageProvider.js +98 -0
  785. package/lib/private/data/storage/indexeddb/indexeddbStorageProvider.js.map +1 -0
  786. package/lib/private/data/storage/secureCommsStore.js +31 -0
  787. package/lib/private/data/storage/secureCommsStore.js.map +1 -0
  788. package/lib/private/data/wordValidation/defaultWordValidationService.js +15 -0
  789. package/lib/private/data/wordValidation/defaultWordValidationService.js.map +1 -0
  790. package/lib/private/domain/entities/channels/channelEntity.js +124 -0
  791. package/lib/private/domain/entities/channels/channelEntity.js.map +1 -0
  792. package/lib/private/domain/entities/channels/channelInvitationRequestEntity.js +7 -0
  793. package/lib/private/domain/entities/channels/channelInvitationRequestEntity.js.map +1 -0
  794. package/lib/private/domain/entities/channels/channelsService.js +7 -0
  795. package/lib/private/domain/entities/channels/channelsService.js.map +1 -0
  796. package/lib/private/domain/entities/common/memberEntity.js +19 -0
  797. package/lib/private/domain/entities/common/memberEntity.js.map +1 -0
  798. package/lib/private/domain/entities/common/ownerEntity.js +7 -0
  799. package/lib/private/domain/entities/common/ownerEntity.js.map +1 -0
  800. package/lib/private/domain/entities/common/powerLevelsEntity.js +7 -0
  801. package/lib/private/domain/entities/common/powerLevelsEntity.js.map +1 -0
  802. package/lib/private/domain/entities/directChats/directChatEntity.js +34 -0
  803. package/lib/private/domain/entities/directChats/directChatEntity.js.map +1 -0
  804. package/lib/private/domain/entities/directChats/directChatInvitationEntity.js +7 -0
  805. package/lib/private/domain/entities/directChats/directChatInvitationEntity.js.map +1 -0
  806. package/lib/private/domain/entities/directChats/directChatsService.js +7 -0
  807. package/lib/private/domain/entities/directChats/directChatsService.js.map +1 -0
  808. package/lib/private/domain/entities/groups/groupEntity.js +51 -0
  809. package/lib/private/domain/entities/groups/groupEntity.js.map +1 -0
  810. package/lib/private/domain/entities/handle/handleEntity.js +7 -0
  811. package/lib/private/domain/entities/handle/handleEntity.js.map +1 -0
  812. package/lib/private/domain/entities/handle/handleService.js +7 -0
  813. package/lib/private/domain/entities/handle/handleService.js.map +1 -0
  814. package/lib/private/domain/entities/media/fileEncryptionInfoEntity.js +7 -0
  815. package/lib/private/domain/entities/media/fileEncryptionInfoEntity.js.map +1 -0
  816. package/lib/private/domain/entities/media/mediaCredentialEntity.js +16 -0
  817. package/lib/private/domain/entities/media/mediaCredentialEntity.js.map +1 -0
  818. package/lib/private/domain/entities/media/mediaCredentialService.js +7 -0
  819. package/lib/private/domain/entities/media/mediaCredentialService.js.map +1 -0
  820. package/lib/private/domain/entities/media/mediaService.js +7 -0
  821. package/lib/private/domain/entities/media/mediaService.js.map +1 -0
  822. package/lib/private/domain/entities/messaging/chatSummaryEntity.js +7 -0
  823. package/lib/private/domain/entities/messaging/chatSummaryEntity.js.map +1 -0
  824. package/lib/private/domain/entities/messaging/messageEntity.js +22 -0
  825. package/lib/private/domain/entities/messaging/messageEntity.js.map +1 -0
  826. package/lib/private/domain/entities/messaging/messagingService.js +7 -0
  827. package/lib/private/domain/entities/messaging/messagingService.js.map +1 -0
  828. package/lib/private/domain/entities/messaging/pollEntity.js +19 -0
  829. package/lib/private/domain/entities/messaging/pollEntity.js.map +1 -0
  830. package/lib/private/domain/entities/messaging/thumbnailInfoEntity.js +7 -0
  831. package/lib/private/domain/entities/messaging/thumbnailInfoEntity.js.map +1 -0
  832. package/lib/private/domain/entities/notification/notificationService.js +7 -0
  833. package/lib/private/domain/entities/notification/notificationService.js.map +1 -0
  834. package/lib/private/domain/entities/rooms/roomEntity.js +25 -0
  835. package/lib/private/domain/entities/rooms/roomEntity.js.map +1 -0
  836. package/lib/private/domain/entities/rooms/roomPowerLevelsEntity.js +7 -0
  837. package/lib/private/domain/entities/rooms/roomPowerLevelsEntity.js.map +1 -0
  838. package/lib/private/domain/entities/rooms/roomsService.js +7 -0
  839. package/lib/private/domain/entities/rooms/roomsService.js.map +1 -0
  840. package/lib/private/domain/entities/security/securityService.js +7 -0
  841. package/lib/private/domain/entities/security/securityService.js.map +1 -0
  842. package/lib/private/domain/entities/session/secureCommsSessionEntity.js +7 -0
  843. package/lib/private/domain/entities/session/secureCommsSessionEntity.js.map +1 -0
  844. package/lib/private/domain/entities/session/sessionService.js +7 -0
  845. package/lib/private/domain/entities/session/sessionService.js.map +1 -0
  846. package/lib/private/domain/entities/wordValidation/wordValidationService.js +7 -0
  847. package/lib/private/domain/entities/wordValidation/wordValidationService.js.map +1 -0
  848. package/lib/private/domain/use-cases/channels/acceptInvitationUseCase.js +33 -0
  849. package/lib/private/domain/use-cases/channels/acceptInvitationUseCase.js.map +1 -0
  850. package/lib/private/domain/use-cases/channels/banHandleUseCase.js +37 -0
  851. package/lib/private/domain/use-cases/channels/banHandleUseCase.js.map +1 -0
  852. package/lib/private/domain/use-cases/channels/createChannelUseCase.js +47 -0
  853. package/lib/private/domain/use-cases/channels/createChannelUseCase.js.map +1 -0
  854. package/lib/private/domain/use-cases/channels/declineInvitationUseCase.js +33 -0
  855. package/lib/private/domain/use-cases/channels/declineInvitationUseCase.js.map +1 -0
  856. package/lib/private/domain/use-cases/channels/deleteChannelUseCase.js +25 -0
  857. package/lib/private/domain/use-cases/channels/deleteChannelUseCase.js.map +1 -0
  858. package/lib/private/domain/use-cases/channels/getChannelMembersUseCase.js +31 -0
  859. package/lib/private/domain/use-cases/channels/getChannelMembersUseCase.js.map +1 -0
  860. package/lib/private/domain/use-cases/channels/getChannelMembershipUseCase.js +31 -0
  861. package/lib/private/domain/use-cases/channels/getChannelMembershipUseCase.js.map +1 -0
  862. package/lib/private/domain/use-cases/channels/getChannelUseCase.js +48 -0
  863. package/lib/private/domain/use-cases/channels/getChannelUseCase.js.map +1 -0
  864. package/lib/private/domain/use-cases/channels/getChannelsUseCase.js +64 -0
  865. package/lib/private/domain/use-cases/channels/getChannelsUseCase.js.map +1 -0
  866. package/lib/private/domain/use-cases/channels/joinChannelUseCase.js +30 -0
  867. package/lib/private/domain/use-cases/channels/joinChannelUseCase.js.map +1 -0
  868. package/lib/private/domain/use-cases/channels/kickHandleUseCase.js +37 -0
  869. package/lib/private/domain/use-cases/channels/kickHandleUseCase.js.map +1 -0
  870. package/lib/private/domain/use-cases/channels/leaveChannelUseCase.js +31 -0
  871. package/lib/private/domain/use-cases/channels/leaveChannelUseCase.js.map +1 -0
  872. package/lib/private/domain/use-cases/channels/listInvitationsUseCase.js +38 -0
  873. package/lib/private/domain/use-cases/channels/listInvitationsUseCase.js.map +1 -0
  874. package/lib/private/domain/use-cases/channels/listJoinedChannelsUseCase.js +36 -0
  875. package/lib/private/domain/use-cases/channels/listJoinedChannelsUseCase.js.map +1 -0
  876. package/lib/private/domain/use-cases/channels/listReceivedInvitationRequestsUseCase.js +30 -0
  877. package/lib/private/domain/use-cases/channels/listReceivedInvitationRequestsUseCase.js.map +1 -0
  878. package/lib/private/domain/use-cases/channels/listSentInvitationRequestsUseCase.js +34 -0
  879. package/lib/private/domain/use-cases/channels/listSentInvitationRequestsUseCase.js.map +1 -0
  880. package/lib/private/domain/use-cases/channels/searchPublicChannelsUseCase.js +31 -0
  881. package/lib/private/domain/use-cases/channels/searchPublicChannelsUseCase.js.map +1 -0
  882. package/lib/private/domain/use-cases/channels/sendInvitationRequestUseCase.js +33 -0
  883. package/lib/private/domain/use-cases/channels/sendInvitationRequestUseCase.js.map +1 -0
  884. package/lib/private/domain/use-cases/channels/sendInvitationsUseCase.js +37 -0
  885. package/lib/private/domain/use-cases/channels/sendInvitationsUseCase.js.map +1 -0
  886. package/lib/private/domain/use-cases/channels/unbanHandleUseCase.js +36 -0
  887. package/lib/private/domain/use-cases/channels/unbanHandleUseCase.js.map +1 -0
  888. package/lib/private/domain/use-cases/channels/updateChannelMemberRoleUseCase.js +38 -0
  889. package/lib/private/domain/use-cases/channels/updateChannelMemberRoleUseCase.js.map +1 -0
  890. package/lib/private/domain/use-cases/channels/updateChannelUseCase.js +139 -0
  891. package/lib/private/domain/use-cases/channels/updateChannelUseCase.js.map +1 -0
  892. package/lib/private/domain/use-cases/channels/withdrawInvitationUseCase.js +36 -0
  893. package/lib/private/domain/use-cases/channels/withdrawInvitationUseCase.js.map +1 -0
  894. package/lib/private/domain/use-cases/directChats/acceptInvitationUseCase.js +33 -0
  895. package/lib/private/domain/use-cases/directChats/acceptInvitationUseCase.js.map +1 -0
  896. package/lib/private/domain/use-cases/directChats/blockHandleUseCase.js +33 -0
  897. package/lib/private/domain/use-cases/directChats/blockHandleUseCase.js.map +1 -0
  898. package/lib/private/domain/use-cases/directChats/createChatUseCase.js +36 -0
  899. package/lib/private/domain/use-cases/directChats/createChatUseCase.js.map +1 -0
  900. package/lib/private/domain/use-cases/directChats/declineInvitationUseCase.js +33 -0
  901. package/lib/private/domain/use-cases/directChats/declineInvitationUseCase.js.map +1 -0
  902. package/lib/private/domain/use-cases/directChats/listBlockedHandlesUseCase.js +32 -0
  903. package/lib/private/domain/use-cases/directChats/listBlockedHandlesUseCase.js.map +1 -0
  904. package/lib/private/domain/use-cases/directChats/listInvitationsUseCase.js +30 -0
  905. package/lib/private/domain/use-cases/directChats/listInvitationsUseCase.js.map +1 -0
  906. package/lib/private/domain/use-cases/directChats/listJoinedChatsUseCase.js +30 -0
  907. package/lib/private/domain/use-cases/directChats/listJoinedChatsUseCase.js.map +1 -0
  908. package/lib/private/domain/use-cases/directChats/unblockHandleUseCase.js +33 -0
  909. package/lib/private/domain/use-cases/directChats/unblockHandleUseCase.js.map +1 -0
  910. package/lib/private/domain/use-cases/getSessionUseCase.js +25 -0
  911. package/lib/private/domain/use-cases/getSessionUseCase.js.map +1 -0
  912. package/lib/private/domain/use-cases/groups/acceptInvitationUseCase.js +33 -0
  913. package/lib/private/domain/use-cases/groups/acceptInvitationUseCase.js.map +1 -0
  914. package/lib/private/domain/use-cases/groups/banHandleUseCase.js +37 -0
  915. package/lib/private/domain/use-cases/groups/banHandleUseCase.js.map +1 -0
  916. package/lib/private/domain/use-cases/groups/createGroupUseCase.js +73 -0
  917. package/lib/private/domain/use-cases/groups/createGroupUseCase.js.map +1 -0
  918. package/lib/private/domain/use-cases/groups/declineInvitationUseCase.js +33 -0
  919. package/lib/private/domain/use-cases/groups/declineInvitationUseCase.js.map +1 -0
  920. package/lib/private/domain/use-cases/groups/deleteGroupUseCase.js +62 -0
  921. package/lib/private/domain/use-cases/groups/deleteGroupUseCase.js.map +1 -0
  922. package/lib/private/domain/use-cases/groups/getGroupMembersUseCase.js +31 -0
  923. package/lib/private/domain/use-cases/groups/getGroupMembersUseCase.js.map +1 -0
  924. package/lib/private/domain/use-cases/groups/getGroupUseCase.js +31 -0
  925. package/lib/private/domain/use-cases/groups/getGroupUseCase.js.map +1 -0
  926. package/lib/private/domain/use-cases/groups/getGroupsUseCase.js +35 -0
  927. package/lib/private/domain/use-cases/groups/getGroupsUseCase.js.map +1 -0
  928. package/lib/private/domain/use-cases/groups/kickHandleUseCase.js +37 -0
  929. package/lib/private/domain/use-cases/groups/kickHandleUseCase.js.map +1 -0
  930. package/lib/private/domain/use-cases/groups/leaveGroupUseCase.js +31 -0
  931. package/lib/private/domain/use-cases/groups/leaveGroupUseCase.js.map +1 -0
  932. package/lib/private/domain/use-cases/groups/listInvitationsUseCase.js +51 -0
  933. package/lib/private/domain/use-cases/groups/listInvitationsUseCase.js.map +1 -0
  934. package/lib/private/domain/use-cases/groups/listJoinedGroupsUseCase.js +43 -0
  935. package/lib/private/domain/use-cases/groups/listJoinedGroupsUseCase.js.map +1 -0
  936. package/lib/private/domain/use-cases/groups/sendInvitationsUseCase.js +37 -0
  937. package/lib/private/domain/use-cases/groups/sendInvitationsUseCase.js.map +1 -0
  938. package/lib/private/domain/use-cases/groups/unbanHandleUseCase.js +37 -0
  939. package/lib/private/domain/use-cases/groups/unbanHandleUseCase.js.map +1 -0
  940. package/lib/private/domain/use-cases/groups/updateGroupMemberRoleUseCase.js +38 -0
  941. package/lib/private/domain/use-cases/groups/updateGroupMemberRoleUseCase.js.map +1 -0
  942. package/lib/private/domain/use-cases/groups/updateGroupUseCase.js +74 -0
  943. package/lib/private/domain/use-cases/groups/updateGroupUseCase.js.map +1 -0
  944. package/lib/private/domain/use-cases/groups/withdrawInvitationUseCase.js +36 -0
  945. package/lib/private/domain/use-cases/groups/withdrawInvitationUseCase.js.map +1 -0
  946. package/lib/private/domain/use-cases/handles/deprovisionHandleUseCase.js +25 -0
  947. package/lib/private/domain/use-cases/handles/deprovisionHandleUseCase.js.map +1 -0
  948. package/lib/private/domain/use-cases/handles/listHandlesUseCase.js +25 -0
  949. package/lib/private/domain/use-cases/handles/listHandlesUseCase.js.map +1 -0
  950. package/lib/private/domain/use-cases/handles/provisionHandleUseCase.js +47 -0
  951. package/lib/private/domain/use-cases/handles/provisionHandleUseCase.js.map +1 -0
  952. package/lib/private/domain/use-cases/handles/updateHandleUseCase.js +32 -0
  953. package/lib/private/domain/use-cases/handles/updateHandleUseCase.js.map +1 -0
  954. package/lib/private/domain/use-cases/media/downloadMediaFileUseCase.js +58 -0
  955. package/lib/private/domain/use-cases/media/downloadMediaFileUseCase.js.map +1 -0
  956. package/lib/private/domain/use-cases/messaging/createPollUseCase.js +36 -0
  957. package/lib/private/domain/use-cases/messaging/createPollUseCase.js.map +1 -0
  958. package/lib/private/domain/use-cases/messaging/deleteMessageUseCase.js +34 -0
  959. package/lib/private/domain/use-cases/messaging/deleteMessageUseCase.js.map +1 -0
  960. package/lib/private/domain/use-cases/messaging/editMessageUseCase.js +34 -0
  961. package/lib/private/domain/use-cases/messaging/editMessageUseCase.js.map +1 -0
  962. package/lib/private/domain/use-cases/messaging/editPollUseCase.js +37 -0
  963. package/lib/private/domain/use-cases/messaging/editPollUseCase.js.map +1 -0
  964. package/lib/private/domain/use-cases/messaging/endPollUseCase.js +33 -0
  965. package/lib/private/domain/use-cases/messaging/endPollUseCase.js.map +1 -0
  966. package/lib/private/domain/use-cases/messaging/getChatSummariesUseCase.js +32 -0
  967. package/lib/private/domain/use-cases/messaging/getChatSummariesUseCase.js.map +1 -0
  968. package/lib/private/domain/use-cases/messaging/getMessageUseCase.js +31 -0
  969. package/lib/private/domain/use-cases/messaging/getMessageUseCase.js.map +1 -0
  970. package/lib/private/domain/use-cases/messaging/getMessagesUseCase.js +32 -0
  971. package/lib/private/domain/use-cases/messaging/getMessagesUseCase.js.map +1 -0
  972. package/lib/private/domain/use-cases/messaging/getPinnedMessagesUseCase.js +30 -0
  973. package/lib/private/domain/use-cases/messaging/getPinnedMessagesUseCase.js.map +1 -0
  974. package/lib/private/domain/use-cases/messaging/getPollResponsesUseCase.js +33 -0
  975. package/lib/private/domain/use-cases/messaging/getPollResponsesUseCase.js.map +1 -0
  976. package/lib/private/domain/use-cases/messaging/markAsReadUseCase.js +30 -0
  977. package/lib/private/domain/use-cases/messaging/markAsReadUseCase.js.map +1 -0
  978. package/lib/private/domain/use-cases/messaging/pinUnpinMessageUseCase.js +34 -0
  979. package/lib/private/domain/use-cases/messaging/pinUnpinMessageUseCase.js.map +1 -0
  980. package/lib/private/domain/use-cases/messaging/searchMessagesUseCase.js +37 -0
  981. package/lib/private/domain/use-cases/messaging/searchMessagesUseCase.js.map +1 -0
  982. package/lib/private/domain/use-cases/messaging/sendMediaUseCase.js +47 -0
  983. package/lib/private/domain/use-cases/messaging/sendMediaUseCase.js.map +1 -0
  984. package/lib/private/domain/use-cases/messaging/sendMessageUseCase.js +36 -0
  985. package/lib/private/domain/use-cases/messaging/sendMessageUseCase.js.map +1 -0
  986. package/lib/private/domain/use-cases/messaging/sendPollResponseUseCase.js +34 -0
  987. package/lib/private/domain/use-cases/messaging/sendPollResponseUseCase.js.map +1 -0
  988. package/lib/private/domain/use-cases/messaging/sendReplyMessageUseCase.js +37 -0
  989. package/lib/private/domain/use-cases/messaging/sendReplyMessageUseCase.js.map +1 -0
  990. package/lib/private/domain/use-cases/messaging/sendThreadMessageUseCase.js +37 -0
  991. package/lib/private/domain/use-cases/messaging/sendThreadMessageUseCase.js.map +1 -0
  992. package/lib/private/domain/use-cases/messaging/sendTypingNotificationUseCase.js +33 -0
  993. package/lib/private/domain/use-cases/messaging/sendTypingNotificationUseCase.js.map +1 -0
  994. package/lib/private/domain/use-cases/messaging/toggleReactionUseCase.js +32 -0
  995. package/lib/private/domain/use-cases/messaging/toggleReactionUseCase.js.map +1 -0
  996. package/lib/private/domain/use-cases/notifications/clearRecipientChatRulesUseCase.js +27 -0
  997. package/lib/private/domain/use-cases/notifications/clearRecipientChatRulesUseCase.js.map +1 -0
  998. package/lib/private/domain/use-cases/notifications/getDecodedInfoUseCase.js +25 -0
  999. package/lib/private/domain/use-cases/notifications/getDecodedInfoUseCase.js.map +1 -0
  1000. package/lib/private/domain/use-cases/notifications/getSettingsUseCase.js +25 -0
  1001. package/lib/private/domain/use-cases/notifications/getSettingsUseCase.js.map +1 -0
  1002. package/lib/private/domain/use-cases/notifications/setDefaultChatRulesUseCase.js +25 -0
  1003. package/lib/private/domain/use-cases/notifications/setDefaultChatRulesUseCase.js.map +1 -0
  1004. package/lib/private/domain/use-cases/notifications/setDefaultEventRulesUseCase.js +25 -0
  1005. package/lib/private/domain/use-cases/notifications/setDefaultEventRulesUseCase.js.map +1 -0
  1006. package/lib/private/domain/use-cases/notifications/setRecipientChatRulesUseCase.js +25 -0
  1007. package/lib/private/domain/use-cases/notifications/setRecipientChatRulesUseCase.js.map +1 -0
  1008. package/lib/private/domain/use-cases/security/acceptVerificationUseCase.js +26 -0
  1009. package/lib/private/domain/use-cases/security/acceptVerificationUseCase.js.map +1 -0
  1010. package/lib/private/domain/use-cases/security/approveVerificationUseCase.js +23 -0
  1011. package/lib/private/domain/use-cases/security/approveVerificationUseCase.js.map +1 -0
  1012. package/lib/private/domain/use-cases/security/cancelVerificationUseCase.js +23 -0
  1013. package/lib/private/domain/use-cases/security/cancelVerificationUseCase.js.map +1 -0
  1014. package/lib/private/domain/use-cases/security/createBackupUseCase.js +24 -0
  1015. package/lib/private/domain/use-cases/security/createBackupUseCase.js.map +1 -0
  1016. package/lib/private/domain/use-cases/security/declineVerificationUseCase.js +23 -0
  1017. package/lib/private/domain/use-cases/security/declineVerificationUseCase.js.map +1 -0
  1018. package/lib/private/domain/use-cases/security/getBackupStateUseCase.js +24 -0
  1019. package/lib/private/domain/use-cases/security/getBackupStateUseCase.js.map +1 -0
  1020. package/lib/private/domain/use-cases/security/isVerifiedUseCase.js +24 -0
  1021. package/lib/private/domain/use-cases/security/isVerifiedUseCase.js.map +1 -0
  1022. package/lib/private/domain/use-cases/security/onSessionVerificationChangedUseCase.js +23 -0
  1023. package/lib/private/domain/use-cases/security/onSessionVerificationChangedUseCase.js.map +1 -0
  1024. package/lib/private/domain/use-cases/security/onVerificationRequestReceivedUseCase.js +23 -0
  1025. package/lib/private/domain/use-cases/security/onVerificationRequestReceivedUseCase.js.map +1 -0
  1026. package/lib/private/domain/use-cases/security/recoverUseCase.js +25 -0
  1027. package/lib/private/domain/use-cases/security/recoverUseCase.js.map +1 -0
  1028. package/lib/private/domain/use-cases/security/requestVerificationUseCase.js +23 -0
  1029. package/lib/private/domain/use-cases/security/requestVerificationUseCase.js.map +1 -0
  1030. package/lib/private/domain/use-cases/security/resetBackupKeyUseCase.js +28 -0
  1031. package/lib/private/domain/use-cases/security/resetBackupKeyUseCase.js.map +1 -0
  1032. package/lib/private/domain/use-cases/security/rotateBackupKeyUseCase.js +28 -0
  1033. package/lib/private/domain/use-cases/security/rotateBackupKeyUseCase.js.map +1 -0
  1034. package/lib/private/domain/use-cases/security/startVerificationUseCase.js +23 -0
  1035. package/lib/private/domain/use-cases/security/startVerificationUseCase.js.map +1 -0
  1036. package/lib/private/util/buffer.js +12 -0
  1037. package/lib/private/util/buffer.js.map +1 -0
  1038. package/lib/private/util/cryptoUtil.js +40 -0
  1039. package/lib/private/util/cryptoUtil.js.map +1 -0
  1040. package/lib/private/util/delay.js +9 -0
  1041. package/lib/private/util/delay.js.map +1 -0
  1042. package/lib/private/util/id.js +16 -0
  1043. package/lib/private/util/id.js.map +1 -0
  1044. package/lib/private/util/mediaUtil.js +35 -0
  1045. package/lib/private/util/mediaUtil.js.map +1 -0
  1046. package/lib/public/errors.js +121 -0
  1047. package/lib/public/errors.js.map +1 -0
  1048. package/lib/public/index.js +10 -0
  1049. package/lib/public/index.js.map +1 -0
  1050. package/lib/public/modules/channelsModule.js +399 -0
  1051. package/lib/public/modules/channelsModule.js.map +1 -0
  1052. package/lib/public/modules/directChatsModule.js +98 -0
  1053. package/lib/public/modules/directChatsModule.js.map +1 -0
  1054. package/lib/public/modules/groupsModule.js +254 -0
  1055. package/lib/public/modules/groupsModule.js.map +1 -0
  1056. package/lib/public/modules/handlesModule.js +70 -0
  1057. package/lib/public/modules/handlesModule.js.map +1 -0
  1058. package/lib/public/modules/index.js +15 -0
  1059. package/lib/public/modules/index.js.map +1 -0
  1060. package/lib/public/modules/mediaModule.js +30 -0
  1061. package/lib/public/modules/mediaModule.js.map +1 -0
  1062. package/lib/public/modules/messagingModule.js +278 -0
  1063. package/lib/public/modules/messagingModule.js.map +1 -0
  1064. package/lib/public/modules/notificationsModule.js +61 -0
  1065. package/lib/public/modules/notificationsModule.js.map +1 -0
  1066. package/lib/public/modules/securityModule.js +110 -0
  1067. package/lib/public/modules/securityModule.js.map +1 -0
  1068. package/lib/public/modules/storageModule.js +61 -0
  1069. package/lib/public/modules/storageModule.js.map +1 -0
  1070. package/lib/public/secureCommsClient.js +71 -0
  1071. package/lib/public/secureCommsClient.js.map +1 -0
  1072. package/lib/public/typings/channel.js +117 -0
  1073. package/lib/public/typings/channel.js.map +1 -0
  1074. package/lib/public/typings/channelInvitationRequest.js +7 -0
  1075. package/lib/public/typings/channelInvitationRequest.js.map +1 -0
  1076. package/lib/public/typings/chatSummary.js +7 -0
  1077. package/lib/public/typings/chatSummary.js.map +1 -0
  1078. package/lib/public/typings/directChat.js +37 -0
  1079. package/lib/public/typings/directChat.js.map +1 -0
  1080. package/lib/public/typings/directChatInvitation.js +7 -0
  1081. package/lib/public/typings/directChatInvitation.js.map +1 -0
  1082. package/lib/public/typings/fileEncryptionInfo.js +7 -0
  1083. package/lib/public/typings/fileEncryptionInfo.js.map +1 -0
  1084. package/lib/public/typings/group.js +54 -0
  1085. package/lib/public/typings/group.js.map +1 -0
  1086. package/lib/public/typings/handle.js +17 -0
  1087. package/lib/public/typings/handle.js.map +1 -0
  1088. package/lib/public/typings/index.js +22 -0
  1089. package/lib/public/typings/index.js.map +1 -0
  1090. package/lib/public/typings/mediaInfo.js +7 -0
  1091. package/lib/public/typings/mediaInfo.js.map +1 -0
  1092. package/lib/public/typings/member.js +25 -0
  1093. package/lib/public/typings/member.js.map +1 -0
  1094. package/lib/public/typings/message.js +22 -0
  1095. package/lib/public/typings/message.js.map +1 -0
  1096. package/lib/public/typings/messageContent.js +7 -0
  1097. package/lib/public/typings/messageContent.js.map +1 -0
  1098. package/lib/public/typings/notification.js +19 -0
  1099. package/lib/public/typings/notification.js.map +1 -0
  1100. package/lib/public/typings/poll.js +19 -0
  1101. package/lib/public/typings/poll.js.map +1 -0
  1102. package/lib/public/typings/recipient.js +39 -0
  1103. package/lib/public/typings/recipient.js.map +1 -0
  1104. package/lib/public/typings/secureCommsSession.js +7 -0
  1105. package/lib/public/typings/secureCommsSession.js.map +1 -0
  1106. package/package.json +170 -7
  1107. package/types/gen/graphqlTypes.d.ts +895 -0
  1108. package/types/index.d.ts +1 -0
  1109. package/types/private/data/channels/defaultChannelsService.d.ts +20 -0
  1110. package/types/private/data/channels/transformer/channelInvitationRequestTransformer.d.ts +5 -0
  1111. package/types/private/data/channels/transformer/channelJoinRuleTransformer.d.ts +9 -0
  1112. package/types/private/data/channels/transformer/channelMemberTransformer.d.ts +6 -0
  1113. package/types/private/data/channels/transformer/channelPermissionsTransformer.d.ts +6 -0
  1114. package/types/private/data/channels/transformer/channelPowerLevelsTransformer.d.ts +15 -0
  1115. package/types/private/data/channels/transformer/channelRoleTransformer.d.ts +6 -0
  1116. package/types/private/data/channels/transformer/channelSortOrderTransformer.d.ts +15 -0
  1117. package/types/private/data/channels/transformer/channelTransformer.d.ts +7 -0
  1118. package/types/private/data/channels/transformer/publicChannelInfoTransformer.d.ts +5 -0
  1119. package/types/private/data/channels/transformer/publicChannelJoinRuleTransformer.d.ts +9 -0
  1120. package/types/private/data/channels/transformer/publicChannelSearchResultTransformer.d.ts +7 -0
  1121. package/types/private/data/common/apiClient.d.ts +24 -0
  1122. package/types/private/data/common/config.d.ts +12 -0
  1123. package/types/private/data/common/matrixClientManager.d.ts +160 -0
  1124. package/types/private/data/common/matrixTypes.d.ts +2 -0
  1125. package/types/private/data/common/privateSecureCommsClientOptions.d.ts +13 -0
  1126. package/types/private/data/common/s3Client.d.ts +40 -0
  1127. package/types/private/data/common/transformer/errorTransformer.d.ts +6 -0
  1128. package/types/private/data/common/transformer/membershipStateTransformer.d.ts +7 -0
  1129. package/types/private/data/directChats/matrixDirectChatsService.d.ts +18 -0
  1130. package/types/private/data/directChats/transformer/directChatInvitationTransformer.d.ts +5 -0
  1131. package/types/private/data/directChats/transformer/directChatPowerLevelsTransformer.d.ts +4 -0
  1132. package/types/private/data/directChats/transformer/directChatTransformer.d.ts +5 -0
  1133. package/types/private/data/groups/transformer/groupMemberTransformer.d.ts +6 -0
  1134. package/types/private/data/groups/transformer/groupPermissionsTransformer.d.ts +7 -0
  1135. package/types/private/data/groups/transformer/groupPowerLevelsTransformer.d.ts +5 -0
  1136. package/types/private/data/groups/transformer/groupRoleTransformer.d.ts +6 -0
  1137. package/types/private/data/groups/transformer/groupTransformer.d.ts +7 -0
  1138. package/types/private/data/handle/defaultHandleService.d.ts +12 -0
  1139. package/types/private/data/handle/transformer/handleTransformer.d.ts +8 -0
  1140. package/types/private/data/media/defaultMediaCredentialService.d.ts +9 -0
  1141. package/types/private/data/media/matrixMediaService.d.ts +62 -0
  1142. package/types/private/data/media/mediaCredentialManager.d.ts +22 -0
  1143. package/types/private/data/media/transformer/fileEncryptionInfoTransformer.d.ts +5 -0
  1144. package/types/private/data/media/transformer/roomMediaCredentialTransformer.d.ts +5 -0
  1145. package/types/private/data/messaging/matrixMessagingService.d.ts +36 -0
  1146. package/types/private/data/messaging/transformer/chatSummaryTransformer.d.ts +6 -0
  1147. package/types/private/data/messaging/transformer/messageMentionTransformer.d.ts +5 -0
  1148. package/types/private/data/messaging/transformer/messageReactionTransformer.d.ts +6 -0
  1149. package/types/private/data/messaging/transformer/messageReceiptTransformer.d.ts +8 -0
  1150. package/types/private/data/messaging/transformer/messageStateTransformer.d.ts +6 -0
  1151. package/types/private/data/messaging/transformer/messageTransformer.d.ts +15 -0
  1152. package/types/private/data/messaging/transformer/pollResponsesTransformer.d.ts +6 -0
  1153. package/types/private/data/messaging/transformer/pollTypeTransformer.d.ts +8 -0
  1154. package/types/private/data/messaging/transformer/searchMessagesItemTransformer.d.ts +7 -0
  1155. package/types/private/data/notification/defaultNotificationService.d.ts +19 -0
  1156. package/types/private/data/rooms/matrixRoomsService.d.ts +30 -0
  1157. package/types/private/data/rooms/transformer/roomPowerLevelsTransformer.d.ts +5 -0
  1158. package/types/private/data/security/matrixSecurityService.d.ts +22 -0
  1159. package/types/private/data/session/defaultSessionService.d.ts +10 -0
  1160. package/types/private/data/session/sessionManager.d.ts +15 -0
  1161. package/types/private/data/session/transformer/sessionTransformer.d.ts +7 -0
  1162. package/types/private/data/storage/handleStorage.d.ts +11 -0
  1163. package/types/private/data/storage/indexeddb/indexeddbStorageProvider.d.ts +20 -0
  1164. package/types/private/data/storage/secureCommsStore.d.ts +34 -0
  1165. package/types/private/data/wordValidation/defaultWordValidationService.d.ts +7 -0
  1166. package/types/private/domain/entities/channels/channelEntity.d.ts +192 -0
  1167. package/types/private/domain/entities/channels/channelInvitationRequestEntity.d.ts +16 -0
  1168. package/types/private/domain/entities/channels/channelsService.d.ts +157 -0
  1169. package/types/private/domain/entities/common/memberEntity.d.ts +61 -0
  1170. package/types/private/domain/entities/common/ownerEntity.d.ts +11 -0
  1171. package/types/private/domain/entities/common/powerLevelsEntity.d.ts +22 -0
  1172. package/types/private/domain/entities/directChats/directChatEntity.d.ts +39 -0
  1173. package/types/private/domain/entities/directChats/directChatInvitationEntity.d.ts +13 -0
  1174. package/types/private/domain/entities/directChats/directChatsService.d.ts +59 -0
  1175. package/types/private/domain/entities/groups/groupEntity.d.ts +64 -0
  1176. package/types/private/domain/entities/handle/handleEntity.d.ts +26 -0
  1177. package/types/private/domain/entities/handle/handleService.d.ts +70 -0
  1178. package/types/private/domain/entities/media/fileEncryptionInfoEntity.d.ts +18 -0
  1179. package/types/private/domain/entities/media/mediaCredentialEntity.d.ts +55 -0
  1180. package/types/private/domain/entities/media/mediaCredentialService.d.ts +29 -0
  1181. package/types/private/domain/entities/media/mediaService.d.ts +54 -0
  1182. package/types/private/domain/entities/messaging/chatSummaryEntity.d.ts +30 -0
  1183. package/types/private/domain/entities/messaging/messageEntity.d.ts +170 -0
  1184. package/types/private/domain/entities/messaging/messagingService.d.ts +461 -0
  1185. package/types/private/domain/entities/messaging/pollEntity.d.ts +26 -0
  1186. package/types/private/domain/entities/messaging/thumbnailInfoEntity.d.ts +17 -0
  1187. package/types/private/domain/entities/notification/notificationService.d.ts +88 -0
  1188. package/types/private/domain/entities/rooms/roomEntity.d.ts +43 -0
  1189. package/types/private/domain/entities/rooms/roomPowerLevelsEntity.d.ts +18 -0
  1190. package/types/private/domain/entities/rooms/roomsService.d.ts +264 -0
  1191. package/types/private/domain/entities/security/securityService.d.ts +99 -0
  1192. package/types/private/domain/entities/session/secureCommsSessionEntity.d.ts +24 -0
  1193. package/types/private/domain/entities/session/sessionService.d.ts +46 -0
  1194. package/types/private/domain/entities/wordValidation/wordValidationService.d.ts +14 -0
  1195. package/types/private/domain/use-cases/channels/acceptInvitationUseCase.d.ts +22 -0
  1196. package/types/private/domain/use-cases/channels/banHandleUseCase.d.ts +24 -0
  1197. package/types/private/domain/use-cases/channels/createChannelUseCase.d.ts +30 -0
  1198. package/types/private/domain/use-cases/channels/declineInvitationUseCase.d.ts +22 -0
  1199. package/types/private/domain/use-cases/channels/deleteChannelUseCase.d.ts +21 -0
  1200. package/types/private/domain/use-cases/channels/getChannelMembersUseCase.d.ts +23 -0
  1201. package/types/private/domain/use-cases/channels/getChannelMembershipUseCase.d.ts +23 -0
  1202. package/types/private/domain/use-cases/channels/getChannelUseCase.d.ts +25 -0
  1203. package/types/private/domain/use-cases/channels/getChannelsUseCase.d.ts +27 -0
  1204. package/types/private/domain/use-cases/channels/joinChannelUseCase.d.ts +22 -0
  1205. package/types/private/domain/use-cases/channels/kickHandleUseCase.d.ts +24 -0
  1206. package/types/private/domain/use-cases/channels/leaveChannelUseCase.d.ts +22 -0
  1207. package/types/private/domain/use-cases/channels/listInvitationsUseCase.d.ts +15 -0
  1208. package/types/private/domain/use-cases/channels/listJoinedChannelsUseCase.d.ts +15 -0
  1209. package/types/private/domain/use-cases/channels/listReceivedInvitationRequestsUseCase.d.ts +23 -0
  1210. package/types/private/domain/use-cases/channels/listSentInvitationRequestsUseCase.d.ts +15 -0
  1211. package/types/private/domain/use-cases/channels/searchPublicChannelsUseCase.d.ts +37 -0
  1212. package/types/private/domain/use-cases/channels/sendInvitationRequestUseCase.d.ts +23 -0
  1213. package/types/private/domain/use-cases/channels/sendInvitationsUseCase.d.ts +23 -0
  1214. package/types/private/domain/use-cases/channels/unbanHandleUseCase.d.ts +23 -0
  1215. package/types/private/domain/use-cases/channels/updateChannelMemberRoleUseCase.d.ts +25 -0
  1216. package/types/private/domain/use-cases/channels/updateChannelUseCase.d.ts +41 -0
  1217. package/types/private/domain/use-cases/channels/withdrawInvitationUseCase.d.ts +23 -0
  1218. package/types/private/domain/use-cases/directChats/acceptInvitationUseCase.d.ts +22 -0
  1219. package/types/private/domain/use-cases/directChats/blockHandleUseCase.d.ts +22 -0
  1220. package/types/private/domain/use-cases/directChats/createChatUseCase.d.ts +22 -0
  1221. package/types/private/domain/use-cases/directChats/declineInvitationUseCase.d.ts +22 -0
  1222. package/types/private/domain/use-cases/directChats/listBlockedHandlesUseCase.d.ts +12 -0
  1223. package/types/private/domain/use-cases/directChats/listInvitationsUseCase.d.ts +13 -0
  1224. package/types/private/domain/use-cases/directChats/listJoinedChatsUseCase.d.ts +13 -0
  1225. package/types/private/domain/use-cases/directChats/unblockHandleUseCase.d.ts +22 -0
  1226. package/types/private/domain/use-cases/getSessionUseCase.d.ts +21 -0
  1227. package/types/private/domain/use-cases/groups/acceptInvitationUseCase.d.ts +22 -0
  1228. package/types/private/domain/use-cases/groups/banHandleUseCase.d.ts +24 -0
  1229. package/types/private/domain/use-cases/groups/createGroupUseCase.d.ts +27 -0
  1230. package/types/private/domain/use-cases/groups/declineInvitationUseCase.d.ts +22 -0
  1231. package/types/private/domain/use-cases/groups/deleteGroupUseCase.d.ts +22 -0
  1232. package/types/private/domain/use-cases/groups/getGroupMembersUseCase.d.ts +23 -0
  1233. package/types/private/domain/use-cases/groups/getGroupUseCase.d.ts +23 -0
  1234. package/types/private/domain/use-cases/groups/getGroupsUseCase.d.ts +23 -0
  1235. package/types/private/domain/use-cases/groups/kickHandleUseCase.d.ts +24 -0
  1236. package/types/private/domain/use-cases/groups/leaveGroupUseCase.d.ts +22 -0
  1237. package/types/private/domain/use-cases/groups/listInvitationsUseCase.d.ts +15 -0
  1238. package/types/private/domain/use-cases/groups/listJoinedGroupsUseCase.d.ts +13 -0
  1239. package/types/private/domain/use-cases/groups/sendInvitationsUseCase.d.ts +23 -0
  1240. package/types/private/domain/use-cases/groups/unbanHandleUseCase.d.ts +24 -0
  1241. package/types/private/domain/use-cases/groups/updateGroupMemberRoleUseCase.d.ts +25 -0
  1242. package/types/private/domain/use-cases/groups/updateGroupUseCase.d.ts +34 -0
  1243. package/types/private/domain/use-cases/groups/withdrawInvitationUseCase.d.ts +23 -0
  1244. package/types/private/domain/use-cases/handles/deprovisionHandleUseCase.d.ts +14 -0
  1245. package/types/private/domain/use-cases/handles/listHandlesUseCase.d.ts +30 -0
  1246. package/types/private/domain/use-cases/handles/provisionHandleUseCase.d.ts +26 -0
  1247. package/types/private/domain/use-cases/handles/updateHandleUseCase.d.ts +24 -0
  1248. package/types/private/domain/use-cases/media/downloadMediaFileUseCase.d.ts +29 -0
  1249. package/types/private/domain/use-cases/messaging/createPollUseCase.d.ts +27 -0
  1250. package/types/private/domain/use-cases/messaging/deleteMessageUseCase.d.ts +25 -0
  1251. package/types/private/domain/use-cases/messaging/editMessageUseCase.d.ts +24 -0
  1252. package/types/private/domain/use-cases/messaging/editPollUseCase.d.ts +28 -0
  1253. package/types/private/domain/use-cases/messaging/endPollUseCase.d.ts +23 -0
  1254. package/types/private/domain/use-cases/messaging/getChatSummariesUseCase.d.ts +23 -0
  1255. package/types/private/domain/use-cases/messaging/getMessageUseCase.d.ts +24 -0
  1256. package/types/private/domain/use-cases/messaging/getMessagesUseCase.d.ts +34 -0
  1257. package/types/private/domain/use-cases/messaging/getPinnedMessagesUseCase.d.ts +23 -0
  1258. package/types/private/domain/use-cases/messaging/getPollResponsesUseCase.d.ts +24 -0
  1259. package/types/private/domain/use-cases/messaging/markAsReadUseCase.d.ts +22 -0
  1260. package/types/private/domain/use-cases/messaging/pinUnpinMessageUseCase.d.ts +26 -0
  1261. package/types/private/domain/use-cases/messaging/searchMessagesUseCase.d.ts +35 -0
  1262. package/types/private/domain/use-cases/messaging/sendMediaUseCase.d.ts +34 -0
  1263. package/types/private/domain/use-cases/messaging/sendMessageUseCase.d.ts +27 -0
  1264. package/types/private/domain/use-cases/messaging/sendPollResponseUseCase.d.ts +24 -0
  1265. package/types/private/domain/use-cases/messaging/sendReplyMessageUseCase.d.ts +28 -0
  1266. package/types/private/domain/use-cases/messaging/sendThreadMessageUseCase.d.ts +28 -0
  1267. package/types/private/domain/use-cases/messaging/sendTypingNotificationUseCase.d.ts +23 -0
  1268. package/types/private/domain/use-cases/messaging/toggleReactionUseCase.d.ts +24 -0
  1269. package/types/private/domain/use-cases/notifications/clearRecipientChatRulesUseCase.d.ts +21 -0
  1270. package/types/private/domain/use-cases/notifications/getDecodedInfoUseCase.d.ts +22 -0
  1271. package/types/private/domain/use-cases/notifications/getSettingsUseCase.d.ts +20 -0
  1272. package/types/private/domain/use-cases/notifications/setDefaultChatRulesUseCase.d.ts +21 -0
  1273. package/types/private/domain/use-cases/notifications/setDefaultEventRulesUseCase.d.ts +21 -0
  1274. package/types/private/domain/use-cases/notifications/setRecipientChatRulesUseCase.d.ts +22 -0
  1275. package/types/private/domain/use-cases/security/acceptVerificationUseCase.d.ts +22 -0
  1276. package/types/private/domain/use-cases/security/approveVerificationUseCase.d.ts +20 -0
  1277. package/types/private/domain/use-cases/security/cancelVerificationUseCase.d.ts +20 -0
  1278. package/types/private/domain/use-cases/security/createBackupUseCase.d.ts +20 -0
  1279. package/types/private/domain/use-cases/security/declineVerificationUseCase.d.ts +20 -0
  1280. package/types/private/domain/use-cases/security/getBackupStateUseCase.d.ts +20 -0
  1281. package/types/private/domain/use-cases/security/isVerifiedUseCase.d.ts +20 -0
  1282. package/types/private/domain/use-cases/security/onSessionVerificationChangedUseCase.d.ts +21 -0
  1283. package/types/private/domain/use-cases/security/onVerificationRequestReceivedUseCase.d.ts +22 -0
  1284. package/types/private/domain/use-cases/security/recoverUseCase.d.ts +21 -0
  1285. package/types/private/domain/use-cases/security/requestVerificationUseCase.d.ts +20 -0
  1286. package/types/private/domain/use-cases/security/resetBackupKeyUseCase.d.ts +20 -0
  1287. package/types/private/domain/use-cases/security/rotateBackupKeyUseCase.d.ts +20 -0
  1288. package/types/private/domain/use-cases/security/startVerificationUseCase.d.ts +20 -0
  1289. package/types/private/util/buffer.d.ts +7 -0
  1290. package/types/private/util/cryptoUtil.d.ts +12 -0
  1291. package/types/private/util/delay.d.ts +1 -0
  1292. package/types/private/util/id.d.ts +4 -0
  1293. package/types/private/util/mediaUtil.d.ts +4 -0
  1294. package/types/public/errors.d.ts +69 -0
  1295. package/types/public/index.d.ts +4 -0
  1296. package/types/public/modules/channelsModule.d.ts +578 -0
  1297. package/types/public/modules/directChatsModule.d.ts +132 -0
  1298. package/types/public/modules/groupsModule.d.ts +366 -0
  1299. package/types/public/modules/handlesModule.d.ts +81 -0
  1300. package/types/public/modules/index.d.ts +9 -0
  1301. package/types/public/modules/mediaModule.d.ts +42 -0
  1302. package/types/public/modules/messagingModule.d.ts +470 -0
  1303. package/types/public/modules/notificationsModule.d.ts +129 -0
  1304. package/types/public/modules/securityModule.d.ts +291 -0
  1305. package/types/public/modules/storageModule.d.ts +164 -0
  1306. package/types/public/secureCommsClient.d.ts +142 -0
  1307. package/types/public/typings/channel.d.ts +189 -0
  1308. package/types/public/typings/channelInvitationRequest.d.ts +18 -0
  1309. package/types/public/typings/chatSummary.d.ts +30 -0
  1310. package/types/public/typings/directChat.d.ts +43 -0
  1311. package/types/public/typings/directChatInvitation.d.ts +14 -0
  1312. package/types/public/typings/fileEncryptionInfo.d.ts +24 -0
  1313. package/types/public/typings/group.d.ts +68 -0
  1314. package/types/public/typings/handle.d.ts +33 -0
  1315. package/types/public/typings/index.d.ts +16 -0
  1316. package/types/public/typings/mediaInfo.d.ts +58 -0
  1317. package/types/public/typings/member.d.ts +56 -0
  1318. package/types/public/typings/message.d.ts +171 -0
  1319. package/types/public/typings/messageContent.d.ts +245 -0
  1320. package/types/public/typings/notification.d.ts +50 -0
  1321. package/types/public/typings/poll.d.ts +26 -0
  1322. package/types/public/typings/recipient.d.ts +33 -0
  1323. package/types/public/typings/secureCommsSession.d.ts +24 -0
  1324. package/vendor/matrix-js-sdk/lib/@types/polls.cjs +2831 -0
  1325. package/vendor/matrix-js-sdk/lib/@types/polls.js +2824 -0
  1326. package/vendor/matrix-js-sdk/lib/client.cjs +50879 -0
  1327. package/vendor/matrix-js-sdk/lib/client.js +50873 -0
  1328. package/vendor/matrix-js-sdk/lib/crypto-api/recovery-key.cjs +203 -0
  1329. package/vendor/matrix-js-sdk/lib/crypto-api/recovery-key.js +183 -0
  1330. package/vendor/matrix-js-sdk/lib/crypto-api.cjs +511 -0
  1331. package/vendor/matrix-js-sdk/lib/crypto-api.js +491 -0
  1332. package/vendor/matrix-js-sdk/lib/matrix.cjs +61902 -0
  1333. package/vendor/matrix-js-sdk/lib/matrix.js +61896 -0
  1334. package/vendor/matrix-js-sdk/lib/sliding-sync.cjs +8210 -0
  1335. package/vendor/matrix-js-sdk/lib/sliding-sync.js +8201 -0
  1336. package/vendor/matrix-js-sdk/lib/store.cjs +17 -0
  1337. package/vendor/matrix-js-sdk/lib/types.cjs +44 -0
  1338. package/vendor/matrix-js-sdk/lib/types.js +22 -0
  1339. package/vendor/matrix-js-sdk/matrix-js-sdk.cjs +62130 -0
  1340. package/vendor/matrix-js-sdk/matrix-js-sdk.js +62122 -0
  1341. package/vendor/matrix-js-sdk/package.json +16 -0
  1342. /package/{index.js → vendor/matrix-js-sdk/lib/store.js} +0 -0
@@ -0,0 +1,1798 @@
1
+ /*
2
+ * Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DefaultLogger } from '@sudoplatform/sudo-common';
7
+ import { decryptAttachment } from 'matrix-encrypt-attachment';
8
+ import { CryptoEvent, } from '../../../../vendor/matrix-js-sdk/lib/crypto-api.js';
9
+ import { decodeRecoveryKey, encodeRecoveryKey, } from '../../../../vendor/matrix-js-sdk/lib/crypto-api/recovery-key.js';
10
+ import { DeviceVerification, Direction, EventType, M_POLL_END, M_POLL_RESPONSE, M_POLL_START, MatrixError, MatrixEvent, Method, MsgType, Preset, RelationType, Visibility, } from '../../../../vendor/matrix-js-sdk/lib/matrix.js';
11
+ import { MSC3575_STATE_KEY_LAZY, SlidingSync, } from '../../../../vendor/matrix-js-sdk/lib/sliding-sync.js';
12
+ import { getSecureCommsServiceConfig } from './config';
13
+ import { createClient } from './matrixTypes';
14
+ import { HandleId, HandleNotFoundError, RoomNotFoundError, SecureCommsError, UnauthorizedError, } from '../../../public';
15
+ import { DirectChatPermissionsEntity, DirectChatRoleEntity, } from '../../domain/entities/directChats/directChatEntity';
16
+ import { CustomRoomType } from '../../domain/entities/rooms/roomEntity';
17
+ import { DirectChatPowerLevelsTransformer } from '../directChats/transformer/directChatPowerLevelsTransformer';
18
+ import { MessageReceiptTransformer } from '../messaging/transformer/messageReceiptTransformer';
19
+ import { MessageTransformer } from '../messaging/transformer/messageTransformer';
20
+ import { SearchMessagesItemTransformer } from '../messaging/transformer/searchMessagesItemTransformer';
21
+ import { RoomPowerLevelsTransformer } from '../rooms/transformer/roomPowerLevelsTransformer';
22
+ const SLIDING_SYNC_TIMEOUT_MS = 30000;
23
+ const SLIDING_SYNC_TIMELINE_LIMIT = 20;
24
+ const SLIDING_SYNC_REQUIRED_STATE = [
25
+ [EventType.RoomName, ''],
26
+ [EventType.RoomAvatar, ''],
27
+ [EventType.RoomTopic, ''],
28
+ [EventType.RoomPowerLevels, ''],
29
+ [EventType.RoomMember, MSC3575_STATE_KEY_LAZY],
30
+ [EventType.RoomJoinRules, ''],
31
+ [EventType.RoomCanonicalAlias, ''],
32
+ [EventType.RoomEncryption, ''],
33
+ [EventType.RoomMessage, ''],
34
+ [EventType.RoomPinnedEvents, ''],
35
+ [EventType.Reaction, ''],
36
+ [EventType.RoomRedaction, ''],
37
+ [EventType.PollStart, ''],
38
+ ];
39
+ export var CustomMatrixEvents;
40
+ (function (CustomMatrixEvents) {
41
+ CustomMatrixEvents["TYPE"] = "com.sudoplatform.secure-comms.type";
42
+ CustomMatrixEvents["TAGS"] = "com.sudoplatform.secure-comms.channel.tags";
43
+ })(CustomMatrixEvents || (CustomMatrixEvents = {}));
44
+ // Logger interface extension
45
+ class MatrixLogger extends DefaultLogger {
46
+ constructor(namespace) {
47
+ super(namespace);
48
+ this.namespace = namespace;
49
+ }
50
+ getChild(namespace) {
51
+ return new MatrixLogger(namespace);
52
+ }
53
+ }
54
+ // MARK: MatrixClientManager
55
+ export class MatrixClientManager {
56
+ constructor(accessToken, decoded, storage) {
57
+ this.currentSecretStorageKey = undefined;
58
+ this.slidingSync = undefined;
59
+ this.log = new DefaultLogger(this.constructor.name);
60
+ this.deviceId = decoded.device_id;
61
+ this.homeServer = decoded.homeserver;
62
+ this.accessToken = accessToken;
63
+ const config = getSecureCommsServiceConfig();
64
+ const baseUrl = config.serviceEndpointUrl;
65
+ const subject = decoded.sub;
66
+ const handleId = `@${subject}:${this.homeServer}`;
67
+ // Implement a custom authenticated fetch function to ensure that access token
68
+ // is included in the Authorization header.
69
+ const authFetch = async (input, init = {}) => {
70
+ const headers = new Headers(init.headers);
71
+ // if we are in node, set the user agent to the sdk name and version
72
+ if (typeof process !== 'undefined' && process.versions?.node) {
73
+ // Placeholder UA string here. Exact string TBD
74
+ headers.set('User-Agent', 'SecureCommTest/1.0.0 Node');
75
+ }
76
+ headers.set('Authorization', `Bearer ${this.accessToken}`);
77
+ const authInit = {
78
+ ...init,
79
+ headers,
80
+ };
81
+ return globalThis.fetch(input, authInit);
82
+ };
83
+ this.client = createClient({
84
+ baseUrl,
85
+ deviceId: this.deviceId,
86
+ accessToken,
87
+ userId: handleId,
88
+ useAuthorizationHeader: true,
89
+ fetchFn: authFetch,
90
+ logger: new MatrixLogger(this.constructor.name),
91
+ store: storage?.matrixStore,
92
+ timelineSupport: true,
93
+ cryptoCallbacks: {
94
+ getSecretStorageKey: async (opts) => {
95
+ if (this.currentSecretStorageKey) {
96
+ const keyId = Object.keys(opts.keys)[0];
97
+ if (keyId && this.currentSecretStorageKey.keyId === keyId) {
98
+ return [keyId, this.currentSecretStorageKey.privateKey];
99
+ }
100
+ }
101
+ return null;
102
+ },
103
+ cacheSecretStorageKey: (keyId, keyInfo, key) => {
104
+ this.currentSecretStorageKey = { keyId, privateKey: key };
105
+ },
106
+ },
107
+ });
108
+ this.accessToken = accessToken;
109
+ }
110
+ // MARK: Session / Syncing
111
+ isUsingToken(token) {
112
+ return token === this.accessToken;
113
+ }
114
+ updateAccessToken(token) {
115
+ this.accessToken = token;
116
+ this.client.setAccessToken(token);
117
+ }
118
+ async signIn() {
119
+ this.log.debug(this.signIn.name);
120
+ try {
121
+ await this.client.loginRequest({
122
+ type: 'm.login.token',
123
+ token: this.accessToken,
124
+ device_id: this.deviceId,
125
+ });
126
+ }
127
+ catch (err) {
128
+ this.log.error('Failed to sign in', { err });
129
+ }
130
+ }
131
+ async signOut() {
132
+ this.log.debug(this.signOut.name);
133
+ try {
134
+ await this.client.logout(true);
135
+ }
136
+ catch (err) {
137
+ this.log.error('Failed to sign out', { err });
138
+ }
139
+ }
140
+ async startSyncing() {
141
+ this.log.debug(this.startSyncing.name);
142
+ try {
143
+ // Check whether the server supports sliding sync feature. If not, fallback to legacy sync
144
+ const isSlidingSyncSupported = await this.isSlidingSyncSupported();
145
+ let slidingSync = undefined;
146
+ if (isSlidingSyncSupported) {
147
+ const lists = new Map();
148
+ lists.set('rooms', {
149
+ ranges: [[0, 19]], // Load first 20 rooms initially
150
+ sort: ['by_notification_level', 'by_recency'],
151
+ required_state: [...SLIDING_SYNC_REQUIRED_STATE],
152
+ timeline_limit: SLIDING_SYNC_TIMELINE_LIMIT,
153
+ });
154
+ const roomSubscriptionInfo = {
155
+ required_state: [...SLIDING_SYNC_REQUIRED_STATE],
156
+ timeline_limit: SLIDING_SYNC_TIMELINE_LIMIT,
157
+ };
158
+ const proxyBaseUrl = this.client.getHomeserverUrl();
159
+ slidingSync = new SlidingSync(proxyBaseUrl, lists, roomSubscriptionInfo, this.client, SLIDING_SYNC_TIMEOUT_MS);
160
+ }
161
+ this.slidingSync = slidingSync;
162
+ await this.client.startClient({
163
+ slidingSync: this.slidingSync,
164
+ });
165
+ }
166
+ catch (err) {
167
+ this.log.error('Failed to start syncing', { err });
168
+ }
169
+ }
170
+ async stopSyncing() {
171
+ this.log.debug(this.stopSyncing.name);
172
+ try {
173
+ await Promise.resolve(this.client.stopClient());
174
+ this.slidingSync = undefined;
175
+ }
176
+ catch (err) {
177
+ this.log.error('Failed to stop syncing', { err });
178
+ }
179
+ }
180
+ isReady() {
181
+ return (this.client.getSyncState() === 'SYNCING' &&
182
+ this.client.isInitialSyncComplete());
183
+ }
184
+ async isSlidingSyncSupported() {
185
+ return await this.client?.doesServerSupportUnstableFeature('org.matrix.simplified_msc3575');
186
+ }
187
+ // MARK: User
188
+ async getUserId() {
189
+ this.log.debug(this.getUserId.name);
190
+ const userId = await Promise.resolve(this.client.getUserId());
191
+ if (!userId) {
192
+ throw new HandleNotFoundError();
193
+ }
194
+ return userId;
195
+ }
196
+ async userExists(id) {
197
+ this.log.debug(this.userExists.name, { id });
198
+ try {
199
+ await this.client.getProfileInfo(id);
200
+ return true;
201
+ }
202
+ catch (err) {
203
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
204
+ return false;
205
+ }
206
+ const msg = 'Failed to retrieve user profile';
207
+ this.log.error(msg, { err });
208
+ throw new Error(msg);
209
+ }
210
+ }
211
+ // MARK: Handles
212
+ async kickHandle(id, targetHandleId, reason) {
213
+ this.log.debug(this.kickHandle.name, { id, targetHandleId, reason });
214
+ try {
215
+ await this.client.kick(id, targetHandleId, reason);
216
+ }
217
+ catch (err) {
218
+ const msg = 'Failed to kick handle from room';
219
+ this.log.error(msg, { err });
220
+ throw new Error(msg);
221
+ }
222
+ }
223
+ async banHandle(id, targetHandleId, reason) {
224
+ this.log.debug(this.banHandle.name, { id, targetHandleId, reason });
225
+ try {
226
+ await this.client.ban(id, targetHandleId, reason);
227
+ }
228
+ catch (err) {
229
+ const msg = 'Failed to ban handle from room';
230
+ this.log.error(msg, { err });
231
+ throw new Error(msg);
232
+ }
233
+ }
234
+ async unbanHandle(id, targetHandleId) {
235
+ this.log.debug(this.unbanHandle.name, { id, targetHandleId });
236
+ try {
237
+ await this.client.unban(id, targetHandleId);
238
+ }
239
+ catch (err) {
240
+ const msg = 'Failed to unban handle from room';
241
+ this.log.error(msg, { err });
242
+ throw new Error(msg);
243
+ }
244
+ }
245
+ async ignoreHandle(id) {
246
+ this.log.debug(this.ignoreHandle.name, { id });
247
+ try {
248
+ await this.client.setIgnoredUsers([id]);
249
+ }
250
+ catch (err) {
251
+ const msg = 'Failed to ignore a handle';
252
+ this.log.error(msg, { err });
253
+ throw new Error(msg);
254
+ }
255
+ }
256
+ async unignoreHandle(id) {
257
+ this.log.debug(this.unignoreHandle.name, { id });
258
+ const isIgnored = await Promise.resolve(this.client.isUserIgnored(id));
259
+ if (!isIgnored) {
260
+ this.log.debug('Handle was not previously ignored. Returning,');
261
+ return;
262
+ }
263
+ try {
264
+ const ignoreList = await Promise.resolve(this.client.getIgnoredUsers());
265
+ const updatedIgnoreList = ignoreList.filter((item) => item !== id);
266
+ await this.client.setIgnoredUsers(updatedIgnoreList);
267
+ }
268
+ catch (err) {
269
+ const msg = 'Failed to unignore a handle';
270
+ this.log.error(msg, { err });
271
+ throw new Error(msg);
272
+ }
273
+ }
274
+ async listIgnoredHandles() {
275
+ this.log.debug(this.listIgnoredHandles.name);
276
+ try {
277
+ return await Promise.resolve(this.client.getIgnoredUsers());
278
+ }
279
+ catch (err) {
280
+ const msg = 'Failed to list ignored handles';
281
+ this.log.error(msg, { err });
282
+ throw new Error(msg);
283
+ }
284
+ }
285
+ // MARK: Direct Chat
286
+ async createDirectChat(userIdToChatTo) {
287
+ this.log.debug(this.createDirectChat.name);
288
+ try {
289
+ const userId = await this.getUserId();
290
+ const initialState = [
291
+ {
292
+ type: 'm.room.encryption',
293
+ content: {
294
+ // Currently this is the only supported algorithm.
295
+ //
296
+ // See: https://spec.matrix.org/v1.13/client-server-api/#mroomencryption
297
+ algorithm: 'm.megolm.v1.aes-sha2',
298
+ },
299
+ },
300
+ {
301
+ type: CustomMatrixEvents.TYPE,
302
+ content: {
303
+ type: CustomRoomType.DIRECT_CHAT,
304
+ },
305
+ },
306
+ ];
307
+ const powerLevelsTransformer = new DirectChatPowerLevelsTransformer();
308
+ const powerLevels = {
309
+ usersDefault: powerLevelsTransformer.fromEntityToPowerLevel(DirectChatRoleEntity.PARTICIPANT),
310
+ redact: powerLevelsTransformer.fromEntityToPowerLevel(DirectChatPermissionsEntity.default.deleteOthersMessages),
311
+ };
312
+ const roomPowerLevelsTransformer = new RoomPowerLevelsTransformer();
313
+ // Create a room with is_direct flag set to true to indicate that this is a direct chat
314
+ const room = await this.client.createRoom({
315
+ initial_state: initialState,
316
+ is_direct: true,
317
+ visibility: Visibility.Private,
318
+ preset: Preset.TrustedPrivateChat,
319
+ invite: [userIdToChatTo],
320
+ power_level_content_override: roomPowerLevelsTransformer.fromEntityPowerLevelToRoomPowerLevel(powerLevels),
321
+ });
322
+ const directEvent = await Promise.resolve(this.client.getAccountData(EventType.Direct));
323
+ const currentContent = directEvent?.getContent() ?? {};
324
+ const roomMap = new Map(Object.entries(currentContent));
325
+ let modified = false;
326
+ // Remove this room from other users' direct chat lists
327
+ for (const [otherUserId, roomList] of roomMap) {
328
+ if (otherUserId !== userId) {
329
+ const newRoomList = roomList.filter((roomId) => roomId !== room.room_id);
330
+ if (newRoomList.length !== roomList.length) {
331
+ roomMap.set(otherUserId, newRoomList);
332
+ modified = true;
333
+ }
334
+ }
335
+ }
336
+ // Add this room to the current user's direct chat list if not already there
337
+ if (userId) {
338
+ const userRoomList = roomMap.get(userId) ?? [];
339
+ if (!userRoomList.includes(room.room_id)) {
340
+ roomMap.set(userId, [...userRoomList, room.room_id]);
341
+ modified = true;
342
+ }
343
+ }
344
+ // Only update if something changed
345
+ if (modified) {
346
+ await this.client.setAccountData(EventType.Direct, Object.fromEntries(roomMap));
347
+ }
348
+ return room.room_id;
349
+ }
350
+ catch (err) {
351
+ const msg = 'Failed to create a direct chat room';
352
+ this.log.error(msg, { err });
353
+ throw new Error(msg);
354
+ }
355
+ }
356
+ async joinDirectChat(userId, chatId) {
357
+ this.log.debug(this.joinDirectChat.name, { chatId });
358
+ const directEvent = await Promise.resolve(this.client.getAccountData(EventType.Direct));
359
+ const currentContent = directEvent?.getContent() ?? {};
360
+ const roomMap = new Map(Object.entries(currentContent));
361
+ try {
362
+ await this.client.joinRoom(chatId);
363
+ // Add this room to the specified user's room list
364
+ const userRoomList = roomMap.get(userId) ?? [];
365
+ if (userRoomList.includes(chatId)) {
366
+ return; // Nothing to update. Only update if something changed
367
+ }
368
+ roomMap.set(userId, [...userRoomList, chatId]);
369
+ await this.client.setAccountData(EventType.Direct, Object.fromEntries(roomMap));
370
+ }
371
+ catch (err) {
372
+ const msg = 'Failed to join direct chat room';
373
+ this.log.error(msg, { err });
374
+ throw new Error(msg);
375
+ }
376
+ }
377
+ async getDirectChatAccountData() {
378
+ this.log.debug(this.getDirectChatAccountData.name);
379
+ return await Promise.resolve(this.client.getAccountData(EventType.Direct));
380
+ }
381
+ // MARK: Rooms
382
+ async createRoom(input) {
383
+ this.log.debug(this.createRoom.name, { input });
384
+ try {
385
+ const result = await this.client.createRoom(input);
386
+ return result.room_id;
387
+ }
388
+ catch (err) {
389
+ const msg = 'Failed to create a room';
390
+ this.log.error(msg, { err });
391
+ throw new Error(msg);
392
+ }
393
+ }
394
+ async getRoom(id) {
395
+ this.log.debug(this.getRoom.name, { id });
396
+ try {
397
+ const result = await Promise.resolve(this.client.getRoom(id));
398
+ return result ?? undefined;
399
+ }
400
+ catch (err) {
401
+ const msg = 'Failed to retrieve a room';
402
+ this.log.error(msg, { err });
403
+ throw new Error(msg);
404
+ }
405
+ }
406
+ async getRoomType(roomId) {
407
+ this.log.debug(this.getRoomType.name);
408
+ const path = `/rooms/${roomId}/state/${CustomMatrixEvents.TYPE}`;
409
+ try {
410
+ const response = await this.client.http.authedRequest(Method.Get, path);
411
+ return response.type;
412
+ }
413
+ catch (err) {
414
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
415
+ return undefined;
416
+ }
417
+ const msg = 'Failed to retrieve room type';
418
+ this.log.error(msg, { err });
419
+ throw new Error(msg);
420
+ }
421
+ }
422
+ async getRoomTags(roomId) {
423
+ this.log.debug(this.getRoomTags.name);
424
+ const path = `/rooms/${roomId}/state/${CustomMatrixEvents.TAGS}`;
425
+ try {
426
+ const response = await this.client.http.authedRequest(Method.Get, path);
427
+ return response.tags;
428
+ }
429
+ catch (err) {
430
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
431
+ return undefined;
432
+ }
433
+ const msg = 'Failed to retrieve room tags';
434
+ this.log.error(msg, { err });
435
+ throw new Error(msg);
436
+ }
437
+ }
438
+ async setRoomName(id, name) {
439
+ this.log.debug(this.setRoomName.name, { id, name });
440
+ try {
441
+ await Promise.resolve(this.client.setRoomName(id, name));
442
+ }
443
+ catch (err) {
444
+ const msg = 'Failed to set room name';
445
+ this.log.error(msg, { err });
446
+ throw new Error(msg);
447
+ }
448
+ }
449
+ async setRoomTopic(id, alias) {
450
+ this.log.debug(this.setRoomTopic.name, { id, alias });
451
+ try {
452
+ await Promise.resolve(this.client.setRoomTopic(id, alias));
453
+ }
454
+ catch (err) {
455
+ const msg = 'Failed to set room topic';
456
+ this.log.error(msg, { err });
457
+ throw new Error(msg);
458
+ }
459
+ }
460
+ async getRoomTopic(roomId) {
461
+ this.log.debug(this.getRoomTopic.name);
462
+ const path = `/rooms/${roomId}/state/m.room.topic`;
463
+ try {
464
+ const response = await this.client.http.authedRequest(Method.Get, path);
465
+ return response.topic;
466
+ }
467
+ catch (err) {
468
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
469
+ return undefined;
470
+ }
471
+ const msg = 'Failed to retrieve room topic';
472
+ this.log.error(msg, { err });
473
+ throw new Error(msg);
474
+ }
475
+ }
476
+ async setRoomAvatar(id, url) {
477
+ this.log.debug(this.setRoomAvatar.name, { id, url });
478
+ const eventContent = {
479
+ url,
480
+ };
481
+ try {
482
+ await this.client.sendStateEvent(id, EventType.RoomAvatar, eventContent);
483
+ }
484
+ catch (err) {
485
+ const msg = 'Failed to set room avatar';
486
+ this.log.error(msg, { err });
487
+ throw new Error(msg);
488
+ }
489
+ }
490
+ async getRoomAvatarUrl(roomId) {
491
+ this.log.debug(this.getRoomAvatarUrl.name);
492
+ const path = `/rooms/${roomId}/state/m.room.avatar`;
493
+ try {
494
+ const response = await this.client.http.authedRequest(Method.Get, path);
495
+ return response.url;
496
+ }
497
+ catch (err) {
498
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
499
+ return undefined;
500
+ }
501
+ const msg = 'Failed to retrieve room avatar url';
502
+ this.log.error(msg, { err });
503
+ throw new Error(msg);
504
+ }
505
+ }
506
+ async getRoomPowerLevels(roomId) {
507
+ this.log.debug(this.getRoomPowerLevels.name, { roomId });
508
+ try {
509
+ const powerLevels = await this.client.getStateEvent(roomId, EventType.RoomPowerLevels, '');
510
+ return powerLevels;
511
+ }
512
+ catch (err) {
513
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
514
+ return undefined;
515
+ }
516
+ if (err instanceof MatrixError && err.errcode === 'M_FORBIDDEN') {
517
+ throw new UnauthorizedError();
518
+ }
519
+ const msg = 'Failed to retrieve room power levels';
520
+ this.log.error(msg, { err });
521
+ throw new Error(msg);
522
+ }
523
+ }
524
+ async setRoomPowerLevels(roomId, roomPowerLevels) {
525
+ this.log.debug(this.setRoomPowerLevels.name, { roomId, roomPowerLevels });
526
+ try {
527
+ await this.client.sendStateEvent(roomId, EventType.RoomPowerLevels, roomPowerLevels, '');
528
+ }
529
+ catch (err) {
530
+ const msg = 'Failed to set room power levels';
531
+ this.log.error(msg, { err });
532
+ throw new Error(msg);
533
+ }
534
+ }
535
+ async setRoomMemberPowerLevel(roomId, userId, powerLevel) {
536
+ this.log.debug(this.setRoomMemberPowerLevel.name, {
537
+ roomId,
538
+ userId,
539
+ powerLevel,
540
+ });
541
+ try {
542
+ await this.client.setPowerLevel(roomId, userId, powerLevel);
543
+ }
544
+ catch (err) {
545
+ const msg = 'Failed to set room member power level';
546
+ this.log.error(msg, { err });
547
+ throw new Error(msg);
548
+ }
549
+ }
550
+ async deleteRoom(id) {
551
+ this.log.debug(this.deleteRoom.name, { id });
552
+ try {
553
+ // Set to true to delete room from store
554
+ await this.client.forget(id, true);
555
+ }
556
+ catch (err) {
557
+ const msg = 'Failed to delete room';
558
+ this.log.error(msg, { err });
559
+ throw new Error(msg);
560
+ }
561
+ }
562
+ async joinRoom(id) {
563
+ this.log.debug(this.joinRoom.name, { id });
564
+ try {
565
+ await this.client.joinRoom(id);
566
+ }
567
+ catch (err) {
568
+ const msg = 'Failed to join room';
569
+ this.log.error(msg, { err });
570
+ throw new Error(msg);
571
+ }
572
+ }
573
+ async leaveRoom(id) {
574
+ this.log.debug(this.leaveRoom.name, { id });
575
+ try {
576
+ await this.client.leave(id);
577
+ }
578
+ catch (err) {
579
+ const msg = 'Failed to leave room';
580
+ this.log.error(msg, { err });
581
+ throw new Error(msg);
582
+ }
583
+ }
584
+ async invite(id, userId) {
585
+ this.log.debug(this.invite.name, { id, userId });
586
+ try {
587
+ await this.client.invite(id, userId);
588
+ }
589
+ catch (err) {
590
+ const msg = 'Failed to invite user to room';
591
+ this.log.error(msg, { err });
592
+ throw new Error(msg);
593
+ }
594
+ }
595
+ async listRooms() {
596
+ this.log.debug(this.listRooms.name);
597
+ try {
598
+ const rooms = await Promise.resolve(this.client.getRooms());
599
+ return rooms;
600
+ }
601
+ catch (err) {
602
+ const msg = 'Failed to retrieve rooms';
603
+ this.log.error(msg, { err });
604
+ throw new Error(msg);
605
+ }
606
+ }
607
+ async listJoinedRooms() {
608
+ this.log.debug(this.listJoinedRooms.name);
609
+ try {
610
+ const rooms = await this.client.getJoinedRooms();
611
+ return rooms.joined_rooms;
612
+ }
613
+ catch (err) {
614
+ const msg = 'Failed to retrieve joined rooms';
615
+ this.log.error(msg, { err });
616
+ throw new Error(msg);
617
+ }
618
+ }
619
+ /**
620
+ * Search for rooms.
621
+ *
622
+ * @param {string} query The query to search for.
623
+ * @param {number} limit The maximum number of rooms to return.
624
+ * @param {string} since The token to start from.
625
+ * @returns {SearchRoomsOutput} The list of rooms that match the query.
626
+ */
627
+ async searchRooms(query, limit = 20, since) {
628
+ this.log.debug(this.searchRooms.name, { query, limit, since });
629
+ try {
630
+ return this.client.publicRooms({
631
+ filter: {
632
+ generic_search_term: query,
633
+ },
634
+ limit,
635
+ since,
636
+ });
637
+ }
638
+ catch (err) {
639
+ const msg = 'Failed to search rooms';
640
+ this.log.error(msg, { err });
641
+ throw new Error(msg);
642
+ }
643
+ }
644
+ async knockRoom(id, reason) {
645
+ this.log.debug(this.knockRoom.name, { id, reason });
646
+ try {
647
+ await this.client.knockRoom(id, { reason });
648
+ }
649
+ catch (err) {
650
+ const msg = 'Failed to knock room';
651
+ this.log.error(msg, { err });
652
+ throw new Error(msg);
653
+ }
654
+ }
655
+ async getMembers(roomId) {
656
+ this.log.debug(this.getMembers.name, { roomId });
657
+ const path = `/rooms/${encodeURIComponent(roomId)}/members`;
658
+ try {
659
+ const response = await this.client.http.authedRequest(Method.Get, path);
660
+ return response.chunk.map((event) => {
661
+ const member = {
662
+ roomId,
663
+ userId: event.state_key,
664
+ displayName: event.content.displayname,
665
+ membership: event.content.membership,
666
+ };
667
+ return member;
668
+ });
669
+ }
670
+ catch (err) {
671
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
672
+ return undefined;
673
+ }
674
+ if (err instanceof MatrixError && err.errcode === 'M_FORBIDDEN') {
675
+ throw new UnauthorizedError();
676
+ }
677
+ const msg = 'Failed to retrieve room members';
678
+ this.log.error(msg, { err });
679
+ throw new Error(msg);
680
+ }
681
+ }
682
+ async getMembershipState(roomId, handleId) {
683
+ this.log.debug(this.getMembershipState.name, { roomId, handleId });
684
+ try {
685
+ const response = await this.getStateEvent(roomId, EventType.RoomMember, handleId);
686
+ return response?.membership;
687
+ }
688
+ catch (err) {
689
+ const msg = 'Failed to retrieve membership state';
690
+ this.log.error(msg, { err });
691
+ throw new Error(msg);
692
+ }
693
+ }
694
+ async fetchRoomEvent(roomId, eventId) {
695
+ this.log.debug(this.fetchRoomEvent.name, { roomId, eventId });
696
+ try {
697
+ const event = await this.client.fetchRoomEvent(roomId, eventId);
698
+ return new MatrixEvent(event);
699
+ }
700
+ catch (err) {
701
+ const msg = 'Failed to fetch room event';
702
+ this.log.error(msg, { err });
703
+ throw new Error(msg);
704
+ }
705
+ }
706
+ // MARK: Messages
707
+ async sendMessage(roomId, content) {
708
+ this.log.debug(this.sendMessage.name, { roomId, content });
709
+ try {
710
+ await this.client.sendMessage(roomId, content);
711
+ }
712
+ catch (err) {
713
+ const msg = 'Failed to send a message';
714
+ this.log.error(msg, { err });
715
+ throw new Error(msg);
716
+ }
717
+ }
718
+ async sendThreadMessage(roomId, threadId, content) {
719
+ this.log.debug(this.sendThreadMessage.name, { roomId, threadId, content });
720
+ const eventContent = {
721
+ ...content,
722
+ 'm.relates_to': {
723
+ rel_type: 'm.thread',
724
+ event_id: threadId,
725
+ },
726
+ };
727
+ try {
728
+ await this.client.sendMessage(roomId, eventContent);
729
+ }
730
+ catch (err) {
731
+ const msg = 'Failed to send a thread message';
732
+ this.log.error(msg, { err });
733
+ throw new Error(msg);
734
+ }
735
+ }
736
+ async sendReplyMessage(roomId, replyToMessageId, content) {
737
+ this.log.debug(this.sendReplyMessage.name, {
738
+ roomId,
739
+ replyToMessageId,
740
+ content,
741
+ });
742
+ const eventContent = {
743
+ ...content,
744
+ 'm.relates_to': {
745
+ 'm.in_reply_to': { event_id: replyToMessageId },
746
+ },
747
+ };
748
+ try {
749
+ await this.client.sendEvent(roomId, EventType.RoomMessage, eventContent);
750
+ }
751
+ catch (err) {
752
+ const msg = 'Failed to send a reply message';
753
+ this.log.error(msg, { err });
754
+ throw new Error(msg);
755
+ }
756
+ }
757
+ async getMessage(eventId, roomId) {
758
+ this.log.debug(this.getMessage.name, { eventId, roomId });
759
+ const [userId, room] = await Promise.all([
760
+ this.getUserId(),
761
+ this.getRoom(roomId),
762
+ ]);
763
+ if (!room) {
764
+ throw new RoomNotFoundError();
765
+ }
766
+ try {
767
+ const event = room.findEventById(eventId);
768
+ if (!event) {
769
+ return undefined;
770
+ }
771
+ const messageTransformer = new MessageTransformer();
772
+ const message = messageTransformer.fromMatrixToEntity(userId, event);
773
+ if (message) {
774
+ // Sender name is not available in event so populate based on room member.
775
+ message.senderHandle.name =
776
+ room.getMember(message.senderHandle.handleId.toString())?.name ?? '';
777
+ }
778
+ return message;
779
+ }
780
+ catch (err) {
781
+ const msg = 'Failed to get message';
782
+ this.log.error(msg, { err });
783
+ throw new Error(msg);
784
+ }
785
+ }
786
+ async listMessages(roomId, limit = 10, nextToken) {
787
+ this.log.debug(this.listMessages.name, { roomId, nextToken, limit });
788
+ const [userId, room] = await Promise.all([
789
+ this.getUserId(),
790
+ this.getRoom(roomId),
791
+ ]);
792
+ if (!room) {
793
+ throw new RoomNotFoundError();
794
+ }
795
+ const messageTransformer = new MessageTransformer();
796
+ const messageEvents = [];
797
+ try {
798
+ // Fetch messages based on limit and nextToken paginating backwards
799
+ do {
800
+ const response = await this.client.createMessagesRequest(roomId, nextToken ?? null, Math.max(1, limit - messageEvents.length), Direction.Backward);
801
+ // Filter events for room message events
802
+ const chunk = response.chunk
803
+ .map((event) => new MatrixEvent(event))
804
+ .filter((event) => {
805
+ const eventContent = event.getContent();
806
+ if (eventContent?.['m.relates_to']?.['rel_type'] === 'm.replace')
807
+ return false;
808
+ const eventType = event.getType();
809
+ return (eventType === EventType.RoomMessage ||
810
+ eventType === EventType.RoomMessageEncrypted ||
811
+ eventType === EventType.RoomMember ||
812
+ eventType === EventType.PollStart);
813
+ });
814
+ chunk.forEach((event) => {
815
+ messageEvents.push(event);
816
+ });
817
+ await Promise.all(messageEvents.map(async (message) => {
818
+ if (message.isEncrypted())
819
+ await this.client.decryptEventIfNeeded(message);
820
+ }));
821
+ nextToken = response.end;
822
+ if (!nextToken)
823
+ break;
824
+ } while (messageEvents.length < limit);
825
+ const messages = messageEvents
826
+ .map((event) => {
827
+ // Convert Matrix event to Message entity
828
+ const message = messageTransformer.fromMatrixToEntity(userId, event);
829
+ if (message) {
830
+ message.senderHandle.name =
831
+ room.getMember(message.senderHandle.handleId.toString())?.name ??
832
+ '';
833
+ if (event.getType() === EventType.RoomMember) {
834
+ ;
835
+ message.content.handle.name =
836
+ room.getMember(message.content.handle.handleId.toString())?.name ?? '';
837
+ }
838
+ }
839
+ return message;
840
+ })
841
+ .filter((msg) => Boolean(msg))
842
+ // Sort messages from oldest to newest
843
+ .sort((a, b) => a.timestamp - b.timestamp);
844
+ return {
845
+ messages,
846
+ nextToken,
847
+ };
848
+ }
849
+ catch (err) {
850
+ const msg = 'Failed to list messages';
851
+ this.log.error(msg, { err });
852
+ throw new Error(msg);
853
+ }
854
+ }
855
+ async editMessage(roomId, originalEventId, content) {
856
+ this.log.debug(this.editMessage.name, { roomId, originalEventId, content });
857
+ // Construct a raw event to edit a message.
858
+ const editContent = {
859
+ msgtype: MsgType.Text,
860
+ body: content.body,
861
+ 'm.new_content': {
862
+ msgtype: MsgType.Text,
863
+ body: content.body,
864
+ },
865
+ 'm.relates_to': {
866
+ rel_type: RelationType.Replace,
867
+ event_id: originalEventId,
868
+ },
869
+ };
870
+ try {
871
+ await this.client.sendEvent(roomId, EventType.RoomMessage, editContent, '');
872
+ }
873
+ catch (err) {
874
+ const msg = 'Failed to edit message';
875
+ this.log.error(msg, { err });
876
+ throw new Error(msg);
877
+ }
878
+ }
879
+ async deleteMessage(roomId, eventId, reason) {
880
+ this.log.debug(this.deleteMessage.name, { roomId, eventId });
881
+ try {
882
+ const redactOpts = reason ? { reason } : undefined;
883
+ await this.client.redactEvent(roomId, eventId, undefined, redactOpts);
884
+ }
885
+ catch (err) {
886
+ const msg = 'Failed to delete message';
887
+ this.log.error(msg, { err });
888
+ throw new Error(msg);
889
+ }
890
+ }
891
+ async getChatSummaries(roomIds) {
892
+ this.log.debug(this.getChatSummaries.name, { roomIds });
893
+ const messageTransformer = new MessageTransformer();
894
+ const userId = await this.getUserId();
895
+ const summaries = await Promise.all(Array.from(roomIds, async ([recipient, roomId]) => {
896
+ // client.getRoomSummary() does not seem to provide useful information, fall back to get message from timeline.
897
+ const room = await this.getRoom(roomId);
898
+ if (!room) {
899
+ throw new RoomNotFoundError();
900
+ }
901
+ // Initialize counts
902
+ let unreadCountAll = 0;
903
+ let unreadCountMentions = 0;
904
+ const threadUnreadCount = {};
905
+ const events = room.getLiveTimeline()?.getEvents() ?? [];
906
+ const latestEvent = events.at(-1);
907
+ if (!latestEvent) {
908
+ // If latest event cannot be retrieved then return
909
+ return {
910
+ recipient,
911
+ hasUnreadMessages: false,
912
+ unreadCount: {
913
+ all: unreadCountAll,
914
+ mentions: unreadCountMentions,
915
+ },
916
+ threadUnreadCount,
917
+ latestMessage: undefined,
918
+ };
919
+ }
920
+ const readReceipt = room.getReadReceiptForUserId(userId);
921
+ const lastReadEventId = readReceipt?.eventId; // Event ID of the latest read message
922
+ // Find the index of the last read event
923
+ let lastReadIndex = -1;
924
+ if (lastReadEventId) {
925
+ lastReadIndex = events.findIndex((e) => e.getId() === lastReadEventId);
926
+ }
927
+ // Get unread events (events after the last read one)
928
+ const unreadEvents = lastReadIndex >= 0 ? events.slice(lastReadIndex + 1) : events;
929
+ // Decrypt encrypted events if needed
930
+ await Promise.all(unreadEvents.map(async (event) => {
931
+ if (event.isEncrypted()) {
932
+ await this.client.decryptEventIfNeeded(event);
933
+ }
934
+ }));
935
+ // Filter for message events (including edits, as they can be unread and contain mentions)
936
+ const unreadMessageEvents = unreadEvents.filter((event) => {
937
+ const eventType = event.getType();
938
+ return (eventType === EventType.RoomMessage ||
939
+ eventType === EventType.RoomMessageEncrypted ||
940
+ eventType === EventType.RoomMember ||
941
+ eventType === EventType.PollStart ||
942
+ eventType === EventType.Reaction);
943
+ });
944
+ // Count unread messages
945
+ for (const event of unreadMessageEvents) {
946
+ const eventContent = event.getContent();
947
+ const threadId = eventContent?.['m.relates_to']?.['rel_type'] === 'm.thread'
948
+ ? eventContent['m.relates_to']?.event_id
949
+ : undefined;
950
+ // Check if event mentions the user
951
+ const mentions = eventContent?.['m.mentions'];
952
+ const isMentioned = (mentions?.user_ids?.includes(userId) ?? false) ||
953
+ mentions?.room === true;
954
+ // Increment counts
955
+ unreadCountAll++;
956
+ if (isMentioned) {
957
+ unreadCountMentions++;
958
+ }
959
+ // Track thread-specific counts
960
+ if (threadId) {
961
+ if (!threadUnreadCount[threadId]) {
962
+ threadUnreadCount[threadId] = { all: 0, mentions: 0 };
963
+ }
964
+ threadUnreadCount[threadId].all++;
965
+ if (isMentioned) {
966
+ threadUnreadCount[threadId].mentions++;
967
+ }
968
+ }
969
+ }
970
+ const latestMessage = messageTransformer.fromMatrixToEntity(userId, latestEvent);
971
+ return {
972
+ recipient,
973
+ hasUnreadMessages: unreadCountAll > 0,
974
+ unreadCount: {
975
+ all: unreadCountAll,
976
+ mentions: unreadCountMentions,
977
+ },
978
+ threadUnreadCount,
979
+ latestMessage,
980
+ };
981
+ }));
982
+ return summaries;
983
+ }
984
+ async searchMessages(searchText, limit = 10, nextToken) {
985
+ this.log.debug(this.searchMessages.name, { searchText });
986
+ const searchMessagesItemTransformer = new SearchMessagesItemTransformer();
987
+ try {
988
+ const results = await this.client.search({
989
+ body: {
990
+ search_categories: {
991
+ room_events: {
992
+ search_term: searchText,
993
+ keys: ['content.body'],
994
+ filter: { types: [EventType.RoomMessage], limit },
995
+ include_state: false,
996
+ },
997
+ },
998
+ },
999
+ next_batch: nextToken,
1000
+ });
1001
+ const roomEvents = results?.search_categories?.room_events;
1002
+ const roomResults = roomEvents?.results ?? [];
1003
+ const nextBatch = roomEvents?.next_batch;
1004
+ const messages = roomResults.flatMap((roomResult) => {
1005
+ const event = roomResult?.result;
1006
+ if (!event ||
1007
+ event.type !== EventType.RoomMessage ||
1008
+ event.content?.msgtype !== MsgType.Text) {
1009
+ return [];
1010
+ }
1011
+ // Convert Matrix event to SearchMessagesItem entity
1012
+ const searchMessagesItem = searchMessagesItemTransformer.fromMatrixToEntity(event);
1013
+ return [searchMessagesItem];
1014
+ });
1015
+ return {
1016
+ messages,
1017
+ nextToken: nextBatch,
1018
+ };
1019
+ }
1020
+ catch (err) {
1021
+ const msg = 'Failed to search for messages';
1022
+ this.log.error(msg, { err });
1023
+ throw new Error(msg);
1024
+ }
1025
+ }
1026
+ // MARK: Reactions
1027
+ async toggleReaction(roomId, eventId, reaction) {
1028
+ this.log.debug(this.toggleReaction.name, { roomId, eventId, reaction });
1029
+ try {
1030
+ const room = await this.getRoom(roomId);
1031
+ if (!room) {
1032
+ throw new RoomNotFoundError();
1033
+ }
1034
+ const userId = await this.getUserId();
1035
+ const events = room.getLiveTimeline()?.getEvents() ?? [];
1036
+ // Find existing reaction event from the current user
1037
+ const existingReaction = events.find((event) => event.getType() === EventType.Reaction &&
1038
+ event.getContent()?.['m.relates_to']?.event_id === eventId &&
1039
+ event.getContent()?.['m.relates_to']?.key === reaction &&
1040
+ event.getSender() === userId);
1041
+ const existingReactionId = existingReaction?.getId();
1042
+ if (existingReaction && existingReactionId) {
1043
+ // If reaction exists, remove it
1044
+ await this.client.redactEvent(roomId, existingReactionId);
1045
+ }
1046
+ else {
1047
+ // If reaction doesn't exist, add it
1048
+ await this.client.sendEvent(roomId, EventType.Reaction, {
1049
+ 'm.relates_to': {
1050
+ rel_type: RelationType.Annotation,
1051
+ event_id: eventId,
1052
+ key: reaction,
1053
+ },
1054
+ });
1055
+ }
1056
+ }
1057
+ catch (err) {
1058
+ const msg = 'Failed to toggle reaction';
1059
+ this.log.error(msg, { err });
1060
+ throw new Error(msg);
1061
+ }
1062
+ }
1063
+ async getReactions(roomId, messageId) {
1064
+ this.log.debug(this.getReactions.name, { roomId, messageId });
1065
+ try {
1066
+ const room = await this.getRoom(roomId);
1067
+ if (!room) {
1068
+ throw new RoomNotFoundError();
1069
+ }
1070
+ const timeline = room.getUnfilteredTimelineSet();
1071
+ const reactions = timeline?.relations
1072
+ .getChildEventsForEvent(messageId, RelationType.Annotation, EventType.Reaction)
1073
+ ?.getSortedAnnotationsByKey();
1074
+ if (!reactions?.length) {
1075
+ return [];
1076
+ }
1077
+ return reactions.map(([key, events]) => {
1078
+ const senderHandleIds = Array.from(new Set(Array.from(events)
1079
+ .filter((event) => !event.isRedacted())
1080
+ .map((event) => event.getSender())
1081
+ .filter(Boolean))).map((id) => new HandleId(id));
1082
+ return {
1083
+ content: key,
1084
+ count: senderHandleIds.length,
1085
+ senderHandleIds,
1086
+ };
1087
+ });
1088
+ }
1089
+ catch (err) {
1090
+ const msg = `Failed to get reactions for message ${messageId}`;
1091
+ this.log.error(msg, { err });
1092
+ throw new Error(msg);
1093
+ }
1094
+ }
1095
+ // MARK: Read Receipts
1096
+ async sendReadReceipt(roomId) {
1097
+ this.log.debug(this.sendReadReceipt.name, { roomId });
1098
+ try {
1099
+ const room = await this.getRoom(roomId);
1100
+ if (!room) {
1101
+ throw new RoomNotFoundError();
1102
+ }
1103
+ const events = room.getLiveTimeline()?.getEvents();
1104
+ const latestEvent = events?.[0];
1105
+ if (!latestEvent) {
1106
+ throw new Error('Latest event could not be found');
1107
+ }
1108
+ await this.client.sendReadReceipt(latestEvent);
1109
+ }
1110
+ catch (err) {
1111
+ const msg = 'Failed to send read receipt';
1112
+ this.log.error(msg, { err });
1113
+ throw new Error(msg);
1114
+ }
1115
+ }
1116
+ async getReadReceipts(roomId, event, eventId) {
1117
+ this.log.debug(this.getReadReceipts.name, { roomId });
1118
+ try {
1119
+ const room = await this.getRoom(roomId);
1120
+ if (!room) {
1121
+ throw new RoomNotFoundError();
1122
+ }
1123
+ const targetEvent = event ??
1124
+ (eventId ? await this.fetchRoomEvent(roomId, eventId) : undefined);
1125
+ if (!targetEvent) {
1126
+ throw new Error('Valid event could not be found');
1127
+ }
1128
+ const receipts = room.getReceiptsForEvent(targetEvent) ?? [];
1129
+ const messageReceiptTransformer = new MessageReceiptTransformer();
1130
+ return receipts.map((receipt) => messageReceiptTransformer.fromMatrixToEntity(receipt));
1131
+ }
1132
+ catch (err) {
1133
+ const msg = 'Failed to get read receipts';
1134
+ this.log.error(msg, { err });
1135
+ throw new Error(msg);
1136
+ }
1137
+ }
1138
+ // MARK: Edits
1139
+ async getReplacements(roomId, messageId) {
1140
+ this.log.debug(this.getReplacements.name, { roomId, messageId });
1141
+ const [userId, room] = await Promise.all([
1142
+ this.getUserId(),
1143
+ this.getRoom(roomId),
1144
+ ]);
1145
+ if (!room) {
1146
+ throw new RoomNotFoundError();
1147
+ }
1148
+ try {
1149
+ const timeline = room.getUnfilteredTimelineSet();
1150
+ const relations = timeline?.relations
1151
+ .getChildEventsForEvent(messageId, RelationType.Replace, EventType.RoomMessage)
1152
+ ?.getRelations();
1153
+ if (!relations?.length) {
1154
+ return [];
1155
+ }
1156
+ // Map, filter and deduplicate
1157
+ const messageTransformer = new MessageTransformer();
1158
+ const replacements = relations
1159
+ .filter((event) => !event.isRedacted())
1160
+ .map((event) => messageTransformer.fromMatrixToEntity(userId, event))
1161
+ .filter((message) => Boolean(message));
1162
+ // Deduplicate by messageId
1163
+ const seen = new Set();
1164
+ return replacements.filter((message) => {
1165
+ if (seen.has(message.messageId))
1166
+ return false;
1167
+ seen.add(message.messageId);
1168
+ return true;
1169
+ });
1170
+ }
1171
+ catch (err) {
1172
+ const msg = `Failed to get replacements for message ${messageId}`;
1173
+ this.log.error(msg, { err });
1174
+ throw new Error(msg);
1175
+ }
1176
+ }
1177
+ // MARK: Pin/Unpin Message
1178
+ async pinUnpinMessage(roomId, eventId) {
1179
+ this.log.debug(this.pinUnpinMessage.name, { roomId, eventId });
1180
+ try {
1181
+ const pinnedEvents = await this.getStateEvent(roomId, EventType.RoomPinnedEvents, '');
1182
+ const pinnedEventIds = pinnedEvents?.pinned ?? [];
1183
+ // Remove eventId from array if already present, otherwise append it
1184
+ const pinnedSet = new Set(pinnedEventIds);
1185
+ const wasPinned = pinnedSet.has(eventId);
1186
+ if (wasPinned) {
1187
+ pinnedSet.delete(eventId);
1188
+ }
1189
+ else {
1190
+ pinnedSet.add(eventId);
1191
+ }
1192
+ const updatedPinnedEventIds = Array.from(pinnedSet);
1193
+ // Only send state event if something changed
1194
+ if ((wasPinned && pinnedEventIds.length !== updatedPinnedEventIds.length) ||
1195
+ (!wasPinned && pinnedEventIds.length !== updatedPinnedEventIds.length)) {
1196
+ await this.client.sendStateEvent(roomId, EventType.RoomPinnedEvents, { pinned: updatedPinnedEventIds }, '');
1197
+ }
1198
+ }
1199
+ catch (err) {
1200
+ const msg = 'Failed to toggle pinned message';
1201
+ this.log.error(msg, { err });
1202
+ throw new Error(msg);
1203
+ }
1204
+ }
1205
+ async getPinnedMessages(roomId) {
1206
+ this.log.debug(this.getPinnedMessages.name, { roomId });
1207
+ try {
1208
+ const pinnedEvents = await this.getStateEvent(roomId, EventType.RoomPinnedEvents, '');
1209
+ const pinnedEventIds = pinnedEvents?.pinned ?? [];
1210
+ const pinnedMessages = await Promise.all(pinnedEventIds.map(async (eventId) => {
1211
+ return await this.getMessage(eventId, roomId);
1212
+ }));
1213
+ // Filter out any undefined results
1214
+ return pinnedMessages.filter((msg) => Boolean(msg));
1215
+ }
1216
+ catch (err) {
1217
+ const msg = 'Failed to get pinned messages';
1218
+ this.log.error(msg, { err });
1219
+ throw new Error(msg);
1220
+ }
1221
+ }
1222
+ // MARK: Polls
1223
+ async createPoll(roomId, kind, question, answers, maxSelections) {
1224
+ this.log.debug(this.createPoll.name, {
1225
+ roomId,
1226
+ kind,
1227
+ question,
1228
+ answers,
1229
+ maxSelections,
1230
+ });
1231
+ const path = `/rooms/${encodeURIComponent(roomId)}/send/${M_POLL_START.name}/${Date.now()}`;
1232
+ const eventContent = {
1233
+ [M_POLL_START.name]: {
1234
+ question: {
1235
+ body: question,
1236
+ msgtype: 'm.text',
1237
+ },
1238
+ kind,
1239
+ max_selections: maxSelections,
1240
+ answers: answers.map((answer) => ({
1241
+ id: answer,
1242
+ 'org.matrix.msc1767.text': answer,
1243
+ })),
1244
+ },
1245
+ 'm.text': question,
1246
+ };
1247
+ try {
1248
+ await this.client.http.authedRequest(Method.Put, path, undefined, eventContent);
1249
+ }
1250
+ catch (err) {
1251
+ const msg = 'Failed to create poll';
1252
+ this.log.error(msg, { err });
1253
+ throw new Error(msg);
1254
+ }
1255
+ }
1256
+ async sendPollResponse(roomId, pollId, answers) {
1257
+ this.log.debug(this.sendPollResponse.name, { roomId, pollId, answers });
1258
+ const path = `/rooms/${encodeURIComponent(roomId)}/send/${M_POLL_RESPONSE.name}/${Date.now()}`;
1259
+ const eventContent = {
1260
+ [M_POLL_RESPONSE.name]: {
1261
+ answers,
1262
+ },
1263
+ 'm.relates_to': {
1264
+ rel_type: 'm.reference',
1265
+ event_id: pollId,
1266
+ },
1267
+ };
1268
+ try {
1269
+ await this.client.http.authedRequest(Method.Put, path, undefined, eventContent);
1270
+ }
1271
+ catch (err) {
1272
+ const msg = `Failed to send poll response ${pollId}`;
1273
+ this.log.error(msg, { err });
1274
+ throw new Error(msg);
1275
+ }
1276
+ }
1277
+ async endPoll(roomId, pollId) {
1278
+ this.log.debug(this.endPoll.name, { roomId, pollId });
1279
+ const path = `/rooms/${encodeURIComponent(roomId)}/send/${M_POLL_END.name}/${Date.now()}`;
1280
+ const eventContent = {
1281
+ [M_POLL_END.name]: {},
1282
+ 'm.relates_to': {
1283
+ rel_type: 'm.reference',
1284
+ event_id: pollId,
1285
+ },
1286
+ };
1287
+ try {
1288
+ await this.client.http.authedRequest(Method.Put, path, undefined, eventContent);
1289
+ }
1290
+ catch (err) {
1291
+ const msg = `Failed to end poll ${pollId}`;
1292
+ this.log.error(msg, { err });
1293
+ throw new Error(msg);
1294
+ }
1295
+ }
1296
+ async getPollResponses(roomId, pollId) {
1297
+ this.log.debug(this.getPollResponses.name, { roomId, pollId });
1298
+ try {
1299
+ // Check if poll has ended
1300
+ const pollEnd = await this.client.relations(roomId, pollId, RelationType.Reference, M_POLL_END.name);
1301
+ const pollEndTimestamp = pollEnd.events[0]?.getTs();
1302
+ // Aggregate poll responses
1303
+ const latestResponseByUser = new Map();
1304
+ let nextBatch = undefined;
1305
+ do {
1306
+ const pollResponses = await this.client.relations(roomId, pollId, RelationType.Reference, M_POLL_RESPONSE.name, { from: nextBatch });
1307
+ pollResponses.events.forEach((event) => {
1308
+ // Filter out responses sent after poll has ended
1309
+ const responseTimestamp = event.getTs();
1310
+ if (pollEndTimestamp && responseTimestamp > pollEndTimestamp)
1311
+ return;
1312
+ const userId = event.getSender();
1313
+ if (!userId)
1314
+ return;
1315
+ const content = event.getContent();
1316
+ const answers = content[M_POLL_RESPONSE.name].answers;
1317
+ if (!Array.isArray(answers) || answers.length === 0)
1318
+ return;
1319
+ // Filter out older responses from the same user
1320
+ const prevResponse = latestResponseByUser.get(userId);
1321
+ if (!prevResponse || prevResponse.timestamp < responseTimestamp) {
1322
+ latestResponseByUser.set(userId, {
1323
+ timestamp: responseTimestamp,
1324
+ answers,
1325
+ });
1326
+ }
1327
+ });
1328
+ nextBatch = pollResponses.nextBatch;
1329
+ } while (nextBatch);
1330
+ const talliedAnswers = {};
1331
+ latestResponseByUser.forEach(({ answers }) => {
1332
+ answers.forEach((answer) => {
1333
+ talliedAnswers[answer] = (talliedAnswers[answer] ?? 0) + 1;
1334
+ });
1335
+ });
1336
+ const totalVotes = Object.values(talliedAnswers).reduce((sum, count) => sum + count, 0);
1337
+ return {
1338
+ talliedAnswers,
1339
+ totalVotes,
1340
+ endedAt: pollEndTimestamp,
1341
+ };
1342
+ }
1343
+ catch (err) {
1344
+ const msg = `Failed to get responses for poll ${pollId}`;
1345
+ this.log.error(msg, { err });
1346
+ throw new Error(msg);
1347
+ }
1348
+ }
1349
+ // MARK: Typing
1350
+ async sendTypingNotification(roomId, isTyping) {
1351
+ this.log.debug(this.sendTypingNotification.name, { roomId, isTyping });
1352
+ try {
1353
+ await this.client.sendTyping(roomId, isTyping, 30000); // Add timeout parameter of 30 seconds
1354
+ }
1355
+ catch (err) {
1356
+ const msg = 'Failed to send typing notification';
1357
+ this.log.error(msg, { err });
1358
+ throw new Error(msg);
1359
+ }
1360
+ }
1361
+ // MARK: Media
1362
+ async decryptFile(file, encryptionInfo) {
1363
+ this.log.debug(this.decryptFile.name, { file, encryptionInfo });
1364
+ try {
1365
+ return await decryptAttachment(file, encryptionInfo);
1366
+ }
1367
+ catch (err) {
1368
+ const msg = 'Failed to decrypt file';
1369
+ this.log.error(msg, { err });
1370
+ throw new Error(msg);
1371
+ }
1372
+ }
1373
+ // MARK: Crypto
1374
+ async initRustCrypto(options) {
1375
+ await this.client.initRustCrypto(options);
1376
+ }
1377
+ async clearRustCrypto(cryptoDatabasePrefix) {
1378
+ await this.client.clearStores({ cryptoDatabasePrefix });
1379
+ }
1380
+ async isVerified() {
1381
+ const crypto = this.getCrypto();
1382
+ const userId = await this.getUserId();
1383
+ const deviceId = this.client.getDeviceId();
1384
+ if (!deviceId) {
1385
+ throw new SecureCommsError('Failed to get device id');
1386
+ }
1387
+ const deviceInfo = await crypto.getUserDeviceInfo([userId]);
1388
+ const currentDevice = deviceInfo?.get(userId)?.get(deviceId);
1389
+ if (!currentDevice) {
1390
+ throw new SecureCommsError('Failed to get device info');
1391
+ }
1392
+ return currentDevice.verified === DeviceVerification.Verified;
1393
+ }
1394
+ onSessionVerificationChanged(handler) {
1395
+ this.client.on(CryptoEvent.UserTrustStatusChanged, (event) => {
1396
+ const { userId, userTrustLevel } = event;
1397
+ if (userId === this.client.getUserId()) {
1398
+ handler(userTrustLevel.isVerified());
1399
+ }
1400
+ });
1401
+ }
1402
+ onVerificationRequestReceived(handler) {
1403
+ this.client.on(CryptoEvent.VerificationRequestReceived, (event) => {
1404
+ handler(event);
1405
+ });
1406
+ }
1407
+ async isSignedIn() {
1408
+ this.log.debug(this.isSignedIn.name);
1409
+ return await Promise.resolve(this.client.isLoggedIn());
1410
+ }
1411
+ getCrypto() {
1412
+ const crypto = this.client.getCrypto();
1413
+ if (!crypto) {
1414
+ throw new SecureCommsError('Crypto API not initialized');
1415
+ }
1416
+ return crypto;
1417
+ }
1418
+ async createKeyBackup() {
1419
+ this.log.debug(this.createKeyBackup.name);
1420
+ try {
1421
+ const crypto = this.getCrypto();
1422
+ // Create a recovery key
1423
+ const recoveryKey = await crypto.createRecoveryKeyFromPassphrase();
1424
+ // Set up the key backup
1425
+ await crypto.bootstrapSecretStorage({
1426
+ createSecretStorageKey: async () => recoveryKey,
1427
+ setupNewKeyBackup: true,
1428
+ setupNewSecretStorage: false,
1429
+ });
1430
+ // Get the actual key that was used (may be different from what we provided)
1431
+ const storedKey = await crypto.getSessionBackupPrivateKey();
1432
+ // Return the actual key that was used for the backup
1433
+ if (storedKey &&
1434
+ recoveryKey.privateKey &&
1435
+ (storedKey.length !== recoveryKey.privateKey.length ||
1436
+ !storedKey.every((val, i) => val === recoveryKey.privateKey[i]))) {
1437
+ return {
1438
+ privateKey: storedKey,
1439
+ encodedPrivateKey: encodeRecoveryKey(storedKey),
1440
+ };
1441
+ }
1442
+ return recoveryKey;
1443
+ }
1444
+ catch (err) {
1445
+ const msg = 'Failed to create key backup';
1446
+ this.log.error(msg, { err });
1447
+ throw new SecureCommsError(msg);
1448
+ }
1449
+ }
1450
+ async hasKeyBackup() {
1451
+ try {
1452
+ const crypto = this.getCrypto();
1453
+ const backupInfo = await crypto.checkKeyBackupAndEnable();
1454
+ return backupInfo !== null;
1455
+ }
1456
+ catch (err) {
1457
+ const msg = 'Failed to check key backup';
1458
+ this.log.error(msg, { err });
1459
+ throw new SecureCommsError(msg);
1460
+ }
1461
+ }
1462
+ async recoverFromBackup(backupKey) {
1463
+ this.log.debug(this.recoverFromBackup.name);
1464
+ try {
1465
+ if (!(await this.hasKeyBackup())) {
1466
+ throw new SecureCommsError('No backup found on server');
1467
+ }
1468
+ const crypto = this.getCrypto();
1469
+ const version = await crypto.getActiveSessionBackupVersion();
1470
+ if (!version) {
1471
+ throw new SecureCommsError('Failed to get backup version');
1472
+ }
1473
+ const decodedKey = decodeRecoveryKey(backupKey);
1474
+ await crypto.storeSessionBackupPrivateKey(decodedKey, version);
1475
+ await crypto.restoreKeyBackup();
1476
+ }
1477
+ catch (err) {
1478
+ const msg = 'Failed to recover from backup';
1479
+ this.log.error(msg, { err });
1480
+ throw new SecureCommsError(msg);
1481
+ }
1482
+ }
1483
+ async rotateKeyBackup() {
1484
+ this.log.debug(this.rotateKeyBackup.name);
1485
+ try {
1486
+ const crypto = this.getCrypto();
1487
+ // Create a new recovery key
1488
+ const recoveryKey = await crypto.createRecoveryKeyFromPassphrase();
1489
+ // Rotate the backup
1490
+ await crypto.bootstrapSecretStorage({
1491
+ createSecretStorageKey: async () => recoveryKey,
1492
+ setupNewSecretStorage: false,
1493
+ setupNewKeyBackup: true,
1494
+ });
1495
+ // Get the actual key that was used
1496
+ const storedKey = await crypto.getSessionBackupPrivateKey();
1497
+ // Return the actual key that was used for the backup
1498
+ if (storedKey &&
1499
+ recoveryKey.privateKey &&
1500
+ (storedKey.length !== recoveryKey.privateKey.length ||
1501
+ !storedKey.every((val, i) => val === recoveryKey.privateKey[i]))) {
1502
+ return {
1503
+ privateKey: storedKey,
1504
+ encodedPrivateKey: encodeRecoveryKey(storedKey),
1505
+ };
1506
+ }
1507
+ return recoveryKey;
1508
+ }
1509
+ catch (err) {
1510
+ const msg = 'Failed to rotate key backup';
1511
+ this.log.error(msg, { err });
1512
+ throw new SecureCommsError(msg);
1513
+ }
1514
+ }
1515
+ async resetKeyBackup() {
1516
+ this.log.debug(this.resetKeyBackup.name);
1517
+ try {
1518
+ const crypto = this.getCrypto();
1519
+ // Create a recovery key
1520
+ const recoveryKey = await crypto.createRecoveryKeyFromPassphrase();
1521
+ // Reset the backup
1522
+ await crypto.bootstrapSecretStorage({
1523
+ createSecretStorageKey: async () => recoveryKey,
1524
+ setupNewKeyBackup: true,
1525
+ setupNewSecretStorage: true,
1526
+ });
1527
+ // Get the actual key that was used
1528
+ const storedKey = await crypto.getSessionBackupPrivateKey();
1529
+ // Return the actual key that was used for the backup
1530
+ if (storedKey &&
1531
+ recoveryKey.privateKey &&
1532
+ (storedKey.length !== recoveryKey.privateKey.length ||
1533
+ !storedKey.every((val, i) => val === recoveryKey.privateKey[i]))) {
1534
+ return {
1535
+ privateKey: storedKey,
1536
+ encodedPrivateKey: encodeRecoveryKey(storedKey),
1537
+ };
1538
+ }
1539
+ return recoveryKey;
1540
+ }
1541
+ catch (err) {
1542
+ const msg = 'Failed to reset key backup';
1543
+ this.log.error(msg, { err });
1544
+ throw new SecureCommsError(msg);
1545
+ }
1546
+ }
1547
+ async requestVerification(userId) {
1548
+ this.log.debug(this.requestVerification.name, { userId });
1549
+ try {
1550
+ const crypto = this.getCrypto();
1551
+ await crypto.requestOwnUserVerification();
1552
+ }
1553
+ catch (err) {
1554
+ const msg = 'Failed to request verification';
1555
+ this.log.error(msg, { err });
1556
+ throw new SecureCommsError(msg);
1557
+ }
1558
+ }
1559
+ async acceptVerificationRequest(userId, verificationRequestId) {
1560
+ this.log.debug(this.acceptVerificationRequest.name, {
1561
+ userId,
1562
+ verificationRequestId,
1563
+ });
1564
+ try {
1565
+ const crypto = this.getCrypto();
1566
+ await crypto.requestVerificationDM(userId, verificationRequestId);
1567
+ }
1568
+ catch (err) {
1569
+ const msg = 'Failed to accept verification request';
1570
+ this.log.error(msg, { err });
1571
+ throw new SecureCommsError(msg);
1572
+ }
1573
+ }
1574
+ async startVerification(userId) {
1575
+ this.log.debug(this.startVerification.name, { userId });
1576
+ try {
1577
+ const crypto = this.getCrypto();
1578
+ await crypto.requestVerificationDM(userId, 'm.sas.v1');
1579
+ }
1580
+ catch (err) {
1581
+ const msg = 'Failed to start verification';
1582
+ this.log.error(msg, { err });
1583
+ throw new SecureCommsError(msg);
1584
+ }
1585
+ }
1586
+ async approveVerification(userId) {
1587
+ this.log.debug(this.approveVerification.name, { userId });
1588
+ try {
1589
+ const crypto = this.getCrypto();
1590
+ await crypto.requestVerificationDM(userId, 'm.sas.v1');
1591
+ }
1592
+ catch (err) {
1593
+ const msg = 'Failed to approve verification';
1594
+ this.log.error(msg, { err });
1595
+ throw new SecureCommsError(msg);
1596
+ }
1597
+ }
1598
+ async declineVerification(userId) {
1599
+ this.log.debug(this.declineVerification.name, { userId });
1600
+ try {
1601
+ const crypto = this.getCrypto();
1602
+ await crypto.requestVerificationDM(userId, 'decline');
1603
+ }
1604
+ catch (err) {
1605
+ const msg = 'Failed to decline verification';
1606
+ this.log.error(msg, { err });
1607
+ throw new SecureCommsError(msg);
1608
+ }
1609
+ }
1610
+ async cancelVerification(userId) {
1611
+ this.log.debug(this.cancelVerification.name, { userId });
1612
+ try {
1613
+ const crypto = this.getCrypto();
1614
+ await crypto.requestVerificationDM(userId, 'cancel');
1615
+ }
1616
+ catch (err) {
1617
+ const msg = 'Failed to cancel verification';
1618
+ this.log.error(msg, { err });
1619
+ throw new SecureCommsError(msg);
1620
+ }
1621
+ }
1622
+ async setDeviceVerified(userId, deviceId) {
1623
+ this.log.debug(this.setDeviceVerified.name, { userId, deviceId });
1624
+ try {
1625
+ const crypto = this.getCrypto();
1626
+ await crypto.setDeviceVerified(userId, deviceId);
1627
+ }
1628
+ catch (err) {
1629
+ const msg = 'Failed to verify device';
1630
+ this.log.error(msg, { err });
1631
+ throw new SecureCommsError(msg);
1632
+ }
1633
+ }
1634
+ async getDeviceVerificationStatus(userId, deviceId) {
1635
+ this.log.debug(this.getDeviceVerificationStatus.name, { userId, deviceId });
1636
+ try {
1637
+ const crypto = this.getCrypto();
1638
+ return crypto.getDeviceVerificationStatus(userId, deviceId);
1639
+ }
1640
+ catch (err) {
1641
+ const msg = 'Failed to check device verification status';
1642
+ this.log.error(msg, { err });
1643
+ throw new SecureCommsError(msg);
1644
+ }
1645
+ }
1646
+ async bootstrapCrossSigning() {
1647
+ this.log.debug(this.bootstrapCrossSigning.name);
1648
+ try {
1649
+ const crypto = this.getCrypto();
1650
+ await crypto.bootstrapCrossSigning({
1651
+ authUploadDeviceSigningKeys: (makeRequest) => {
1652
+ return makeRequest({
1653
+ type: 'm.login.token',
1654
+ token: this.accessToken,
1655
+ device_id: this.deviceId,
1656
+ });
1657
+ },
1658
+ });
1659
+ }
1660
+ catch (err) {
1661
+ const msg = 'Failed to bootstrap cross signing';
1662
+ this.log.error(msg, { err });
1663
+ throw new SecureCommsError(msg);
1664
+ }
1665
+ }
1666
+ async isCrossSigningReady() {
1667
+ this.log.debug(this.isCrossSigningReady.name);
1668
+ try {
1669
+ const crypto = this.getCrypto();
1670
+ return crypto.isCrossSigningReady();
1671
+ }
1672
+ catch (err) {
1673
+ const msg = 'Failed to check cross signing status';
1674
+ this.log.error(msg, { err });
1675
+ throw new SecureCommsError(msg);
1676
+ }
1677
+ }
1678
+ async getUserVerificationStatus(userId) {
1679
+ this.log.debug(this.getUserVerificationStatus.name, { userId });
1680
+ try {
1681
+ const crypto = this.getCrypto();
1682
+ return crypto.getUserVerificationStatus(userId);
1683
+ }
1684
+ catch (err) {
1685
+ const msg = 'Failed to check user verification status';
1686
+ this.log.error(msg, { err });
1687
+ throw new SecureCommsError(msg);
1688
+ }
1689
+ }
1690
+ // MARK: Notifications
1691
+ /**
1692
+ * This will always get latest push rules from the server.
1693
+ * @returns IPushRules
1694
+ */
1695
+ async getPushRules() {
1696
+ this.log.debug(this.getPushRules.name);
1697
+ try {
1698
+ return this.client.getPushRules();
1699
+ }
1700
+ catch (err) {
1701
+ const msg = 'Failed to get push rules';
1702
+ this.log.error(msg, { err });
1703
+ throw new SecureCommsError(msg);
1704
+ }
1705
+ }
1706
+ /**
1707
+ * Passthrough to MatrixClient.addPushRule
1708
+ */
1709
+ async addPushRule(scope, kind, ruleId, rule) {
1710
+ this.log.debug(this.addPushRule.name, {
1711
+ scope,
1712
+ kind,
1713
+ ruleId,
1714
+ rule,
1715
+ });
1716
+ try {
1717
+ await this.client.addPushRule(scope, kind, ruleId, rule);
1718
+ }
1719
+ catch (err) {
1720
+ const msg = 'Failed to add push rule';
1721
+ this.log.error(msg, { err });
1722
+ throw new SecureCommsError(msg);
1723
+ }
1724
+ }
1725
+ /**
1726
+ * Passthrough to MatrixClient.deletePushRule
1727
+ */
1728
+ async deletePushRule(scope, kind, ruleId) {
1729
+ this.log.debug(this.deletePushRule.name, {
1730
+ scope,
1731
+ kind,
1732
+ ruleId,
1733
+ });
1734
+ try {
1735
+ await this.client.deletePushRule(scope, kind, ruleId);
1736
+ }
1737
+ catch (err) {
1738
+ const msg = 'Failed to delete push rule';
1739
+ this.log.error(msg, { err });
1740
+ throw new SecureCommsError(msg);
1741
+ }
1742
+ }
1743
+ /**
1744
+ * Passthrough to MatrixClient.setPushRuleEnabled
1745
+ */
1746
+ async setPushRuleEnabled(scope, kind, ruleId, enabled) {
1747
+ this.log.debug(this.setPushRuleEnabled.name, {
1748
+ scope,
1749
+ kind,
1750
+ ruleId,
1751
+ enabled,
1752
+ });
1753
+ try {
1754
+ await this.client.setPushRuleEnabled(scope, kind, ruleId, enabled);
1755
+ }
1756
+ catch (err) {
1757
+ const msg = 'Failed to enable push rule';
1758
+ this.log.error(msg, { err });
1759
+ throw new SecureCommsError(msg);
1760
+ }
1761
+ }
1762
+ /**
1763
+ * Passthrough to MatrixClient.setPushRuleActions
1764
+ */
1765
+ async setPushRuleActions(scope, kind, ruleId, actions) {
1766
+ this.log.debug(this.setPushRuleActions.name, {
1767
+ scope,
1768
+ kind,
1769
+ ruleId,
1770
+ actions,
1771
+ });
1772
+ try {
1773
+ await this.client.setPushRuleActions(scope, kind, ruleId, actions);
1774
+ }
1775
+ catch (err) {
1776
+ const msg = 'Failed to set push rule actions';
1777
+ this.log.error(msg, { err });
1778
+ throw new SecureCommsError(msg);
1779
+ }
1780
+ }
1781
+ // MARK: Util
1782
+ async getStateEvent(roomId, eventType, stateKey) {
1783
+ this.log.debug(this.getStateEvent.name, { roomId, eventType });
1784
+ try {
1785
+ const response = await this.client.getStateEvent(roomId, eventType, stateKey);
1786
+ return response;
1787
+ }
1788
+ catch (err) {
1789
+ if (err instanceof MatrixError && err.errcode === 'M_NOT_FOUND') {
1790
+ return undefined;
1791
+ }
1792
+ const msg = 'Failed to retrieve state event';
1793
+ this.log.error(msg, { err });
1794
+ throw new Error(msg);
1795
+ }
1796
+ }
1797
+ }
1798
+ //# sourceMappingURL=matrixClientManager.js.map