@sudoplatform/sudo-secure-communications 0.0.1 → 5.0.2

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