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