@sudoplatform/sudo-secure-communications 0.0.1 → 5.0.1

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